系統(tǒng)調(diào)用

CPU特權(quán)級

為了防止內(nèi)核被用戶進(jìn)程隨意訪問,CPU通過特權(quán)級實現(xiàn)訪問控制,當(dāng)前特權(quán)級決定了哪些CPU指令可以被執(zhí)行。
linux CPU特權(quán)級分2層: Ring 0和Ring 3,內(nèi)核運行在最高特權(quán)級Ring 0,用戶進(jìn)程運行在最低特權(quán)級Ring 3。
用戶進(jìn)程要執(zhí)行特權(quán)操作,需要從Ring 3轉(zhuǎn)變到Ring 0。

系統(tǒng)調(diào)用

系統(tǒng)調(diào)用是操作系統(tǒng)為了統(tǒng)一管理硬件資源,并為上層應(yīng)用程序提供良好的環(huán)境,使應(yīng)用程序具有更好的兼容性,在內(nèi)核代碼中封裝的接口,比如常見的fork、read、write等。

系統(tǒng)調(diào)用的步驟

CPU執(zhí)行用戶程序時,處于用戶空間,執(zhí)行內(nèi)核程序時,處于內(nèi)核空間。


image.png

每次發(fā)起系統(tǒng)調(diào)用,就會產(chǎn)生用戶空間與內(nèi)核空間的切換,具體步驟如下

  1. 用戶進(jìn)程把系統(tǒng)調(diào)用號,存入寄存器
  2. 用戶進(jìn)程把系統(tǒng)調(diào)用相關(guān)入?yún)⒋嫒爰拇嫫?/li>
  3. 用戶進(jìn)程執(zhí)行80中斷
  4. CPU接收到中斷信息,執(zhí)行中斷處理程序(在這一步驟切換到內(nèi)核態(tài))
  5. 運行內(nèi)核程序
  6. 內(nèi)核程序把返回值存入寄存器
  7. 內(nèi)核程序恢復(fù)用戶進(jìn)程的上下文,用戶進(jìn)程繼續(xù)執(zhí)行
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容