LKD_05_系統呼叫(20181021)
阿新 • • 發佈:2018-11-11
LKD_05_系統呼叫
- 系統呼叫的目的
與核心進行通訊,即系統呼叫是在使用者層和硬體裝置層之間增加的一箇中間層;其主要有3個作用:
- 為使用者空間提供一種硬體的抽象介面: 比如讀寫檔案時,應用程式不用考慮磁碟型別和介質,也不用考慮檔案系統型別;
- 保證了系統的穩定和安全: 對應用層需要訪問的核心進行判斷,如許可權、使用者型別、地址合法性等;比如避免應用程式不爭去的使用硬體裝置竊取其他程序資源或危害系統執行。
- 避免應用程式可以隨意的訪問硬體層,而核心對此一無所知,確保可靠的實現多工和虛擬記憶體,及實現良好的系統穩定性和安全性;
- 應用程式設計介面與C庫以及POSIX標準之間的關係
- 應用程式通過使用者空間實現的API(應用程式設計介面)來執行程式,而不需要和核心提供的系統呼叫直接對應。一個API 定義了一組應用程式使用的程式設計介面。比如:printf() 函式的執行;
應用層printf() => C庫中printf() => C庫中write() => write()系統呼叫
- POSIX 是有IEEE 的一組標準,其目標是提供一套大體上基於 unix的可移植作業系統標準。 在大部分Unix 系統上,POSIX定義的API 函式和系統呼叫之間有著直接的關係。C庫提供了POSIX 的絕大部分API。
- Linux 的系統呼叫像大多數Unix 系統一樣,作為C 庫的一部分提供。C庫實現了Unix 系統的主要API,包括標準C庫函式和系統呼叫介面。
- 程式設計師需要考慮的市API,系統呼叫無關緊要; 核心只跟系統呼叫打交道; 【Unix介面設計:“提供機制而不是策略”】
- 系統呼叫
- 系統呼叫處理原理
- 系統呼叫的實現步驟
- 系統呼叫上下文
- 小結