1 linux系統呼叫
所謂系統呼叫是指作業系統提供給使用者程式呼叫的一組「特殊」介面,使用者程式可以通過這組「特殊」介面獲得作業系統核心提供的服務。例如,使用者可以通過程序控制相關的系統呼叫來建立程序、實現程序之間的通訊等。
在這裡,為什麼使用者程式不能直接訪問系統核心提供的服務呢?這是由於在linux中,為了更好地保護核心空間,將程式的執行空間分為核心空間和使用者空間(也就是常稱的核心態和使用者態),它們分別執行在不同的級別上,邏輯上是相互隔離的。因此,使用者程序在通常情況下不允許訪問核心資料,也無法使用核心函式,它們只能在使用者空間操作使用者資料,呼叫使用者空間的函式。
但是,在有些情況下,使用者空間的程序需要獲得一定的系統服務(呼叫核心空間程式),這時作業系統就必須利用系統提供給使用者的「特殊介面」——系統呼叫規定使用者程序進入核心空間的具體位置。在進行系統呼叫時,程式執行空間需要從使用者空間進入核心空間,處理完成後再返回使用者空間。
linux系統呼叫非常精簡(只有250個左右),它繼承了unix系統呼叫中最基本和最有用的部分。這些系統呼叫按照功能邏輯大致可分為程序控制、程序間通訊、檔案系統控制、儲存管理、網路管理、套接字控制、使用者管理等幾類。
2 使用者程式設計介面(api)
前面講到的系統呼叫並不直接與程式設計師進行互動,它僅僅是乙個通過軟中斷機制向核心提交請求以獲取核心服務的介面。實際使用中程式設計師呼叫的通常是使用者程式設計介面——api。
例如,建立程序的api函式frok()對應於核心空間的sys_fork()系統呼叫,但並不是所有的函式都對應乙個系統呼叫。有時,乙個api函式會需要幾個系統呼叫來共同完成函式的功能,甚至還有一些api函式不需要呼叫相應的系統呼叫(因此它所完成的不是核心提供的服務)。
在linux中,使用者程式設計介面(api)遵循在unix中最流行的應用程式設計介面標準——posix標準。posix標準是由ieee和iso/iec共同開發的標準系統,該標準基於當時現有的unix實踐和經驗,描述了作業系統的系統呼叫程式設計介面(實際上就是api),用於保證應用程式可以在源**一級上、在多種作業系統之間移植執行。這些系統呼叫程式設計介面主要是通過c庫(libc)實現的。
3 系統命令
系統命令相對於api更高了一層,它實際上是乙個可執行程式,它的內部引用了使用者程式設計介面(api)來實現相應的功能,它們之間的關係如圖所示。
系統呼叫、api及系統命令之間的關係
Linux系統呼叫及使用者程式設計介面(API)學習
linux系統呼叫 系統呼叫指作業系統提供給使用者程式呼叫的一組 特殊 介面,使用者程式可以通過這組 特殊 介面來獲得作業系統核心提供的服務。為什麼使用者程式不能直接訪問系統核心提供的服務呢?這是由於在linux中,為了更好地保護核心空間,將程式的執行空間分為使用者空間和核心空間 也就是常稱的使用者...
Linux系統呼叫及使用者程式設計介面(API)(二)
一 系統呼叫 建立 int creat const char filename,mode t mode filename 建立的檔名 包含路徑,預設為當前路徑 mode 建立模式 常建立模式 s irusr 可讀 s iwusr 可寫 s ixusr 可執行 s ixrwu 可讀 可寫 可執行 除用...
Linux系統程式設計 Linux系統呼叫
linux 系統呼叫 庫函式 目錄 系統呼叫概述 系統呼叫的實現 系統呼叫和庫函式的區別 系統呼叫,顧名思義,說的是作業系統提供給使用者程式呼叫的一組 特殊 介面。使用者程式可以通過這組 特殊 介面來獲得作業系統核心提供的服務,比如使用者可以通過檔案系統相關的呼叫請求系統開啟檔案 關閉檔案或讀寫檔案...