作業系統的核心是指在計算機硬體上擴充的第一層軟體。通常是一些與硬體緊密相關的模組。核心的實現是通過原語實現的,而原語又是由原子操作構成的。
原語是由若干指令構成的,用於完成一定功能的過程。而原子操作是指在這過程中的行為 ,要麼全做,要麼不做,不可中斷(以保證操作的完整性)。
作業系統主要包含以下功能:
在說這個問題之前,我們需要深入了解一下系統呼叫,我們前面知道,系統呼叫就是乙個程式介面**(注意,這不是指我們平時用的aip,比如一些庫函式,一些自定義函式)。而作業系統中的各種共享資源由作業系統統一管理,因此,顯然對作業系統資源進行的操作都是在核心態進行的,包括我們後面要學到的各種管理(程序管理,i/o管理,記憶體管理等等)。顯然系統呼叫是一定執行**在核心態。
那麼,我們可以得到大致的使用者態到核心態之間的乙個轉換過程:
注意:這裡的呼叫和執行是不同的意思,呼叫是指引發系統呼叫的事件,這個時候程式仍然處於使用者態,執行的時候才是處於核心態。就比如系統呼叫,它被呼叫的時候,是在使用者態下被呼叫的,但是呼叫完了,執行的時候是在核心態執行的。又比如,在訪問記憶體的時候發生了缺頁,這個時候缺頁現象是發生在使用者態下,而怎麼處理缺頁的過程是在核心態下。
又使用者態到核心態的指令,稱為訪管指令,在使用者態下執行。與之對應的指令稱為特權指令,用於核心態向使用者態轉換。
導致切換的過程有兩個原因,乙個是中斷,乙個是異常。
計算機在執行過程中,當出現異常或者特殊請求的時候,計算機停止現行程式的執行,轉向對這些異常情況或特殊處理的請求的處理,待處理完畢以後,再返回現行程式的間斷處,繼續執行原程式,這種現象我們稱之為中斷。
常見的中斷型別有,程式中斷,時鐘中斷,i/o中斷硬體中斷等等。
下面介紹一下中斷的相關術語:
後面的三種方式均由硬體方式實現,顯然關中斷與開中斷是為了保證某些程式執行的原子性。不過某些中斷是不能被遮蔽的(如內部中斷),甚至是無法被遮蔽的,這些中斷一旦提出,cpu必須立刻相應。比如電源掉電中斷,等等。
中斷的分類
為什麼要分類?對中斷分類,能幫助作業系統對不同的中斷賦予不同的處理優先順序,以便當不同中斷同時發生時,該處理哪乙個中斷。
根據中斷源產生的條件,可以把中斷分為外中斷和內中斷(都屬於硬中斷),其中,外中斷是指來自處理機外部和記憶體外部的中斷(如i/o中斷,外部訊號中斷,其實就是我們一般上說的,狹義上的中斷)。而內中斷是指的處理機和記憶體內部產生的中斷,也稱為陷入(trap)或者異常。(比如常見的算術溢位,除數為0,位址非法,缺頁等等)。
對應於硬中斷,軟中斷主要是通訊程序間模擬硬中斷的一種訊號通訊方式,了解即可。
這注意,所有的硬中斷的優先順序都高於軟中斷,各中斷的優先順序在系統設計初期給出,在執行過程中是不變的。
中斷的處理過程
檢查cpu相應中斷的條件是否滿足(是否有請求?優先順序如何?)
關中斷(使得cpu不能再次響應其他中斷)
保護中斷現場(以便處理結束返回中斷點)
分析中斷原因,呼叫中斷處理服務程式。(可通過硬體向量或者軟體查詢得到程式入口,具體這些是什麼,我也不知道)
執行中斷處理服務程式
退出中斷,恢復現場或者呼叫新的程序
開中斷
這裡注意(2)(7),這兩步把中斷處理的過程保護起來了,這種做法我們在後面的程序管理中還會遇到。而(4)中提到的中斷服務程式,上面的步驟僅作為了解,這裡給出大致的4個過程(很重要):
a.保護現場
b.中斷服務
c.恢復現場
d.中斷返回
由於處理機狀態的切換要依賴於中斷和異常,因此,中斷機制是作業系統中所必須的乙個機制。
做題感觸
中斷這部分內容感覺考得比較多
主要問題在於中斷的型別(懂得區分某個現象是哪種中斷型別),使用者態到核心態的轉變條件,轉變過程
與中斷現場有關的暫存器及其作用(psw,pc)。
這應該是必考點,分值一般是一道選擇題,2分
作業系統 使用者態與核心態
1 linux程序有4gb位址空間,如圖所示 3g 4g大部分是共享的,是核心態的位址空間。這裡存放整個核心的 和所有的核心模組以及核心所維護的資料。2 特權級的概念 對於任何作業系統來說,建立乙個程序是核心功能。建立程序要做很多任務作,會消耗很多物理資源。比如分配物理記憶體,父子程序拷貝資訊,拷貝...
作業系統核心態與使用者態
核心態與核心態 處理機 cpu 在執行使用者程式和執行作業系統核心程式時的模式是有區別的,這是因為處理機在執行系統核心程式時,可以獲得更多的特權,以便作業系統程式實現更強的功能,這叫做核心態。而在執行使用者程式的時候,僅有有限的許可權,這樣保障了系統的安全性,這是使用者態。劃分理由 劃分特權與非特權...
挑戰408 作業系統(10) 訊號量與PV操作
處理同步和互斥的問題,除了用到之前的軟體和硬體的方法,用的最多的還是訊號量機制。訊號量機制是通過定義表示共享資源使用的特殊變數以及兩個標準的原語 p操作和v操作 來實現同步和互斥的。根據訊號量的資料型別不同,我們將訊號量分為整型訊號量和記錄型訊號量。整型訊號量 整型訊號量是一種被定義為用來表示資源數...