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