作業系統中使用者態和核心態(系統態)是什麼?使用者態如何變成核心態?
使用者態:當程式在執行使用者自己的程式碼時,則稱其處於使用者態,這時cpu 訪問資源有限,執行在使用者態下的程式不能直接訪問作業系統核心資料結構和程式。
核心態:當一個任務(程式)執行系統呼叫而陷入核心程式碼中執行時,我們就稱程式處於核心狀態,這時cpu可以訪問計算機的任何資源。
使用者態變為核心態:
a. 系統呼叫
這是使用者態程式主動要求切換到核心態的一種方式,使用者態程式通過系統呼叫申請使用作業系統提供的服務程式完成工作,比如前例中fork()實際上就是執行了一個建立新程式的系統呼叫。而系統呼叫的機制其核心還是使用了作業系統為使用者特別開放的一箇中斷來實現,例如Linux的int 80h中斷。
b. 異常
當CPU在執行執行在使用者態下的程式時,發生了某些事先不可知的異常,這時會觸發由當前執行程式切換到處理此異常的核心相關程式中,也就轉到了核心態,比如缺頁異常。
c. 外圍裝置的中斷
當外圍裝置完成使用者請求的操作後,會向CPU發出相應的中斷訊號,這時CPU會暫停執行下一條即將要執行的指令轉而去執行與中斷訊號對應的處理程式,如果先前執行的指令是使用者態下的程式,那麼這個轉換的過程自然也就發生了由使用者態到核心態的切換。比如硬碟讀寫操作完成,系統會切換到硬碟讀寫的中斷處理程式中執行後續操作等。
相關文章
- Linux核心態是什麼?使用者態如何切換到核心態?Linux
- Linux中核心態指什麼?使用者態切換到核心態的方式有哪些?Linux
- 使用者態和核心態的區別是啥
- 使用者態和核心態的區別
- 作業系統 『動態(可變)分割槽分配』作業系統
- openEuler生態成長迅速,國產作業系統走出生態繁榮之路作業系統
- 作業系統:計算機的生態系統作業系統計算機
- 國產作業系統的生態之路作業系統
- Laravel生態系統中EcosystemLaravel
- Linux作業系統中如何檢視當前程式的狀態?Linux作業系統
- 雲組態和傳統組態有什麼不同?有什麼功能?
- 系統狀態統計和檢視
- MySQL 8.0 5.1.6.2 動態系統變數MySql變數
- 基於kubernetes雲作業系統的生態系統 - Kelsey Hightower作業系統
- SuperAwesome:兒童遊戲生態系統是如何改變的遊戲
- 動態系統 MATLAB 例子Matlab
- 國產作業系統生態發展趨勢作業系統
- 買了固態硬碟後如何裝系統|新固態硬碟安裝系統的方法硬碟
- 換固態硬碟要重灌系統嗎 換固態硬碟重灌系統教程硬碟
- win10怎麼恢復系統初始狀態 win10系統還原成原始狀態的方法Win10
- 靜態IP是什麼意思?和動態IP 有什麼區別
- 系統設計架構:有狀態與無狀態架構
- Linux中系統狀態檢測命令Linux
- 初識程式(一)——作業系統,程式管理,程式狀態作業系統
- 初入Hadoop生態系統Hadoop
- Salesforce生態和SAP生態有什麼不同Salesforce
- windows10系統下基本磁碟變成動態磁碟瞭如何解決Windows
- .NET 生態系統的蛻變之 .NET 6
- Linux中什麼是動態路由?動態路由協議有哪些?Linux路由協議
- 什麼是web組態Web
- 什麼是組態軟體?Web組態軟體又是什麼?Web
- 廣告生態系統大變天,如何捕獲新玩家?
- 動態IP和靜態IP有什麼區別?
- JVM生態系統報告2018JVM
- 2018 JVM生態系統報告JVM
- **Linux 配置系統網路(動態)**Linux
- Kylin系統檢視firewalld狀態
- Android 隱藏系統狀態列Android