現代作業系統 排程

2021-10-13 07:54:10 字數 2522 閱讀 6356

互動系統中的排程

執行緒排程

幾乎所有的程序都是i/o請求和計算都是交替突發(burst)的。

比如,cpu不停的執行一段時間,然後發出乙個系統呼叫來讀寫檔案,系統呼叫完成後又開始計算,直到需要更多的i/o操作為止。

a)稱為計算密集型(compute-bound)又稱為cpu密集型。計算密集型具有較長時間的cpu集中使用和較小頻度的i/o等待。

b)稱為i/o密集型(i/o-bound)。i/o密集型具有較短的cpu集中使用時間和頻繁的i/o等待;頻繁的i/o等待是指在i/o請求間較少進行計算,而不是指i/o請求特別長。

隨著cpu越來越快,更多的程序傾向於i/o密集型。i/o密集型程序的排程就更加重要,排程的基本思想是,對i/o密集型程序,要讓他盡快得到機會,以便發出磁碟請求並保持磁碟始終忙碌。轉時

間執行時

間\frac

執行時間周轉

時間​◉響應比 = 1 + 等待時

間執行時

間\frac

執行時間等待

時間​◉cpu利用率(cpu utilization):常用來對批處理系統的度量,作為評價是排程演算法的指標。

根據如何處理時鐘中斷,可以把排程演算法分為兩類:

◉非搶占式排程演算法:挑選乙個程序執行直到程序被阻塞或直到該程序自動釋放cpu。在時鐘中斷發生時,不會進行排程,處理完時鐘中斷後,如果沒有更高優先順序的程序等到,被中斷的程序繼續執行。

◉搶占式排程演算法:挑選乙個程序執行到某個固定時段的最大值,如果時間結束程序沒執行完,該程序被掛起 ,另乙個程序執行。進行搶占式排程處理,需要在時間段末尾發生時鐘中斷,把cpu的控制還給排程程式

根據不同的環境,排程演算法有不同的分類:

◉批處理(batch)

◉互動式(interactive)

◉實時(real-time)

先來先服務是批處理系統中應用最多的排程演算法,也是最簡單的非搶占式演算法。

對於所有的就緒程序,有乙個單一佇列,程序按照他們請求cpu的順序使用cpu。

但是,使用該演算法,程序不會因為執行時間太長而發生中斷,因此對於乙個長作業後的短作業來說是非常不友好的。

最短作業優先是一種適用於執行時間可預知的非搶占式演算法。

理解起來也很簡單,就是在進行排程的時候優先把cpu分配給執行時間最短的程序。

但是,使用該演算法,由於短任務流的出現可能會導致長任務遲遲無法使用cpu的情況,也就是飢餓(starvation)

最短剩餘作業優先是最短作業優先的搶占式版本。排程程式總是選擇當前剩餘執行時間最短的程序執行。

最高響應比優先演算法,排程程式選擇當前響應比最高的程序投入執行。

輪轉排程是最簡單,最公平且使用最廣的演算法。

每個程序被分配乙個時間片(quantum),允許程序在該時間片內執行。如果時間片結束前程序沒結束,cpu被剝奪給下乙個程序使用;如果時間片結束前程序執行完(或阻塞)則cpu立即進行切換。

在這裡講一下程序切換

程序切換(process switch)也叫上下文切換(context switch)。程序切換是需要時間對管理資料進行處理的,比如儲存當前暫存器的值,裝入記憶體映像,更新各種**,清除和重新調入記憶體快取記憶體等。

但程序切換的時間不包含在時間片內。

針對時間片長短的設定:

如果時間片設定的比較短,那麼對頻繁的互動請求響應比較快,使用者可以獲得更好的體驗;但是響應的會導致cpu的效率下降,比如時間片大小設定為4ms,但是程序切換的時間開銷為1ms,這樣cpu就有20%的時間浪費在管理上。

如果時間片設定的過長,就不會經常發生搶占(因為在時間片結束之前程序已經執行完或是進入阻斷),所有的程序切換都是在邏輯上確實有必要的時候,因此改善了效能;但是對於短的互動請求,響應時間可能會變得很長,讓人難以接受。

在輪轉排程基礎上(就是有時間片分配),給每個可執行(runable的程序都賦予乙個優先順序,高優先順序的程序先執行,低優先順序的後執行。

為了防止高優先順序程序無休止的執行,可以對優先順序進行動態的調整。可以在高優先順序程序執行一段時間後降低高優先順序程序的優先順序,也可以提高低優先順序程序的優先順序,從而達到對優先順序進行調配正的目的。

如果不對優先順序進行調整,可能會導致低優先順序程序產生飢餓現象。

兩種層次的執行緒排程主要差別在於效能上:

◉使用者級程序的程序切換只需要少量的指令,而核心級執行緒需要完整的上下文切換(與程序排程的程序切換類似),修改記憶體映像,清楚和重新整理快取記憶體記憶體,這就導致了若干數量級的延遲。

◉另外,核心級執行緒不會出現使用者級執行緒那樣因為乙個執行緒的阻塞導致同一程序的所有執行緒都不能執行的情況。

現代作業系統day8 排程

最佳靜態排程演算法,通過週期安排優先順序,週期越短優先順序也越高,執行週期最短的任務 最佳動態排程演算法,deadline越早優先順序越高,執行deadline最早的任務 現代作業系統的處理器越來越多,和之前的排程 針對乙個cpu 都有區別 要考慮的問題 1.正常情況下,佇列中的程序都是在乙個cpu...

現代作業系統

只有認為等待時間非常短的情形下,才使用忙等待。用於忙等待的鎖,稱為自旋鎖 spin lock 在互斥時間很短而掛起等待的時間開銷很大時,可以採用活鎖 livelock,沒有出現死鎖,但現象上看好像死鎖發生了 輪詢 忙等待 可用於進入臨界區或訪問資源。接收者發起的分布式啟發演算法。分布式系統新增在其底...

《現代作業系統》 第4章 CPU排程

cpu排程的概念 按一定的排程演算法從就緒佇列中選擇乙個程序,並將cpu的使用權交給被選中的程序 cpu排程要解決的三個問題 排程時機 建立 喚醒程序,程序等待io io中斷,時鐘中斷等 排程過程 即程序切換,主要包括位址空間切換和上下文切換 設計排程演算法時需要考慮的幾個問題 批處理系統中採用的排...