核心態與使用者態,系統呼叫

2021-09-25 02:12:48 字數 922 閱讀 5373

注:參考linux_unix系統程式設計

程序通過系統呼叫syscall從使用者態進入核心態,即將控制權交由核心。

為什麼要把控制權交給核心?

答:核心nb;

程序可以說是什麼都不知道:(執行緒同理)

不知道自己在ram的位置,不知道自己哪部分在記憶體哪部分在交換空間(pcb:記憶體排程)

不知道要訪問的檔案在磁碟**(檔案系統)

程序間也不能直接通訊(程序間通訊:socket,訊號量,訊號,管道,共享記憶體等等)

不能自己建立新程序(fork,clone)

甚至不能自我了斷(訊號)

程序把控制權通過系統呼叫交給核心,核心無所不能。以上程序不行的核心都可以,具體都是後面知識點,環境程式設計就是講系統呼叫函式怎麼工作的,核心在呼叫系統呼叫函式的時候怎麼處理。

系統呼叫執行流程

int 0x80是中斷機器指令,

1.應用程式通過外殼函式(外殼函式保證引數正確)發起系統呼叫

2.響應int 0x80,核心態找到系統呼叫服務例程

3.服務例程處理命令

4.逐級返回

核心態與使用者態

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

核心態與使用者態

一 unix linux的體系架構 如上圖所示,從巨集觀上來看,linux作業系統的體系架構分為使用者態和核心態 或者使用者空間和核心 核心從本質上看是一種軟體 控制計算機的硬體資源,並提供上層應用程式執行的環境。使用者態即上層應用程式的活動空間,應用程式的執行必須依託於核心提供的資源,包括cpu資...

核心態與使用者態

核心態 cpu可以訪問記憶體的所有資料,包括外圍裝置,例如硬碟,網絡卡,cpu也可以將自己從乙個程式切換到另乙個程式。使用者態 只能受限的訪問記憶體,且不允許訪問外圍裝置,占用cpu的能力被剝奪,cpu資源可以被其他程式獲取。為什麼要有使用者態和核心態?由於需要限制不同的程式之間的訪問能力,防止他們...