2 作業系統結構

2021-09-29 05:53:26 字數 3457 閱讀 5734

本章詳細地分析了作業系統的結構,主要從三個問題入手。

本節回答了第乙個問題,1)為使用者提供了什麼服務?

幾乎所有的系統都有使用者介面,因為作業系統要和使用者進行互動。

命令解釋程式

命令解釋程式稱為外殼(shell):乙個任務開始或首次登陸時就會執行。功能就是獲取並執行使用者輸入的命令。有兩種實現命令解釋程式的方法。

(1)這些命令的實現**本身就包含在命令解釋程式中。這樣的話,新增乙個命令就需要重新編寫命令解釋程式,shell所能執行的命令越多,則本身就越大。

(2)另一種就是不必理解命令,只是通過命令確定乙個檔案,把檔案中載入到記憶體並執行。這樣新增命令時無須修改命令解釋程式。例如

rm file.txt
查詢 rm 的檔案載入到記憶體,並用 file.txt 作為引數來執行。

圖形使用者介面

gui滑鼠、手勢。

本節回答了第2個問題,2)怎麼提供的服務?(給應用程式設計師的介面)

系統呼叫 提供作業系統服務介面

即使進行一些簡單的程式,也需要大量的系統呼叫。

什麼是系統呼叫?

系統呼叫就是一種特殊的介面。通過這個介面,使用者可以訪問核心空間。系統呼叫規定了使用者程序進入核心的具體位置。

系統呼叫是使用者程序進入核心的介面層,它本身並非核心函式,但它是由核心函式實現,進入核心後,不同的系統呼叫會找到各自對應的核心函式,這些核心函式被稱為系統呼叫的「服務例程」。比如系統呼叫getpid實際呼叫了服務例程為sys_getpid(),或者說系統呼叫getpid是服務例程sys_getpid()的「封裝例程」。

具體步驟:使用者程序–>系統呼叫–>核心–>返回使用者空間。

系統呼叫就是為了解決上述問題而引入的,是提供給使用者的「特殊介面」。

系統呼叫規定使用者程序進入核心空間的具體位置。

1.程式執行空間從使用者空間進入核心空間。

2.處理完後再返回使用者空間。

api是給應用程式開發人員使用的,是程式設計師在使用者空間下可以直接使用的函式介面。是一些預定義的函式,比如常用的read()、malloc()、free()、abs()函式等,這些函式都具有一定功能,說明了如何獲得乙個給定的服務,跟核心沒有必然的聯絡。提**用程式與開發人員基於某軟體或硬體的以訪問一組例程的能力,而又無需訪問原始碼,或理解內部工作機制的細節。

二者的區別 ?

為什麼應用程式設計師根據api來程式設計而不是直接使用系統呼叫?乙個好處就是涉及程式的可移植性。

呼叫者無需知道如何實現系統呼叫,只需遵循api,就知道呼叫系統呼叫後作業系統做了什麼。通過api,作業系統介面的大多數細節可以隱藏起來。

api是使用者程式直接可以使用的函式介面,但如果每個作業系統都擁有只屬於自己的api,那麼應用程式的移植性將會很差。基於posix(portable operating system inte***ce)標準的api擁有很好的可移植性,它定義了一套posix相容標準,這使得按這個標準實現的api可以在各種版本的unix中使用。現如今,它也可以在除unix之外的作業系統中使用,比如linux,windows nt等。

系統呼叫可以分為6大類

程序控制

檔案管理

裝置管理

資訊維護

通訊保護

系統程式,也叫系統工具,為程式開發和執行提供了乙個方便的環境。看圖就知道系統程式的功能和作用了。

除了系統程式,大多數作業系統還提供了常用的應用程式,如 ie瀏覽器,截圖工具,紙牌遊戲……

從本節之後,回答了第3個問題,3)系統設計人員該怎麼設計系統?

設計目標

機制與策略

策略與機制分離:機制決定如何做,策略決定做什麼。

實現最底層採用彙編,高層函式採用c,系統程式採用c/c++,也可用解釋性指令碼語言perl或python.

1)簡單結構

簡單結構的兩個例項就是ms-dos和unix。

由於空間小,沒有很好的區分功能的介面和層次。例如,應用程式可以訪問io裝置驅動程式。

最初的unix作業系統,核心通過系統呼叫,可提供檔案系統、cpu排程、記憶體管理和其他功能,都在核心層這一層中。使得難以實現與設計,但是系統呼叫的介面和核心通訊的開銷非常小。

2)分層方法

作業系統唄分為若干層,最底層是硬體,最高層為使用者介面。

優點:簡化了設計和實現,每一層只呼叫它的下一層。

缺點:不好定義各層,(即不知道這個功能該屬於哪一層)。還有就是效率低。

3)微核心

微核心只提供:程序管理、記憶體管理、程序間通訊。

而其他檔案系統、裝置驅動程式……則在使用者模式下執行,通訊是通過訊息傳遞來提供的。

優點:便於擴充套件作業系統,新增新服務時在使用者空間新增即可,無需修改核心。還有就是便於移植到不同的硬體平台。

缺點:增加系統的開銷。

4)模組

最佳的方法:可載入的核心模組

核心提供核心服務,而其他服務可在核心執行時動態實現。

整體像是分層系統,因為每個核心部分都定義好介面,但比分層系統更靈活,因為可以動態載入模組。

又像是微核心,主模組只有核心功能,但更有效,模組之間呼叫訊息傳遞來進行通訊。

linux採用可載入核心模組,主要用於載入裝置驅動程式和檔案系統。

實際上,很少有作業系統採用上述4中結構中的單一結構,而是根據需求,組合各自特點,形成了混合系統。如 mac os x, ios, android.故障分析

效能優化

作業系統的發行通常採用磁碟、cd-rom、***-rom或iso映象。

為了生成系統,可以使用乙個特殊程式,這個sysgen程式從給定檔案讀取或詢問操作員硬體配置,或直接檢測硬體配置。

根據配置從庫中選擇模組,鏈結起來,生成作業系統。

上電開機或者重新啟動,指令暫存器載入某個預先定義的記憶體位置,從該位置開始執行。該位置就是初始引導程式所在,一般在rom中。

引導程式完成診斷機器的各個硬體部分,

整個引導程式載入後,可遍歷檔案系統以尋找作業系統核心,將其載入到記憶體中,並開始執行,至此,才可以說作業系統在執行(running).

##至此,前兩章已結束,即概論部分結束,從下一章開始就分模組介紹作業系統的各個部分,更加的細緻和深入。
參考:

重溫作業系統2(作業系統的邏輯結構)

1 作業系統虛擬機器的概念 在裸機上執行作業系統,就叫作業系統虛擬機器 2 處理機的態 核態,管態,使用者態 相互的區別 核態 處理機執行管理程式所處的狀態 使用全部指令 包括特權指令 使用全部儲存空間 管態 管態比核態優先順序低,但能夠使用一些使用者態不能使用的系統資源,但是不能使用修改cpu狀態...

作業系統 二 作業系統結構

好好學習,天天向上本文已收錄至我的github倉庫daydayup 使用者介面 程式執行 i o 操作 檔案系統操作 通訊 錯誤檢測 增值服務 資源分配 統計 保護和安全 作業系統服務 作業系統程式介面 系統呼叫 作業系統使用者介面 系統程式 既然作業系統有這麼多的服務,那麼我們平時是怎麼去使用作業...

作業系統 2 作業系統介面

介面是什麼?使用者用很熟悉的東西進入系統 連線兩個東西 訊號轉換 遮蔽細節.第一部分 作業系統介面 首先從命令列和圖形介面來引入我們作業系統介面的介紹 命令列是一段程式,系統初始化完之後便進入這段程式,這個程式是乙個死迴圈,不斷等待著使用者敲入命令。圖形介面是包括畫圖的c程式 c語言邏輯 重要函式 ...