王道操作系统考研笔记——1.1.6 系统调用
如果這篇博客對(duì)您有用的話,可以給我點(diǎn)個(gè)贊嗎,這對(duì)我很重要,謝謝!??
文章目錄
- 1.1.6 系統(tǒng)調(diào)用
- 1.1.6.1 系統(tǒng)調(diào)用和作用
- 1.1.6.2 系統(tǒng)調(diào)用和庫函數(shù)
- 1.1.6.3 系統(tǒng)調(diào)用背后的過程
- 1.1.6.4 小結(jié)
1.1.6 系統(tǒng)調(diào)用
知識(shí)總覽
1.1.6.1 系統(tǒng)調(diào)用和作用
前面我們?cè)?.1.1.3那里講過操作系統(tǒng)作為用戶和計(jì)算機(jī)硬件之間的接口,它需要向上提供一些簡單易用的服務(wù)。主要包括命令接口和程序接口。那時(shí)候我們說過程序接口主要是允許用戶間接調(diào)用。實(shí)際上,程序接口由一組系統(tǒng)調(diào)用組成。
系統(tǒng)調(diào)用是操作系統(tǒng)提供給應(yīng)用程序(程序員/編程人員)使用的接口,可以理解為一種可供應(yīng)用程序調(diào)用的特殊函數(shù),應(yīng)用程序可以發(fā)出系統(tǒng)調(diào)用請(qǐng)求來獲得操作系統(tǒng)的服務(wù)。
那為什么應(yīng)用程序要給操作系統(tǒng)發(fā)出請(qǐng)求呢,為什么操作系統(tǒng)需要提供給“系統(tǒng)調(diào)用”功能呢?
讓我們想象一個(gè)場(chǎng)景,如果我們?nèi)ゴ蛴〉甏蛴≌撐?#xff0c;當(dāng)我按下了“打印”之后,打印機(jī)開始工作。結(jié)果我的論文打印到一半的時(shí)候,另外一位同學(xué)也按下“打印”,開始打印它自己的論文。最終,你的論文和該同學(xué)的論文頁面并沒有混雜在一起,都是按順序依次打印的。
那為什么是按順序依次打印呢?為什么不會(huì)亂呢?
體現(xiàn)到我們的操作系統(tǒng)來的話,操作系統(tǒng)就是作為調(diào)控的那一部分。在某個(gè)時(shí)刻多個(gè)進(jìn)程同時(shí)向操作系統(tǒng)提出系統(tǒng)調(diào)用的請(qǐng)求的時(shí)候,操作系統(tǒng)就會(huì)對(duì)各個(gè)請(qǐng)求進(jìn)行協(xié)調(diào)管理。
應(yīng)用程序通過系統(tǒng)調(diào)用請(qǐng)求操作系統(tǒng)的服務(wù)。系統(tǒng)中的各種共享資源都由操作系統(tǒng)統(tǒng)一掌管,因此在用戶程序中,凡是與資源有關(guān)的操作,都必須通過系統(tǒng)調(diào)用的方式向操作系統(tǒng)提出服務(wù)請(qǐng)求,由操作系統(tǒng)代為完成。這樣可以保證系統(tǒng)的穩(wěn)定性和安全性,防止用戶進(jìn)行非法操作。
系統(tǒng)調(diào)用可以分為五大類,這里只需要簡單的了解,在后面我們會(huì)詳細(xì)地介紹他們。
需要注意的是,系統(tǒng)調(diào)用相關(guān)處理涉及到對(duì)系統(tǒng)資源的管理、對(duì)進(jìn)程的控制,這些功能需要執(zhí)行一些特權(quán)指令才能完成,因此系統(tǒng)調(diào)用的相關(guān)處理需要在核心態(tài)下完成。
1.1.6.2 系統(tǒng)調(diào)用和庫函數(shù)
在上圖中,有些庫函數(shù)涉及系統(tǒng)調(diào)用,例如“創(chuàng)建一個(gè)新文件”;有些庫函數(shù)則不涉及系統(tǒng)調(diào)用,例如“取絕對(duì)值”。
1.1.6.3 系統(tǒng)調(diào)用背后的過程
在我們用高級(jí)語言編寫的代碼中,若有關(guān)于系統(tǒng)調(diào)用的函數(shù),我們假設(shè)為write()。那么在高級(jí)語言編譯后會(huì)變成匯編語言,如下圖:
也就是說,實(shí)際上高級(jí)語言中的庫函數(shù)里面有些庫函數(shù)擁有系統(tǒng)調(diào)用的功能,此刻它們雖然看起來很簡單,實(shí)際上背后蘊(yùn)含了很多關(guān)于系統(tǒng)調(diào)用的細(xì)節(jié),而高級(jí)語言庫函數(shù)的好用之處在于,它屏蔽了關(guān)于底層的細(xì)節(jié),給了我們一種系統(tǒng)調(diào)用最簡單的方式。
這個(gè)過程實(shí)際上是以下的步驟:
這里有幾個(gè)需要注意的點(diǎn)是:
- 陷入指令是在用戶態(tài)執(zhí)行的,執(zhí)行陷入指令之后會(huì)立即引發(fā)一個(gè)內(nèi)中斷,從而CPU進(jìn)入核心態(tài)。
- 發(fā)出系統(tǒng)調(diào)用請(qǐng)求是在核心態(tài),而對(duì)系統(tǒng)調(diào)用的相應(yīng)處理在核心態(tài)下進(jìn)行。
- 陷入指令是唯一一個(gè)只能在用戶態(tài)執(zhí)行,而不可在核心態(tài)執(zhí)行的指令。
1.1.6.4 小結(jié)
- 陷入指令也叫做trap指令/訪管指令。
總結(jié)
以上是生活随笔為你收集整理的王道操作系统考研笔记——1.1.6 系统调用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网吧也用VDI?
- 下一篇: java信息管理系统总结_java实现科