在典型的設計中,乙個任務有以下三種狀態:
正在執行
(running,正在cpu中執行)、
待命(ready,等待執行)、
阻塞(blocked,任務暫停,等待乙個事件的發生,例如接收一組資料)
由於cpu在某個時間只能執行乙個任務,大部分任務,在大部分時間,處於阻塞或待命狀態。可能會有大量專案在待命列表裡等待執行,這取決於系統所需的任務數量以及排程器的型別。
一、作業(job)的概念
(1) 使用者角度
我們把一次應用業務處理過程中,從輸入開始到輸出結束,
使用者要求計算機所做的有關該次業務處理的全部工作稱為乙個作業。
下面過程可以認為是作業的乙個例子。
編輯輸入——> 編 譯——> 鏈 接——> 執 行——> 輸 出
(2) 系統角度
從計算機系統的角度看,作業是乙個比程式更廣的概念,它由程式、資料和作業說明書三部分組成。
系統通過作業說明書控制檔案形式的程式和資料,使之操作和執行。在批處理系統中,作業是搶占記憶體的基本單位,也就是說,批處理系統是以作業為單位把程式和資料調入記憶體以便執行的。
二、作業排程演算法分類
1. 先來先服務(first come first serve,fcfs)
按作業進入輸入井的先後次序安排。優點是實現簡單,用先進先出(first input first output,fifo)佇列順序工作,對相同的或均衡的作業較為合理,缺點是不利於執行時間短的作業。
2. 最短作業優先法(shortest job fist,sjf)
短作業優先(sjf, shortest job first)又稱為「短程序優先」
spn(shortest process next);這是對fcfs演算法的改進,其目標是減少平均周轉時間。
對預計執行時間短的作業(程序)優先分派
處理機。
最短作業優先法也就是選實際執行時間小的優先
,也就是只考慮執行時間。優點是短作業得到了優先執行,提高了系統的效率。缺點是當作業不斷進入時,長的作業有可能長時間排不上隊
3.最高響應比優先法(highest response-ratio next, hrn)
最高響應比
優先法(hrn,highest response_ratio next)是對fcfs方式和sjf方式的一種綜合平衡。fcfs方式只考慮每個作業的等待時間而未考慮執行時間的長短,而sjf方式只考慮執行時間而未考慮等待時間的長短。因此,這兩種排程演算法在某些極端情況下會帶來某些不便。
hrn排程策略同時考慮每個作業的等待時間長短和估計需要的執行時間長短,從中選出
響應比最高的作業投入執行。
響應比r定義如下: r =(w+t)/t = 1+w/t
其中t為該作業估計需要的執行時間,w為作業在後備狀態佇列中的等待時間。
每當要進行作業排程時,系統計算每個作業的
響應比,選擇其中r最大者投入執行。這樣,即使是長作業,隨著它等待時間的增加,w / t也就隨著增加,也就有機會獲得排程執行。這種演算法是介於fcfs和sjf之間的一種折中演算法。由於長作業也有機會投入執行,在同一時間內處理的作業數顯然要少於sjf法,從而採用
hrn方式時其吞吐量將小於採用sjf 法時的吞吐量。另外,由於每次排程前要計算響應比,
系統開銷
也要相應增加。
4. 定時輪轉法
輪轉法(round robin)是讓每個程序在就緒
佇列中的等待時間與享受服務的時間成正比例。
按時間片輪轉,可分為短時間的固定時間片(如unix 作業系統時間片為幾毫秒至幾十毫秒)和長時間的不固定時間
片(如:windows作業系統的搶占式多工方式)。
5.優先順序法
按優先數排隊次序工作。分靜態和動態:靜態是在排隊前計算優先數,動態是在排程過程中計算優先數。又可分為使用者給定優先數(反映使用者要求)和系統給定的優先數,例如,系統給定前台和後台(比如批處理的作業)工作的優先順序,一般前台(與使用者直接互動的作業)優先。
6.多級反饋佇列列演算法
多級反饋佇列演算法(round robin with multiple feedback)是輪轉演算法和優先順序演算法的綜合和發展。
設定多個就緒佇列,分別賦予不同的優先順序,如逐級降低,佇列1的優先順序最高。每個佇列執行時間片的長度也不同,規定優先順序越低則時間片越長,如逐級加倍。
新程序進入記憶體後,先投入佇列1的末尾,按fcfs演算法排程;若按佇列1乙個時間片未能執行完,則降低投入到佇列2的末尾,同樣按fcfs演算法排程;如此下去,降低到最後的佇列,則按「時間片輪轉」演算法排程直到完成。
僅當較高優先順序的隊列為空,才排程較低優先順序的佇列中的程序執行。如果程序執行時有新程序進入較高優先順序的佇列,則搶先執行新程序,並把被搶先的程序投入原佇列的末尾。
例題:既考慮作業等待時間,又考慮作業執行時間的排程演算法是()
響應比高者優先
短作業優先
優先順序排程
多級反饋佇列排程
解答:a
作業排程演算法
1.先來先服務fcfs first come first serve 是最簡單的排程演算法,按先後順序進行排程。按照作業提交或程序變為就緒狀態的先後次序,分派cpu 當前作業或程序占用cpu,直到執行完或阻塞,才出讓cpu 非搶占方式 在作業或程序喚醒後 如i o完成 並不立即恢復執行,通常等到當前...
作業排程演算法
一 先來先服務 根據作業到達的先後次序安排作業的執行順序,最先到達的作業最先執行,該演算法操作最簡單,同時看起來也是最公平,因此在系統中都有應用,但是它沒有考慮作業執行時間的長短,如果最先到達的作業需要較長的時間,而稍後到達的作業只需要很短的執行時間,就會導致短作業的長時間等待,使短作業的帶權周轉的...
Hadoop作業排程演算法
hadoop集群中有三種作業排程演算法,分別為 fifo 公平排程演算法和計算能力排程演算法 fifo比較簡單,hadoop 中只有乙個作業佇列,被提交的作業按照先後順序在作業佇列中排隊,新來的作業插入到隊尾。乙個作業執行完後,總是從隊首取下乙個作業執行。這種排程策略的優點是簡單 易於實現,同時也減...