cpu在核心態與使用者態下執行,程序數的差別

2021-06-22 04:19:50 字數 684 閱讀 7134

當乙個任務(程序)執行系統呼叫而陷入核心**中執行時,我們就稱程序處於核心執行態(或簡稱為核心態)。此時處理器處於特權級最高的(0級)核心**中執行。當程序處於核心態時,執行的核心**會使用當前程序的核心棧。每個程序都有自己的核心棧。當程序在執行使用者自己的**時,則稱其處於使用者執行態(使用者態)。即此時處理器在特權級最低的(3級)使用者**中執行。當正在執行使用者程式而突然被中斷程式中斷時,此時使用者程式也可以象徵性地稱為處於程序的核心態。因為中斷處理程式將使用當前程序的核心棧。這與處於核心態的程序的狀態有些類似。在核心時,也可以不是程序而是中斷程式,因此有乙個程序數的差別。

其實處理機同一時刻只能執行乙個程序。而要讓處理機同時去執行多個程序,怎麼辦?

程序排程程式會把處理機劃分成長短相同且很小的時間塊,每個時間塊執行乙個程序,某個程序時間塊用完後,回到就緒狀態,換到下乙個程序執行。這樣輪流來執行,實現了處理機能一起一起執行多個程序。

當某個程序申請資源被占用或者啟動i/o傳輸未完成,就處於等待狀態。(此時它和其它程序不一樣,它不再去爭奪時間塊,就相當於睡著了一樣)當它所請求的資源被釋放,或者啟動i/o傳輸完成,那麼就會由繼續進行就緒狀態,(這就好比它被喚醒了,回到就緒狀態裡,同其它里程爭奪處理機的時間塊。你的問題就是這個程序從睡著了,然後又被喚醒了。被喚醒後你不能馬上就要求執行啊,因為處理機還要執行其它程序,而這個程序就要回到就緒狀態,和其它程序一樣卻爭奪處理機的執行時間塊)

cpu核心態與使用者態

核心態 kernel mode 執行作業系統程式,操作硬體 使用者態 user mode 執行使用者程式 特權指令 只能由作業系統使用 使用者程式不能使用的指令。舉例 啟動i o 記憶體清零 修改程式狀態字 設定時鐘 允許 禁止終端 停機 非特權指令 使用者程式可以使用的指令。舉例 控制轉移 算數運...

CPU使用者態 核心態和空閒態

執行top命令時,出現一堆結果不知道什麼意思,於是一通查詢,大概搞明白了輸出結果的含義,其中比較重要的幾個引數是 us user state 使用者態資訊 sy system state核心態資訊 id 空閒狀態 關於使用者態和核心態是個啥,用一張圖一目了然 cpu處理任務表面上看似是並行工作,實際...

核心態與使用者態

核心態與使用者態是作業系統的兩種執行級別,intel cpu提供ring0 ring3三種級別的執行模式。ring0級別最高,ring3最低。其中特權級0 ring0 是留給作業系統 裝置驅動程式 使用的,它們工作於系統核心態 而特權極3 ring3 則給普通的使用者程式使用,它們工作在使用者態。執...