作業系統學習筆記(2) 作業系統的執行環境
任何程式在計算機上執行都需要一定的執行環境,作業系統當然也不例外。作業系統的執行環境主要包括計算機系統的硬體環境和由其它系統軟體形成的軟體環境。
在學習作業系統的過程中,必須要了解作業系統與硬體環境互動作用的具體細節,即中央處理器、儲存系統、中斷機制、I/O技術和時鐘等方面的基本原理。這一章的內容和概念都比較多,但只要瞭解中央處理器、儲存系統、中斷機制、I/O技術和時鐘這幾塊的基本原理,並能夠進一步分析和理解它們之間的連帶關係,相信應該有個較深的把握。
下面將分別敘述:
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
Ø計算機系統的層次結構
讓我們把計算機系統看作一個層次式結構,計算機系統中的所有子系統都可以包括在硬體(子)系統和軟體(子)系統兩個層次中。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
硬體子系統 |
硬體子系統 |
中央處理單元(CPU) |
主儲存器 |
外儲存器 |
輸入輸出裝置 (鍵盤/滑鼠/顯示器/印表機…) |
ØCPU狀態(管態和目態)及狀態轉換
首先對CPU基本工作原理進行了解,然後我們將重點討論CPU狀態(管態和目態)及狀態轉換。
1.處理器(CPU)一般由運算器、控制器、一系列的暫存器和快取記憶體組成
運算器:實現指令中的算術和邏輯運算,是計算機計算的核心。
控制器:負責控制程式執行的流程,包括取指令,維護CPU狀態,CPU與記憶體的互動等。
暫存器:為CPU本身提供一定儲存能力,它的速度比主儲存器快得多,用於CPU執行指令過程中暫存資料,地址及指令資訊。通常有兩類暫存器:使用者可用暫存器和控制暫存器。使用者暫存器對所有程式都是可用的,包括資料暫存器(Data Register)、地址暫存器(Address Register)以及條件碼暫存器。控制暫存器包括:程式計數器(PC:Program Counter),它記錄了將要取出指令的地址;指令暫存器(IR:Instruction Register
2.指令執行的基本過程
處理器每次從儲存器中讀取一條指令,並在取指令完成後,根據指令類別自動將程式計數器值變成下一條指令的地址,然後,取到的指令被放入指令暫存器中,處理器於是解釋並執行這條指令。一個這樣的單條指令處理過程稱為一個指令週期,程式的執行就是不斷取指令和執行指令的指令週期組成的。
3.CPU狀態
現在多工的作業系統通常不允許使用者使用計算機系統中的全部指令,作業系統可以執行某些特權指令,而使用者就只能使用非特權指令,如果使用者在執行應用程式過程中要使用非特權指令,則必須將CPU狀態進行切換到管態(作業系統管理程式執行的狀態:具有較高特權級別),一般情況下使用者都處於目態(較低特權級別)。要從目態到管態進行轉換唯一的途徑就是通過中斷(後文會講到),中斷響應時交換中斷向量,新的中斷向量中的CPU程式狀態字(PSW)暫存器中的工作狀態位標誌設為管態,而當系統啟動時,CPU的初始狀態為管態,裝入作業系統,當作業系統退出執行時,讓使用者程式在目態執行。
舉一個例項,Intel公司的x86系列處理器(包括80386、80486、Pentium、Pentium Pro、PentiumII、PentiumIII以及現在的PentiumIV處理器),提供4個特權級別(Privilege Levels)(特權環:R0、R1、R2和R3)。較大的數字表示較低的特權。R0執行那些最關鍵的程式碼,比如作業系統的核心程式碼;較外部的特權環執行其它一些相對來講不是關鍵的程式碼。
Ø儲存系統
任何程式、資料必須裝入主儲存器中後,CPU才能對它們進行操作,因此作業系統本身也要存放在主儲存器中執行。
1.儲存器的基本知識
一般的儲存器分為讀寫型(RAM:Random Access Memory)和只讀型(ROM:Read Only Memory)儲存器,此外,為簡化對儲存器的分配和管理,儲存器會分成塊,在為使用者程式分配主存空間時,以塊為最小單位,這樣有時塊也被稱為物理頁(Page),塊的大小隨機器而異,512B、1KB、4KB、8KB的都有。(B:Byte計算機一個位元組,一個位元組=8個二進位制位(bit:位元))
2.儲存器的層次結構
容量、速度和成本的匹配是計算機儲存系統設計時考慮的主要問題,典型的層次化的儲存體系結構圖:
可以看到,頂層的較小、較貴但速度很快的儲存裝置由底層較大、較便宜的儲存裝置作後盾,在整體上通過對訪問頻率的控制來提高系統的效能(大部分情況下,訪問頻率從高低依次是暫存器,快取記憶體,主儲存器…)。
我們知道,在程式設計技術中很注重程式程式碼的複用,一旦進入這樣的程式段程式碼,就會重複存取相同的指令集合,在儲存器中對資料的存取也同樣存在類似的區域性性現象,程式碼和資料的集合在一段時間內會比較穩定的保持在一個儲存器的區域性區域中。
3.儲存保護
對使用者程式和作業系統所在儲存器中的資料資訊必須加以保護,否則,將造成十分嚴重的後果。儲存保護主要通過界址暫存器和儲存健這兩種方式對儲存塊進行保護。
Ø中斷系統
中斷是指CPU對系統中或系統外發生的非同步事件的響應,這個名稱來源於:當發生某個非同步事件後,中斷了處理器對當前程式的執行,而轉去處理非同步事件(中斷處理程式)。舉個淺顯的例子,我正在看書,此時電話響了(非同步事件),於是用書籤記住正在看的那一頁(中斷點),再去接電話(響應非同步事件並進行處理),接完電話後再從被打斷的那頁繼續向下看(返回原程式的中斷點執行)。
1.中斷的作用:中斷的能夠充分發揮處理器的使用效率和實時能力:輸入輸出裝置通過中斷方式同CPU通訊,報告其完成CPU所要求的資料傳輸情況和問題,使CPU能立即執行中斷處理程式,同時,還免除了CPU不斷地查詢和等待,為什麼呢?要知道,早期的CPU為了關注各種輸入/輸出裝置的I/O狀態,需要耗費大量的時間輪詢以獲得這些資訊,現在只需要由I/O通道或直接儲存器訪問(DMA)技術代替了CPU來完成這些事情(後文會更具體講到)。
2.幾種典型的中斷:I/O中斷、時鐘中斷、硬體故障中斷、程式性中斷、系統服務請求(屬於自願性中斷,通常是由訪問管態的專用指令來激發,例如:x86處理器的int指令中斷。一般在管態進行,自願性中斷是執行程式有意安排執行的,另外一種就是強迫性中斷,它是正在執行的程式不期望發生的,典型的有程式性中斷:算術溢位、被零除、目態程式試圖執行非法的管態指令,訪問地址越界等)
3.中斷系統:是計算機硬體和軟體相互配合,相互滲透而使得計算機系統充分發揮能力的計算模式,中斷系統分為硬體中斷裝置和軟體中斷裝置,硬體中斷裝置負責捕獲中斷源發出的中斷請求,並以一定方式響應中斷源,然後將控制權轉移至特定的中斷處理程式,中斷處理程式針對中斷事件執行一系列相應的操作。
中斷系統對中斷訊號的接收、響應和處理過程,簡要歸納為:接收和響應中斷,保護中斷點現場,分析中斷向量,呼叫中斷處理程式,中斷處理結束恢復現場,原有程式繼續執行。
4.中斷優先順序、中斷遮蔽和中斷巢狀:現在的微處理器都提供多級中斷系統,從硬體上看,表現為有多根中斷請求線從不同裝置連線到中斷邏輯線路上。連線在不同中斷請求線上的中斷訊號,表示它們具有不同的中斷級別,中斷級別代表了該中斷訊號被優先處理的特權級別,中斷級別的劃分按其緊急程度和重性性進行劃分,例如,掉電中斷訊號與其它中斷訊號相比,掉電中斷訊號具有非常高的優先級別,此外,當有多箇中斷訊號同時到達,有兩種辦法可以劃分優先順序:給每個裝置安排因定的優先順序,或採用輪轉法:用一個表格,依次輪轉響應中斷訊號。
中斷遮蔽用於允許或禁止中斷系統對某些類別中斷的響應,我們知道在程式狀態字(PSW)中設計有中斷遮蔽位,設定這個遮蔽位以標識那些被遮蔽的中斷類或中斷。注意:有些中斷訊號是不能遮蔽的,如機器故障中斷和掉電、記憶體奇偶校驗錯等。
有時,我們會遇到在處理一箇中斷時,將引起多箇中斷處理問題,比較好的處理辦法是中斷巢狀技術:考慮到中斷優先順序的問題,在中斷巢狀中允許較高優先順序的打斷較低優先順序的中斷。舉個例子,在系統中存在匯流排、硬碟、掃描器三個裝置同時操作時的處理情況。它們的中斷優先順序分別為9、5、3,數字較大的具有較高的優先順序。掃描動作處理(掃描器的I/O中斷)從某時間開始,它的處理時間較長,其間發生了一次網路資料傳送請求(匯流排請求中斷),此時,需要先對掃描器動作處理的中斷點現場的一些資訊進行壓棧處理,完成後再處理網路通訊的匯流排服務,在處理網路通訊的匯流排服務時,使用者又提交了一個硬碟儲存檔案的請求,由於硬碟的優先順序不如匯流排的高,被推遲,且硬碟的優先順序比掃描器的高,在完成網路通訊的匯流排服務後,先執行硬碟中斷處理,完成後才回到對掃描器的中斷處理程式上。
ØI/O結構、通道、直接儲存器存取(DMA)技術、緩衝技術
在前文敘述中斷的作用時涉及到I/O通道(替代CPU的中斷輪詢,提高CPU利用率),其作用也作了簡要說明。在這裡,有必要強調的是DMA技術:當CPU需要讀寫一整塊資料的時候,它給DMA控制單元傳送一條命令,命令中含有I/O裝置的地址、開始讀或寫的主存地址、資料長度等資訊,而具體的資料傳送就由DMA控制器管理,CPU又可以去處理其它事了(增強了CPU並行處理能力,同時提高了處理I/O的效能)。緩衝技術是緩解CPU處理資料速度與裝置傳輸資料速度不匹配的一種資料暫存技術。
Ø時鐘
計算機系統中的時鐘分為硬體時鐘和軟體時鐘,以及絕對時鐘和相對時鐘。時鐘可以防止系統陷入死迴圈,實現作業按時間片輪轉執行,給出正確的時間訊號,定時喚醒事件確定時間執行的事件等。