筆試題:簡答:系統呼叫與庫函式的區別
阿新 • • 發佈:2019-02-12
系統呼叫:執行在使用者空間的應用程式向作業系統核心請求某些服務的呼叫過程。
系統呼叫提供了使用者程式與作業系統之間的介面。
函式庫呼叫是語言或應用程式的一部分,而系統呼叫是作業系統的一部分。
庫函式是語言本身的一部分,而系統函式是核心提供給應用程式的介面,屬於系統的一部分。
1.系統呼叫是為了方便應用使用作業系統的介面,而庫函式是為了方便人們編寫應用程式而引出的,比如你自己編寫一個函式其實也可以說就是一個庫函式。
2.系統呼叫可以理解為核心提供給我們在使用者態用的介面函式,可以認為是某種核心的庫函式。
3.read就是系統呼叫,而fread就是C標準庫函式.
區別:
函式庫呼叫 |
系統呼叫 |
平臺移植性好 |
依賴於核心,不保證移植性 |
呼叫函式庫中的一段程式(或函式) |
呼叫系統核心的服務 |
一個普通功能函式的呼叫 |
是作業系統的一個入口點 |
在使用者空間執行 |
在核心空間執行 |
它的執行時間屬於“使用者時間” |
它的執行時間屬於“系統”時間 |
屬於過程呼叫,呼叫開銷較小 |
在使用者空間和核心上下文環境間切換,開銷較大 |
庫函式數量較多 |
UNIX中大約有90個系統呼叫,較少 |
典型的C函式庫呼叫:printf
scanf malloc |
典型的系統呼叫:fork open write |