一、庫函式和系統呼叫概念
庫函式:庫函式是語言或應用程式的一部分,可以執行在使用者空間中。
系統呼叫:又稱廣義指令,它是由作業系統向程式提供的程式介面,而非直接向使用者提供,使用者只能通過程式間接的使用這些介面。
1.在概念對比中,可以直觀的感觸到系統呼叫是依賴於作業系統的,由於其依賴於平台,所以系統呼叫的平台移植性較差。
2.而函式庫,是將一些已經編寫好函式進過封裝,存放到函式庫(靜態庫或動態庫)中,是具有特定功能函式的集合。 通過庫檔案向程式設計師提供相關的函式,以便於呼叫。程式設計師不需要關心平台的差異性,如linux或windows,由庫對不同平台差異遮蔽。
二、庫函式和系統呼叫在不同方面的對比。 對比
庫函式系統呼叫
移植性平台移植性好
依賴於核心,不保證移植性
執行區域
使用者空間
核心空間
開銷屬於過程呼叫,開銷小
需要中斷,在使用者空間和核心空間進行切換開銷大
數量庫函式數量較多
系統呼叫較少
執行時間
屬於使用者時間
屬於系統時間
關於系統呼叫的幾點說明:
1、系統呼叫的目的:為了是系統更加穩定安全,防止小白使用者、惡意使用者進行非法的越權操作。
2、從使用者態切換到核心態必須要通過」中斷」,只要發生中斷,就需要對中斷進行處理,也不然會切換到核心點。
三、總結
庫函式是語言或應用程式的一部分,可以執行在使用者空間中。而系統呼叫是作業系統的一部分,是核心提供給使用者的程式介面,執行在核心空間中,而且許多的庫函式都會使用系統呼叫實現功能,如在linux下c中的fopen、fclose、fwrite等檔案操作函式其底層就是通過open、close、write等系統呼叫是實現的。沒有使用系統呼叫的庫函式,執行效率通常比系統呼叫高。因為使用系統呼叫時,需要通過中斷進行上下文的切換以及由使用者態向核心態的轉移。
庫函式呼叫和系統呼叫的區別
庫函式是語言本身的一部分,而系統函式是核心提供給應用程式的介面,屬於系統的一部分。函式庫呼叫是語言或應用程式的一部分,而系統呼叫是作業系統的一部分。函式庫呼叫 系統呼叫 在所有的ansi c編譯器版本中,c庫函式是相同的 各個作業系統的系統呼叫是不同的 它呼叫函式庫中的一段程式 或函式 它呼叫系統核...
系統呼叫和庫函式的區別
所謂系統呼叫就是作業系統提供給應用程式的一系列介面。在linux下包含以下幾種型別 程序控制 如 fork 檔案系統控制 如 write 系統控制 如 reboot 記憶體管理 如 getpagesize 獲取頁面大小 沒見過。網路管理 getdomainname 取網域名稱 socket控制 如 ...
庫函式和系統呼叫的區別
unix作業系統設計上的陳述 理解庫函式的區別和系統呼叫,首先要里理解unix的kernel mode和user mode。考慮下面的函式段 int main int fd create filename 0666 exit 0 在執行main函式時,是在user mode下執行,當遇到create...