Linux系統呼叫及使用者程式設計介面(API)學習

2021-07-16 18:22:56 字數 983 閱讀 6346

linux系統呼叫

系統呼叫指作業系統提供給使用者程式呼叫的一組「特殊」介面,使用者程式可以通過這組「特殊」介面來獲得作業系統核心提供的服務。

為什麼使用者程式不能直接訪問系統核心提供的服務呢?這是由於在linux中,為了更好地保護核心空間,將程式的執行空間分為使用者空間和核心空間(也就是常稱的使用者態和核心態),它們分別執行在不同的級別上,邏輯上是相互分離的。因此,使用者程序通常情況下不允許訪問核心資料,也無法使用核心函式,它們只能在使用者空間操作使用者資料,呼叫使用者空間的函式。

但是,在有些情況下,使用者空間的程序需要獲得一定的系統服務(呼叫核心空間程式),這時作業系統就必須利用系統提供使用者的「特殊介面」———系統呼叫規定使用者程序進入核心空間的具體位置。在進行系統呼叫時,程式執行空間需要從使用者空間進入核心空間,處理完成後再返回使用者空間。

linux系統呼叫還算精簡(只有250個左右),它繼承了unix系統呼叫中最基本和最有用的部分。這些系統呼叫按照功能邏輯大致可分為程序控制、程序間通訊、檔案系統控制、儲存管理、網路管理、套接字控制、使用者管理等幾類。

使用者程式設計介面(api)

前面講到的系統呼叫並不直接與程式設計師進行互動,它僅僅是乙個通過軟中斷機制向核心提交請求以獲取核心服務的介面。實際使用中,程式設計師呼叫的通常都是使用者程式設計介面(api)。

例如,建立程序的api函式fork()函式對應於核心空間的sys_fork()系統呼叫,但並不是所有的函式都對應乙個系統呼叫。有時,乙個api函式會需要幾個系統呼叫來共同完成函式的功能,甚至還有一些api函式不需要呼叫相應的系統呼叫(因此它所完成的不是核心提供的服務)。

系統命令

系統命令相對於api更高了一層,它實際上是乙個可執行程式,它的內部引用了使用者程式設計介面(api)來實現相應的功能,它們之間的關係如下圖1:

Linux系統呼叫及使用者程式設計介面 API

1 linux系統呼叫 所謂系統呼叫是指作業系統提供給使用者程式呼叫的一組 特殊 介面,使用者程式可以通過這組 特殊 介面獲得作業系統核心提供的服務。例如,使用者可以通過程序控制相關的系統呼叫來建立程序 實現程序之間的通訊等。在這裡,為什麼使用者程式不能直接訪問系統核心提供的服務呢?這是由於在lin...

Linux系統呼叫及使用者程式設計介面(API)(二)

一 系統呼叫 建立 int creat const char filename,mode t mode filename 建立的檔名 包含路徑,預設為當前路徑 mode 建立模式 常建立模式 s irusr 可讀 s iwusr 可寫 s ixusr 可執行 s ixrwu 可讀 可寫 可執行 除用...

Linux系統程式設計 Linux系統呼叫

linux 系統呼叫 庫函式 目錄 系統呼叫概述 系統呼叫的實現 系統呼叫和庫函式的區別 系統呼叫,顧名思義,說的是作業系統提供給使用者程式呼叫的一組 特殊 介面。使用者程式可以通過這組 特殊 介面來獲得作業系統核心提供的服務,比如使用者可以通過檔案系統相關的呼叫請求系統開啟檔案 關閉檔案或讀寫檔案...