系統呼叫和庫函式的區別

2021-07-23 22:47:39 字數 621 閱讀 7028

系統呼叫(system call)是作業系統

核心提供的函式,在核心態執行(kernel mode),屬於函式中的低等下人,終身代號9527,雖然低等,但是誰也離不開他們,因為離開他們就沒辦法和核心打交道了,沒辦法和核心打交道就什麼都歇菜了。

linux3.0.0-14的系統呼叫有346個,可以在原始碼的 linux

-3.0/arch/x86/kernel/syscall_table_32.s檔案中找到所有的系統呼叫編號,如果以彙編的方法呼叫這些系統函式,那麼放在eax暫存器裡面的值就是想要呼叫的函式的號碼。

庫函式是在系統呼叫上的一層包裝,執行在使用者態(user mode),打個比方吧,庫函式相當於包工頭,系統呼叫是工人,我們可以自己找工人分任務,但一般是把任務攤給包工頭,包工頭再去給工人分任務。

所以雖然最終所有的工作都是系統呼叫做的,但是我們更通常的做法是呼叫庫函式,有以下幾個原因:

庫函式提供了抽象,抽象是個好東西,可以讓我們把更多的注意力集中在要解決問題的核心。

庫函式給我們提供的介面更人性化,所以呼叫起來更方便。

呼叫庫函式更安全,記憶體管理不用自己太操心。

呼叫庫函式效率更高,程式跑的更快。雖然庫函式最終是呼叫系統函式,但是庫函式會比我們用更好的方式方法呼叫系統函式。

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

庫函式是語言本身的一部分,而系統函式是核心提供給應用程式的介面,屬於系統的一部分。函式庫呼叫是語言或應用程式的一部分,而系統呼叫是作業系統的一部分。函式庫呼叫 系統呼叫 在所有的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...