1. 程式人生 > >軟體設計師4--OS處理機管理

軟體設計師4--OS處理機管理

處理機管理

處理機管理也稱程序管理。在多道批處理作業系統和分時作業系統中有多個併發執行的程序。程序是資源分配和獨立執行的基本單位。處理機管理研究的是程序之間的併發性,以及程序之間的相互合作與資源競爭產生的問題。

1. 程序的狀態

  1. 程序的組成:程式、資料、程序控制塊

    • 程序控制塊是程序存在的唯一標誌。其內容有程序識別符號(PID),狀態、位置資訊(程式和資料在主存或外存的物理位置)、控制資訊(引數、訊號量等)、佇列指標、優先順序、現場保護區、其他。
      在這裡插入圖片描述
  2. 程序的狀態

    • 三態模型:執行、就緒、阻塞。就緒狀態獲得了除處理機的所有資源,得到處理機後可立即執行。阻塞狀態也稱睡眠狀態,程序在等待某事件而暫停執行,即使獲得處理機也無法立即執行。
    • 五態模型:引入新建狀態和終止狀態,構成五態模型。
      在這裡插入圖片描述
  3. 具有掛起狀態的程序轉換。由於程序的不斷建立,系統資源特別是主存資源不能滿足要求,這時必須把某些程序掛起,放到磁碟對換區(輔存),暫時不參加排程,以平衡系統負載。在這裡插入圖片描述

2. 程序控制

  1. 程序控制:作業系統對程序的建立到消亡全過程做有效的控制。程序控制是由作業系統核心中的原語實現的。
  2. 原語:由若干條程式組成,用來完成特定功能的程式段,執行時不能被分割,即原子操作。

3. 程序間通訊

在多道程式環境的系統中存在多個程序併發執行的情況,程序間必然存在資源共享和相互合作的問題。程序間通訊時指各個程序間交換資訊的過程。

  1. 程序的同步。程序間完成某一項任務時直接發生相互作用的關係
  2. 程序的互斥。各程序互斥使用臨界資源(某些資源一次只能被一個程序使用,如印表機、共享變數和表格)
  3. 臨界區的管理規則。臨界區時系統對臨界資源實施操作的那段程式。對互斥臨界區的管理4條原則如下:
    • 有空則進。當無程序處於臨界區時,允許程序進入臨界區,並且只能在臨界區允許有限的時間。
    • 無空則等。當有程序處於臨界區時,其他程序必須等待,以保證程序互斥訪問臨界資源。
    • 有限等待。對於要求進入臨界區的程序,保證程序能夠在有限的時間內進入臨界區,以免進入“飢餓”狀態。
    • 讓權等待。當程序不能進入自己的臨界區時,應立即釋放處理機,以免程序進入忙等狀態。

3.1 訊號量機制

訊號量機制是一種有效的程序同步和互斥工具。主要有整型訊號量、記錄型訊號量和訊號量集機制。

  1. 整型號量與PV操作
    訊號量是一種整型變數,根據控制物件的不同賦予不同的值。訊號量分為如下兩類:
    (1)公用訊號量。實現程序間的互斥,初值為1或資源的數目
    (2)私用訊號量。實現程序間的同步,初值為0或某個正整數

訊號量S的物理意義:S >= 0 表示某資源的可用數,若S < 0 ,則絕對值表示阻塞佇列中等待該資源的程序數。

PV操作是實現程序間同步和互斥的常用方法。P操作和V操作是低階通訊原語,在執行期間不可分割。P操作表示申請一個資源,V操作表示釋放一個資源。

  1. 使用PV操作實現程序間的互斥
    令訊號量mutex的初值為1,當進入臨界區時執行P操作,推出臨界區時執行V操作
    在這裡插入圖片描述

在這裡插入圖片描述

3.2 高階通訊原語

程序間通訊指程序間的資訊交換,少則一個狀態,多則成千上萬個資訊。根據交換資訊量的多少和效率的高階,程序間通訊分為低階的方式和高階的方式。PV操作屬於低階的通訊方式。使用PV操作有兩個問題:1.程式設計難度大,通訊對使用者不透明,而且容易產生死鎖。2.效率低,生產者每次只能向緩衝區方一個訊息,消費者每次只能從緩衝區讀取一個訊息。
高階通訊方式有三種:

  1. 共享儲存模式。相互通訊的程序之間共享某些資料結構(或儲存區)實現程序間的通訊。
  2. 訊息傳遞模式。程序間的資料交換以訊息為單位,程式設計師直接利用系統提供的一組通訊命令(原語)來實現通訊,如send(A)和receive(A)。
  3. 管道通訊。所謂管道,時連線一個讀程序和一個寫程序,以字元流的形式將大量的資料送入管道,而接收程序可從管道接收大量的資料。

4. 管程

todo 使用資源集中管理的方法,將系統的某種資源用資料結構抽象的表示出來。由於臨界區是訪問共享資源的程式碼段,建立一個管程管理程序提出的訪問請求。

5. 程序排程

程序排程是指當有更高優先順序的程序到來時,如何分配CPU。排程方式分為可剝奪和不可剝奪兩種。可剝奪式是指當有更高優先順序的程序到來,強行將正在執行程序的CPU分配高優先順序的程序。不可剝奪式則時等待程序釋放CPU後,將CPU分配給高優先順序程序。

5.1 三級排程

在具有三級排程的作業系統中,一個作業從提交到完成需要經歷高、中、低三級排程。
(一)高階排程。又稱長排程、作業排程和接納排程,它決定處於輸入池中的哪個後被作業可以調入主系統做好執行的準備,成為一個或一組就緒程序。一個作業只需經過一次高階排程。
(二)中級排程。又稱中程排程和對換排程。它決定處於交換區的哪個就緒程序可以調入記憶體,以便直接參與對CPU的競爭。在資源緊張時,會將記憶體中處於阻塞狀態的程序對換到對換區。
(三)低階排程。又稱短程排程或程序排程,它決定處於記憶體中的哪個就緒程序可以佔有CPU。低階排程時系統中最活躍、最重要的排程程式,對系統的影響很大。
在具有三級排程的作業系統中,參考上面說的程序的5態模型,程序的就緒狀態和阻塞狀態都有兩種儲存形式,一種時處於記憶體,一種是處於對換區(外存)。

5.2 排程演算法

常用的程序排程演算法有:先來先服務(巨集觀排程)、時間片輪轉(微觀排程,提高資源利用率) 、優先順序排程和多級反饋排程。

5.3 優先順序排程

分為靜態優先順序和動態優先順序。

  1. 靜態優先順序程序在整個生命週期優先順序不會變,通常通過三個因素確定優先順序:程序型別(如系統程序優先順序高)、對資源的需求(如對CPU和記憶體需求少的程序優先順序高)、使用者要求(如緊迫程度)。
  2. 動態優先順序程序在執行過程中可以實時改變優先順序,以便可以獲得更好的程序排程效能。例如,在就緒佇列中,隨著等待時間變長,程序的優先順序會提高,程序每執行了一個時間片其優先順序降低。

5.4 多級反饋排程

多級反饋排程演算法時時間片輪轉和和優先順序演算法的綜合和拓展。其有點是既照顧了短程序以提高系統的吞吐量、縮短了平均週轉週期;照顧IO型程序以獲得較好的IO裝置利用率和縮短響應時間;不必估算程序的執行時間,動態的調節優先順序。
在這裡插入圖片描述

5.5 程序優先順序的確定

優先順序的確定要考慮如下情況:
(1)對於IO型程序,讓其進入最高優先順序佇列。通常執行一個小的時間片,處理完成一次IO請求,然後轉入阻塞佇列。
(2)基於計算型程序,每次處理完後進入更低優先順序的佇列,最終使用最大時間片來執行,以減少排程次數。
(3)對於IO次數少,主要是CPU處理的程序,在IO完成後返回該程序的佇列,以免每次都回到最高優先順序的佇列執行。
(4)為適應一個程序在不同時間段的執行特點,IO完成時,提高優先順序;時間片用完時,降低優先順序。

5.6 死鎖

死鎖是兩個以上的程序互相要求對方已經佔用的資源,導致大家都無法繼續執行下去的現象。
【例1】有程序P1和程序P2,互斥資源A和B,兩個程序併發執行,以下如果按照P1(a) P2(a) P1(b) P2(b)的次序執行系統會發生死鎖。
在這裡插入圖片描述
【例2】PV操作不當產生死鎖,如圖,當訊號量S1=S2=0是發生死鎖。
在這裡插入圖片描述

6. 執行緒

傳統的程序有兩個基本屬性:

  1. 可擁有資源的獨立單位
  2. 可獨立排程和分配的基本單位

由於在程序的建立、撤銷和切換的過程中,系統必須為之付出較大的時空開銷,因此係統 中設定程序數目不宜過多,程序切換頻率不宜過高,這限制了系統的併發程度。引入執行緒後,將傳統程序的兩個屬性分開。執行緒作為排程和分配的基本單位,程序作為獨立分配資源的單位。使用者通過建立執行緒來完成任務,以減少程式併發執行的系統開銷。