1.1 操作系統的概念、功能和目標
概念
操作系統(Operating System,OS)是指 控制和管理整個計算機系統的硬件和軟件資源,並合理地組織調度計算機的工作和資源的分配,為用戶和其他軟件提供方便的接口和環境 的程序集合。它是計算機系統中最基本的系統軟件。
功能和目標
①操作系統是系統資源的管理者
②向上提供方便易用的服務
③是最接近硬件的一層軟件

①操作系統是系統資源的管理者(管理功能)
作為系統資源的管理者,其目標是安全、高效,提供的功能有:
- 處理機管理
- 管理處理機的分配與運行,解決沖突問題,可以理解為對進程的管理
- 進程管理:進程控制、進程同步、進程通信、死鎖處理、處理機調度
- 存儲器管理
- 為了提高多道程序運行效率,方便用戶使用
- 內存分配、地址映射、內存保護、共享和內存擴充
- 文件管理
- 操作系統負責管理文件的系統稱為文件系統
- 文件存儲空間的管理、目錄管理、文件讀寫管理和保護
- 設備管理
- 完成用戶的IO請求,方便用戶使用設備,提高設備的利用率
- 緩沖管理、設備分配、設備處理、虛擬設備
②向上提供方便易用的服務(接口功能)
操作系統為用戶和軟件提供服務,通過提供接口來完成:
- 命令接口
- 聯機控制方式:交互式命令接口,適用於分時或者實時系統,就像人與機器對話一樣。(用戶說一句,系統跟着做一句)
- 脫機控制方式:批處理命令接口,提交一組作業,系統進行處理,用戶不能干預作業的運行。(用戶說一堆,系統跟着做一堆)
- 程序接口
- 由一組系統調用命令組成(也稱作系統調用或者廣義指令)
- 可以在程序中進行系統調用來使用程序接口。普通用戶不能直接使用程序接口,只能通過程序代碼間接使用。
此外還有GUI圖形用戶界面,可以說 命令接口和GUI是直接給用戶使用的,而程序接口是給軟件或是程序員使用的。
③是最接近硬件的一層軟件(擴充機器)
作為最接近硬件的一層軟件,操作系統需要實現對硬件機器的擴展,將CPU、內存、磁盤、顯示器、鍵盤等硬件合理地組織起來,讓各種硬件能夠相互協調配合,實現更多更復雜的功能。
- 通常把覆蓋了軟件的機器成為擴充機器,又稱之為虛擬機
1.2 操作系統的特征
四個基本特征:並發、共享、虛擬、異步
並發
並發:指兩個或者多個事件在同一時間間隔內發生。
並行:指兩個或者多個事件在同一時刻同時發生。
- 並發使得系統具有處理和調度多個程序同時執行的能力
- 操作系統的並發是通過分時實現的
操作系統就是伴隨着“多道程序技術”出現而出現的。因此,操作系統和程序並發是一起誕生的。
重要考點:
- 單核CPU同一時刻只能執行一個程序,各個程序只能並發地執行
- 對於單處理機來說,宏觀上程序是並發的,微觀上程序是交替執行的
- 多核CPU同一時刻可以同時執行多個程序,多個程序可以並行地執行
共享
共享:即資源共享,是指系統中的資源可供內存中多個並發執行的進程共同使用。
有兩種資源共享方式:
- 互斥共享方式
- 一個時間段只允許一個進程對資源進行訪問,例如打印機,磁帶
- 這種資源稱作:臨界資源或者獨占資源
- 同時訪問方式
- 一個時間段內允許多個進程對資源進行訪問,例如磁盤資源
並發和共享的關系(互為存在條件)
並發性指計算機系統中同時存在着多個運行着的程序。
共享性是指系統中的資源可供內存中多個並發執行的進程共同使用。
如果失去並發性,則系統中只有一個程序正在運行,則共享性失去存在的意義;
如果失去共享性,則兩個程序不能同時訪問硬盤資源,就無法實現同時發送文件,也就無法並發。
虛擬
虛擬:指把一個物理上的實體變為若干個邏輯上的對應物。物理實體是實際存在的,而邏輯上對應物是用戶感受到的。
一個物理上的實體變為若干邏輯上的對應物,這種技術也被稱為虛擬技術,可分為:
- 時分復用技術
- 如虛擬處理器:采用多道程序並發的方式,讓每個終端用戶感覺到有多個處理器
- 空分復用技術
- 如虛擬存儲器:將物理存儲變為虛擬存儲器,邏輯上擴充存儲器用
並發和虛擬的關系
如果失去了並發性,則一個時間段內系統中只需運行一道程序,那么就失去了實現虛擬性的意義了。因此,沒有並發性,就談不上虛擬性。
異步
異步:在多道程序環境下,允許多個程序並發執行,但由於資源有限,進程的執行不是一貫到底的,多道程序走走停停,進程以不可預知的速度向前進
並發和異步的關系
只有系統擁有並發性,才有可能導致異步性。
小結:並發和共享互為存在條件,沒有並發和共享,就談不上虛擬和異步,因此並發和共享是操作系統的兩個最基本的特征
1.3 操作系統的發展與分類
- 手工操作階段
程序的裝入、運行、結果的輸出都需要人為的干預
缺點:資源利用率低、CPU利用不充分、人機速度矛盾
- 批處理階段
為了解決人機矛盾以及CPU和I/O設備之間速度不匹配的矛盾
單道批處理系統(引入脫機輸入輸出技術)
內存中始終保存一道作業,作業成批進行
特點:
- 自動性:一批作業自動執行不需要人工干預
- 順序性:各道作業依次執行
- 單道性:僅有一道程序執行
優點:
緩解了一定程度的人機速度矛盾,資源利用率有所提升
缺點:
- 高速CPU等待I/O設備的完成,資源利用率依然很低
- 內存中僅能有一道程序運行,只有該程序運行結束之后才能調入下一道程序
多道批處理系統(操作系統開始出現)
多道批處理系統的產生標志着操作系統正式誕生。
允許多個程序在CPU中交替運行,程序共享各種硬件和軟件資源。
特點:
- 多道:計算機中同時存放多道相互獨立的程序
- 宏觀上並行:多道程序都會開始運行,但都沒有運行完畢
- 微觀上串行:多道程序輪流占有CPU,交替執行
優點:
- 資源利用率高
- 多道程序並發執行,共享計算機資源
- CPU和其他資源更能保持“忙碌”狀態,系統吞吐量增大
缺點:
- 設計復雜,要考慮各種資源調度問題
- 響應時間過長,沒有人機交互功能
- 分時操作系統
計算機以時間片為單位輪流為各個用戶/作業服務,各個用戶可通過終端與計算機進行交互。
主要優點:
- 用戶請求可以被即時響應,解決了人機交互問題;
- 允許多個終端用戶同時使用一台計算機,並且用戶對計算機的操作相互獨立,互不干擾。
主要缺點:
- 不能優先處理一些緊急任務;
- 操作系統對各個用戶/作業都是完全公平的,循環地為每個用戶/作業服務一個時間片,不區分任務的緊急性。
- 實時操作系統
保證在規定時間內完成某項任務。
主要優點:能夠優先響應一些緊急任務,某些緊急任務不需時間片排隊。
硬實時系統:必須在絕對嚴格的規定時間內完成處理,如導彈控制,自動駕駛
軟實時系統:能接受偶爾違反時間規定,如12306訂票
主要特點是及時性和可靠性。
其他幾種操作系統
- 網絡操作系統:是伴隨着計算機網絡的發展而誕生的,能把網絡中各個計算機有機地結合起來,實現數據傳送等功能,實現網絡中各種資源的共享(如文件共享)和各台計算機之間的通信。(如:Windows NT 就是一種典型的網絡操作系統,網站服務器就可以使用)
- 分布式操作系統:主要特點是分布性和並行性。系統中的任意兩台計算機之間沒有主從之分,相互交換信息,並行工作、協同完成任務。
- 個人計算機操作系統:如Windows XP、MacOS,方便個人使用,廣泛應用於文字處理、電子表格、游戲等。
1.4 操作系統的運行機制
兩種指令:
指令就是處理器CPU能識別、執行的最基本命令,指二進制機器指令。
- 特權指令:如內存清零指令
- 非特權指令:如普通的運算指令
兩種程序:
- 應用程序
- 用戶自編的程序
- 為了保證系統能安全運行,普通應用程序只能執行非特權指令,運行在用戶態
- 內核程序
- 很多內核程序組成了操作系統內核,簡稱內核Kernel
- 是系統的管理者,可以執行特權指令和非特權指令,運行在核心態
兩種處理器狀態:核心態(內核態)和用戶態
- 處於內核態時,說明此時正在運行的是內核程序,此時可以執行特權指令
- 處於用戶態時,說明此時正在運行的是應用程序,此時只能執行非特權指令
狀態切換:
內核態→用戶態:執行修改程序狀態字寄存器PSW的特權指令
內核態→用戶態:由中斷引起,硬件自動完成
內核

時鍾管理:操作系統對用戶提供標准時間,根據時鍾對進程進行管理,實現進程切換。
中斷機制:初衷是為了提高多道程序運行環境中的CPU利用率,保護和恢復中斷現場的信息,轉移控制權到相關程序。
原語:處於系統的最底層,是最接近硬件的部分,運行具有原子性,即只能一氣呵成,運行時間短、調用頻繁。

大內核:
- 將操作系統的主要功能模塊都作為系統內核,運行在核心態
- 優點:各個管理模塊之間共享信息,能夠有效利用相互之間的有效特效,有性能優勢
- 缺點:內核代碼龐大,層次交互關系復雜,層次接口難以定義,難以維護
微內核:
- 只把最基本的功能保留在內核
- 優點:內核功能少,有效的分離內核與服務、服務與服務,結構清晰,方便維護
- 缺點:需要頻繁地在核心態和用戶態之間切換,性能低
1.5 中斷和異常
為了進行核心態和用戶態的切換,引入了中斷機制。
中斷是讓操作系統內核奪回CPU使用權的唯一途徑。
內中斷(異常):
- trap、fault、abort
- 與當前執行的指令有關,中斷信號來源於CPU內部
- 異常不能被屏蔽
外中斷(中斷):
- 時鍾中斷、I/O中斷請求
- 與當前執行的指令無關,中斷信號來源於CPU外部
基本實現原理:
- 檢查中斷信號
- 內中斷:CPU在執行指令時會檢查是否有異常發生
- 外中斷:在每個指令周期末尾,CPU都會檢查是否有外中斷信號需要處理
- 找中斷處理程序
- 不同的中斷信號,需要用不同的中斷處理程序來處理。
- 當CPU檢測到中斷信號后,會根據中斷信號的類型去查詢“中斷向量表”,以此來找到相應的中斷處理程序在內存中的存放位置。
1.6 系統調用
操作系統作為用戶和計算機硬件之間的接口,需要向上提供一些簡單易用的服務。主要包括命令接口和程序接口。其中,程序接口由一組系統調用組成。
“系統調用”是操作系統提供給應用程序(程序員/編程人員)使用的接口,可以理解為一種可供應用程序調用的特殊函數,應用程序可以通過系統調用來請求獲得操作系統內核的服務。
系統調用按功能可分為:
- 設備管理:完成設備的請求/釋放/啟動等功能
- 文件管理:完成文件的讀/寫/創建/刪除等功能
- 進程控制:完成進程的創建/撤銷/阻塞/喚醒等功能
- 進程通信:完成進程之間的消息傳遞/信號傳遞等功能
- 內存管理:完成內存的分配/回收等功能