處理機調度與死結

來源:互聯網
上載者:User
  處理機調度與死結 

處理機調度的層次

進階調度

進階調度又稱為作業調度或長程調度,其主要功能是根據某種演算法,把外存上處於後備隊列中的那些作業調入記憶體,也就是說,它的調度對象是作業。

1.作業和作業步

作業:一個比程式廣泛的概念,不僅包含了通常的程式和資料,而且還應有一份作業說明書,系統根據說明書來對程式的運行進行控制。在批處理系統中,是以作業為基本單位從外存調入記憶體的。

作業步:在作業運行期間,每個作業都必須經過若干個相對獨立又相互關聯的順序加工步驟才能得到結果,我們把其中的每一個加工步驟稱為一個作業步,各作業步之間存在著相互聯絡,往往是把上一個作業步的輸出作為下一個作業步的輸入。一個典型的作業可以分為三步:①編譯作業步;②連結裝配作業步;③運行作業步。

作業流:若干個作業進入系統後,被依次存放在外存上,這便形成了輸入的作業流,在OS控制下,逐個作業進行處理,便形成了作業流。

2.作業控制塊JCB

為了管理和調度作業,在多道批處理系統中為每個作業設定而來一個作業控制塊,其中儲存了系統對作業進行管理和調度所需的全部資訊。通常應包含:作業標識,使用者名稱稱,使用者賬戶,作業類型,作業狀態,調度資訊,資源需求,進入系統時間,開始處理時間,作業完成時間,作業退出時間,資源使用方式等。JCB類似進程的PCB。

3.作業調度

作業調度的主要功能是根據作業控制塊中的資訊,審查系統能否滿足使用者作業的資源需求,以及按照一定的演算法,從外存的後備隊列中選取某些作業調入記憶體,並為它們建立進程,分配必要的資源。然後再將新建立的進程插入到就緒隊列,準備執行。

在每次執行作業調度時,都須做出以下兩個決定:接納多少個作業(取決於多道程式度);接納哪些作業(取決於所採用的調度演算法)。

低級調度

低級調度也稱為進程調度或短程調度,它所調用的對象是進程。它是最基本的一種調度。

低級調度的主要功能如下:①儲存處理機的現場資訊;②按某種演算法選取進程;③把處理器分配給進程。

進程調度中的三個基本機制:

①排隊器。為了提高進程調度的效率,應事先將系統中所有的就緒進程按一定的方式排成一個或多個隊列,以便發送器能夠最快的找到它。

②指派器。指派器把由進程調度所選定的進程,從就緒隊列取出該進程,然後進行環境切換,將處理機分配給它。

③環境切換機制。當對處理機進行切換時,會發生兩對環境切換操作。在第一對環境切換時,作業系統將儲存當前進程的上下文,而裝入指派程式的上下文,以便指派程式運行;在第二對環境切換時,將移出指派程式,而把新選進程的CPU現場資訊裝入到處理機的各個相應寄存器中。

3.進程調度方式

 1) 非搶佔方式(Non-preemptive Mode)

在採用非搶佔調度方式時,可能引起進程調度的因素可歸結為這樣幾個:① 正在執行的進程執行完畢, 或因發生某事件而不能再繼續執行; ② 執行中的進程因提出I/O請求而暫停執行;③ 在進程通訊或同步過程中執行了某種原語操作,如P操作(wait操作)、Block原語、Wakeup原語等。這種調度方式的優點是實現簡單、系統開銷小,適用於大多數的批處理系統內容。但它難以滿足緊急任務的要求——立即執行,因而可能造成難以預料的後果。顯然,在要求比較嚴格的即時系統中,不宜採用這種調度方式。

2) 搶佔方式(Preemptive Mode)

這種調度方式允許發送器根據某種原則去暫停某個正在執行的進程,將已指派給該進程的處理機重新分配給另一進程。優點是可以防止一個長進程長時間佔用處理機,能為大多數進程提供更公平的服務,特別是能滿足對回應時間有著較嚴格要求的即時任務的需求。搶佔調度方式的原則:優先權原則(對一些重要的和緊急的作業賦予較高的優先權);短作業或進程優先原則(當新到達的作業比正在執行的作業明顯的短時,將暫停當前的長作業的執行,將處理機分配給新到達的作業);時間片原則(各進程按時間片輪轉運行,當一個時間片用完後,便停止該進程的執行而重新進行調度)。

中級調度

中級調度又稱中程調度(Medium-Term Scheduling)。 引入中級調度的主要目的,是為了提高記憶體利用率和系統輸送量。 為此,應使那些暫時不能啟動並執行進程不再佔用寶貴的記憶體資源,而將它們調至外存上去等待,把此時的進程狀態稱為就緒駐外存狀態或掛起狀態。當這些進程重又具備運行條件、且記憶體又稍有空閑時,由中級調度來決定把外存上的哪些又具備運行條件的就緒進程,重新調入記憶體,並修改其狀態為就緒狀態,掛在就緒隊列上等待進程調度。 

調度隊列模型和調度準則

調度隊列模型

1. 僅有進程調度的調度隊列模型

2. 具有進階和低級調度的調度隊列模型

 3. 同時具有三級調度的調度隊列模型 選擇調度方式和調度演算法的若干準則 1. 面向使用者的準則 (1) 周轉時間短 (2) 回應時間快 (3) 截止時間的保證 (4) 優先權準則。 2. 面向系統的準則:系統輸送量高;處理機利用率好;各類資源的平衡利用。 調度演算法 先來先服務調度演算法(FCFS) 短作業(進程)優先調度演算法(SJ(P)F) SJ(P)F調度演算法雖然能有效地降低作業的平均等待時間,提高系統的輸送量。但也存在缺點:①對長作業不利;②該演算法未考慮作業的緊迫程度,因而不能保證緊迫性作業會被及時處理;③使用者可能會有意或無意的縮短其作業的估計時間,致使該演算法不一定能真正做到短作業優先。 高優先權優先調度演算法 為了照顧緊迫型作業,使之在進入系統後便獲得優先處理,引入了最高優先權優先調度(FPF)演算法。 1. 優先權調度演算法的類型 ①非搶佔式優先權演算法:系統一旦把處理機分配給就緒隊列中優先權最高的進程後,該進程便一直執行下去,直至完成; 或因發生某事件使該進程放棄處理機時,系統方可再將處理機重新分配給另一優先權最高的進程。這種調度演算法主要用於批處理系統中;也可用於某些對即時性要求不嚴的即時系統中。 ②搶佔式優先權調度演算法:系統同樣是把處理機分配給優先權最高的進程,使之執行。但在其執行期間,只要又出現了另一個其優先權更高的進程,進程發送器就立即停止當前進程(原優先權最高的進程)的執行,重新將處理機分配給新到的優先權最高的進程。因此,在採用這種調度演算法時,是每當系統中出現一個新的就緒進程i時,就將其優先權Pi與正在執行的進程j的優先權Pj進行比較。如果Pi≤Pj,原進程Pj便繼續執行;但如果是Pi>Pj, 則立即停止Pj的執行,做進程切換,使i進程投入執行。顯然,這種搶佔式的優先權調度演算法,能更好地滿足緊迫作業的要求,故而常用於要求比較嚴格的即時系統中, 以及對效能要求較高的批處理和分時系統中。 2. 優先權的類型 ①靜態優先權:是在建立進程時確定的,且在進程的整個運行期間保持不變。確定進程優先權的依據有:進程類型;進程對資源的需求;使用者要求。 ②動態優先權:在建立進程時所賦予的優先權,是可以隨進程的推進或隨其等待時間的增加而改變的,以便獲得更好的調度效能。 3. 高響應比優先調度演算法 優先權的變化規律可描述為: 由於等待時間與服務時間之和,就是系統對該作業的回應時間,故該優先權又相當於響應比RP。據此,又可表示為:   由上式可以看出: ①如果作業的等待時間相同,則要求服務的時間愈短,其優先權愈高,因而該演算法有利於短作業。
②當要求服務的時間相同時,作業的優先權決定於其等待時間,等待時間愈長,其優先權愈高,因而它實現的是先來先服務。
③ 對於長作業,作業的優先順序可以隨等待時間的增加而提高,當其等待時間足夠長時,其優先順序便可升到很高, 從而也可獲得處理機。 基於時間片的輪轉調度演算法 在分時系統中,為了能及時響應使用者的請求,必須採用基於時間片的輪轉式進程調度演算法。 1. 時間片輪轉法
在早期的時間片輪轉法中,系統將所有的就緒進程按先來先服務的原則,排成一個隊列,每次調度時,把CPU分配給隊首進程,並令其執行一個時間片。時間片的大小從幾ms到幾百ms。當執行的時間片用完時,由一個計時器發出時鐘插斷要求,發送器便據此訊號來停止該進程的執行,並將它送往就緒隊列的末尾;然後,再把處理機分配給就緒隊列中新的隊首進程,同時也讓它執行一個時間片。這樣就可以保證就緒隊列中的所有進程,在一給定的時間內,均能獲得一時間片的處理機執行時間。 2. 多級反饋隊列調度演算法 (1) 應設定多個就緒隊列,並為各個隊列賦予不同的優先順序。 第一個隊列的優先順序最高,第二個隊列次之,其餘各隊列的優先權逐個降低。該演算法賦予各個隊列中進程執行時間片的大小也各不相同,在優先權愈高的隊列中,為每個進程所規定的執行時間片就愈小。例如,第二個隊列的時間片要比第一個隊列的時間片長一倍,……,第i+1個隊列的時間片要比第i個隊列的時間片長一倍。 (2) 當一個新進程進入記憶體後,首先將它放入第一隊列的末尾,按FCFS原則排隊等待調度。當輪到該進程執行時,如它能在該時間片內完成,便可準備撤離系統;如果它在一個時間片結束時尚未完成,發送器便將該進程轉入第二隊列的末尾,再同樣地按FCFS原則等待調度執行;如果它在第二隊列中運行一個時間片後仍未完成,再依次將它放入第三隊列,……,如此下去,當一個長作業(進程)從第一隊列依次降到第n隊列後,在第n隊列中便採取按時間片輪轉的方式運行。 (3) 僅當第一隊列空閑時,發送器才調度第二隊列中的進程運行; 僅當第1~(i-1) 隊列均空時,才會調度第i隊列中的進程運行。如果處理機正在第i隊列中為某進程服務時,又有新進程進入優先權較高的隊列(第1~(i-1)中的任何一個隊列),則此時新進程將搶佔正在運行進程的處理機,即由發送器把正在啟動並執行進程放回到第i隊列的末尾,把處理機分配給新到的高優先權進程。 3. 多級反饋隊列調度演算法的效能:終端型作業使用者;短批次工作使用者;長批次工作使用者。 即時調度 實現即時調度的基本條件 1. 提供必要的資訊 ①就緒時間
②開始截止時間和完成截止時間  ③處理時間
④資源要求  ⑤優先順序 2. 系統處理能力強 在即時系統中,通常都有著多個即時任務。若處理機的處理能力不夠強,則有可能因處理機忙不過來而使某些即時任務不能得到及時處理, 從而導致發生難以預料的後果。假定系統中有m個周期性的硬即時任務,它們的處理時間可表示為Ci,周期時間表示為Pi,則在單處理機情況下,必須滿足下面的限制條件:
解決的方法是提高系統的處理能力,其途徑有二:其一仍是採用單處理機系統, 但須增強其處理能力, 以顯著地減少對每一個任務的處理時間;其二是採用多處理機系統。假定系統中的處理機數為N,則限制條件應改為<=N。 3. 採用搶佔式調度機制 當一個優先權更高的任務到達時,允許將當前任務暫時掛起,而令高優先權任務立即投入運行,這樣便可滿足該硬即時任務對截止時間的要求。但這種調度機制比較複雜。
對於一些小的即時系統,如果能預知任務的開始截止時間,則對即時任務的調度可採用非搶佔調度機制,以簡化發送器和對任務調度時所花費的系統開銷。但在設計這種調度機制時,應使所有的即時任務都比較小,並在執行完關鍵性程式和臨界區後,能及時地將自己阻塞起來,以便釋放出處理機, 供發送器去調度那種開始截止時間即將到達的任務。 4. 具有快速切換機制 該機制應具有如下兩方面的能力:
(1) 對外部中斷的快速響應能力。為使在緊迫的外來事件請求中斷時系統能及時響應,要求系統具有快速硬體中斷機構,還應使禁止中斷的時間間隔盡量短, 以免耽誤時機(其它緊迫任務)。
(2) 快速的任務指派能力。在完成任務調度後,便應進行任務切換。為了提高指派程式進行任務切換時的速度, 應使系統中的每個運行功能單位適當的小,以減少任務切換的時間開銷。 即時調度演算法的分類 非搶佔式調度演算法:非搶佔式輪轉調度演算法;非搶佔式優先調度演算法。 搶佔式調度演算法:基於時鐘中斷的搶佔式優先權調度演算法;立即搶佔的優先權調度演算法。  常用的集中即時調度演算法: 1.最早截止時間優先即EDF(Earliest Deadline First)演算法 2.最低鬆弛度優先即LLF(Least Laxity First)演算法 產生死結的原因和必要條件 產生死結的原因:競爭資源;進程間推進順序非法。 產生死結的必要條件:互斥條件;請求和保持條件;不剝奪條件; 環路等待條件 處理死結的基本方法:預防死結;避免死結;檢測死結;解除死結。 預防死結的方法:摒棄“請求和保持”條件;摒棄“不剝奪”條件;摒棄“環路等待”條件 系統安全狀態:所謂安全狀態,是指系統能按某種進程順序(P1, P2, …,Pn)(稱〈P1, P2, …, Pn〉序列為安全序列),來為每個進程Pi分配其所需資源,直至滿足每個進程對資源的最大需求,使每個進程都可順利地完成。如果系統無法找到這樣一個安全序列,則稱系統處於不安全狀態。 利用銀行家演算法避免死結 1. 銀行家演算法中的資料結構  (1) 可利用資源向量Available。這是一個含有m個元素的數組,其中的每一個元素代表一類可利用的資源數目,其初始值是系統中所配置的該類全部可用資源的數目,其數值隨該類資源的分配和回收而動態地改變。如果Available[j]=K,則表示系統中現有Rj類資源K個。 (2) 最大需求矩陣Max。這是一個n×m的矩陣,它定義了系統中n個進程中的每一個進程對m類資源的最大需求。如果Max[i,j]=K,則表示進程i需要Rj類資源的最大數目為K。
(3) 分配矩陣Allocation。這也是一個n×m的矩陣,它定義了系統中每一類資源當前已指派給每一進程的資源數。如果Allocation[i,j]=K,則表示進程i當前已分得Rj類資源的數目為K。
(4) 需求矩陣Need。這也是一個n×m的矩陣,用以表示每一個進程尚需的各類資源數。如果Need[i,j]=K,則表示進程i還需要Rj類資源K個,方能完成其任務。 上述三個矩陣間存在下述關係:Need[i, j]=Max[i, j] - Allocation[i, j]  2. 銀行家演算法
設Requesti是進程Pi的請求向量,如果Requesti[j]=K,表示進程Pi需要K個Rj類型的資源。當Pi發出資源請求後,系統按下述步驟進行檢查:
(1) 如果Requesti[j]≤Need[i,j],便轉向步驟2;否則認為出錯,因為它所需要的資源數已超過它所宣布的最大值。
(2) 如果Requesti[j]≤Available[j],便轉向步驟(3);否則, 表示尚無足夠資源,Pi須等待。 (3) 系統試探著把資源分派給進程Pi,並修改下面資料結構中的數值:
  Available[j]∶=Available[j]-Requesti[j];
  Allocation[i,j]∶=Allocation[i,j]+Requesti[j];
  Need[i,j]∶=Need[i,j]-Requesti[j];
(4) 系統執行安全性演算法,檢查此次資源分派後,系統是否處於安全狀態。若安全,才正式將資源分派給進程Pi,以完成本次分配;否則, 將本次的試探分配作廢,恢複原來的資源分派狀態,讓進程Pi等待。 3. 安全性演算法 (1) 設定兩個向量:① 工作向量Work: 它表示系統可提供給進程繼續運行所需的各類資源數目,它含有m個元素,在執行安全演算法開始時,Work∶=Available; ② Finish: 它表示系統是否有足夠的資源分派給進程,使之運行完成。開始時先做Finish[i]∶=false; 當有足夠資源分派給進程時, 再令Finish[i]∶=true。  (2) 從進程集合中找到一個能滿足下述條件的進程:
        ① Finish[i]=false; ② Need[i,j]≤Work[j]; 若找到, 執行步驟(3), 否則,執行步驟(4)。
(3) 當進程Pi獲得資源後,可順利執行,直至完成,並釋放出分配給它的資源,故應執行:
 Work[j]∶=Work[i]+Allocation[i,j];
  Finish[i]∶=true;
  go to step 2; (4) 如果所有進程的Finish[i]=true都滿足, 則表示系統處於安全狀態;否則,系統處於不安全狀態。 死結定理:S為死結的充分條件是,若且唯若S狀態的資源分派圖示不可完全簡化的。 死結的解除:剝奪資源;撤銷進程。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.