三、系統(tǒng)核心
操作系統(tǒng)核心位于計算機硬件之上,核心的目的是提供一種進程賴以生存的環(huán)境,其主要任務是接收中斷并作基本處理,在進程之間切換處理器,處理進程之間通信。
1.基本硬件機構
(1)中斷機構
為了使輸入輸出活動與處理器活動并行進行,當一臺外部設備的傳輸操作結束時,應能中斷正在運行的進程,由中斷處理程序處理。
(2)特權指令為使各并發(fā)進程不相互干擾,系統(tǒng)的部分指令集應保留僅供操作系統(tǒng)使用,這些指令稱為特權指令,如允許與禁止中斷,執(zhí)行輸入輸出操作等。為了區(qū)分什么時候可以使用特權指令,什么時候不可以使用,系統(tǒng)至少具有兩種工作狀態(tài),它們分別稱為系統(tǒng)態(tài)和用戶態(tài),又稱為管態(tài)和目態(tài)。特權指令只能在管態(tài)中運行。
(3)主存保護多道程序系統(tǒng)中,必須對各進程使用的主存加以保護,以防止其他進程進行未經(jīng)許可的操作。保護機制應包含在主存尋址硬件中。
(4)時鐘硬件的時鐘以固定的時間間隔產(chǎn)生中斷信號,這對于實現(xiàn)處理器的調(diào)度以及實現(xiàn)與時間有關的任務是不可缺少的
2.進程
(1)進程進程是一個程序關于某個數(shù)據(jù)集的一次運行。也就是說,進程是運行中的程序,是程序的一次運行活動。相對于程序,進程是一個動態(tài)的概念,而程序是靜態(tài)的概念,是指令的集合。因此,進程具有動態(tài)性和并發(fā)性。在操作系統(tǒng)中進程是進行系統(tǒng)資源分配、調(diào)度和管理的最小單位,注意,現(xiàn)代操作系統(tǒng)中還引入了線程,它是處理器分配的最小單位。
(2)進程的狀態(tài)及其轉換多道系統(tǒng)中,進程的運行是走走停停的,它在處理器上交替運行,使它的運行狀態(tài)不斷變化,最基本的狀態(tài)有3種:運行、就緒和阻塞。?運行(running):正占用處理器。?就緒(ready):只要獲得處理器即可運行。?阻塞(blocked):正等待某個事件(I/O完成)的發(fā)生。
(3)進程控制塊進程是一個動態(tài)的概念,如何表示一個進程?在操作系統(tǒng)中,引入數(shù)據(jù)結構———進程控制塊(簡記為PCB)標記進程。PCB是進程存在的惟一標志,PCB描述了進程的基本情況。從靜態(tài)的觀點看,進程由程序、數(shù)據(jù)和進程控制塊組成;從動態(tài)的觀點看,是計算機狀態(tài)的一個有序集合。程序是進程運行所對應的運行代碼,一個進程對應于一個程序;有的程序可以同時對應于多個進程,這個程序的代碼在運行過程中不會被改變,常稱為純碼程序或可重入程序,他們是可共享的程序。進程控制塊保存進程狀態(tài)、進程性質(zhì)(如優(yōu)先程序)、與進程有關的控制信息(如參數(shù)、信號量、消息等)、相應隊列和現(xiàn)場保護區(qū)域等。進程控制塊隨著進程的建立而產(chǎn)生,隨著進程的完成而撤消。PCB是操作系統(tǒng)核心中最主要的數(shù)據(jù)結構之一,它既是進程存在的標志和調(diào)度的依據(jù),又是進程可以被打斷并能恢復運行的基礎。核心**PCB管理進程,一般PCB是常駐內(nèi)存的,尤其是調(diào)度信息必須常駐內(nèi)存。
3.進程管理
在操作系統(tǒng)中有許多進程,它們對應著不同的或相同的程序,競爭地使用著系統(tǒng)的資源。進程管理涉及到進程控制、隊列管理、進程調(diào)度等。
(1)進程控制
進程的生命過程是從它被創(chuàng)建開始,直到任務終止而撤消,其間會經(jīng)歷各種狀態(tài)的轉換,它們都是在操作系統(tǒng)控制下完成的,為此,操作系統(tǒng)提供了對進程的基本操作,也稱為原語。這些原語包括:創(chuàng)建原語(create),阻塞原語(block),終止原語(terminal),優(yōu)先級原語(chang_prioriˉty),調(diào)度原語(schedule)。它們可以被系統(tǒng)本身調(diào)用,有的也以軟中斷形式(系統(tǒng)調(diào)用)供用戶進程調(diào)用。他們都涉及現(xiàn)場隊列管理等。當一個進程創(chuàng)建一個新的進程時,創(chuàng)建者稱為父進程,被創(chuàng)建者稱為子進程。通常操作系統(tǒng)中設置一個運行隊列,一個就緒隊列和若干個阻塞隊列。在單處理器系統(tǒng)中運行隊列只有一個成員。一般阻塞隊列的個數(shù)取決于等待事件(原因)的個數(shù)。調(diào)度原語是按照確定的算法,從就緒隊列中選擇一個就緒進程,將處理器分配給它,修改這個進程的PCB內(nèi)容。在操作系統(tǒng)中進程生命的簡單活動是這樣的:一個進程可以由系統(tǒng)創(chuàng)建(如用戶運行一程序),也可以由用戶進程用創(chuàng)建原語建立。新建立的進程開始時處于就緒狀態(tài)。該進程的運行也會因等待某個事件(如I/O完成)的發(fā)生而處于阻塞狀態(tài),轉入相應的阻塞隊列。一旦相應事件發(fā)生后,將被喚醒原語叫醒而回到就緒隊列。重復上述過程直至運行完畢。經(jīng)終止原語作一些記錄工作并撤消這個進程。
(2)進程調(diào)度
進程調(diào)度即處理器調(diào)度,它的主要功能是確定在什么時候分派處理器,并確定分給哪一個進程。在分時系統(tǒng)中,一般有一個確定的時間單位(稱為時間片),當一進程用完一個時間單位時,就發(fā)生進程調(diào)度(又稱上下文轉換),即讓正在運行的進程改變狀態(tài)并轉入就緒隊列尾,再由調(diào)度原語將就緒隊列的首進程取出,投入運行。進程調(diào)度的方法基本上分為兩類:剝奪調(diào)度與非剝奪調(diào)度。所謂非剝奪調(diào)度是指一旦某個作業(yè)或進程占有了處理器,這個進程就占用處理器直到主動放棄處理器為止,相反,如果其他進程可獲得處理器的使用權則是剝奪調(diào)度。在有些進程(如高優(yōu)先級進程)需要快速服務的系統(tǒng)中,剝奪調(diào)度是非常有用的。例如,在實時系統(tǒng)中丟失一個中斷的后果將是災難性的。交互式系統(tǒng)中,為**用戶可接受的響應時間,剝奪調(diào)度也十分重要。在非剝奪系統(tǒng)中,短的作業(yè)常常等待長的作業(yè),但所有進程受到的服務是公平的,響應時間是可以預測的。對就緒隊列的處理體現(xiàn)了調(diào)度策略,常用的是按優(yōu)先級處理。有兩種確定優(yōu)先級的方法,即靜態(tài)優(yōu)先級和動態(tài)優(yōu)先級。靜態(tài)是指進程的優(yōu)先級在進程開始運行前確定,運行過程中不變,而動態(tài)優(yōu)先則可以在進程運行過程中改變。進程調(diào)度的算法是服務于系統(tǒng)目標的策略,對于不同的系統(tǒng)與系統(tǒng)目標,常采用不同的調(diào)度算法,如:?先來先服務(FCFS):又稱先進先出(FIFO),就緒隊列按先來后到原則排隊。?優(yōu)先數(shù)調(diào)度:優(yōu)先數(shù)反映了進程優(yōu)先級,就緒隊列按優(yōu)先數(shù)排隊。?輪轉法(round robin):就緒隊列按FCFS方式排隊。每個運行進程一次占有處理器時間都不超過規(guī)定的時間單位(時間片)。若超過,即調(diào)用調(diào)度原語而形成就緒進程輪流使用服務器。

