一、操作系統概述
操作系統是指控制和管理整個計算機系統的硬件和軟件資源,並合理地組織調度計算機的工作和資源的分配,以提供給用戶和其它軟件方便的接口和環境,它是計算機系統中最基本的系統軟件。
二、操作系統的功能和目標 -- 作為系統資源的管理者
進程是一個程序的執行過程,執行前需要將該程序放到內存中,才能被CPU處理。
① 操作系統作為系統資源的管理者(這些資源包括軟件、硬件、文件等),需要提供什么功能?
作為系統資源的管理者
(1)提供的功能
- 處理機管理
- 存儲器管理
- 文件管理
- 設備管理
(2)目標
- 安全
- 高效
用微信和朋友視頻聊天的過程:
② 操作系統作為用戶與計算機硬件之間的接口,要為其上層的用戶、應用程序提供簡單易用的服務,需要實現什么功能?
作為計用戶和計算機硬件之間的接口
(1)提供的功能
- 命令接口(聯機命令接口、脫機命令接口)
- 程序接口
- 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、中斷的概念和作用
- 當中斷發生時,CPU立即進入核心態
- 當中斷發生后,當前運行的進程暫停運行,並由操作系統內核對中斷進行處理
- 對於不同的中斷信號,會進行不同的處理
發生了中斷,就意味着需要操作系統介入,開展管理工作。由於操作系統的管理工作(比如進程切換、分配IO設備等)需要使用特權指令,因此CPU要從用戶態切為核心態。中斷可以使CPU從用戶態切換為核心態,使操作系統獲得計算機的控制權。有了中斷,才能實現多道程序並發執行。
用戶態和核心態的切換是通過中斷實現的,並且中斷是唯一途徑。
2、中斷的分類
(1)內中斷
信號來源:CPU內部
① 陷阱
有意而為之的異常,如系統調用
② 故障
由錯誤條件引起的,可能被故障處理程序修復,如缺頁。
③ 終止
不可恢復的錯誤造成的結果,終止處理程序不再將控制返回給引發終止的應用程序,如整數除0。
(2)外中斷
信號來源:CPU外部
① IO中斷請求
② 人工干預
3、外中斷的處理過程
- 執行完每個指令后,CPU都要檢查當前是否有外部中斷信號
- 如果檢測到外部中斷信號,則需要保護被中斷進程的CPU環境(如程序狀態子PSW、程序計數器PC、各種通用寄存器)
- 根據中斷信號類型轉入相應的中斷處理程序
- 恢復原進程的CPU環境並退出中斷,返回原進程繼續往下執行
七、系統調用
1、什么是系統調用
系統調用是操作系統提供給應用程序使用的接口,可以理解為一種可供應用程序調用的特殊函數,應用程序可以發出系統調用請求來獲得操作系統的服務。
2、系統調用作用
應用程序通過系統調用請求操作系統的服務,服務中的各種共享資源都由操作系統統一掌管,因此在用戶程序中,凡是與資源有關的操作(如存儲分配、IO操作、文件管理等),都必須通過系統調用的方式向操作系統提出服務請求,由操作系統代為完成。這樣可以保證系統的穩定性和安全性,防止用戶進行非法操作。
3、系統調用的分類
- 設備管理(完成設備的請求、釋放、啟動等功能)
- 文件管理(完成文件的讀寫、創建、刪除等功能)
- 進程控制(完成進程的創建、撤銷、阻塞、喚醒等功能)
- 進程通信(完成進程之間的消息傳遞、信號傳遞等功能)
- 內存管理(完成內存的分配、回收等功能)
系統調用相關處理涉及到對系統資源的管理,對進程的控制,這些功能需要執行一些特權指令才能完成,因此系統調用的相關處理需要在核心態下進行。
4、系統調用的過程簡介
傳遞系統調用參數 -> 執行陷入指令(用戶態) -> 執行系統調用相應服務程序(核心態) -> 返回用戶程序。
小總結:
- 陷入指令是在用戶態執行的,執行陷入指令之后立即引發一個內中斷,從而CPU進入核心態
- 發出系統調用請求的是用戶態,而對系統調用的相應處理在核心態下進行
- 陷入指令是唯一一個只能在用戶態執行,而不可在核心態執行的指令
往期精彩內容: