1. 程式人生 > >現代作業系統學習筆記——核心態與使用者態、系統呼叫

現代作業系統學習筆記——核心態與使用者態、系統呼叫

本文為學習《現代作業系統》時遇到的疑問,為網上查詢資料的總和。

核心態與使用者態

作業系統需要CPU的兩種狀態,即核心態與使用者態,兩種狀態的不同主要體現在所能使用的指令範圍上。

核心態:可以執行任何指令,對所有硬體具有完全訪問權,作業系統就執行在核心態。

使用者態:只能使用計算機指令集的一個子集,不允許執行某些指令。

兩種狀態的不同:

除了可使用指令的不同之外,處於使用者態執行時,能訪問的記憶體空間收到限制,所佔用的處理機(包括CPU、儲存器、IO裝置、及外圍裝置)是可被搶佔的,核心態可以訪問所有的記憶體空間,所佔用的處理機不允許被佔用。

由使用者態轉變為核心態主要有三種方式:1、系統呼叫,2、異常,3、外圍裝置的中斷。在這裡只介紹系統呼叫。

Intel -86架構CPU的特權級別

分為:R0、R1、R2、R3,其中R0具有最高許可權,相當於核心態,R3相當於使用者態,Intel-86CPU只能處於其中一個特權級,決定程式碼可以做什麼不可以做什麼,之前用vs進行網路程式設計時,由於沒有用管理員執行,所以無法執行程式碼,問題應該出現在此,硬體每次執行一條指令時都會對指令所具有的特權級進行檢查,如果與當前CPU所處特權級相符則執行,否則拒絕執行。

系統呼叫

系統呼叫:為特殊的過程呼叫,使用者在作業系統中呼叫作業系統所提供的一些子功能,通過系統呼叫命令(即呼叫系統呼叫的命令),終止現行的程式轉去執行相應的子程式,以完成特定的系統功能,完成後,控制又返回到發出系統呼叫命令之後的一條指令,被中斷的程式繼續執行下去。系統呼叫將應用程式的請求傳給核心,呼叫相應的核心函式完成所需要的處理,將處理結果返回給應用程式,通俗的說,目前CPU所處等級無法執行我們程式想要的功能,而系統呼叫相當於提升CPU所處等級,以便CPU執行某些功能