Operating System Concepts 作業系統原理 Chapter 5 行程排班
Chapter 5 行程排班 5.1 基本觀念 5.2 排班評定的標準 5.3 排班演算法 5.4 執行緒排班 5.5 多處理器的排班問題 5.1 基本觀念 5.2 排班評定的標準 5.3 排班演算法 5.4 執行緒排班 5.5 多處理器的排班問題 5.6 作業系統範例 5.7 演算法的評估
5.1 基本觀念 在單一處理器系統裡,不可以同時有多個程式在執行,如果有多個行程,其它的都必須在旁邊等待CPU有空,才能接者重新排班。 5.1 基本觀念 在單一處理器系統裡,不可以同時有多個程式在執行,如果有多個行程,其它的都必須在旁邊等待CPU有空,才能接者重新排班。 多元程式規劃系統的主要目的,就是要隨時保有一個行程在執行,藉以提高CPU使用率。
5.1.1 CPU- I/O分割週期 行程的執行是由CPU執行時間及I/O等待時間所組成的週期 (cycle)。行程在這兩個狀態之間交替往返。 行程執行由一個CPU分割 (CPU burst)開始。跟著是一個I/O分割 (1/O burst),然後再由另外一個CPU分割跟著,再來又是另一個I/O分割。
5.1.2 CPU排班程式 5.1.3 可搶先排班 CPU 排班的決策發生在下面四種情況︰ 一旦CPU閒置,作業系統必須從就緒佇列之中選出其中一個行程來執行。選取行程是由短程排班程式(short-term scheduler)(或CPU排班程式)來執行。排班程式自記憶體之中準備要執行的數個行程選出一個,並將CPU配置給它。 5.1.3 可搶先排班 CPU 排班的決策發生在下面四種情況︰ 當一行程從執行狀態轉變成等待狀態時(例如,I/O要求,祈求等待其中一個子行程的結束) 。 當一行程從執行狀態轉變成就緒狀態時(例如,當有中斷發生時) 。 當一行程從等待狀態轉變成就緒狀態時(例如,I/O的結束) 。 當一行程終止時。
5.1.4 分派程式 作業系統中CPU排班程式功能所包含的另外一個元件就是分派程式(dispatcher) 轉換內容 5.1.4 分派程式 作業系統中CPU排班程式功能所包含的另外一個元件就是分派程式(dispatcher) 轉換內容 轉換成使用者模式 (user mode) 跳越到使用者程式的適當位置以便重新開啟程式
5.2 排班評定的標準 CPU使用率: 使CPU盡可能地忙碌。原則上它的使用率可以從 0個 百分比到 100個百分比。而在實際的系統裡,它的使用率應該是 40%(負荷 較輕的系統)到 90%(負荷較重的系統)的範圍。 產量 (throughput): 如果CPU是忙碌地執行行程,工作就可以不斷地進 行。其中有一種衡量工作量的標準,就是用每單位時間所完成的行程數來計 算,稱為產量。對長的行程而言,可能一個鐘頭只完成一個,但是對短的行程 而言,則產量可能多到每秒鐘完成十個。 回復時間 (turnaround time): 對某一個特定行程而言,是這個行程到底需要多少時間才能完成。從行程進入電腦,一直到該行程完成並且離開 電腦,這整段時間稱為回復時問。回復時間是進入等待主記憶體、在就緒佇 列等待,以及 CPU執行和執行輸出/入動作等時間的總和。 等候時間 (waiting time): CPU排班的法則,對於實際執行一個行程所需的 時間,而輸出入動作的次數並沒有任何的影響。它只會影響一個行程在就緒佇列等待的時間。等候時問是在就緒佇列中等待所花費週期的總和。 反應時間(response time):在交談式系統之中,一個衡量的標準就是以提出一個要求到第一個反應出現的時間間隔來計算,這就是所謂反應時問。
5.3 排班演算法 5.3.1 先來先做之排班方法(FCFS) 5.3 排班演算法 5.3.1 先來先做之排班方法(FCFS) 把CPU分配給第一個要求CPU的行程。FCFS策略的製作很容易用FlFO佇列管理。當一個行程進入就緒佇列之後,它的行程控制區段就鏈接到串列的尾端。
5.3.2 最短的工作先做之排班方式(SJF) 演算法將每一個行程的下一個 CPU分割長度和該行程相結合。當CPU有空時,就指定給下一個CPU分割最短的行程。如果兩個行程具有相同長度的下一個CPU分割,那麼就採用先來先做 (FCFS)的方法。
5.3.3 優先權排班方式 每一個行程都有它的優先順序。CPU 將分配給具有最高優先權的行程,具有相同優先順序的行程則按照 FCFS 來排班。優先權一般是一些固定範圍的數字,譬如 0 到 7 或 0 至 4095。
5.3.4 依序循環之排班方式 依序循環排班演算法(round-robin, RR, scheduling algorithm)是特別為了分時作業系統而設計的,這種排班方法和FCFS排班法相類似,但是加入可搶先的規則以便試行程互相交換使用CPU。我們定義一個小的時間單位,稱為一個時間量(time quantum或是時間片段time slice)。
5.3.5 多層佇列之排班方式 根據行程的性質將它們分成幾個不同的小組。例如,最典型的分類方法是區分為前景 (foreground)和背景 (background),分別代表交談式和整批作業的行程。
5.3.6 多層回饋佇列之排班方式 多層回饋佇列的排班法則 (multilevel feedback-queue scheduling algorithm)允許行程在佇列之間移動。它是利用不同CPU分割時段的特性,界分不同等級的佇列。 一個行程需要太長的CPU時間,就會排到低優先的佇列。高優先佇列通常排的都是I/O和交談式行程等。同樣地,在低優先佇列等候太久的行程,隨著時間的增長,也會漸漸地移往高優先佇列。
5.4 執行緒排班 5.4.1 競爭範圍 在使用者層次和核心層次的執行緒間有一項差別,是在於它們如何被排班。在製作多對一和多對多模式的系統上,執行緒庫(thread library)排班使用者層次的執行緒在可取得的LWP上執行,這種技巧稱為行程競爭範圍(Process-contention scope, PCS),因為CPU的競爭發生在屬於相同行程的執行緒。 當執行緒庫排班使用者執行緒到可用的LWP上時,並不是指執行緒正在某一個CPU上執行;這必須要作業系統排班核心執行緒在實體的CPU上執行。
5.5.2 Pthread的排班 在製作多對多模式的系統上,PTHREAD_SCOPE_PROCESS的排班策略,使用者的執行緒在可用的LWPs。LWPs的數目是由執行緒庫維持,或許使用排班程式活化作用。 在多對多的系統上,PTHREAD_SCOPE_SYSTEM的排班策略將產生和連結一個LWP給每一個使用層次執行緒,使用一對一策略有效地對映執行緒。
5.5 多處理器的排班問題 5.5.1 多處理器排班方法 方法之一是擁有所有的排班決定、I/O處理和由一個單一處理器處理 (主機伺服器)。其它處理器只有執行使用者程式碼。非對稱多元處理 (asymmetric multiprocessing)比對稱式的多處理器簡單,因為只有一個虛理器存取系統資料,減少對資料共享的需要。 第二種方法使用對稱多元處理(symmetric multiprocessing,SMP),每個處理器自行排班。所有處理器可能在一個準備好的佇列中,或每一個處理器在準備好行程有它自己私人佇列。不管如何,排班開始時,由每一個處理器的排班程式來檢查準備好的佇列並且選擇一個行程來執行。
5.5.2 處理器親和性 大部份SMP系統試著避免行程由一個處理器轉移到另一個處理器,然後嘗試在同一處理器上保持一個行程,這就是處理器親和性 (Processor affinity),表示行程對並行執行的處理器有親和性。 處理器親和性有幾種型式。當作業系統企圖保持一個行程在相同處理器上執行的策略,這種情況稱為軟性親和性(soft affinity),它可能讓行程在處理器間轉移。有些系統 (如LINUX)提供支援硬住親和性 (hard affinity)的系統呼叫,因此允許指定行程不能轉移到其它處理器。
5.5.3 負載平衡 在 SMP系統中,負載平衡 (load balancing)企圖保持工作下載均勻的分散在所有處理器。值得注意的是,通常負載平衡必須在每個處理器有自已的合格行程的私人佇列之系統來執行。 一個普通執行佇列的系統,通常需要負載平衡,因為一旦處理器變成閒置,它立刻由普通執行佇列抽取成可執行行程。然而,值得注意的是,大部份現代作業系統支援 SMP,每個行程有合格行程的私人佇列。 5.5.4 多核心處理器 傳統的SMP系統藉由提供多台實體處理器來允許若干執行緒同時執行。然而,在電腦硬體方面有個最新的趨勢,那就是把多個處理器核心放在相同的實體晶片上,於是產生了多核心處理器。 多核心處理器可能使排班問題複雜化。研究指出當一個處理器存取記憶體時,它花費在等待資料成為可用的時間非常顯著。
5.5.5 虛擬及排班 虛擬的系統,甚至是單CPU的系統,其行為經常像是多處理器系統。虛擬軟體可提供一個或多個虛擬CPU給每個虛擬機器,使之在系統上執行,然後把使用實體CPU排班在虛擬機器之中。
5.6 作業系統範例 5.6.1 Solaris 排班
5.6.2 Windows XP
5.6.3 Linux 排班
5.7 演算法的評估 5.7.1 定量模式 分析性的評估是定量模式 (deterministic modeling) 取一個特殊預定的工作量,並且規定針對該工作量做每種演算的效能。
5.7.2 佇列模式 在許多系統執行的行程每天都不一樣,因此沒有固定的一組行程 (和時間)可以用來做定量模式。然而,可以定出的是CPU和I/O分割的分佈情形。
5.7.3 模擬 為了得到更正確的排班演算法之評估,一般都採用模擬(simulation)方式。