一、作業系統概述
作業系統是指控制和管理整個計算機系統的硬體和軟體資源,并合理地組織排程計算機的工作和資源的配置設定,以提供給使用者和其它軟體友善的接口和環境,它是計算機系統中最基本的系統軟體。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2csgmWYlVc5YVYxo0MiFDZywEMW1mY1RzRapnTtxkb5ckYplTeMZTTINGMShUYfRHelRHLwEzX39GZhh2css2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3Pn5GcuIDN4MDOzIjMzADOwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
二、作業系統的功能和目标 -- 作為系統資源的管理者
程序是一個程式的執行過程,執行前需要将該程式放到記憶體中,才能被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進入核心态
- 發出系統調用請求的是使用者态,而對系統調用的相應處理在核心态下進行
- 陷入指令是唯一一個隻能在使用者态執行,而不可在核心态執行的指令
往期精彩内容:
Java知識體系總結
【全棧最全Java架構總結】SSH、SSM、Springboot
超詳細的springBoot學習筆記
常見資料結構與算法整理總結
Java設計模式:23種設計模式全面解析
Java面試題總結(附答案)
10萬字208道Java經典面試題總結(附答案,建議收藏)
MySql知識體系總結
Linux知識體系總結
【Vue基礎知識總結 1】Vue入門
Redis知識體系總結