Linux中核心態指什麼?使用者態切換到核心態的方式有哪些?

老男孩IT教育機構發表於2022-09-01

  在Linux技術大佬口中,我們經常會時不時聽到核心態、使用者態等,核心主要是和硬體打交道,管理最核心的內容,如硬碟、記憶體、CPU等,那你知道在Linux系統中,核心態具體是什麼嗎?請看下文:

  Linux系統中的核心態本質是核心,一種特殊的軟體程式,用於控制計算機的硬體資源,例如協調CPU資源,分配記憶體資源,並且提供穩定的環境供應用程式執行。0-4G範圍的虛擬空間地址都可以操作,尤其是對3-4G範圍的高位虛擬空間地址必須由核心態去操作。

  使用者態提供應用程式執行的空間,為了使應用程式訪問到核心管理的資源,例如CPU,記憶體,I/O等。使用者態只能受限的訪問記憶體,且不允許訪問外設 (硬碟、網路卡等);核心態CPU可以訪問記憶體所有資料,包括外設,且可以將自己從一個程式切換到另一個程式。

  從使用者態切換到核心態有以下三種方式:

  系統呼叫:是使用者態程式主動要求切換到核心態的一種方式,使用者態程式透過系統呼叫申請使用作業系統提供的服務程式完成工作。例如上面的例子、還比如fork()實際上就是執行了一個建立新程式的系統呼叫。(其實系統呼叫本身就是中斷,是軟體中斷)

  異常:如果當前程式執行在使用者態,如果這個時候發生了異常事件,就會觸發切換。例如:缺頁異常。

  外設中端:當外設完成使用者的請求時,會向 CPU 傳送中斷訊號,此時 CPU 會暫停執行下一條即將要執行的指令轉而去執行與中斷訊號對應的處理程式,如果先前執行的指令是使用者態下的程式,那麼這個轉換的過程自然也就發生了由使用者態到核心態的切換。例:如硬碟讀寫操作完成後,系統會切換到硬碟讀寫的中斷處理程式中執行後續操作。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952527/viewspace-2912917/,如需轉載,請註明出處,否則將追究法律責任。

相關文章