1. 程式人生 > >計算機硬體---排程與死鎖

計算機硬體---排程與死鎖

程序排程原因及排程切換時機,程序排程方式與實現及各種排程演算法的個人總結:

1.一般排程概念 1)什麼是排程 就是選出待分派的作業或程序。 作業系統管理了系統的有限資源,當有多個程序(或作業)發出請求要使用這些資源時,因為資源的有限性,必須按照一定的原則選擇程序(或作業)來佔用資源。這就是排程。

2)排程目的 1.控制資源使用者的數量 2.選取資源使用者 3.許可哪些使用者佔用資源 4.讓使用者直接佔用資源。

二、排程型別 1、高階排程(長程排程)。 即作業排程,選取輸入井中的作業,生成根程序。目的是控制使用系統資源的程序數。

2、中級排程(中程排程)。 指選取程序佔用記憶體或有資格佔用記憶體,又稱程序滾入滾出,中級排程將在儲存管理章節中介紹,有頁式排程、段式排程、段頁式排程等。

3、低階排程(短程排程) 指選取程序佔用處理機,又稱程序排程。 4、I/O排程 選取程序佔用I/O裝置。

三、排程和狀態轉換 在許多系統中,排程被分為三種:長程、中程和短程。 1)排程和程序狀態轉換

 

從狀態轉換的觀點: 1、長程排程(作業排程)就是將一個或一批作業從後備狀態變為執行狀態。一個作業一旦被高階排程選中,便可獲得所需要的基本記憶體和裝置資源,並被裝入記憶體,此後就以程序形式參與併發執行,與其它程序競爭CPU。

從狀態轉換的觀點: 2、中程排程就是將程序從活動態變為靜止的掛起態,或者將程序從掛起態變為就緒或阻塞態。 3、短程排程就是將某個程序從就緒態變為(在CPU上執行的)執行態。

2)排程的層次(排程作用的巢狀關係)

 

 

 

3)三級排程示意圖 排程從根本上講,是要使佇列延遲的時間最小,並優化系統的執行效率

 

 

 

 

 

 

 

4.1.2作業排程的功能

①記錄系統中各個作業的情況。 ②按照某種排程演算法從後備作業佇列中挑選作業,即決定接納多少個作業進入記憶體和挑選哪些作業進入記憶體。

③為選中的作業分配記憶體和外設等資源。 ④為選中的作業建立相應的程序,並把該程序放入就緒佇列中。 ⑤作業結束後進行善後處理工作。如輸出必要的資訊,收回該作業所佔用的全部資源,撤消與該作業相關的全部程序和該作業的JCB 。

 

4.1.3程序排程的功能與排程時機 一、程序排程的功能 (1)儲存現場(2)挑選程序(3)恢復現場

 

 

 

二、程序排程的時機 一般在下列事件發生後要執行程序排程。 (1)建立程序。 當程序建立時,要決定是執行父程序還是子程序。 (2)程序終止。 (3)等待事件。 (4)中斷髮生。 (5)執行到時。

4.1.4程序排程的基本方式 1)非剝奪排程(非搶佔) 只有當處理機上的程序主動放棄處理機時,才重新排程。 2)剝奪排程(搶佔) 當程序執行時可以被系統以某種原則為由剝奪其處理機。

例:只有一部電話機,小李正在通電話,此時小張有急事也要打電話,此時小張的排程方式有兩種: 一種是非搶佔,即等待小李打完電話,自己再打電話。 另一種是搶佔,不等小李通完電話,搶過話筒就撥打電話。

3)程序排程在核心態進行。 ★CPU狀態有兩種,目態和管態。 管態——也稱核心態或系統態,系統程式在CPU上執行的狀態。 目態——使用者程式在CPU上執行的狀態。

 

 

 

4.2 排程演算法 4.2.1 常用的排程演算法

1. FCFS 誰先到就緒佇列就將處理機分給誰。 2. 短作業優先 取一個下次所需執行時間最短的作業(該演算法能使平均等待時間最短)。

3. 優先順序排程 選優先順序最高的程序佔用處理機(優先順序可動態改變)。 4.輪轉排程法 以先來後到的次序+ 時間片輪轉。

5.多佇列排程法 按屬性將就緒程序分類,不同類程序可有不同的排程演算法。 6.多級反饋佇列排程法 設定多條就緒佇列,程序被排程執行後,在被剝奪或放棄處理機後而在就緒時,可以改變其就緒佇列(見下圖)。

 

 

又一個多級反饋佇列排程演算法的例子:使用優先權實現排程。做法如下:

(1)以優先順序設定多佇列。 (2)各佇列的排程演算法採用FCFS+時間片輪轉. (3)程序優先順序升降原則是:等待過久升,輸入/輸出完成時升,執行完一個完整時間片降……

(4)程序最初進入就緒佇列以使用者初置優先順序為引數。 (5)開始排程時,先從最高優先權的就緒佇列(RQ0)開始選取一個程序,如果RQ0空,則檢查RQ1,如此下去。見下圖示:

 

 

4.2.2 排程策略的討論

一、排程效能評價準則 1、CPU利用率。 2、吞吐率。即每單位時間所完成的作業數目。 3、週轉時間。即從作業提交直至完成這一作業的時間間隔。

4、等待時間。即作業在就緒佇列中等待所花的時間。 5、響應時間。即從作業提交到首次產生回答資訊之間的時間。

二、主要的排程演算法 下面以表所示的程序集作為範例討論不同的排程策略。 到達時間:程序或作業提交時間。 服務時間:程序要求服務的時間,或完成作業所需的時間。

 

一、FCFS排程策略(或先進先出)

 

 

 

 

 

 

 

FCFS策略更適合於長程序。例:

 

 

注:週轉時間=完成時間—到達時間 tq/ts :帶權週轉時間=週轉時間/服務時間

(1)程序C的等待標準化時間是不能容忍的。它位於系統的總時間是它所需服務時間的100倍。無論何時,一個長程序到後,一個短程序就會出現較長的等待。 (2)程序D的標準化等待時間尚可容忍,小於2.0。程序D的輪轉時間差不多是C的兩倍。

總結: FCFS(First Come First Served)即先來先服務,故它的本質是非搶佔的。它簡單易行,但排程效能較差,有可能使短的、重要的或緊迫的作業等程序長期等待,其實現過程容易,可採用FIFO佇列管