第二篇:庫函式和系統呼叫的區別

穆晨發表於2017-01-28

前言

       這是一對非常容易混淆的概念。對於使用者( 應用程式開發者 )來說,並不一定要嚴格區分其意義。因為在使用者看來,它們都是以C函式的形式出現的。但瞭解二者的區別對我們掌握整個計算機系統有很大幫助。

區別

       1. 一部分庫函式實現需要使用系統呼叫( 如 printf 庫函式需要呼叫 write 系統呼叫 )

       2. 另一部分庫函式實現不需要使用系統呼叫( 如strcpy 庫函式不需要使用系統呼叫因為它不需要使用CPU特權指令 )

       3. 系統呼叫一定在核心空間執行,而庫函式只有其中的系統呼叫部分執行時才會陷入核心( 如果該庫函式使用了系統呼叫的話 )

       4. 系統呼叫往往提供的是需要使用CPU特權指令的最核心的服務,而一部分庫函式則是搭建在系統呼叫之上更滿足於具體應用的函式( 另一部分參見2 )

相關文章