核心函式 系統呼叫 系統命令 庫函式

pjiang000發表於2020-12-05

核心函式

執行在核心態的,一般來說特權級較高。

系統呼叫

系統呼叫是程式進入核心函式的介面層,大量的核心函式被封裝再系統呼叫中。再進入不同的系統呼叫之後,系統呼叫中的核心函式被稱為該系統呼叫的服務例程。

系統命令

比如在cmd中的ls,ll。系統命令相比於庫函式就會更高一層,每一個系統命令都是一個可執行的程式。比如我們strace ls。就可以看出來他呼叫了open(),brk()等系統呼叫命令。
strace 是一個Linux使用者空間跟蹤器,可以通過它來監視使用者程式和核心的互動,比如系統呼叫,訊號傳遞和程式狀態變更……
strace底層使用核心的ptrace特性來實現其功能。

庫函式

庫函式也就是我們所說的程式設計介面,application programming interface。比如常見的檔案操作,read(),write()。而這樣的操作必定是接觸到硬體的,因此也一定會進入核心態。那為什麼不直接使用系統呼叫呢?
這是因為在使用者態和核心態中,我們都是用了緩衝區技術。我們會等到緩衝區滿的時候,才會將所有的資料寫回去。這樣就減少了使用者態和核心態切換的次數及其成本。
所以不直接使用系統呼叫技術。

相關文章