基本介紹
- 中文名:核心支持函式
- 外文名:Kernel support function
- 學科:位於作業系統
- 別名:例程
- 定義:在核心模式下調用的例程或子程式
- 有關術語:核心
簡介,系統調用,有關術語,
簡介
在 OS 的核心(核心)中都設定了一組用於實現各種系統功能的子程式(過程),並將它們提供給應用程式調用,即核心支持函式。由於這些函式是 OS 系統本身程式模組中的一部分,為了保護作業系統程式不被用戶程式破壞,一般都不允許用戶程式訪問作業系統的程式和數據,所以也不允許應用程式採用一般的過程調用方式來直接調用這些過程,而是向應用程式提供了一系列的系統調用命令(即程式接口),讓應用程式通過系統調用去調用所需的核心支持函式的過程。
系統調用
系統調用(system call),又稱為系統調用,指運行在用戶空間的程式向作業系統核心請求需要更高許可權運行的服務。系統調用提供用戶程式與作業系統之間的接口。大多數系統互動式操作需求在核心態運行。如設備IO操作或者進程間通信。系統功能調用:就是用戶在程式中使用“訪管指令”調用由作業系統提供的子功能集合。其中每一個系統子功能稱為一個系統調用命令,也叫廣義指令。當應用程式中需要作業系統提供服務時,如請求 I/O 資源或執行 I/O 操作,應用程式必須使用系統調用命令。由作業系統捕獲到該命令後,便將 CPU 的狀態從用戶態轉換到系統態,然後執行作業系統中相應的子程式(例程),完成所需的功能。執行完成後,系統又將CPU 狀態從系統態轉換到用戶態,再繼續執行應用程式。可見,系統調用在本質上是應用程式請求 OS 核心完成某功能時的一種過程調用,但它是一種特殊的過程調用,它與一般的過程調用有下述幾方面的明顯差別:
(1) 運行在不同的系統狀態。一般的過程調用,其調用程式和被調用程式都運行在相同的狀態——系統態或用戶態;而系統調用與一般調用的最大區別就在於:調用程式是運行在用戶態,而被調用程式是運行在系統態。
(2) 狀態的轉換通過軟中斷進入。由於一般的過程調用並不涉及到系統狀態的轉換,可直接由調用過程轉向被調用過程。但在運行系統調用時,由於調用和被調用過程是工作在不同的系統狀態,因而不允許由調用過程直接轉向被調用過程。通常都是通過軟中斷機制,先由用戶態轉換為系統態,經核心分析後,才能轉向相應的系統調用處理子程式。
(3) 返回問題。在採用了搶占式(剝奪)調度方式的系統中,在被調用過程執行完後,要對系統中所有要求運行的進程做優先權分析。當調用進程仍具有最高優先權時,才返回到調用進程繼續執行;否則,將引起重新調度,以便讓優先權最高的進程優先執行。此時,將把調用進程放入就緒佇列。
(4) 嵌套調用。像一般過程一樣,系統調用也可以嵌套進行,即在一個被調用過程的執行期間,還可以利用系統調用命令去調用另一個系統調用。當然,每個系統對嵌套調用的深度都有一定的限制,例如最大深度為 6。但一般的過程對嵌套的深度則沒有什麼限制。
有關術語
程式接口
程式接口是 OS 專門為用戶程式設定的,也是用戶程式取得 OS 服務的途徑。程式接口通常是由各種類型的系統調用所組成的,因而,也可以說,系統調用提供了用戶程式和作業系統之間的接口,應用程式通過系統調用實現其與 OS 的通信,並可取得它的服務。系統調用不僅可供所有的應用程式使用, 而且也可供 OS 自身的其它部分,尤其是命令處理程式使用。在每個系統中,通常都有幾十條甚至上百條的系統調用,並可根據其功能而把它們劃分成若干類。 例如, 有用於進程控制(類)的系統調用和用於檔案管理(類)、 設備管理(類)及進程通信等類的系統調用。
系統態和用戶態
在計算機系統中,通常運行著兩類程式:系統程式和應用程式,為了保證系統程式不被應用程式有意或無意地破壞,為計算機設定了兩種狀態:系統態(也稱為管態或核心態)和用戶態(也稱為目態)。作業系統在系統態運行,而應用程式只能在用戶態運行。在實際運行過程中,處理機會在系統態和用戶態間切換。相應地,現代多數作業系統將 CPU 的指令集分為特權指令和非特權指令兩類。