庫函式與系統呼叫的聯絡與區別

2021-09-07 16:18:50 字數 1033 閱讀 2732

一. 概念

系統呼叫(英語:system call),指執行在使用者空間的應用程式向作業系統

核心請求某些服務的呼叫過程。 系統呼叫提供了使用者程式與作業系統之間的介面。一般來說,系統呼叫都在核心態執行。由於系統呼叫不考慮平台差異性,由核心直接提供,因而移植性較差(幾乎無移植性)。

庫函式(library function),是由使用者或組織自己開發的,具有一定功能的函式集合,一般具有較好平台移植性,通過庫檔案(靜態庫或動態庫)向程式設計師提供功能性呼叫。程式設計師無需關心平台差異,由庫來遮蔽平台差異性。

二,區別

呼叫※函式庫呼叫 vs 系統

函式庫呼叫

系統呼叫

平台移植性好

依賴於核心,不保證移植性

呼叫函式庫中的一段程式(或函式)

呼叫系統核心的服務

乙個普通功能函式的呼叫

是作業系統的乙個入口點

在使用者空間執行

在核心空間執行

它的執行時間屬於「使用者時間」

它的執行時間屬於「系統」時間

屬於過程呼叫,呼叫開銷較小

在使用者空間和核心上下文環境間切換,開銷較大

庫函式數量較多

unix中大約有90個系統呼叫,較少

典型的c函式庫呼叫:printf scanf malloc 

典型的系統呼叫:fork open write

三. 聯絡

一般而言,跟核心功能與作業系統特性緊密相關的服務,由系統呼叫提供;

具有共通特性的功能一般需要較好的平台移植性,故而由庫函式提供。

庫函式與系統呼叫在功能上相互補充,如程序間通訊資源的管理,程序控制等功能與平台特性和核心息息相關,必須由系統呼叫來實現。

檔案 i/o操作等各平台都具有的共通功能一般採用庫函式,也便於跨平台移植。

某些情況下,庫函式與系統呼叫也有交集,

如 庫函式中的i/o操作的內部實現依然需要呼叫系統的i/o方能實現。

庫函式與系統呼叫的聯絡與區別

一.概念 系統呼叫 英語 system call 指執行在 使用者空間 的應用程式 向作業系統 核心請求某些服務的呼叫過程。系統呼叫提供了使用者程式與 作業系統 之間的介面。一般來說,系統呼叫都在核心態執行 由於系統呼叫不考慮平台差異性,由核心直接提供,因而移植性較差 幾乎無移植性 庫函式 libr...

庫函式與系統呼叫的聯絡與區別

一.概念 系統呼叫 英語 system call 指執行在 使用者空間 的應用程式 向作業系統 核心請求某些服務的呼叫過程。系統呼叫提供了使用者程式與 作業系統 之間的介面。一般來說,系統呼叫都在核心態執行 由於系統呼叫不考慮平台差異性,由核心直接提供,因而移植性較差 幾乎無移植性 庫函式 libr...

筆試訓練 庫函式與系統呼叫的聯絡與區別

一.概念 系統呼叫 英語 system call 指執行在 使用者空間 的應用程式 向作業系統 核心請求某些服務的呼叫過程。系統呼叫提供了使用者程式與 作業系統 之間的介面。一般來說,系統呼叫都在核心態執行 由於系統呼叫不考慮平台差異性,由核心直接提供,因而移植性較差 幾乎無移植性 庫函式 libr...