部分內容參考王道,一些名詞與北航課件有少量出入。
歡迎指正。
緒論
作業系統定義
作業系統是一組管理計算機硬體資源的軟體集合,它:
- 提供一個計算機使用者與計算機硬體系統之間的介面,使計算機系統更易於使用
- 有效控制和管理計算機系統中的各種硬體和軟體資源
- 合理地組織計算機系統的工作流程,以改善系統效能。
作業系統功能
向上層提供方便易用的服務。
作為最接近硬體的層次,作業系統需要實現對硬體機器的擴充。
作業系統簡史
-
手工操作階段:紙帶機
主要缺點:使用者獨佔全機,人際速度矛盾導致資源利用率很低。
-
批處理階段(單道)
- 把使用者提交的作業成批送入計算機,由作業排程程式自動選擇作業執行。
- 目的:縮短作業之間的交換時間;減少處理機的空閒等待,提高系統效率
- 聯機批處理:作業的輸入、輸出由CPU來處理–>高速主機與慢速外設
- 離線批處理:輸入、輸出脫離主機控制,增加一臺專門用於與輸入輸出裝置打交道的衛星機。
- 缺點:每次主機記憶體中僅存放一道作業,每當它執行期間發出輸入/輸出請求後,CPU便處於等待IO完成的狀態,使得CPU空閒。
-
批處理階段(多道):
-
每次往記憶體中讀入多道程式,並允許它們交替在CPU中執行。
-
作業系統正式誕生,用於支援多道程式併發執行。
-
優點:系統吞吐量大,資源利用率高;
-
缺點:平均週轉時間長;沒有人機互動功能,無法除錯程式,無法在執行過程中輸入引數。
-
-
分時作業系統:
- 把處理機的執行時間分成很短的時間片,按時間片輪流把處理機分配給各聯機作業使用。
- 多個使用者分享使用同一臺計算機;多個程式分時共享硬體和軟體資源。
- 使用者請求可以被及時響應,解決了人機互動問題。
- 主要缺點:不能優先處理緊急任務。
-
實時作業系統:
- 計算機系統接收到外部訊號後及時進行處理,並且要在嚴格的時限內處理完事件
- 及時性和可靠性
-
作業系統的網路化(略)
-
分散式作業系統(略)
作業系統的特徵
-
併發
-
併發是指一個處理器同時處理多個任務。在同一時刻只能有一條指令執行,但多個程序指令被快速的輪換執行,使得在宏觀上具有多個程序同時執行的效果。
單核CPU同一時刻只能執行一個程式,各個程式只能併發地執行。
-
並行是指多個處理器或者是多核的處理器同時處理多個不同的任務。
多核CPU同一時刻可以執行多個程式,各個程式可以並行地執行。
-
併發是邏輯上的同時發生(simultaneous),而並行是物理上的同時發生。
-
-
共享
-
共享即資源共享,指系統中的資源可供記憶體中多個併發執行的程序共同使用。
-
兩種共享方式:
-
互斥共享方式:系統中的某些資源在一個時間段內只允許一個程序訪問該資源
-
同時共享方式:系統中的某些資源,允許一個時間段內由多個程序“同時”對它們進行訪問。
“同時”往往是宏觀上的,微觀上是交替訪問資源,即分時共享。
-
-
-
虛擬
- 把一個物理上的實體變為若干個邏輯上的對應物。
-
非同步性
- 在多道程式環境下,允許多個程式併發執行;但由於資源有限,程序的執行不是一貫到底的,而是走走停停,以不可預知的速度向前推進,這就是程序的非同步性。
併發和共享是最基本的兩個特徵,且它們互為存在條件。
作業系統的執行機制
-
核心程式&應用程式
- 應用程式:建立在作業系統上的程式
- 核心程式組成了作業系統核心(簡稱核心)
-
特權指令&非特權指令
- 特權指令:如“記憶體清零指令”等,只能由作業系統核心來使用;核心程式中可能存在。
- 非特權指令:與上相反。應用程式中只有非特權指令。
-
核心態&使用者態
- CPU處於核心態時,說明正在執行核心程式,此時可以執行特權指令
- CPU處於使用者態時,說明正在進行應用程式,此時只能執行非特權指令
-
核心態與使用者態的切換:
- 剛開機時為核心態。
- 開機完成後,作業系統核心程式能用一條特權指令,將PSW的標誌位設為“使用者態”
- 作業系統核心讓出CPU,應用程式在“使用者態”執行。
- 當應用程式中有特權指令,但CPU處於使用者態時,會引發一個中斷訊號
- CPU檢測到中斷訊號後,會變為核心態,並停止執行當前的應用程式,轉而對引發中斷的時間進行處理。
中斷和異常
名詞上略有差異。以下為王道版本:
中斷是讓作業系統核心奪回CPU使用權的唯一途徑。
- 內中斷(即異常):與當前執行的指令有關,中斷訊號來源於CPU內部
- 例1:使用者態下試圖執行特權指令
- 例2:執行除法指令時除數為0
- 例3:應用程式想請求作業系統核心的服務,執行“陷入指令”(trap),引發一個內部中斷訊號。(陷入指令不是特權指令)
- 外中斷(即狹義中斷):與當前執行的指令無關,中斷訊號來源於CPU外部
- 例1:時鐘中斷,由時鐘部件發來中斷訊號,用以實現程式併發執行
- 例2:I/O中斷,當輸入輸出任務完成時,向CPU傳送中斷訊號。
內中斷=異常,引發原因:
- 陷入(trap),陷入指令引發
- 故障(fault),由錯誤條件引起,可能被核心程式修復;核心程式修復故障後會把CPU使用權還給應用程式。例如:缺頁故障。
- 終止(abort),由致命錯誤引起,核心程式無法修復,一般會直接終止應用程式。例如上面的例1、例2
以下為你航版本:
非同步異常=中斷,可能隨時發生,與處理器正在執行的內容無關。
同步異常:某一特定指令執行的結果。具體見下圖。
中斷後進入核心執行緒處理中斷。
系統呼叫
作業系統作為使用者和系統之間的介面,需要向上提供一些簡單易用的服務,主要包括命令介面和程式介面。其中程式介面由一組系統呼叫組成。
系統呼叫是作業系統提供給應用程式使用的介面,可以理解為一種可供應用程式呼叫的特殊函式;
應用程式可以透過系統呼叫來請求獲得作業系統核心的服務。
系統呼叫的過程:
- 傳參
- Trap
- 由作業系統核心程式處理系統呼叫請求
- 返回應用程式
作業系統體系結構
以上兩部分的劃分,引出了兩種作業系統的體系結構:大核心和微核心(常考)
微核心結構:只包含中斷處理、程序通訊、基本排程等。
關於效率:CPU狀態轉換是有成本的,頻繁轉換會降低系統效能→
- 微核心效能低
- 優點:結構清晰方便維護、可移植性好、適應分散式系統。
典型大核心:Linux UNIX
典型微核心:Windows
分層結構,模組化結構,外核結構:王道課有,PPT涉及不多。
不同層次的介面
ISA, ABI, API 的含義以及聯絡
一個作業系統中編譯好的程式,在另一個ABI相容的作業系統中無需重新編譯就能執行。