作業周期

作業周期

作業是一個比程式更為廣泛的概念,它不僅包含了通常的程式和數據,而且還應配有一份作業說明書,系統根據該說明書來對程式的運行進行控制。在批處理系統中,是以作業為基本單位從外存調入記憶體的。作業周期是一個作業從提交、讀取、快取、調度、執行、輸出、到釋放的一個完整循環過程。

簡介

作業周期是指作業從提交到釋放所花的時間。在計算機中,系統將作業的生命周期分為四個階段:進入階段、 調度階段、運行階段和撤離階段,對應地,作業也有進入、後備、運行和撤離四個狀態 。在作業周期的四個階段中,最重要的是作業調度階段,它是影響作業周期長短的關鍵。作業周期還與作業的類型和作業優先權有關。一般短作業周期短,長作業周期較長。

優先權

優先權是指計算機分時作業系統在處理多個作業程式時,決定各個作業程式接受系統資源的優先等級的參數。各個作業在輸入計算機之前,都要按一定的要求對它指定優先權。例如要按程式的性質或其長度,或是按作業的來源等,指定其優先權。然後計算機根據各作業程式優先權的高低,來決定處理各作業的先後次序。甚至在處理過程中,還能允許優先權較高的作業中斷優先權較低的作業。進程也是有優先權的。如果即將被運行的進程的優先權比正在運行的進程的優先權高,則系統可以強行剝奪正在運行的進程的CPU,讓優先權高的進程先運行。

作業調度

作業調度的主要功能是根據作業控制塊中的信息,審查系統能否滿足用戶作業的資源需求,以及按照一定的算法,從外存的後備佇列中選取某些作業調入記憶體,並為它們創建進程、分配必要的資源。然後再將新創建的進程插入就緒佇列,準備執行。因此,有時也把作業調度稱為接納調度(Admission Scheduling)。

對用戶而言,總希望自己作業的周轉時間儘可能的少,最好周轉時間就等於作業的執行時間。然而對系統來說,則希望作業的平均周轉時間儘可能少,有利於提高 CPU 的利用率和系統的吞吐量。為此,每個系統在選擇作業調度算法時,既應考慮用戶的要求,又能確保系統具有較高的效率。在每次執行作業調度時,都須做出以下兩個決定。

決定接納多少個作業

作業調度每次要接納多少個作業進入記憶體, 取決於多道程式度(Degree of Multiprogramming),即允許多少個作業同時在記憶體中運行。當記憶體中同時運行的作業數目太多時,可能會影響到系統的服務質量,比如,使周轉時間太長。但如果在記憶體中同時運行作業的數量太少時,又會導致系統的資源利用率和系統吞吐量太低,因此,多道程式度的確定應根據系統的規模和運行速度等情況做適當的折衷。

決定接納哪些作業

應將哪些作業從外存調入記憶體,這將取決於所採用的調度算法。最簡單的是先來先服務調度算法,這是指將最早進入外存的作業最先調入記憶體;較常用的一種算法是短作業優先調度算法,是將外存上最短的作業最先調入記憶體;另一種較常用的是基於作業優先權的調度算法,該算法是將外存上優先權最高的作業優先調入記憶體;比較好的一種算法是“回響比高者優先”的調度算法。

常見調度算法

先來先服務

先來先服務(FCFS, First Come First Serve)是最簡單的調度算法,按先後順序進行調度。

定義:按照作業提交或進程變為就緒狀態的先後次序,分派CPU;當前作業或進程占用CPU,直到執行完或阻塞,才出讓CPU(非搶占方式)。在作業或進程喚醒後(如I/O完成),並不立即恢復執行,通常等到當前作業或進程出讓CPU。適用場景:比較有利於長作業,而不利於短作業。有利於CPU繁忙的作業,而不利於I/O繁忙的作業。

輪轉法

輪轉法(Round Robin)是讓每個進程在就緒佇列中的等待時間與享受服務的時間成正比例。定義:將系統中所有的就緒進程按照FCFS原則,排成一個佇列。每次調度時將CPU分派給隊首進程,讓其執行一個時間片。時間片的長度從幾個ms到幾百ms。在一個時間片結束時,發生時鐘中斷。調度程式據此暫停當前進程的執行,將其送到就緒佇列的末尾,並通過上下文切換執行當前的隊首進程。進程可以未使用完一個時間片,就出讓CPU(如阻塞)。時間片長度變化的影響:

過長->退化為FCFS算法,進程在一個時間片內都執行完,回響時間長。

過短->用戶的一次請求需要多個時間片才能處理完,上下文切換次數增加,回響時間長。

對回響時間的要求:T(回響時間)=N(進程數目)*q(時間片)

就緒進程的數目:數目越多,時間片越小

系統的處理能力:應當使用戶輸入通常在一個時間片內能處理完,否則使回響時間,平均周轉時間和平均帶權周轉時間延長。

多級反饋佇列

多級反饋佇列算法(Round Robin with Multiple Feedback)是輪轉算法和優先權算法的綜合和發展。定義:設定多個就緒佇列,分別賦予不同的優先權,如逐級降低,佇列1的優先權最高。每個佇列執行時間片的長度也不同,規定優先權越低則時間片越長,如逐級加倍。新進程進入記憶體後,先投入佇列1的末尾,按FCFS算法調度;若按佇列1一個時間片未能執行完,則降低投入到佇列2的末尾,同樣按FCFS算法調度;如此下去,降低到最後的佇列,則按“時間片輪轉”算法調度直到完成。僅當較高優先權的佇列為空,才調度較低優先權的佇列中的進程執行。如果進程執行時有新進程進入較高優先權的佇列,則搶先執行新進程,並把被搶先的進程投入原佇列的末尾。

相關詞條

相關搜尋

熱門詞條

聯絡我們