核心空間是共享的,存在整個核心的**和所有的核心模組以及核心所維護的資料。
最關鍵的工作必須交給特權級最高的程序去執行,這樣可以做到集中管理,減少有限資源的訪問和使用衝突。inter x86架構的cpu一共有四個級別,0-3級,0級特權級最高,3級特權級最低。
當乙個程序在執行使用者自己的**時處於使用者執行態(使用者態),此時特權級最低,為3級,是普通的使用者程序執行的特權級,大部分使用者直接面對的程式都是執行在使用者態。ring3狀態不能訪問ring0的位址空間,包括**和資料;
當乙個程序因為系統呼叫(write、send)陷入核心**中執行時處於核心執行態(核心態),此時特權級最高,為0級。執行的核心**會使用當前程序的核心棧,每個程序都有自己的核心棧。
使用者態的程式就不能隨意操作核心位址空間,具有一定的安全保護作用。這說的保護模式是指通過記憶體頁表操作等機制,保證程序間的位址空間不會互相衝突,乙個程序的操作不會修改另乙個程序位址空間中的資料。
系統呼叫:這是使用者態程序主動要求切換到核心態的一種方式。使用者態程序通過系統呼叫申請使用作業系統提供的服務程式完成工作。例如fork()就是執行了乙個建立新程序的系統呼叫
異常:當cpu在執行執行在使用者態下的程式時,發生了一些沒有預知的異常,這時會觸發由當前執行程序切換到處理此異常的核心相關程序中,也就是切換到了核心態,如缺頁異常。
外圍裝置的中斷:當外圍裝置完成使用者請求的操作後,會向cpu發出相應的中斷訊號,這時cpu會暫停執行下一條即將要執行的指令而轉到與中斷訊號對應的處理程式去執行,如果前面執行的指令時使用者態下的程式,那麼轉換的過程自然就會是 由使用者態到核心態的切換。如硬碟讀寫操作完成,系統會切換到硬碟讀寫的中斷處理程式中執行後邊的操作等。
核心態和使用者態
在核心態下,cpu可執行任何指令,在使用者態下cpu只能執行非特權指令。當cpu處於核心態,可以隨意進入使用者態 而當cpu處於使用者態,只能通過中斷的方式進入核心態。一般程式一開始都是執行於使用者態,當程式需要使用系統資源時,就必須通過呼叫軟中斷進入核心態。當乙個任務 程序 執行系統呼叫而陷入核心...
核心態和使用者態
複習的時候發現 作業系統 書上竟然沒有找到使用者態和核心態的概念,還納悶了半天以為是自己上課的時候沒有認真聽講.核心態 cpu可以訪問記憶體所有資料,包括外圍裝置,例如硬碟,網絡卡.cpu也可以將自己從乙個程式切換到另乙個程式 使用者態 只能受限的訪問記憶體,且不允許訪問外圍裝置.占用cpu的能力被...
使用者態和核心態
從巨集觀上來看,linux作業系統的體系架構分為使用者態和核心態。核心從本質上看是一種軟體 控制計算機的硬體資源,並提供上層應用程式執行的環境。使用者態即上層應用程式的活動空間,應用程式的執行必須依託於核心提供的資源,包括cpu資源 儲存資源 i o資源等。為了使上層應用能夠訪問到這些資源,核心必須...