【OS】处理机调度
文章目錄
- 調度概念
- 處理機三層調度
- 調度的時機、切換與過程
- 進程調度方式
- 調度基本準則
調度概念
在多道程序系統中,進程的數量往往多于處理機的個數,因此進程爭用處理機的情況在所難免。處理機調度是對處理機進行分配,即從就緒隊列中按照算法 (公平、高效)選擇一個進程并將處理機分配給它運行,以實現進程并發地執行。
處理機調度是多道程序操作系統的基礎,是操作系統設計的核心問題。
處理機三層調度
從提交到完成要經歷以下三級調度:
1)作業調度
又稱高級調度,其主要任務是按一定的原則從外存上處于后備狀態的作業中挑選一個(或多個)作業,給它(們)分配內存、輸入輸出設備等必要的資源,并建立相應的進程,以使它(們)獲得競爭處理機的權利。簡言之,作業調度就是內存與輔存之間的調度,對于每個作業只調入一次、調出一次。
多道批處理系統中大多配有作業調度,而其他系統中通常不需要配置作業調度。作業調度的執行頻率較低,通常為幾分鐘一次。
2)內存調度
又稱中級調度,其作用是提高內存利用率和系統吞吐量。為此,應將那些暫時不能運行的進程調至外存等待,把此時的進程狀態稱為掛起態。當它們已具備運行條件且內存又稍有空閑時,由中級調度來決定把外存上的那些已具備運行條件的就緒進程,再重新調入內存,并修改其狀態為就緒態,掛在就緒隊列上等待。
3)進程調度
又稱低級調度,其主要任務是按照某種方法和策略從就緒隊列中選取一個進程,將處理機分配給它。進程調度是操作系統中最基本的一種調度, 在一般的操作系統中都必須配置進程調度。進程調度的頻率很高,一般幾十毫秒一次。
作業調度從外存的后備隊列中選擇一批作業進入內存,為它們建立進程,這些進程被送入就緒隊列,進程調度從就緒隊列中選出一個進程,并把其狀態改為運行態,把CPU分配給它。中級調度是為了提高內存的利用率,系統將那些暫時不能運行的進程掛起來。當內存空間寬松時,通過中級調度選擇具備運行條件的進程,將其喚醒
1)作業調度為進程活動做準備,進程調度使進程正常活動起來,中級調度將暫時不能運行的進程掛起,中級調度處于作業調度和進程調度之間。
2)作業調度次數少,中級調度次數略多,進程調度頻率最高。
3)進程調度是最基本的,不可或缺。
調度的時機、切換與過程
進程調度和切換進程是操作系統的內核程序。請求調度的事件發生后,才可能運行進程調度程序,調度了新的就緒進程后,才會進行進程間的切換。理論上這三件事情應該順序執行,但在實際設計中,操作系統內核程序運行時,若某時發生了引起進程調度的因素,則不一定能夠馬上進行調度與切換。
不能進行進程的調度與切換的情況有以下幾種:
1)在處理中斷的過程中。中斷處理過程復雜,在實現上很難做到進程切換,而且中斷處理是系統工作的一部分, 邏輯上不屬于某一進程, 不應被剝奪處理機資源。
2)進程在操作系統內核程序臨界區中。進入臨界區后,需要獨占式地訪問共享數據,理論上必須加鎖,以防止其他并行程序進入,在解鎖前不應切換到其他進程運行,以加快該共享數據的釋放。
3)其他需要完全屏蔽中斷的原子操作過程中。如加鎖、解鎖、中斷現場保護、恢復等原子操作。在原子過程中,連中斷都要屏蔽,更不應該進行進程調度與切換。
若在上述過程中發生了引起調度的條件,則不能馬上進行調度和切換,應置系統的請求調度標志,直到上述過程結束后才進行相應的調度與切換。
應該進行進程調度與切換的情況如下:
1)發生引起調度條件且當前進程無法繼續運行下去時,可以馬上進行調度與切換。若操作系統只在這種情況下進行進程調度,則是非剝奪調度。
2)中斷處理結束或自陷處理結束后,返回被中斷進程的用戶態程序執行現場前,若置上請求調度標志,即可馬上進行進程調度與切換。若操作系統支持這種情況下的運行調度程序,則實現了剝奪方式的調度
進程切換往往在調度完成后立刻發生,它要求保存原進程當前切換點的現場信息,恢復被調度進程的現場信息。現場切換時,操作系統內核將原進程的現場信息推入當前進程的內核堆棧來保存它們,并更新堆棧指針。內核完成從新進程的內核棧中裝入新進程的現場信息、更換當前運行進程空間指針、重設PC寄存器等相關工作之后,開始運行新的進程。
進程調度方式
所謂進程調度方式,是指當某個進程正在處理機上執行時,若有某個更為重要或緊迫的進程需要處理,即有優先權更高的進程進入就緒隊列
此時分配處理機通常有以下兩種進程調度方式:
1)非剝奪調度方式
又稱非搶占方式。非剝奪調度方式是指當一個進程正在處理機上執行時,即使有某個更為重要或緊迫的進程進入就緒隊列,仍然讓正在執行的進程繼續執行,直到該進程完成或發生某種事件而進入阻塞態時,才把處理機分配給更為重要或緊迫的進程。
在非剝奪調度方式下,一旦把CPU分配給一個進程,該進程就會保持CPU直到終止或轉換到等待態。
這種方式的優點是實現簡單、系統開銷小,適用于大多數的批處理系統,但它不能用于分時系統和大多數的實時系統。
2)剝奪調度方式
又稱搶占方式。剝奪調度方式是指當一個進程正在處理機上執行時,若有某個更為重要或緊迫的進程需要使用處理機,則立即暫停正在執行的進程,將處理機分配給這個更為重要或緊迫的進程。
采用剝奪式的調度,對提高系統吞吐率和響應效率都有明顯的好處。但“剝奪”不是一種任意性行為,必須遵循一定的原則,主要有優先權、短進程優先和時間片原則等。
調度基本準則
不同的調度算法具有不同的特性,在選擇調度算法時,必須考慮算法的特性。為了比較處理機調度算法的性能,人們提出了很多評價準則,下面介紹其中主要的幾種:
CPU利用率
CPU是計算機系統中最重要和昂貴的資源之一,所以應盡可能使CPU保持“忙”狀態,使這一資源利用率最高。
系統吞吐量
表示單位時間內CPU完成作業的數量。
長作業需要消耗較長的處理機時間,因此會降低系統的吞吐量。
短作業需要消耗的處理機時間較短,因此能提高系統的吞吐量。
調度算法和方式的不同,也會對系統的吞吐量產生較大的影響。
周轉時間
周轉時間是指從作業提交到作業完成所經歷的時間,是作業等待、在就緒隊列中排隊、在處理機上運行及進行輸入/輸出操作所花費時間的總和。
等待時間
等待時間指進程處于等處理機狀態的時間之和,等待時間越長,用戶滿意度越低。處理機調度算法實際上并不影響作業執行或輸入/輸出操作的時間,只影響作業在就緒隊列中等待所花的時間。因此,衡量一個調度算法的優劣, 常常只需簡單地考察等待時間。
響應時間
響應時間指從用戶提交請求到系統首次產生響應所用的時間。
在交互式系統中,周轉時間不可能是最好的評價準則,一般采用響應時間作為衡量調度算法的重要準則之一。
從用戶角度來看,調度策略應盡量降低響應時間,使響應時間處在用戶能接受的范圍之內。
要想得到一個滿足所有用戶和系統要求的算法幾乎是不可能的。設計調度程序,方面要滿足特定系統用戶的要求(如某些實時和交互進程的快速響應要求),另方面要考慮系統整體效率(如減少整個系統的進程平均周轉時間),同時還要考慮調度算法的開銷。
總結
- 上一篇: 快手极速版主页链接在哪复制
- 下一篇: 【计算机组成原理】定点数的表示和运算