主頁 > 軟體設計 > 【哪吒社區技能樹】作業系統基礎知識詳解

【哪吒社區技能樹】作業系統基礎知識詳解

2021-10-28 08:27:31 軟體設計

一、【Java基礎教程系列】推廣

🍅 🍅 Java基礎教程系列 🍅 🍅

教程推廣,僅此一次!10月27日最后一天,限時秒殺9.9,10月28日提升至29.9元

二、【粉絲福利】

送書啦,大家期待已久的Vue!

本次活動送書規則:

【送書啦】

1、社區積分榜前5名,隨機抽取一名幸運者

2、社區積分榜6-15名,隨機抽取一名幸運者

3、社區積分榜16-30名,隨機抽取一名幸運者

【賺取積分方式】哪吒社區內發帖、點贊、評論都可贏取積分!

🍅 社區入口:哪吒社區

🍅 哪吒社區技能樹打卡貼:【打卡貼 day 3】為何要配置環境變數?

【抽取方式】Java隨機函式;

【抽取時間】2021年10月29日 周五 21點整,抽取結果會在【哪吒微信一群、二群、三群】同時公布,

以下圖書,四選一!

1、Vue.js全家桶零基礎入門到進階專案實戰
2、億級流量Java高并發與網路編程實戰
3、Web前端性能優化
4、R語言資料高效處理指南

三、【積分賺取規則】

、作業系統概述

作業系統是指控制和管理整個計算機系統的硬體和軟體資源,并合理地組織調度計算機的作業和資源的分配,以提供給用戶和其它軟體方便的介面和環境,它是計算機系統中最基本的系統軟體,

?

五、作業系統的功能和目標 -- 作為系統資源的管理者

行程是一個程式的執行程序,執行前需要將該程式放到記憶體中,才能被CPU處理,

?

① 作業系統作為系統資源的管理者(這些資源包括軟體、硬體、檔案等),需要提供什么功能?

作為系統資源的管理者

(1)提供的功能

  • 處理機管理
  • 存盤器管理
  • 檔案管理
  • 設備管理

(2)目標

  • 安全
  • 高效

用微信和朋友視頻聊天的程序:

?

② 作業系統作為用戶與計算機硬體之間的介面,要為其上層的用戶、應用程式提供簡單易用的服務,需要實作什么功能?

作為計用戶和計算機硬體之間的介面

(1)提供的功能

  1. 命令介面(聯機命令介面、脫機命令介面)
  2. 程式介面
  3. GUI圖形用戶界面

(2)目標,方便用戶使用

命令介面:允許用戶直接使用

程式介面:允許用戶通程序式間接使用

GUI:現代作業系統中最流行的圖形用戶介面

1、命令介面

聯機命令介面 = 互動式命令介面

大概的意思就是你說一句,系統做一句,

比如cmd命令:

?

脫機命令介面 = 批處理命令介面

?

2、程式介面

比如C:\Windows\System32\user32.dll l程式員在程式中呼叫user32.dll(該呼叫即為系統呼叫)即可實作創建視窗等功能,只能通過用戶程式間接使用,

3、GUI圖形用戶界面

用戶可以使用形象的圖形化界面進行操作,而不再需要使用復雜的命令或引數了,

③ 作業系統作為最接近硬體的層次,需要在純硬體的基礎上實作什么功能?

需要提供的功能和目標:實作對硬體機器的拓展

沒有任何軟體支持的計算機稱為裸機,在裸機上安裝作業系統,可以提供資源管理功能和方便用戶的服務功能,將裸機改造成功能更強、使用更方便的機器,

通常把覆寫了軟體的機器稱為擴充機器,又稱為虛擬機,

六、作業系統的特征

1、并發

指多個事件在同一事件間隔內交替發生,

2、并行

指多個事件在同一時刻同時發生,

一個單核處理機CPU同一時刻只能執行一個程式,因此作業系統會負責協調多個程式交替執行(這些程式微觀上是交替執行的,但是宏觀上看起來就像同時執行)

當今的計算機,一般都是多核CPU,比如我現在用的聯想小新Pro16的CPU就是I5 11300H,它是一個四核CPU,這意味著同一時刻可以有4個程式并行執行,但是作業系統的并發性依然必不可少,因為電腦可能開著十幾個應用程式,比如微信、谷歌、騰訊、酷狗音樂、Excel等等,都是需要同時作業的,而且電腦運行時,電腦系統自帶的程式,也數不勝數,

3、共享

共享即資源共享,是指系統中的資源可供記憶體中多個并發執行的行程共同使用,

兩種資源共享的方式:

(1)互斥共享方式

系統中的某些資源,雖然可以提供給多個行程使用,但一個時間段內只允許一個行程訪問該資源,

如對攝像頭設備的共享使用,

(2)同時共享方式

系統中的某些資源,允許一個時間段內有多個行程“同時”對它們進行訪問,

所謂的“同時”往往是宏觀的,而從微觀上講,這些行程可能是交替地對該資源進行訪問的,即分時共享,

如對硬碟資源的共享使用,

4、虛擬

虛擬是指把一個物理上的物體變為若干個邏輯上的對應物,物理物體是實際存在的,而邏輯上對應物是用戶感知到的,

用一個例子來理解:

眾所周知,一個程式需要放入記憶體并給它分配CPU才能執行,

GTA5游戲需要4GB的運行記憶體,QQ需要256MB的記憶體,迅雷需要250MB的記憶體,網易云音樂需要256MB的記憶體...

我的電腦4GB,

問題:這些程式同時運行需要的記憶體遠遠大于4GB,那么為什么它們還可以在我的電腦上同時運行呢?

答:這是虛擬存盤器技術,實際只有4GB的記憶體,在用戶看來似乎遠遠大于4GB,這應用了虛擬機技術中的“空分復用技術”,微觀上處理機在各個微笑的時間段內交替為各個行程服務,

5、異步

異步是指,在多道程式環境下,允許多個程式并發執行,但由于資源有限,行程的執行不是一管到底的,而是走走停停,以不可預知的速度向前推進,這就是行程的異步性,

如果失去了并發性,則系統只能串行的處理各個行程,每個行程的執行會一貫到底,只有系統擁有并發性,才有可能導致異步性,

6、總結

如果沒有并發和共享,就談不上虛擬和異步,因此并發和共享是作業系統的兩個最基本的特征,

七、作業系統的發展和分類

1、手工操作階段

缺點:人機速度矛盾

2、批處理階段

(1)單道批處理系統(引入脫機輸入輸出技術)

優點:緩解人機速度矛盾

缺點:資源利用率較低

(2)多道批處理系統(作業系統開始出現)

優點:多道程式并發執行,資源利用率高

缺點:不提供人機互動功能

3、分時作業系統

優點:提供人機互動功能

缺點:不能有限處理緊急任務

4、實時作業系統

(1)硬實時系統

必須在絕對嚴格的規定時間內完成處理

(2)軟實時系統

能接受偶爾違反時間規定

(3)優點:能優先處理緊急任務

5、網路作業系統

6、分布式作業系統

7、個人計算機作業系統





八、作業系統的運行機制和體系結構





1、什么是指令

?

簡單來說,指令就是處理器CPU能識別、執行的最基本命令,比如:加法指令就是讓CPU進行加法運算,





2、兩種指令、兩種處理器狀態、兩種程式

?

(1)兩種指令

① 特權指令

如記憶體清零指令,不允許用戶程式使用

② 非特權指令

如普通的運算指令

(2)兩種處理器狀態

① 用戶態

此時CPU只能執行非特權指令

② 核心態

特權指令、非特權指令都可以執行

用程式狀態字暫存器中的某標志位來標識當前處理器處于什么狀態,如0為用戶態,1為核心態,

(3)兩種程式

① 內核程式

作業系統的內核程式時系統的管理者,既可以執行特權指令,也可以執行非特權指令,運行在核心態,

② 應用程式

為了保證系統能安全運行,普通應用程式只能執行非特權指令,運行在用戶態,

3、作業系統中的哪些功能應該由內核程式實作呢?

?

內核是計算機上配置的底層軟體,是作業系統最基本、最核心的部分,

實作作業系統內核功能的那些程式就是內核程式,

(1)與硬體關聯較緊密的模塊

① 時鐘管理

實作計時功能

② 中斷處理

負責實作中斷功能

③ 原語

是一種特殊的程式
出于作業系統最底層,是最接近硬體的部分
這種程式的運行具有原子性,其運行只能一氣呵成,不可中斷
運行時間較短、呼叫頻繁
(2)對系統資源進行管理的功能

  • 行程管理
  • 存盤器管理
  • 設備管理

有的作業系統不把這部分功能歸為“內核功能”,也就是說,不同的作業系統,對內核功能的劃分可能并不一樣,

4、作業系統的體系結構可以分為大內核和微內核,

(1)大內核:

  • 將作業系統的主要功能模塊都作為系統內核,運行在核心態
  • 優點:高性能
  • 缺點:內核代碼龐大,結構混亂,難以維護

(2)微內核:

  • 只把最基本的功能保留在內核,
  • 優點:內核功能少,結構清晰,方便維護
  • 缺點:需要頻繁地在核心態和用戶態之間切換,性能

九、中斷和例外

1、中斷的概念和作用

  1. 當中斷發生時,CPU立即進入核心態
  2. 當中斷發生后,當前運行的行程暫停運行,并由作業系統內核對中斷進行處理
  3. 對于不同的中斷信號,會進行不同的處理

發生了中斷,就意味著需要作業系統介入,開展管理作業,由于作業系統的管理作業(比如行程切換、分配IO設備等)需要使用特權指令,因此CPU要從用戶態切為核心態,中斷可以使CPU從用戶態切換為核心態,使作業系統獲得計算機的控制權,有了中斷,才能實作多道程式并發執行,

用戶態和核心態的切換是通過中斷實作的,并且中斷是唯一途徑,

2、中斷的分類

(1)內中斷

信號來源:CPU內部

① 陷阱

有意而為之的例外,如系統呼叫

② 故障

由錯誤條件引起的,可能被故障處理程式修復,如缺頁,

③ 終止

不可恢復的錯誤造成的結果,終止處理程式不再將控制回傳給引發終止的應用程式,如整數除0,

(2)外中斷

信號來源:CPU外部

① IO中斷請求

② 人工干預

3、外中斷的處理程序

執行完每個指令后,CPU都要檢查當前是否有外部中斷信號
如果檢測到外部中斷信號,則需要保護被中斷行程的CPU環境(如程式狀態子PSW、程式計數器PC、各種通用暫存器)
根據中斷信號型別轉入相應的中斷處理程式
恢復原行程的CPU環境并退出中斷,回傳原行程繼續往下執行

十、系統呼叫

1、什么是系統呼叫

系統呼叫是作業系統提供給應用程式使用的介面,可以理解為一種可供應用程式呼叫的特殊函式,應用程式可以發出系統呼叫請求來獲得作業系統的服務,

2、系統呼叫作用

應用程式通過系統呼叫請求作業系統的服務,服務中的各種共享資源都由作業系統統一掌管,因此在用戶程式中,凡是與資源有關的操作(如存盤分配、IO操作、檔案管理等),都必須通過系統呼叫的方式向作業系統提出服務請求,由作業系統代為完成,這樣可以保證系統的穩定性和安全性,防止用戶進行非法操作,

3、系統呼叫的分類

  1. 設備管理(完成設備的請求、釋放、啟動等功能)
  2. 檔案管理(完成檔案的讀寫、創建、洗掉等功能)
  3. 行程控制(完成行程的創建、撤銷、阻塞、喚醒等功能)
  4. 行程通信(完成行程之間的訊息傳遞、信號傳遞等功能)
  5. 記憶體管理(完成記憶體的分配、回收等功能)

系統呼叫相關處理涉及到對系統資源的管理,對行程的控制,這些功能需要執行一些特權指令才能完成,因此系統呼叫的相關處理需要在核心態下進行,

4、系統呼叫的程序簡介

?

傳遞系統呼叫引數 -> 執行陷入指令(用戶態) -> 執行系統呼叫相應服務程式(核心態) -> 回傳用戶程式,

小總結:

  1. 陷入指令是在用戶態執行的,執行陷入指令之后立即引發一個內中斷,從而CPU進入核心態
  2. 發出系統呼叫請求的是用戶態,而對系統呼叫的相應處理在核心態下進行
  3. 陷入指令是唯一一個只能在用戶態執行,而不可在核心態執行的指令

【Java基礎教程系列】推廣

🍅 🍅 Java基礎教程系列 🍅 🍅

教程推廣,僅此一次!10月27日最后一天,限時秒殺9.9,10月28日提升至29.9元

?

添加微信,備注1024,贈送Java學習路線思維導圖

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/339214.html

標籤:其他

上一篇:Git 遠程倉庫基本操作以及常用命令大全

下一篇:在大廠入職三年已是老員工?大學教授:年輕人壓力很大,找不到歸屬感

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more