庫函式與系統呼叫

2021-07-11 00:23:53 字數 747 閱讀 5372

系統呼叫

通常shell是通過系統呼叫將底層硬體功能向上層應用程式提供,(linux的系統呼叫約有300多個)。因為系統呼叫不考慮平台差異性,由核心直接提供,因此移植性較差。

庫函式庫函式是由使用者或組織自己開發的,具有一定功能的函式集合(例如,如果使用者要讓音效卡發生,可能要呼叫好多個系統呼叫,而且系統呼叫有嚴格的順序,則為了簡化這個複雜流程,則將這些能讓音效卡發生的系統呼叫和執行次序進行再次德封裝,則再次封裝後的通用功能稱為庫函式)一般具有較好的平台移植性。(這裡注意區分靜態庫和動態庫平台移植性的差異)

系統呼叫與庫函式的比較

庫函式調 用          

系統呼叫

移植性好

依賴於核心,移植性較差

在使用者空間執行

在核心空間執行

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

在使用者空間和核心之間進行上下文切換,開銷較大

庫函式數量較多

系統呼叫數量較少

呼叫函式庫中一段程式

呼叫系統核心的服務

典型的庫函式呼叫printf  scanf

典型的系統呼叫fork   open   write

兩者聯絡

通常,跟核心功能與作業系統特性緊密相關的服務由系統呼叫提供,具有共通特性的功能一般具有較好的平台移植性由庫函式提供。

檔案i/o操作等各平台都具有的共通功能一般採用庫函式,也便於跨平台移植,而某些情況下庫函式與系統呼叫也有交集。例如,苦函式中的i/o操作的內部實現依然需要呼叫系統的i/o才能實現

系統呼叫與庫函式呼叫

linux下對檔案操作有兩種方式 系統呼叫 system call 和庫函式呼叫 library functions 系統呼叫實際上就是指最底層的乙個呼叫,在linux程式設計裡面就是底層呼叫的意思。面向的是硬體。而庫函式呼叫則面向的是應用開發的,相當於應用程式的api,採用這樣的方式有很多種原因,...

系統呼叫與庫函式

大部分的i o軟體放在作業系統內部,但仍有一小部分在使用者層,其中包括與使用者程式鏈結在一起的庫函式,以及完全執行在核心之外的假離線系統 一方面,為使各個程序有條不紊地使用i o裝置,且能保護裝置的安全性,不允許在使用者態的應用程式去直接呼叫在核心態的os。但另一方面,應用程式在執行時,又必須取得o...

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

1 系統呼叫和庫函式的關係 系統呼叫通過軟中斷int 0x80從使用者態進入核心態。函式庫中的某些函式呼叫了系統呼叫。函式庫中的函式可以沒有呼叫系統呼叫,也可以呼叫多個系統呼叫。程式設計人員可以通過函式庫呼叫系統呼叫。高階程式設計也可以直接採用int 0x80進入系統呼叫,而不必通過函式庫作為中介。...