作業系統的作業排程

2021-08-04 20:57:58 字數 3487 閱讀 7056

作業(job)是作業系統中乙個常見的概念,所謂作業是指使用者在一次計算過程或者事務處理過程中,要求計算機系統所作工作的集合。

所謂作業排程是指按照某種原則,從後備作業佇列中選取作業進入記憶體,並為作業做好執行前的準備工作以及作業完成後的善後處理工作。設計作業排程演算法時應達到如下目標:

•  (1) 某段時間內盡可能執行更多的作業,應該優先考慮短作業。

•  (2) 使處理機保持繁忙,應該優先考慮計算量大的作業,即計算型作業。

•  (3) 使i/o裝置保持繁忙,應該優先考慮i/o繁忙的作業,即i/o型作業。

•  (4) 對所有的作業盡可能公平合理的。這就要求對每個作業盡可能公平對待,不無故地或無限期地拖延乙個作業的執行。

作業排程離不開具體排程演算法,常用的作業排程演算法有五種,下面我們作簡單的介紹,並以單道批處理系統為例來具體分析每種演算法的優劣。

先來先服務排程演算法

先來先服務排程演算法(first come first service,fcfs)按作業到達系統的先後次序進行排程。該演算法優先考慮在系統中等待時間最長的作業,而不考慮作業執行時間的長短。例如,有4個作業組成的乙個作業流,如表2-1所示,在給出了作業的提交時間、執行時間後,經計算給出了作業的開始時間、完成時間、周轉時間和帶權周轉時間。

由於單道批處理系統處理作業是乙個接著乙個的進行,所以第乙個作業的結束時間就是第二個作業的開始時間,第二個作業的結束時間就是第三個作業的開始時間,等等。所以,作業執行的次序為:1,2,3,4。

由此:此作業流的平均周轉時間為t =(2.0+1.5+1.2+1.5)/4=1.55h,

此作業流的平均周轉時間為w =(1.0+3.0+6.0+3.75)/4=3.4375h

注:通過以上分析,顯然,這種演算法容易實現,但效率很低。

短作業優先排程演算法

短作業優先排程演算法(shortest job first,sjf)總是從作業的後備佇列中挑選執行時間最短的作業,作為下—個排程執行的物件。仍然採用上面的4個作業組成的乙個作業流,計算其排程效能,如表2-2所示,經計算給出了作業的開始時間、完成時間、周轉時間和帶權周轉時間。

在如表2-2所示的計算過程中,由於作業1的開始時間是5:00,而其餘作業均未到達,故先執行作業1,當作業1執行完畢,其餘作業均按短作業優先執行。所以,作業執行的次序為:1, 3,4,2。

由此:此作業流的平均周轉時間為t =(2.0+2.1+0.7+1.0)/4=1.45h。

此作業流的平均周轉時間為w =(1.0+4.2+3.5+2.5)/4=2.8h

注:通過以上分析,雖然這種演算法易於實現,且效率也比較高,但未考慮長作業的利益。

響應比高者優先排程演算法

先來先服務排程演算法只考慮了作業的等待時間,而忽略了作業的執行時間,對短作業不利;最短作業優先排程演算法只考慮了作業執行時間的長短,而忽略了作業的等待時間,對執行時間長的作業不利,因為如果始終有短作業進人系統,則較長作業會長時間得不到排程。所以上述兩種排程演算法都有偏向,即不全面。下面介紹一種既考慮了作業的等待時間又考慮了作業的執行時間的排程演算法,它是響應比高者優先排程演算法(highest response-ratio next ,hrn)。所謂響應比高者優先排程演算法,就是在每次排程作業執行時,先計算後備作業佇列中每個作業的響應比,然後挑選響應比最高者投入執行。

響應比r定義如下:

r=作業的響應時間/作業的執行時間

作業的響應時間=作業的等待時間+作業的執行時間

因此,作業的響應比為:r=1+作業的等待時間/作業的執行時間。

從以上公式中可從看出,乙個作業的響應比隨著等待時間的增加而提高。這樣,只要系統中的某作業等待了足夠長的時間,它總會成為響應比最高者而獲得執行的機會。在相同等待時間的情況下,短作業優先,而對於相同執行時間的作業,等待時間長的作業優先執行。

仍然採用上面的4個作業組成的乙個作業流,計算其排程效能,如表2-3所示,經計算給出了作業的開始時間、完成時間、周轉時間和帶權周轉時間。

在如表2-3所示的計算過程中,由於作業1的開始時間是5:00,而其餘作業均未到達,故先執行作業1。當作業1執行完畢,計算後備佇列中作業2,3,4的響應比。按照以上的定義和計算公式,計算如下:

作業2:r=(60+30)/30=3

作業3:r=(30+12)/12=3.5

作業4:r=(24+24)/24=2

可見,作業3的響應比最高,選擇作業3執行,故表2-3中作業3的開始時間為作業1的完成時間,即7:00,當作業3執行完畢,計算後備佇列中作業2,4的響應比,計算如下:

作業2:r=(72+30)/30=3.4

作業4:r=(36+24)/24=2.5

顯然,這次應該選擇作業2,故表2-3中作業2的開始時間為作業3的完成時間,即7:12,最後執行作業4。故作業執行的次序為:1, 3,2, 4。

由此:此作業流的平均周轉時間為t =(2.0+1.7+0.7+1.5)/4=1.475h,

此作業流的平均周轉時間為w =(1.0+3.4+3.5+3.75)/4=2.9125

注:通過以上分析,這種演算法既考慮了作業的等待時間,也考慮了作業的執行時間,是一種比較理想的排程演算法。但這種演算法複雜,而且需要動態計算某一作業完成時刻後備佇列中每個作業的響應比,增加了系統的開銷。

最高優先數排程演算法

此演算法根據作業的優先數排程作業進入系統執行。為每個作業確定乙個優先數,資源能滿足且優先數高的作業優先被選中,當幾個作業有相同的優先數時,對這些具有相同優先數的作業再按照先來先服務原則進行排程。

作業優先數的確定各系統有所不同,有些系統根據作業對資源的要求確定其優先數,有的系統則使用外部優先數,即由使用者自行確定自己作業的優先數。一種方法是由作業系統根據作業的輕重緩急程度、作業估計的計算時間、作業的型別、資源申請情況等因素綜合考慮。分析這些因素在實現系統設計目標中的影響,決定各因素的比例,綜合得出作業的優先數。另一種方法是使用者自己確定。當使用者提交自己的作業時連同作業的優先數也一同提交給系統。對於大多數使用者來說都希望自己的作業被盡快選中,但需注意不能盲目提高作業的優先數。當然,還有的系統根據作業的等待時間動態地改變其優先數,使等待時間長的作業的優先數隨著等待時間的變長而優先數提高,以縮短作業的周轉時間和帶權周轉時間。但動態地改變其優先數顯然會增加系統的開銷。

均衡排程演算法

這種排程演算法根據作業對資源的要求進行分類,作業排程從各類作業中挑選,盡可能地使使用不同資源的作業同時執行。這樣不僅可以使系統中的不同型別的資源都在被使用,而且可以減少作業等待使用相同資源的時間,從而加快作業的執行。

有的系統還對每一類中的各作業確定優先數,作業排程時在每類作業中再按優先數高者優先的排程原則選擇作業。這樣,既能使各類作業都得到照顧,又能照顧同類作業中的緊迫作業。

作業系統 作業排程(高階排程)

乙個典型的作業可分成三個作業步 1.編譯 作業步 2.鏈結裝配 作業步 3.執行 作業步。在多道批處理系統中通常有上百個作業,為了管理和排程作業,系統為每個作業設定了乙個作業控制塊 jcb 它記錄該作業的有關資訊。不同系統的 jcb的組成內容有所區別。jcb 是作業在系統中存在的唯一標誌。作業進入系...

0422 作業系統作業排程

實驗 一 作業排程實驗 專業 商軟二班 姓名 顏文生 學號 201406114256 一 實驗目的 1 加深對作業排程演算法的理解 2 進行程式設計的訓練。二 實驗內容和要求 用高階語言編寫乙個或多個作業排程的模擬程式。單道批處理系統的作業排程程式。作業一投入執行,它就占有計算機的一切資源直到作業完...

作業系統 程序的作業排程

原理 系統按作業到達的先後次序進行排程,即從作業後備佇列選擇幾個最先進入該佇列的作業,並調入記憶體,為它們分配資源和建立程序。也適於程序排程。優點 實現簡單 缺點 沒考慮作業的緊迫性,利於長作業,不利於短作業 原理 是從後備佇列中選擇乙個或若干個估計執行時間 cpu執行期 最短的作業,將它們調入記憶...