計算機基礎理論知識梳理篇(二):目態(用戶態)、管態(內核態)

目態與管態操作系統

多數計算機系統將CPU執行狀態分爲目態(用戶態)與管態(內核態),CPU的狀態屬於程序狀態字PSW的一位,CPU交替執行操做系統程序和用戶程序。設計

1. CPU設計中的目態、管態指針

目態指非特權狀態,代碼的執行被硬件限定,如不能讀寫其餘進程的私有存儲空間(程序的用戶空間)以及操做系統的內核空間。blog

管態又叫特權態、系統態或內核態。CPU在管態下能夠執行指令系統的全集,操做系統在管態下運行。進程

x86結構擁有四種級別,級別最高的是ring 0,也就是核心態。級別最低的是ring 3,也就是用戶態。ring 1和ring 2設計成供驅動程式使用,但通常不多使用。內存

2. 操做系統設計中的目態、管態it

內核禁止在目態下的應用程序寫入系統配置文件、殺掉其餘用戶的進程、重啓系統等。 操做系統中的用戶態與用戶權限等級不是一個概念,普通用戶、管理員(root)或者超級用戶(superuser)開啓的程序均可能運行在用戶態和內核態。操做系統中的用戶態代碼運行在CPU的用戶態,實現了從硬件上對非法程序的隔離禁止控制。與CPU設計中的用戶態相比,操做系統對用戶態有更加複雜的權限設定,好比在Unix系統中,運行在用戶態的代碼,不能偵聽1024如下的端口號,以假裝成常見的服務,而超級用戶運行的代碼則有權這樣作。程序在目態下執行特權指令,硬件將發生中斷,由操做系統得到控制,特權指令被禁止執行,這樣能夠防止用戶程序有意或無心的破壞系統。 內存管理

3. 任何一個應用程序都有可能運行在目態或管態
  • 當一個應用程序執行系統調用而陷入內核代碼執行時,則處於內核態,此時CPU執行處於特權0級的內核代碼,內核代碼使用當前進程的內核棧(每一個進程都有本身的內核棧)。
  • 當一個應用程序執行本身的代碼時,則處於用戶態,此時CPU執行處於特權3級用戶代碼。
  • 從目態轉換爲管態的惟一途徑是中斷, 從管態到目態能夠經過修改程序狀態字來實現。
  • 當程序陷入內核態後,先把目態堆棧的地址保存在內核棧之中,而後設置堆棧指針寄存器的內容爲內核棧的地址,這樣就完成了目態棧向內核棧切換;當程序從內核態恢復到用戶態時,先將保存在內核棧裏的用戶棧地址恢復到堆棧指針寄存器便可完成內核棧向用戶棧切換。另外,程序使用的內核棧在切換進入內核運行以前是空的,在切換出內核運行以後也是空的,看上去像一個臨時棧。
 

用戶空間與內核空間class

 

操做系統採用虛擬內存管理方式,將內部存儲器映射爲高地址段內核空間和低地址段用戶空間兩個部分。程序,在內核空間中運行稱爲內核態,在用戶空間中運行稱爲用戶態。配置

相關文章
相關標籤/搜索