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

2021-07-09 08:08:51 字數 1256 閱讀 1884

一. 概念

系統呼叫(英語

: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 指執行在使用者空間的應用程式向作業系統 核心請求某些服務的呼叫過程。系統呼叫提供了使用者程式與作業系統之間的介面。一般來說,系統呼叫都在核心態執行。由於系統呼叫不考慮平台差異性,由核心直接提供,因而移植性較差 幾乎無移植性 庫函式 library f...

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

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