從使用者態向核心態切換的三種情況

2021-06-18 10:50:33 字數 505 閱讀 8696

從使用者態向核心態切換可以分為3種情況:

1、發生系統呼叫時

這是處於使用者態的程序主動請求切換到核心態的一種方式。使用者態的程序通過系統呼叫申請使用作業系統提供的系統呼叫服務例程來處理任務。而系統呼叫的機制,其核心仍是使用了作業系統為使用者特別開發的乙個中斷機制來實現的,即軟中斷。

2、產生異常時

當cpu執行執行在使用者態下的程式時,發生了某些事先不可知的異常,這時會觸發由當前執行的程序切換到處理此異常的核心相關的程式中,也就是轉到了核心態,如缺頁異常。

3、外設產生中斷時

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

可以看到上述三種由使用者態切換到核心態的情況中,只有系統呼叫是程序主動請求發生切換的,中斷和異常都是被動的。

從使用者態切換到核心態

在linux系統中,每個系統呼叫被賦予乙個系統呼叫號。這樣通過這個系統呼叫號就可以關聯系統呼叫。當使用者空間執行的程序執行乙個系統呼叫的時候,這個系統呼叫號就告訴核心需要呼叫哪個。核心記錄了系統調表中所有已註冊過的系統呼叫的列表,這個表為每乙個有效的系統呼叫指定了唯一的系統呼叫號。使用者空間程式無法...

使用者態和核心態的切換

系統呼叫 比如fork 方法,直接fork出乙個執行緒 具體的底層實現是軟體中斷,下面會講 異常 當cpu在執行使用者空間的程式時,發生了異常,處理異常的話就必須在核心態進行處理,比如缺頁異常 外圍裝置的中斷 當進行檔案io操作完成後,硬體io裝置會向cpu發出乙個中斷訊號,如果這時候cpu正在執行...

使用者態切換到核心態的3種方式

a.系統呼叫 這是使用者態程序主動要求切換到核心態的一種方式,使用者態程序通過系統呼叫申請使用作業系統提供的服務程式完成工作,比如fork 實際上就是執行了乙個建立新程序的系統呼叫。而系統呼叫的機制其核心還是使用了作業系統為使用者特別開放的乙個中斷來實現,例如linux的int 80h中斷。b.異常...