作業系統 作業排程的五種演算法

2021-08-11 03:31:54 字數 1414 閱讀 6564

前面說了cpu具有二級排程。當作業流進入輸入井的時候,首先會用作業排程來選擇合適的作業進入主存區,這個合適的作業數量是根據允許並行作業的道數和作業排程的演算法來決定的,此時,進入主存區的作業被作業系統建立了相應的程序,然後經過程序排程來進行占去cpu資源的操作,使得作業的執行。

很好理解,對吧?

現在我們研究的物件是如何去把輸入井的作業放到主存區,那麼我們的重點放在作業排程的演算法上來。

一般來說,作業排程的常用演算法有5種。

這個演算法顧名思義,先進入輸入井的作業先被服務,值得注意的是,並不是先來的就一定會先被放入主存區,必須要有合適的資源才行,比如作業a進入輸入井,它需要90kb的資源,但是目前只有80kb的資源,那就不能被服務。比如主存空間有100kb,a,b兩個作業依次進入輸入井,a需要50kb的資源,b需要60kb,首先a會被直接放去主存區,主存區目前剩餘50kb,但是由於b需要60kb,因此它不會被直接放入主存區,而是等待主存區有足夠的資源可以被利用。

缺點:當作業周轉時間長的作業占用主存區資源時,主存區資源長時間不能被釋放,後面周轉時間少的作業只能處於等待狀態,這無疑減少了系統的吞吐量。

這個作業排程演算法只是把計算時間較短的作業優先服務,實質上,它還是採用了先來先服務的演算法,設每個任務的周轉時間為ti。所有作業的平均周轉時間為

t = (t1 + t2 + t3 + t4 + ... + tn) * (n/1)
由於t1 <= t2 <= t3 <= t4 <= … tn ,t取得最小值,因此每個作業的周轉時間取得最小值,t取得最小值。

缺點:考慮一下這樣乙個情況,如果首先進入輸入井的是乙個耗時的作業, 但接下來進來的都是短時作業,那麼短時作業肯定會根據計算時間短的作業優先演算法先執行短時作業,而耗時作業沒有可以被執行的機會,因此,這可能會令使用者體驗不佳

這個演算法綜合了錢兩個演算法,乙個是忽略了計算時間,乙個是忽略了等待時間,而響應比高者優先演算法恰好是乙個中庸的演算法,它利用了響應比來判斷是否應該服務。

等待時間很長的作業會使響應比很大,計算時間很少的作業也會使響應比增加,這樣用響應比就可以兼顧兩頭,可以說是乙個中庸的演算法。用這種演算法會使所有作業流進入輸入井完畢後開始排程,計算出所有作業的響應比再開始比較,因此這種演算法會帶來乙個明顯的效率問題。當作業數量多的時候,計算所有作業的響應比本身就是乙個很耗時的操作了。

顧名思義了。這種演算法使用優先順序來決定誰先被服務。

設定優先順序會有兩種方法,第一是使用者自己設定,第二種是系統設定。系統設定會根據作業的型別,作業的等待時間,計算時間,作業的緩急程度等等各方面的因素來判斷是否應該被服務,有些系統還能在輸入井根據各方面因素來動態改變優先順序。

這種演算法的主要依據是資源,根據使用不同的資源進行分類,使得占用不同資源的作業能夠同時執行,從而提高效率,和系統的吞吐量。

作業系統,作業排程演算法參考

作業系統,作業排程演算法參考 include include include include include include include using namespace std const int n 1000 struct task task n tp task n int num 程序數目 ...

作業系統的作業排程

作業 job 是作業系統中乙個常見的概念,所謂作業是指使用者在一次計算過程或者事務處理過程中,要求計算機系統所作工作的集合。所謂作業排程是指按照某種原則,從後備作業佇列中選取作業進入記憶體,並為作業做好執行前的準備工作以及作業完成後的善後處理工作。設計作業排程演算法時應達到如下目標 1 某段時間內盡...

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

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