軟件設計師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. 可獨立調度和分配的基本單位

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章