操作系统(六)系统调用
1.6 系統(tǒng)調(diào)用
在前幾篇文章中曾經(jīng)提到過系統(tǒng)調(diào)用程序接口,并提到系統(tǒng)調(diào)用使應(yīng)用程序請求操作系統(tǒng)服務(wù)的唯一方式。下面再來更進(jìn)一步地學(xué)習(xí)一下。
目錄
1.6 系統(tǒng)調(diào)用
1.6.1 系統(tǒng)調(diào)用
1.6.2 系統(tǒng)調(diào)用的具體使用場景
1.6.3 系統(tǒng)調(diào)用的過程
1.6.1 系統(tǒng)調(diào)用
??系統(tǒng)調(diào)用:是操作系統(tǒng)提供給應(yīng)用程序(程序員/編程人員)使用的接口,可以理解為一種可供應(yīng)用程序調(diào)用的特殊函數(shù),應(yīng)用程序可以通過系統(tǒng)調(diào)用來請求獲得操作系統(tǒng)內(nèi)核的服務(wù)。比如說我們使用printf這個標(biāo)準(zhǔn)庫函數(shù)的時候其實也使用了系統(tǒng)調(diào)用這個功能,那系統(tǒng)調(diào)用跟庫函數(shù)調(diào)用有什么區(qū)別呢?
? 其實系統(tǒng)調(diào)用是比庫函數(shù)調(diào)用更加底層的調(diào)用,很多庫函數(shù)也是需要系統(tǒng)調(diào)用的比如“創(chuàng)建新文件”;但是像“取絕對值”這種與底層硬件無關(guān)的功能就不涉及系統(tǒng)調(diào)用。
? 因為系統(tǒng)調(diào)用的出現(xiàn),并發(fā)的程序并不可以隨意地訪問硬件系統(tǒng),而是由操作系統(tǒng)內(nèi)核對共享資源進(jìn)行統(tǒng)一的管理,并向上提供“系統(tǒng)調(diào)用” ,用戶進(jìn)程想要使用打印機這種共享資源,只能通過系統(tǒng)調(diào)用向操作系統(tǒng)內(nèi)核發(fā)出請求。內(nèi)核會對各個請求進(jìn)行協(xié)調(diào)處理。
1.6.2 系統(tǒng)調(diào)用的具體使用場景
??應(yīng)用程序通過系統(tǒng)調(diào)用請求操作系統(tǒng)的服務(wù)。而系統(tǒng)中的各種共享資源都由操作系統(tǒng)內(nèi)核統(tǒng)一掌管,因此凡是與共享資源有關(guān)的操作(如存儲分配、I/O操作、文件管理等),都必須通過系統(tǒng)調(diào)用的方式向操作系統(tǒng)內(nèi)核提出服務(wù)請求,由操作系統(tǒng)內(nèi)核代為完成。這樣可以保證系統(tǒng)的穩(wěn)定性和安全性,防止用戶進(jìn)行非法操作。
1.6.3 系統(tǒng)調(diào)用的過程
??傳遞系統(tǒng)調(diào)用參數(shù)-->執(zhí)行陷入指令(用戶態(tài))-->?執(zhí)行相應(yīng)的請求,內(nèi)核程序處理系統(tǒng)調(diào)用(核心態(tài))-->?返回應(yīng)用程序
??
需要注意的是:
1. 陷入指令是在用戶態(tài)執(zhí)行的,執(zhí)行陷入指令之后立即引發(fā)一個內(nèi)中斷,使CPU進(jìn)入核心態(tài)。 2. 發(fā)出系統(tǒng)調(diào)用請求是在用戶態(tài),而對系統(tǒng)調(diào)用的相應(yīng)處理在核心態(tài)下進(jìn)行。總結(jié)
以上是生活随笔為你收集整理的操作系统(六)系统调用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: O2O休闲零食品类白皮书
- 下一篇: 操作系统(七)进程的概念、组成、特征