系統呼叫和庫函式的區別

2021-05-23 03:08:37 字數 876 閱讀 2026

所謂系統呼叫就是作業系統提供給應用程式的一系列介面。在linux下包含以下幾種型別:程序控制(如:fork)、檔案系統控制(如:write)、系統控制(如:reboot)、記憶體管理(如:getpagesize 獲取頁面大小——沒見過。。。)、網路管理(getdomainname 取網域名稱 )、socket控制(如:上文提到socket、bind等)、使用者管理(getuid 獲取使用者標識號 )、程序間通訊(pipe建立管道)等。在應用程式呼叫系統呼叫時,會將該程式的程序從使用者態切換到核心態。系統呼叫也要包含標頭檔案。

庫函式;顧名思義是把函式放到庫里..是別人把一些常用到的函式編完放到乙個檔案裡,供別人用.別人用的時候把它所在的檔名用#include<>加到裡面就可以了

所謂庫函式,可分為兩類:一是c語言標準裡規定的庫函式,二是編譯器特定的庫函式。

有些庫函式最後會用到系統呼叫,如:printf()最後會用到系統呼叫中的write()。由於應用程式可能會涉及到一些io讀寫、記憶體控制、網路管理等操作,使用者在編寫程式時可能只要寫乙個庫函式呼叫(如:想列印語句,寫個printf()),這些庫函式自行啟用系統呼叫。所以說,有的庫函式是系統呼叫的乙個視窗。

區別:

1. 庫函式的跨平台性很好,如printf()在windows和linux下都可以使用。而系統呼叫幾乎就沒什麼跨平台性(這裡指的是大平台哦,如windows、linux、蘋果作業系統等,而非linux的某某版本和某某版本)。

2. 由於系統呼叫是執行的核心態的,所以其執行速度一般都比庫函式快,庫函式最後也要呼叫到系統呼叫嘛。但是庫函式有時候會做一些提高效能的處理,比如printf(),它會等到buffer滿了再寫,這樣就節省了程式從使用者態轉化到核心態的次數,從而節省時間。

3.在除錯過程中,可以利用strace跟蹤系統呼叫,ltrace跟蹤庫函式呼叫。

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

庫函式是語言本身的一部分,而系統函式是核心提供給應用程式的介面,屬於系統的一部分。函式庫呼叫是語言或應用程式的一部分,而系統呼叫是作業系統的一部分。函式庫呼叫 系統呼叫 在所有的ansi c編譯器版本中,c庫函式是相同的 各個作業系統的系統呼叫是不同的 它呼叫函式庫中的一段程式 或函式 它呼叫系統核...

庫函式和系統呼叫的區別

unix作業系統設計上的陳述 理解庫函式的區別和系統呼叫,首先要里理解unix的kernel mode和user mode。考慮下面的函式段 int main int fd create filename 0666 exit 0 在執行main函式時,是在user mode下執行,當遇到create...

庫函式和系統呼叫的區別

庫函式是語言本身的一部分,而系統函式是核心提供給應用程式的介面,屬於系統的一部分。函式庫呼叫是語言或應用程式的一部分,而系統呼叫是作業系統的一部分。使用者應用程式訪問並使用核心所提供的各種服務的途徑即是 系統呼叫 在核心和使用者應用程式相交界的地方,核心提供了一組系統呼叫介面,通過這組介面,應用程式...