作業系統之程序排程

2021-07-31 21:01:07 字數 1932 閱讀 6214

世界上很多問題都是跟資源分配和任務排程有關,而學會了作業系統的程序排程演算法,我覺得也會給你在做事的時候帶來一些啟發吧。

在現代的作業系統中,有很多程序在記憶體中。有的正在執行,有的正等待某個事件的發生(比如等待使用者敲擊鍵盤)。那麼作業系統作為乙個大佬,就必須管理這些程序,讓它們按照規則來,不能亂了套。

按照每個階段的執行時間的相對比例來分,程序的排程型別包括一下三類:

(1)長程排程:每當建立乙個新的程序的時候,都會執行一次長程排程,它決定是否把程序新增到待執行的程序池中。

(2)中程排程:它決定是否把待執行的程序池中的程序加入到部分/全部在記憶體中的程序集合中去。

(3)短程排程:決定哪乙個程序可以獲得cpu資源並執行。

乙個程序執行要經歷的過程可以用下圖來表示:

圖例:首先,程序會進入作業佇列,然後進入就緒佇列,最後才獲得cpu資源並執行;如果程序需要進行i/o操作,還會進入等待i/o的佇列,一旦對應事件發生,就會重新進入就緒佇列。

對於作業系統而言,他自己也不能隨便排程,不然別人會投訴他,因此它必須要考慮以下幾個指標:

一般說來,不能使上面所有的指標都達到很好,它們之間往往是衝突的,好的作業系統需要權衡它們,並達到乙個理想的狀態。

在排隊的時候,有插隊和不插隊的情況。同樣作業系統呼叫也有這兩種模式:

(1)非搶占式:一旦程序進入執行狀態,就會一直執行到結束,不會被其他程序干擾。

(2)搶占式:當前正在執行的程序可能被作業系統中斷進入就緒狀態。

與非搶占的方式相比,搶占式可能會導致比較大的開銷,但是也可以避免其中乙個程序長時間占用處理器資源的情況。如果使用有效的程序切換機制,提供較大的記憶體,讓大部分程式都在記憶體中,可以使得搶占式的代價比較低。

其實每個階段執行的排程演算法差不多(我個人覺得),只是執行的頻率不一樣,因此下面將講解常用的短程排程演算法,一通百通。

(1)先來先服務(fcfs):這種演算法十分簡單,就是先到先得,否則就排隊。這種演算法有利於cpu繁忙型作業,有利於長時間作業。但是對於短時間作業、i/o繁忙型作業、緊迫性作業都不好。

(2)短作業優先(sjf):從就緒佇列裡面,選擇乙個預計執行時間最短的作業。因為執行時間比較短的作業能夠很快得到執行,系統的吞吐量以及響應時間可能比較好。但是這種方法有乙個問題,預計執行時間如何確定?如果使用者程序欺騙作業系統說我很快就執行完,先讓我執行吧怎麼辦?此外,我們考慮下面場景:乙個長作業在等待,後面源源不斷有短作業進來插隊,那這個長作業就一直等待了。

(3)高響應比優先排程演算法(hrn):定義響應時間(已等待時間+要求服務時間)/要求服務時間為響應比,每次排程的時候,作業系統會計算就緒佇列裡面的每個程序的響應比,響應比高的就執行。這種做法結合了(1)、(2)的優點,是一種比較好的做法。因為短作業的響應比會比較高,而且也不會出現長作業一直等待的尷尬場景。缺點在於需要計算響應比,增加開銷,沒有考慮作業的緊迫程度,而且執行時間是無法提前準確預知的。

(4)最高優先權排程演算法(hpf):從後備佇列中,選乙個優先權最高的作業。優先權高低的規則可以是程序的響應比、到達時間、緊迫程度等。這樣的演算法考慮到程序的緊迫性,但是要計算優先順序,增加系統開銷。

(5)時間片輪轉排程演算法(rr):為了公平,每乙個程序從就緒狀態轉為執行狀態,執行一段時間又到就緒狀態(插入到就緒佇列的尾部),直到程序執行結束。這種演算法有利於提高使用者的互動性,有利於事務性、i/o繁忙型的程序。缺點在於切換程序時開銷大。

(6)多級反饋佇列排程演算法:設定多個就緒佇列,從低到高賦予不同的優先順序。每個佇列採用fcfs演算法,時間片長度從高優先順序到低優先順序依次增加。這樣做的好處在於無需**短作業的長度就自動判斷出作業的長短了(短的作業比較快執行完)。

完,感謝閱讀!

作業系統之 程序排程

程序排程的目的 極小化平均響應時間,極大化吞吐量。程式使用cpu的模式 有何特點 程式大部分時間在cpu上執行 cpu導向或計算密集型程式。運用於 科學計算或天文計算 程式大部分在進行輸入輸出操作 io導向或輸入輸出密集型程式。運用於人機互動,遊戲。比較短任務優先和優先順序排程演算法 短任務stcf...

作業系統之程序排程

程序排程是指計算機通過決策決定哪個就緒程序可以獲得cpu使用權 處理器一旦分配給某個程序,就讓該程序一直使用下去 排程程式不以任何原因搶占正在被使用的處理器 直到程序完成工作或因為i0阻塞才會讓出處理器 允許排程程式以一定的策略暫停當前執行的程序 儲存好舊程序的上下文資訊,分配處理器給新程序 排程程...

作業系統之程序排程

程序排程是指計算機通過決策決定哪個就緒程序可以獲得cpu使用權 程序的排程機制 就緒佇列的排隊機制 選擇執行程序的委派機制 新老程序的上下文切換機制 程序的排程 非搶占式的排程 處理器一旦分配給某個程序,就讓該程序一直使用下去 排程程式不以任何原因搶占正在被使用的處理器 直到程序完成工作或因為i0阻...