第三章 處理及排程與死鎖

2021-08-29 03:50:58 字數 4173 閱讀 2687

3.1處理機排程的層次和排程演算法的目標

處理機排程是對處理機資源進行分配,處理機排程演算法是指根據處理機分配策略所規定的處理機分配演算法。

3.1.1處理機排程的層次

作業進入系統駐留在外存的後備佇列上,再至調入記憶體執行完畢,可能要經歷下述**排程

1.高階排程(長程排程、作業排程):

外存的後備佇列的程序調入記憶體,為他們建立程序、分配必要的資源,並將它們放入就緒佇列。在多批道處理系統中存在,分時(立即進記憶體)和實時系統不需要。

作業排程的主要任務:

接納多少作業——取決於多道程式度

接納哪些作業——取決於採用的排程演算法

2.低階排程(短程排程、程序排程):

根據某種演算法,決定就緒佇列的哪個程序獲取cpu。是最基本的一種排程,在三種基本os中都有

程序排程的任務、機制和方式:

(1)程序排程的任務

①記錄系統中所有程序的有關情況(記錄在pcb中)

②確定分配處理機的原則(演算法)

?分配處理機給程序(儲存、更新cpu現場)

④從程序收回處理機

(2)程序排程機制

①排隊器(各類佇列的排列次序)

②分派器(分配cpu給程序)

?上下文切換器:

兩對上下文切換:a、儲存當前程序的上下文到pcb,裝入分派程式的上下文 b、移出分派程式的上下文,裝入新程序的cpu現場資訊(方法:兩組暫存器,一組供系統態使用,另一組**用程式使用)

(3)程序排程方式及其比較:

3.中級排程(記憶體排程):

目的:提高記憶體的利用率和系統的吞吐量根據條件將一些程序調入或再調出記憶體(掛起和喚醒)

三種排程的比較:

程序排程什麼時候發生:

ⅰ、正在執行的程序結束

ⅱ、正在執行的程序阻塞

?、正在執行的程序未完成轉就緒(時間片完)

ⅳ、就緒了更高優先順序的程序(搶占式)

3.1.2處理機排程演算法的目標

問:什麼演算法是好演算法?

答:不同的情況和物件需求不同,適用的方式和演算法也不同。

1)面向使用者的準則

②響應時間快:針對分時系統。使用者輸入乙個請求(如擊鍵)到系統給出首次響應(如螢幕顯示)的時間

?均衡性:系統響應時間的快慢與使用者所請求的複雜性相適應。

④截止時間的保證:針對實時系統的效能指標。開始截止時間和完成截止時間。任務必須按規定的時間開始或完成,排程方式和演算法必須能保證該要求。

?優先權準則:三大基本os在排程演算法的選擇時都可遵循。可以使關鍵任務達到更好的指標。

2)面向系統的準則

系統吞吐量高:批處理系統的重要指標。

單位時間內所完成的作業數,跟作業本身(與作業平均長度密切相關)和排程演算法都有關係;

處理機利用率好(主要針對大中型主機)

各類資源的平衡利用(主要針對大中型主機)

不同系統需求各有側重

1)批處理系統

平均周轉時間短

系統吞吐量高

處理機利用率好

2)分時系統

響應時間快

均衡性3)實時系統

截至時間的保證

可**性

3.2排程演算法

程序排程描述工具:

gantt(甘特)圖:常用水平線段來描述每個程序的進度。可以表示每個程序的開始時間和完成時間,線段的長度表示程序完成所需要的時間。

排程的實質是一種資源分配

1.先來先服務(fcfs)排程演算法

最簡單的排程演算法,既可用於作業排程,也可用於程序排程。

按照作業提交,或程序變為就緒狀態的先後次序分派cpu;

新作業只有當當前作業或程序執行完或阻塞才獲得cpu執行

被喚醒的作業或程序不立即恢復執行,通常等到當前作業或程序出讓cpu。 (預設是非搶占方式)

有利於cpu繁忙型的作業,而不利於i/o繁忙的作業(程序)(即不利於短作業)

2.短作業(程序)優先排程演算法sjf/spf

根據作業的長短在就緒佇列中排好隊,若採取非搶占方式則根據佇列順序依次執行;若為搶占方式,時間片完或新程序的作業比執行態的作業長度短,則搶占當前正在執行的程序,被搶占程序按照時間長短在就緒佇列排隊等待。(特別注意就緒佇列中的排隊情況)

優點:有效的降低作業的平均等待時間,提高系統吞吐量

缺點:①對短作業有利,但同時造成了對長作業的不利。

②由於作業(程序)的長短含主觀因素,不一定能真正做到短作業優先。

③未考慮作業的緊迫程度,因而不能保證緊迫性作業(程序)的及時處理。

與優先順序有關的演算法:

優先順序的型別:

①靜態優先順序:在建立程序時確定,在程序的整個執行時期保持不變

②動態優先順序:建立程序時賦予的優先權可隨程序的推進或隨其等待時間的增加而改變

優先權的依據:

①程序型別:一般來說,系統程序高於使用者程序。

②程序對資源的需求:如程序的估計時間及記憶體需要量的多少,對要求少的程序賦予較高優先權。

③使用者要求:由使用者程序的緊迫程度及使用者所付費用的多少來確定優先權的。

3.高優先權優先排程演算法hpf

照顧緊迫性作業,使其獲得優先處理而引入排程演算法。常用於批處理系統中的作業排程演算法,以及多種作業系統中的程序排程演算法

分兩種方式:

①非搶占優先權演算法

②搶占式優先權演算法(新作業產生時)

4.高響應比優先排程演算法hrrn

hrrn為每個作業引入動態優先權,使作業的優先順序隨著等待時間的增加而以速率a提高:

優先權 =(等待時間+要求服務時間)/要求服務時間= 響應時間 / 要求服務時間

同時到達的作業優先權相同(利於短作業同時對長作業也有照顧),當執行時間相同的作業,優先權的高低決定於其等待時間的長短,也就是先來先服務。

問:什麼時候計算各程序的響應比優先權?

答:需要進行排程選擇的時候比較各自優先權

5.基於時間片的輪轉排程演算法rr

分時系統需要及時相應使用者的請求

做法:將系統中所有的就緒程序按照fcfs原則,排成乙個佇列。

每次排程時將cpu分派給隊首程序,讓其執行乙個時間片。時間片的長度從幾個ms到幾百ms。(太少會導致頻繁切換增加系統的開銷,太長將退化為fcfs演算法)

(影響時間片長度的主要因素:系統的處理能力和系統的負載狀態)

在乙個時間片結束時,發生時鐘中斷。

排程程式據此暫停當前程序的執行,將其送到就緒佇列的末尾,並通過上下文切換執行當前就緒的隊首程序。

程序阻塞情況發生時,未用完時間片也要出讓cpu。

不足:能夠及時響應,但沒有考慮作業長短等問題

6.多級反饋佇列演算法fb

特點:多個就緒佇列,迴圈反饋;動態優先順序、時間片輪轉

方法:設定多個就緒佇列,各佇列有不同的優先順序,優先順序從第乙個佇列依次降低。賦予各佇列程序執行時間片大小不同, 優先權越高,時間片越短。

新程序進入記憶體,引發排程:

①準備排程:先將它放入第乙個佇列的末尾,按fcfs原則排隊等待排程。

②if時間片內完成,便可準備撤離系統;

③if時間片內未能完成,排程程式便將該程序轉入第二佇列的末尾等待再次被排程執行。

④當第一佇列中的程序都執行完,系統再按fcfs原則排程第二佇列。在第二佇列的稍放長些的時間片內仍未完成,再依次將它放入第三佇列。

⑤依次降到第n佇列後,在第n佇列中便採取按時間片輪轉的方式執行。

高優先順序搶占問題:

第i佇列中為某程序正占有cpu,又有新程序進入優先權較高的佇列(第1~i-1隊中),則被搶占的程序放回原就緒佇列末尾

各演算法的運算:

幾種常見排程演算法的比較:

第三章 處理機排程與死鎖

處理機的 排程 1.高階排程 外存 週期較長,花費較多的時間 2.中級排程 記憶體 執行頻率介於另外兩種排程之間 3.低階排程 程序 執行頻率最高,演算法不能太複雜 面向使用者的準則 1.響應時間快 2.均衡性 3.截止時間的保證 4.優先權準則 面向系統的準則 1.系統吞吐量高 2.處理機利用率高...

第三章 處理機排程與死鎖

短作業優先 sjf 優先順序排程演算法 psa 高響應比優先排程 hrrn 優先權 等待時間 要求服務時間 要求服務時間。程序排程的任務 儲存處理機的現場資訊 按某種演算法選取程序 把處理器分配給程序。程序排程方式 非搶占式 一旦把處理機分配給某程序以後,就一直執行,直到完畢。搶占式 排程程式根據某...

第三章 處理機排程與死鎖

短作業優先 sjf 概念 sjf以作業長短來計算優先順序,作業越短,優先順序越高。其中作業的長短是以作業所要求的執行時間來衡量的。使用 該演算法可使用者作業排程和程序排程。缺點 必須預知作業的執行時間。對長作業非常不利,長作業的周轉時間會明顯地增加。在採用sjf演算法時,人 機無法實現互動。優先順序...