什麼是系統調用

系統調用,顧名思義,說的是操作系統提供給用戶程序調用的一組“特殊”接口。用戶程序可以通過這組“特殊”接口來獲得操作系統內核提供的服務,比如用戶可以通過文件系統相關的調用請求系統打開文件、關閉文件或讀寫文件,可以通過時鐘相關的系統調用獲得系統時間或設置定時器等。 從邏輯上來說,系統調用可被看成是一個內核與用戶空間程序交互的接口——它好比一箇中間人,把用戶進程的請求傳達給內核,待內核把請求處理完畢後再將處理結果送回給用戶空間。 系統服務之所以需要通過系統調用來提供給用戶空間的根本原因是爲了對系統進行“保護”,因爲我們知道Linux的運行空間分爲內核空間與用戶空間,它們各自運行在不同的級別中,邏輯上相互隔離。所以用戶進程在通常情況下不允許訪問內核數據,也無法使用內核函數,它們只能在用戶空間操作用戶數據,調用用戶空間函數。比如我們熟悉的“hello world”程序(執行時)就是標準的用戶空間進程,它使用的打印函數printf就屬於用戶空間函數,打印的字符“hello word”字符串也屬於用戶空間數據。 但是很多情況下,用戶進程需要獲得系統服務(調用系統程序),這時就必須利用系統提供給用戶的“特殊接口”——系統調用了,它的特殊性主要在於規定了用戶進程進入內核的具體位置;換句話說,用戶訪問內核的路徑是事先規定好的,只能從規定位置進入內核,而不准許肆意跳入內核。有了這樣的陷入內核的統一訪問路徑限制才能保證內核安全無虞。我們可以形象地描述這種機制:作爲一個遊客,你可以買票要求進入野生動物園,但你必須老老實實地坐在觀光車上,按照規定的路線觀光遊覽。當然,不準下車,因爲那樣太危險,不是讓你丟掉小命,就是讓你嚇壞了野生動物。 原文地址:http://blog.21ic.com/user1/3155/archives/2006/24090.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章