1.1 作業系統的概念:
1.1.1 什麼是作業系統:
- 控制和管理整個計算機系統的硬體和軟體資源
- 合理地組織排程計算機的工作和資源的分配
- 提供給使用者和其他軟體方便的介面和環境
- 是計算機最基本的系統軟體
1.1.2 作業系統的功能和目標:
- 作業系統作為系統資源(資源:軟體、硬體、檔案等)的管理者,提供什麼功能?
- 提供功能:處理機管理(CPU)、儲存器管理、檔案管理、裝置管理
- 目標:安全高效
- 理解案例:開啟QQ和朋友聊天,QQ是軟體,QQ的安裝路徑有組織存在作業系統(資料夾中),QQ的程式相關資料放入記憶體,QQ相關的程式由CPU處理
- 作業系統作為使用者與計算機硬體之間的介面,要為其上層的使用者、應用程式提供簡單易用的服務,需要實現什麼功能?
- 提供功能:命令介面、程式介面、GUI(圖形使用者介面) <-- 這三個統稱"使用者介面"
- 命令介面:允許使用者直接使用
- 聯機介面:一句系統一執行(如:cmd,輸入一個指令就執行一個指令)
- 離線介面:一堆系統做一堆(如:如寫程式在記事本,然後在程式)
- 程式介面:允許使用者提供程式間接使用,程式介面=系統介面(如:透過程式,注意是程式,呼叫user32.dll,就是程式介面)
- GUI(圖形使用者介面):圖形使用者介面(如:windows、安卓的圖形頁面就是)
- 命令介面:允許使用者直接使用
- 目標:方便使用者使用
- 提供功能:命令介面、程式介面、GUI(圖形使用者介面) <-- 這三個統稱"使用者介面"
- 作業系統作為最近硬體的層次,需要在硬體的基礎是實現什麼功能?
- 提供功能:實現對硬體機機器的擴充(如:在裸機上安裝作業系統,提高機器的使用能力)
1.1.3 總結:
- 作業系統是在硬體和應用程式的中間
- 作業系統對系統如:CPU、程式等(叫做系統資源)進行管理
- 提供介面給使用者使用,一部分直接使用(如:cmd視窗),一部分需要透過軟體間接使用(如:user32.dll)
- 作業系統主要目的:方便使用者的使用
1.2 作業系統的特徵:
1.2.1 作業系統的特徵有:併發、共享、虛擬、非同步:
- 併發:指兩個或多個事務在同一時間內間隔發生(宏觀上是同時發生,微觀上就進行一次任務發生,因為它的交替執行)
- 並行:指兩個或多個事務在同一時刻同時發生
- 共享:系統中的資源,提供記憶體中多個併發執行的程式使用
- 互斥共享方式:系統中的某些資源,可以提供給多個程式使用,但一個時間段只允許一個程式訪問該資源(如:微信影片了,就不能在使用相機拍影片)
- 同時共享方式:系統中的某些資源,允許同一個時間段由多個程式“同時”進行訪問(如:QQ和微信都發生檔案,宏觀是是同時發生,微觀上是交替訪問硬碟進行發生)
- 虛擬:把一個物理上的實體變成若干個邏輯上對應物,物理實體是時間存在,對應物是使用者感受
- 理解案例:電腦只有4GB的執行記憶體,GTA5需要4GB來執行,當我玩GTA5,我又開啟qq、微信、網易雲這些原超4GB,還能執行用到的就是虛擬技術
- 虛擬技術分為:空間多工技術、分時多工技術
- 非同步:在多道程式環境下,允許多個程式併發執行,但由於資源有限,程式的這些不是一貫待到底,而是走走停停,以不可預知的速度推進
- 理解案例:一個電腦(人),只有一個心(CPU),現在要進行兩段約會(兩個程式),當人把心給到第一個約會的人,第二個約會的人也向人要心,但心在約會一的手裡,這就是可限的資源,導致走走停停
1.2.1 併發性和共享性的關係:
- 併發和共享是互為存在條件
- 沒有併發,共享就失去意義
- 沒有共享,就不行實現併發
- 沒有併發和共享,就談不上性虛擬和非同步,所有併發和共享是作業系統最基本的特徵
1.2.3 總結:
- 作業系統的特徵:併發、共享、虛擬、非同步
- 沒有併發和共享就沒有,虛擬和非同步
- 併發和共享是相輔相成,是作業系統最基本的特徵
1.3 作業系統的發展和分類:
1.3.1 總結:
- 每一代操作的跟新都是解決上一代操作的缺點
1.4 作業系統的執行機制與體系結構
1.4.1 執行機制和體系結構分為:
- 分為:執行機制、作業系統核心、作業系統的體系結構
- 執行機制:兩種指令、兩種處理器狀態、兩種程式
- 兩種指令:特權指令、非特權指令
- 特權指令:特殊的指令(不允許使用者程式執行的指令)【透過處理器狀態來標識只是可以使用】
- 非特權指令:普通的運算指令(允許使用者程式使用)
- 兩種處理器狀態:核心態、使用者態
- 使用者態:只能執行非特權指令
- 核心態:特權指令、非特權指令都可以執行
- 怎麼知道是使用者、核心態,用程式狀態暫存器中的某個標識來進行標識
- 使用者態到->核心態是透過中斷實現的。並且中斷是唯一的途徑
- 核心態->使用者態執行一個特權指令,將程式狀態的標誌設定為:使用者態
- 兩種 程式:核心程式、應用程式
- 核心程式:作業系統的核心程式是系統的管理者,可以執行特權指令,也可以執行非特權指令,執行在核心態
- 應用程式:保證系統能安全執行,普通的應用程式只能執行非特權指令,執行在使用者態
- 兩種指令:特權指令、非特權指令
- 作業系統核心分為:時鐘管理、中斷處理、原語、系統資源進行管理的功能
- 時鐘管理:實現計時功能
- 中斷處理:負責實現中斷機制 3. 原語:
- 一種特殊的程式
- 處於作業系統底層,最近硬體的部分
- 具有原子性,要麼全執行,要麼全步執行
- 執行時間短,呼叫頻繁
- 程式管理
- 儲存器管理
- 裝置管理
- 作業系統的體系結構:大核心、微核心
- 大核心:
- 作業系統的主要功能都作為系統核心,執行在核心態
- 優點:高效能
- 缺點:核心程式碼大,結構混亂,難以維護
- 微核心:
- 只把基本的功能保留中核心
- 優點:核心功能少,結構清晰,方便維護
- 缺點:效能低,需要頻繁地在使用者態和核心態切換
- 大核心:
1.4.2 總結:
- 執行機制:
- 特權指令(不允許使用者程式使用)、非特權指令(不允許使用者程式使用)
- 使用者態(只能非特權指令)、核心態(在核心態可以使用特權指令,和非特權指令)
- 核心程式(執行在核心態,核心管理者)、應用程式(執行在使用者態,保證系統安全執行)
- 作業系統核心分為:時鐘管理、中斷處理、原語、系統資源進行管理的功能
- 這些都是管理作業系統
作業系統的體系結構:大核心、微核心
1.5 中斷和異常
1.5.1 中斷機制的誕生:
- 實現多道程式併發執行而引入的一種技術
1.5.2 中斷的概念和作用:
- 概念:發生中斷,意味著需要作業系統介入開展管理工作,CPU立即進入核心態
- CPU立即進入核心態理解:當執行“檔案1”的時候處於使用者態,“檔案1”進行IO操作,CPU進入核心態,就會去判斷執行到“檔案2”
- 作用:
- 使用者態到->核心態是透過中斷實現的。並且中斷是唯一的途徑
1.5.3 中斷的分類:
-
內中斷:CPU內部進行中斷的訊號
- 指令中斷、硬體故障、軟體中斷
- 外中斷:CPU外部進行中斷的訊號
- 外設請求、人工干預
1.5.4 外中斷的處理過程:
1.5.5 總結:
- 中斷是為了解決多道程式併發執行,提高CPU的利用率
- 中斷分CPU外部和內部中斷,
- 外部中斷會對當前的程式進行一個型別存檔的操作
1.6 系統呼叫
1.6.1 什麼是系統呼叫,和作用:
- 系統呼叫:作業系統提供給應用程式使用的介面
- 應用程式提供系統呼叫來請求獲取作業系統的服務
- 作用:
- 系統呼叫會使處理器從使用者態進入核心態
- 保證系統的穩定性和安全性
- 防止使用者進行非法操作
- 理解案例:如一個應用程式需要使用檔案,那麼該程式需要使用作業系統提供的介面來請求獲取對檔案的操作
1.6.2 什麼資源需要作業系統的介入:
- 分類:裝置管理、檔案管理、程式控制、程式通訊、記憶體管理
- 總結:與資源有關的操作,直接影響到其他程式的存在,一定需要作業系統介入
1.6.3 系統呼叫和庫函式的區別:
- 系統呼叫:是向上層提供的介面
- 庫函式:是對系統呼叫的進一步封裝
- 現在大多數的程式語言如C、java提供的庫函式間接地進行系統呼叫
1.6.4 系統呼叫背後的過程:
- 傳遞系統呼叫引數
- 執行陷入指令(執行陷入指令產生中斷,使處理器從使用者態進入核心態)
- 執行系統呼叫相應服務程式
- 返回使用者程式
- 細節:系統呼叫發生在使用者態,系統呼叫的處理發生在核心態
1.6.5 總結:
- 系統呼叫是提供給應用程式使用的介面,應用程式需要透過請求來獲取作業系統的服務
- 與資源,直接影響其他程式的存在,一定需要作業系統的進入,所有需要系統呼叫來實現
- 系統呼叫是向上提供介面,庫函式是對系統呼叫進一步封裝
- 系統呼叫發生在使用者態,系統呼叫的處理發生在核心態