1 處理機調度的概念
??在多道程序系統(tǒng)中蝎宇,進程的數(shù)量往往多于處理機的個數(shù)虎眨,這樣不可能同時并行地處理各個進程蟋软。處理機的調度就是從就緒隊列中按照一定的算法選擇一個進程并將處理機分配給它運行,以實現(xiàn)進程的并發(fā)執(zhí)行专甩。
2 處理機調度的方式
??調度的方式:高級調度钟鸵、中級調度、低級調度涤躲。
??2.1 高級調度
??由于內存空間有限棺耍,有時無法將用戶提交的作業(yè)全部放入內存中,因此需要確定某種規(guī)則來決定作業(yè)調入內存的順序种樱。
??高級調度(作業(yè)調度):按照一定的原則從外存上處于后備隊列的作業(yè)中挑選一個或多個作業(yè)蒙袍,給他們分配內存等必要資源,并建立相應的進程(建立PCB)嫩挤,以使它(們)獲得競爭處理機的權利害幅。
??高級調度是外存與內存之間的調度。每個作業(yè)只調入一次岂昭,調出一次以现。作業(yè)調入時會建立相應的PCB,作業(yè)調出時才撤銷PCB。高級調度主要是指調入的問題邑遏,因為只有調入的時機需要操作系統(tǒng)來確定佣赖,但調出的時機必然是作業(yè)運行結束才調出。
??2.2 中極調度
??在引入虛擬存儲技術之后记盒,可以將暫時不能運行的進程調至外存等待憎蛤,等它重新具備了運行條件且內存又稍有空間時,再重新調入內存纪吮。
??這樣做是為了提高內存利用率和系統(tǒng)吞吐量俩檬。
??暫時調到外存等待的進程狀態(tài)為掛起狀態(tài),但是進程的PCB不會一起調到外存碾盟,而是會常駐內存棚辽。PCB中會記錄進程數(shù)據在外存中的存放位置,進程狀態(tài)等信息巷疼,操作系統(tǒng)通過內存的PCB來保持對各個進程的監(jiān)控晚胡、管理。被掛起的進程PCB會被放到掛起隊列中嚼沿。
?? 中級調度(內存調度),就是按照某種規(guī)則瓷患,從掛起隊列中選擇合適的進程將其數(shù)據重新調回內存骡尽。
??一個進程可能會被多次調出、調入內存擅编。因此中級調度發(fā)生的頻率比高級調度更高
掛起和阻塞的區(qū)別:
??兩種狀態(tài)都是暫時不能獲得CPU的執(zhí)行權攀细,但是掛起狀態(tài)是將進程映像調到外存去,而阻塞態(tài)下進程映像還在內存中爱态。
??低級調度(進程調度):其主要任務是按照某種方法和策略從就緒隊列中選取一個進程谭贪,將處理機分配給它。
??進程調度是操作系統(tǒng)中最基本的一種調度锦担,在一般的操作系統(tǒng)中都必須配置進程調度俭识。
??進程調度的頻率很高,一般幾十毫秒一次洞渔。這樣才能保證多進程在宏觀是同時進行的套媚。
3 處理機調度小結
4 進程調度的時機
??需要進行進程調度與切換的情況:
??不能進行進程調度與切換的情況:
??(1) 在處理中斷的過程
??(2) 進程在操作系統(tǒng)的內核程序臨界區(qū),但是在普通臨界區(qū)中是可以進行調度磁椒、切換的堤瘤。
??(3) 在原子操作過程中。
5 進程調度的方式
??非剝奪調度方式浆熔,又稱非搶占式本辐。即只允許進程主動放棄處理機,在運行過程中即使有更緊急的任務到達,當前進程依然會繼續(xù)使用處理機慎皱,直到該進程終止或要求進入阻塞態(tài)老虫。
??實現(xiàn)簡單,系統(tǒng)開銷小但是無法及時處理緊急任務宝冕,適合早期批處理操作系統(tǒng)张遭。
??剝奪調度方式,又稱搶占式地梨。當一個進程正在處理機上執(zhí)行時菊卷,如果有一個更重要更緊急進程要使用處理機,即立即暫停正在執(zhí)行的進程宝剖,將處理機分配給更重要更緊急的那個進程洁闰。
??可以優(yōu)先處理更緊急的進程。也可以實現(xiàn)各進程按時間片輪流執(zhí)行的功能(通過時鐘中斷)万细。適合分時操作系統(tǒng)扑眉、實時操作系統(tǒng)。
6 進程的切換與過程
??(1) 對原來運行的進程各種數(shù)據的保存赖钞。
??(2) 對新的進程各種數(shù)據的恢復(如程序計數(shù)器腰素、程序狀態(tài)字、各種數(shù)據寄存器等處理機線程信息雪营,這些信息都是保存在程序控制塊PCB中)弓千。
??由此可見,進程的切換是有代價的献起,因此如果進程切換調度過于頻繁的話洋访,必然會使整個系統(tǒng)的開銷過大,效率降低谴餐。因為系統(tǒng)大部分時間都花在進程切換上姻政,真正用于執(zhí)行進程的時間少。
7 進程調度小結
8 調度算法的評價指標
??評價指標:CPU利用率岂嗓、系統(tǒng)吞吐量汁展、周轉時間、等待時間摄闸、響應時間善镰。
??8.1 CPU利用率
??CPU利用率:指CPU忙碌的時間占總時間的比例。
??CPU利用率 = 忙碌時間 / 總時間年枕。
??如某計算機只支持單道程序炫欺,某個作業(yè)剛開始需要在CPU上運行5s,再用打印機打印輸出5s熏兄,之后再執(zhí)行5s品洛,在此過程中:
??CPU利用率=(5 + 5) / 15 = 66.67%.
??打印機利用率=5 / 15 = 33.33%.
??8.2 系統(tǒng)吞吐量
??系統(tǒng)吞吐量:單位時間內完成作業(yè)的數(shù)量树姨。
??系統(tǒng)吞吐量=總共完成了多少道作業(yè)/總共花了多少時間
??8.3 周轉時間
??周轉時間:指從作業(yè)被提交給操作系統(tǒng)開始,到作業(yè)完成為止的這段時間間隔桥状。
??包括四個部分:作業(yè)在外存設備隊列上等待作業(yè)調度(高級調度)的時間帽揪、進程在就緒隊列上等待進程調度(低級調度)的時間、進程在CPU上執(zhí)行的時間辅斟、進程等待I/O操作完成的時間转晰。
??作業(yè)周轉時間= 作業(yè)完成時間 – 作業(yè)提交時間
??平均周轉時間 = 各作業(yè)周轉時間之和 / 作業(yè)數(shù)
??帶權周轉時間 = 作業(yè)周轉時間 / 作業(yè)實際運行時間
??平均帶權周轉時間 = 各作業(yè)帶權周轉時間之和 / 作業(yè)數(shù)
注:算例見下兩篇文章。
??8.4 等待時間
??等待時間:指進程或作業(yè)處于等待處理機狀態(tài)時間之和士飒。
??平均等待時間:各個進程/作業(yè)等待時間的平均值查邢。
??對進程來說,等待時間就是指進程建立后等待被服務的時間之和酵幕。
??對于作業(yè)來說扰藕,不僅要考慮建立進程后等待的時間(進程建立時作業(yè)已經進入了內存),還要加上作業(yè)在外部存后備隊列中等待的時間芳撒。
??8.5 響應時間
??響應時間:指從用戶提交請求到首次產生相應所用的時間邓深。
??本文完
??如發(fā)現(xiàn)錯誤,請指正1噬病=姹浮!