C 問題23 程序排程

2021-10-24 19:32:02 字數 2699 閱讀 6432

cpu在每個系統滴答(tick)中斷產生的時候,檢查就緒佇列裡面的程序(遍歷鍊錶中的程序結構體),如有符合排程演算法的新程序需要切換,儲存當前執行的程序的資訊(包括棧資訊等)後掛起當前程序,選擇新的程序執行,這就是程序排程。

一般把排程演算法分為兩類:非搶占式排程演算法和搶占式排程演算法。

非搶占式排程演算法挑選乙個程序,然後讓該程序執行直到被阻塞,或者直到該程序退出,才會呼叫另外乙個程序,也就是說不會因為時鐘中斷改變呼叫。

搶占式排程演算法挑選乙個程序,然後讓該程序只執行某段時間,如果在該時段結束時,該程序仍然在執行時,則會把它掛起,接著排程程式從就緒佇列挑選另外乙個程序。這種搶占式排程處理,需要在時間間隔的末端發生時鐘中斷,以便把 cpu 控制返回給排程程式進行排程,也就是常說的時間片機制

常見的非搶占式:先來先服務(first come first severd, fcfs)演算法,最短作業優先(shortest job first, sjf)排程演算法

常見的搶占式:時間片輪轉(round robin, rr)排程演算法

假設程序來的順序以及所需cpu時間如下:

執行的順序就是:先來後到原則

執行順序:誰時間短誰先

執行順序:給定乙個適當的時間片,輪著來。加入時間片是2,注意在執行p4的時候有1個單位時間被浪費。

把響應比優先順序最高的程序投入執行。

根據比率:r=(w+s)/s(r為響應比,w為等待處理的時間,s為預計的服務時間)

等待處理的時間 + 預計的服務時間 = 周轉時間

影響因素:

如果兩個程序的等待時間相同時,要求的服務時間越短,響應比就越高,這樣短作業的程序容易被選中執行;

如果兩個程序要求的服務時間相同時,等待時間越長,響應比就越高,這就兼顧到了長作業程序,因為程序的響應比可以隨時間等待的增加而提高,當其等待時間足夠長時,其響應比便可以公升到很高,從而獲得執行的機會。

對於多使用者計算機系統,它們希望排程是有優先順序的,即希望排程程式能從就緒佇列中選擇最高優先順序的程序進行執行,這稱為最高優先順序排程演算法

程序的優先順序可以分為,靜態優先順序或動態優先順序:

靜態優先順序:建立程序時候,就已經確定了優先順序了,然後整個執行時間優先順序都不會變化;

動態優先順序:根據程序的動態變化調整優先順序,比如如果程序執行時間增加,則降低其優先順序,如果程序等待時間(就緒佇列的等待時間)增加,則公升高其優先順序,也就是隨著時間的推移增加等待程序的優先順序

該演算法也有兩種處理優先順序高的方法,非搶占式和搶占式:

非搶占式:當就緒佇列**現優先順序高的程序,執行完當前程序,再選擇優先順序高的程序。

搶占式:當就緒佇列**現優先順序高的程序,當前程序掛起,排程優先順序高的程序執行。

缺點:可能會導致低優先順序的程序永遠不會執行。

多級反饋佇列排程演算法是時間片輪轉演算法和最高優先順序演算法的綜合和發展。

顧名思義:

多級表示有多個佇列,每個佇列優先順序從高到低,同時優先順序越高時間片越短。

反饋表示如果有新的程序加入優先順序高的佇列時,立刻停止當前正在執行的程序,轉而去執行優先順序高的佇列。

工作步驟:

(6.1)設定了多個佇列,賦予每個佇列不同的優先順序,每個佇列優先順序從高到低,同時優先順序越高時間片越短。

(6.2)新的程序會被放入到第一級佇列的末尾,按先來先服務的原則排隊等待被排程,如果在第一級佇列規定的時間片沒執行完成,則將其轉入到第二級佇列的末尾,以此類推,直至完成。

(6.3)當較高優先順序的隊列為空,才排程較低優先順序的佇列中的程序執行。如果程序執行時,有新程序進入較高優先順序的佇列,則停止當前執行的程序並將其移入到原佇列末尾,接著讓較高優先順序的程序執行。

對於短作業,可能可以在第一級佇列很快被處理完。對於長作業,如果在第一級佇列處理不完,可以移入下次佇列等待被執行,雖然等待的時間變長了,但是執行時間也會更長了,所以該演算法很好的兼顧了長短作業,同時有較好的響應時間。

程序排程演算法(程序排程策略)

程序排程演算法 排程演算法是指 根據系統的資源分配策略所規定的資源分配演算法。一 先來先服務和短作業 程序 優先排程演算法 1.先來先服務排程演算法。先來先服務 fcfs 排程演算法是一種最簡單的排程演算法,該演算法既可用於作業排程,也可用於程序排程。fcfs演算法比較有利於長作業 程序 而不利於短...

程序排程三 程序排程介紹

一 程序排程介紹 1 程序排程的產生 程序從使用資源方面可以分為如下兩類,不管是i o還是cpu受限類的程序,cpu都希望再盡可能短的時間 完成更多的工作,但另一方面,又希望盡可能的減少資源 i o或cpu 的消耗,這兩則之間存在矛盾,所以程序 的排程管理就是來協調兩者之間的衝突。型別別稱 描述示例...

程序排程演算法(c語言)

對乙個非搶占式多道批處理系統採用以下演算法的任意兩種,實現程序排程,並計算程序的開始執行時間,周轉時間,帶權周轉時間,平均周轉時間,平均帶權周轉時間 1.先來先服務演算法 2.短程序優先演算法 3.高響應比優先演算法 一 設計思想 每個程序有乙個程序控制塊 pcb 表示。程序控制塊可以包含如下資訊 ...