? 操作系統內核

操作系統的內核是指在計算機硬體上擴充的第一層軟體。通常是一些與硬體緊密相關的模塊。內核的實現是通過原語實現的,而原語又是由原子操作構成的。 原語是由若干指令構成的,用於完成一定功能的過程。而原子操作是指在這過程中的行為 ,要麼全做,要麼不做,不可中斷(以保證操作的完整性)。 操作系統主要包含以下功能:

- 時鐘管理(以後會講)

- 中斷處理(下篇會講)

- 原語操作(剛剛提到的)

核心態與用戶態

核心態(又稱為系統態),在此狀態下,能能執行一切指令,訪問所有的寄存器內容及存區域(用一句不嚴謹的話說,啥都能幹用戶態,是相對核心態而言的,在此狀態下,只能執行特定的一些指令,特定的一些寄存器和一些特定的區域。 那麼問題來了,為什麼要區分用戶態和核心態呢?原因很簡單,就是為了保護操作系統,因為操作系統中的一些重要數據,比如PCB,是不允許修改和破壞的。 記得我們上一篇博文提到過,系統調用,是系統提供的給應用程序使用內核功能的介面。它是用戶取得操作系統服務的唯一途徑。所以當用戶程序需要操作系統服務而而調用系統調用的時候,處理機應該從用戶態轉到核心態,當系統調用返回用戶程序的時候,處理機的狀態從核心態回到用戶態。

核心態與用戶態的轉換過程

在說這個問題之前,我們需要深入了解一下系統調用,我們前面知道,系統調用就是一個程序介面(注意,這不是指我們平時用的AIP,比如一些庫函數,一些自定義函數)。而操作系統中的各種共享資源由操作系統統一管理,因此,顯然對操作系統資源進行的操作都是在內核態進行的,包括我們後面要學到的各種管理(進程管理,I/O管理,內存管理等等)。顯然系統調用是一定運行在核心態。 那麼,我們可以得到大致的用戶態到核心態之間的一個轉換過程:

注意:這裡的調用和執行是不同的意思,調用是指引發系統調用的事件,這個時候程序仍然處於用戶態,執行的時候才是處於核心態。就比如系統調用,它被調用的時候,是在用戶態下被調用的,但是調用完了,執行的時候是在內核態執行的。又比如,在訪問內存的時候發生了缺頁,這個時候缺頁現象是發生在用戶態下,而怎麼處理缺頁的過程是在核心態下。 又用戶態到核心態的指令,稱為訪管指令,在用戶態下執行。與之對應的指令稱為特權指令,用於內核態向用戶態轉換。 導致切換的過程有兩個原因,一個是中斷,一個是異常。

中斷和異常

計算機在執行過程中,當出現異常或者特殊請求的時候,計算機停止現行程序的運行,轉向對這些異常情況或特殊處理的請求的處理,待處理完畢以後,再返回現行程序的間斷處,繼續執行原程序,這種現象我們稱之為中斷。 常見的中斷類型有,程序中斷,時鐘中斷,I/O中斷硬體中斷等等。 下面介紹一下中斷的相關術語:

- 中斷源 :引起中斷髮生的事件

- 中斷響應:CPU收到中斷請求後轉去執行相應的事件處理程序

- 中斷屏蔽:在中斷請求產生後,系統用軟體方式有選擇得封鎖不封中斷,而允許其他中斷仍能得到響應。

- 關中斷:又稱禁止中斷,CPU內部處理機狀態字(PSW)(記住這個寄存器)中斷允許位被清除,不允許CPU響應中斷。

  • 開中斷:與關中斷相反,CPU內部處理機狀態字(PSW)(記住這個寄存器)中斷允許位被恢復,允許CPU響應中斷。
  • 中斷請求:中斷源向CPU發出的請求中斷處理信號

後面的三種方式均由硬體方式實現,顯然關中斷與開中斷是為了保證某些程序執行的原子性。不過某些中斷是不能被屏蔽的(如內部中斷),甚至是無法被屏蔽的,這些中斷一旦提出,CPU必須立刻相應。比如電源掉電中斷,等等。

中斷的分類

為什麼要分類?對中斷分類,能幫助操作系統對不同的中斷賦予不同的處理優先順序,以便當不同中斷同時發生時,該處理哪一個中斷。 根據中斷源產生的條件,可以把中斷分為外中斷和內中斷(都屬於硬中斷),其中,外中斷是指來自處理機外部和內存外部的中斷(如I/O中斷,外部信號中斷,其實就是我們一般上說的,狹義上的中斷)。而內中斷是指的處理機和內存內部產生的中斷,也稱為陷入(trap)或者異常。(比如常見的算術溢出,除數為0,地址非法,缺頁等等)。 對應於硬中斷,軟中斷主要是通信進程間模擬硬中斷的一種信號通信方式,了解即可。 這注意,所有的硬中斷的優先順序都高於軟中斷,各中斷的優先順序在系統設計初期給出,在運行過程中是不變的。

中斷的處理過程

  1. 檢查CPU相應中斷的條件是否滿足(是否有請求?優先順序如何?)
  2. 關中斷(使得CPU不能再次響應其他中斷)
  3. 保護中斷現場(以便處理結束返回中斷點)
  4. 分析中斷原因,調用中斷處理服務程序。(可通過硬體向量或者軟體查詢得到程序入口,具體這些是什麼,我也不知道)
  5. 執行中斷處理服務程序
  6. 退出中斷,恢復現場或者調用新的進程
  7. 開中斷

這裡注意(2)(7),這兩步把中斷處理的過程保護起來了,這種做法我們在後面的進程管理中還會遇到。而(4)中提到的中斷服務程序,上面的步驟僅作為了解,這裡給出大致的4個過程(很重要):

a. 保護現場

b. 中斷服務

c. 恢復現場

d. 中斷返回

由於處理機狀態的切換要依賴於中斷和異常,因此,中斷機制是操作系統中所必須的一個機制。

做題感觸

  1. 中斷這部分內容感覺考得比較多
  2. 主要問題在於中斷的類型(懂得區分某個現象是哪種中斷類型),用戶態到內核態的轉變條件,轉變過程
  3. 與中斷現場有關的寄存器及其作用(PSW,PC)。
  4. 這應該是必考點,分值一般是一道選擇題,2分

推薦閱讀:

相关文章