簡介
一個例程可以理解為一個程式,為系統的運作、組織、維護去執行一個或多個功能。執行系統例程是指應用程式中需要作業系統提供服務時,系統執行相應的例程提供服務。執行系統例程的首要條件是應用程式中需要作業系統提供服務,應用程式是無法獲取的,只有通過執行系統例程才能實現。執行系統例程不都是通過 系統調用實現的,這與系統例程的級別有關。例如,設備驅動程式屬於低級的系統例程,不允許系統調用。但是為了滿足其與核心其它部分的互動,可以允許對某些核心過程的調用,如通過調用核心過程來分配和釋放記憶體頁面作為緩衝區,以及調用其它過程來管理 MMU 定時器、DMA 控制器、中斷控制器等。
例程類別
進程(執行緒)管理
大多數的微核心 OS,對於進程管理功能的實現,都採用“機制與策略分離”的原理。例如, 為實現進程(執行緒)調度功能, 須在進程管理中設定一個或多個進程(執行緒)優先權佇列;能將指定優先權進程(執行緒)從所在佇列中取出,並將其投入執行。由於這一部分屬於調度功能的機制部分,應將它放入微核心中。應如何確定每類用戶(進程)的優先權,以及應如何修改它們的優先權等,都屬於策略問題,可將它們放入微核心外的進程(執行緒)管理伺服器中。由於進程(執行緒)之間的通信功能是微核心 OS 最基本的功能,被頻繁使用,因此幾乎所有的微核心 OS 都是將進程(執行緒)之間的通信功能放入微核心中。此外,還將進程的切換、執行緒的調度,以及多處理機之間的同步等功能也放入微核心中。
低級存儲器管理
通常在微核心中,只配置最基本的低級存儲器管理機制。如用於實現將用戶空間的邏輯地址變換為記憶體空間的物理地址的頁表機制和地址變換機制,這一部分是依賴於機器的,因此放入微核心。而實現虛擬存儲器管理的策略,則包含應採取何種頁面置換算法,採用何種記憶體分配與回收策略等,應將這部分放在微核心外的存儲器管理伺服器中去實現。
中斷和陷入處理
大多數微核心作業系統都是將與硬體緊密相關的一小部分放入微核心中處理。此時微核心的主要功能,是捕獲所發生的中斷和陷入事件,並進行相應的前期處理。如進行中斷現場保護,識別中斷和陷入的類型,然後將有關事件的信息轉換成訊息後,把它傳送給相關的伺服器。由伺服器根據中斷或陷入的類型,調用相應的處理程式來進行後期處理。
系統調用
由作業系統實現提供的所有系統調用所構成的集合即程式接口或套用編程接口(Application Programming Interface,API)。是應用程式同系統之間的接口。
系統調用原理
系統中的程式類型及狀態
作業系統中的狀態分為管態(核心態)和目態(用戶態)。特權指令:一類只能在核心態下運行而不能在用戶態下運行的特殊指令。不同的作業系統特權指令會有所差異,但是一般來說主要是和硬體相關的一些指令。訪管指令:本身是一條特殊的指令,但不是特權指令。(trap指令)。基本功能:“自願進管”,能引起訪管異常。
用戶程式只在用戶態下運行,有時需要訪問系統核心功能,這時通過系統調用接口使用系統調用 。
系統功能調用
系統功能調用:就是用戶在程式中使用“訪管指令”調用由作業系統提供的子功能集合。其中每一個系統子功能稱為一個系統調用命令,也叫廣義指令。
系統調用接口
系統功能調用是作業系統提供給程式設計人員的一種服務。程式設計人員在編寫程式時,可以利用系統調用來請求作業系統的服務。目的:方便用戶使用 。