1. 程式人生 > >作業系統學習筆記(五)

作業系統學習筆記(五)

處理機排程

3.1 處理機排程的層次

3.11 高階排程

又稱為“作業排程”或“長程排程”,將外存中位於後備佇列中的那些作業調入記憶體。
作業(Job):它不僅包含了通常的程式和資料而且還應配有一份作業說明書,系統根據作業說明書對程式進行執行控制,在批處理系統中,以作業為基本單位從外存調入記憶體。
作業步(Job Step):
一個典型作業分為三個作業步:編譯,連線裝配,執行
作業控制塊:JCB(Job Control Block)其中儲存了系統對作業進行排程和管理所需的全部資訊。

3.12 低階排程

又稱為“程序排程”或“短程排程”,他的物件是程序(或核心程序)。

低階排程的功能:

(1)儲存處理機的現場資訊
(2)按某種演算法選取程序
(3)把處理機分配給程序
程序排程的三個基本機制:排隊器,分派器,上下文切換機制
程序排程的方式:
(1)非搶佔方式:一旦處理機分配給程序,便一直讓他執行下去,直到程序結束或發生某種時間被阻塞。
(2)搶佔方式:允許排程程式根據某種原則去暫停某個正在執行的程序,但是基於一定原則的主要有優先權原則,短作業(程序)優先原則,時間片原則。

3.13 中級排程

又稱為“中程排程”,主要目的是為了提高記憶體的利用率和系統吞吐量。某些暫時不能執行的程序不再佔用寶貴的記憶體資源,而將他們調到外存上面去等待,此時的程序狀態
成為就緒駐外存狀態或掛起狀態。當這些程序重有具備執行條件且記憶體又稍有空閒的時候,由中級排程來決定吧外存上的那些就緒程序重新調入記憶體。

3.2 排程佇列模型和排程準則

3.21 排程佇列模型

1 僅有程序排程的排程佇列模型:就緒佇列為FIFO佇列。任務在時間片內未完成或者阻塞後被放到阻塞佇列末尾,下一次時間片來臨或者事件出現的時候將阻塞佇列
中的隊首程序放到就緒佇列末。
2 具有高階和低階排程的排程佇列模型
注意兩點:一,就緒佇列是優先權佇列,程序在進入對佇列是根據其優先順序被插入對應位置。
 二,設定多個阻塞佇列,每個佇列對應於某一程序阻塞事件。
3 同時具有三級排程的排程佇列模型
就緒狀態分記憶體就緒和外存就緒。則中級排程就是將外存就緒轉為記憶體就緒。

3.22 選擇排程方式和排程演算法的若干準則

1 面向使用者的準則:週轉時間短、響應時間塊、截止時間的保證、優先權準則。
截止時間,指某任務必須開始執行的最遲時間。或必須完成的最遲時間。
2 面向系統的準則:系統吞吐量高,處理機利用率好,各類資源的平衡利用

3.3 排程演算法

根據系統的資源分配策略所規定的資源分配演算法,對於不同的系統和系統目標,通常採用不同的排程演算法。

3.31 先來先服務和短作業(程序)優先排程演算法

先來先服務排程演算法:FCFS,每次排程從後背佇列中選取一個或多個最先進入佇列的作業,將他們調入記憶體。
短作業優先排程演算法:SJF,對短作業或短程序優先的演算法。

3.32 高優先權先排程演算法

優先權排程演算法的型別:非搶佔式優先權演算法、搶佔式優先權演算法。
優先權的型別:
(1)靜態優先權:建立程序是決定,整個執行期間不改變。
確定程序優先權的三個方面:程序型別、程序對資源的需求、使用者要求。
(2)動態優先權:
在建立程序時賦予優先權,但是可以隨程序的推進或者等待的時間增加而改變。
高響應比優先權排程演算法:優先權等於響應比Rp.
Rp = (等待時間 + 要求服務時間) /要求服務時間 = 響應時間 /要求服務時間;
該演算法既照顧了短作業,有考慮了作業到達的先後次序。

3.33 基於時間片的輪轉排程演算法

時間片輪轉法:
基本原理:系統將所有就緒程序按照先來先服務的順序排成一個佇列,每次排程時,把CPU分配給隊首程序,並令其執行一個時間片,時間片用完則停止該程序,將其送到隊末,繼續迴圈。

時間片大下的確定:一個較為可取的大小是:時間片略大於一次典型的互動所需要的時間,這樣大多數程序都能在一個時間片內完成。

多級反饋佇列排程演算法:
(1)設定多個就緒佇列,為每個佇列賦予不同的優先順序,優先順序越高的被分配的時間片就越小。
(2)當一個新程序進入記憶體後,首先將他放入到第一佇列末尾,按FCFS(First Come First Serve)原則排隊等待。當輪到該程序執行時,如他能在時間片內完成則撤離系統
否則在第一個時間片結束將他調入第二佇列的末尾,在迴圈執行。
(3)僅當第一佇列空閒時,排程程式才排程第二佇列中的程序執行。若處理機正在i佇列中為某程序服務的時候,又有新程序進入優先順序高的佇列,則新程序搶佔正在執行的程序處理機。

3.4 實時排程

3.41 實現實時排程的基本條件

(1)提供必要資訊:就緒時間、開始截止時間和完成截止時間、處理時間、資源要求、優先順序
(2)系統處理時間強:若處理機能力不夠強,則有可能因處理機忙不過來而使某些實時任務不能得到及時處理從而導致發生難以預料的後果。
(3)採用搶佔式排程機制
(4)具有快速切換機制

3.42 實時排程演算法的分類

非搶佔式排程演算法:
(1)非搶佔式輪轉排程演算法
(2)非搶佔式優先排程演算法
搶佔式排程演算法:
(1)基於時鐘中斷的搶佔式優先權排程演算法:高優先順序任務到達後並不立即搶佔當前任務處理機,等待時鐘到來時再搶佔。
(2)立即搶佔的優先權排程演算法:只要當前任務未處於臨界區,便立即剝奪當前任務的執行,把處理機分配給請求中斷更緊迫的任務。

3.43 常用的幾種實時排程演算法

(1)最早截止時間優先即EDF(Earlist Deadline First)
非搶佔式排程方式用於排程實時任務,搶佔式排程方式用於週期實時任務
(2)最低鬆弛度優先即LLF(Least Laxity First)演算法
根據任務緊急(鬆弛)度來確定優先順序