在前幾篇文章中曾經提到過系統呼叫程式介面,並提到系統呼叫使應用程式請求作業系統服務的唯一方式。下面再來更進一步地學習一下。
目錄
1.6 系統呼叫
1.6.1 系統呼叫
1.6.2 系統呼叫的具體使用場景
1.6.3 系統呼叫的過程
系統呼叫:是作業系統提供給應用程式(程式設計師/程式設計人員)使用的介面,可以理解為一種可**用程式呼叫的特殊函式,應用程式可以通過系統呼叫來請求獲得作業系統核心的服務。比如說我們使用printf這個標準庫函式的時候其實也使用了系統呼叫這個功能,那系統呼叫跟庫函式呼叫有什麼區別呢?
其實系統呼叫是比庫函式呼叫更加底層的呼叫,很多庫函式也是需要系統呼叫的比如「建立新檔案」;但是像「取絕對值」這種與底層硬體無關的功能就不涉及系統呼叫。
因為系統呼叫的出現,併發的程式並不可以隨意地訪問硬體系統,而是由作業系統核心對共享資源進行統一的管理,並向上提供「系統呼叫」 ,使用者程序想要使用印表機這種共享資源,只能通過系統呼叫向作業系統核心發出請求。核心會對各個請求進行協調處理。
應用程式通過系統呼叫請求作業系統的服務。而系統中的各種共享資源都由作業系統核心統一掌管,因此凡是與共享資源有關的操作(如儲存分配、i/o操作、檔案管理等),都必須通過系統呼叫的方式向作業系統核心提出服務請求,由作業系統核心代為完成。這樣可以保證系統的穩定性和安全性,防止使用者進行非法操作。
傳遞系統呼叫引數-->執行陷入指令(
使用者態)--> 執行相應的請求,核心程式處理系統呼叫(
核心態)-->
返回應用程式
需要注意的是:
1.陷入指令是在使用者態執行的,執行陷入指令之後立即引發乙個內中斷,使cpu進入核心態。
2.發出系統呼叫請求是在使用者態,而對系統呼叫的相應處理在核心態下進行。
作業系統 系統呼叫
由作業系統提供的功能,通常應用程式本身是無法實現的。例如對檔案進行操作,應用程式必需通過系統呼叫才能做到,因為只有作業系統才具有直接管理外圍裝置的許可權。又如程序或執行緒間的同步互斥操作,也必需經由作業系統對核心變數進行維護才能完成。從下到上看乙個完整的計算機系統 物理硬體 os核心 os服務 應用...
作業系統(3)系統呼叫
作業系統作為使用者和計算機硬體之間的介面,需要向上提供一些簡單的服務。主要包括命令介面和程式介面。其中程式介面由一組系統呼叫組成。1 命令介面 允許使用者直接使用 聯機命令介面 使用者說一句,系統做一句。離線命令介面 使用者說一堆,系統做一堆。2 程式介面 允許使用者通過程式間接使用 由一組系統呼叫...
作業系統概論六
1 目前使用的計算機基本上是馮 諾依曼 von neumann 式的結構,其基本特點是處理器按指令位址的指示順序執行指令,這樣的處理器稱為順序處理器。2 程序的順序性是指程序在順序處理器上的執行是嚴格按序的,即按照程式規定的操作順序,只有在前乙個操作結束後才能開始後繼操作。3 當乙個程序獨佔處理器順...