《計算機操作系統》學習筆記(二)---處理機管理

 在傳統的多道程序系統中,處理機的分配和運行,都是以進程爲基本單位,因而對處理機的管理,可歸結爲對進程管理,對進程的管理主要有包括:進程控制、進程同步、進程通信、進程調度。
一、進程的基本概念
  1、程序有兩種執行方式,其中包括順序執行和併發執行。
     順序執行的特徵爲:順序性、封閉性(程序運行時獨佔全機資源,其執行結果不受外界影響)、可再現性(只要運行環境和初始條件相同,程序重複執行都獲得相同結果);
     併發執行的特徵爲:間斷性(程序之間的相互制約導致“執行-暫停-執行”)、失去封閉性、不可再現性(即使運行環境和初始條件相同,程序重複執行都獲得結果也不一定相同);
  2、進程的特徵:
     (1)結構性
         由程序段、數據段和PCB三部分便構成了進程實體;
     (2)動態性
         進程由創建而產生,由調度而執行,由撤銷而消亡,進程是有一定的生命週期,是動態的;
         程序只是一組有序的指令集合,並存放於某些介質上,其本身不具有運動的含義,是靜態的;
     (3)併發性
         這是指多個進程實體同存於內存中,且能在一段時間內同時運行;
     (4)獨立性
         進程是一個能獨立運行、獨立分配資源和獨立接受調度的基本單位;
     (5)異步性
         這是指進程按各自獨立的、不可預知的速度向前推進。
   3、進程的基本狀態:
      一共4種:就緒狀態、執行狀態、阻塞狀態、掛起狀態
      就緒狀態:當前進程已分配到除CPU以外的所有必要資源;
      執行狀態:當前進程已分配到包括CPU在內的所有必要資源;

      阻塞狀態:正在執行的進程請求I/O,申請緩衝空間等;

      掛起狀態:即將該進程從內存中暫時調出到外存,原因如:終端用戶的請求、父進程的請求、負荷調節的需要、操作系統的需要。

   4、進程控制塊
      系統將所有的PCB組織成若干個鏈表(或隊列),存放在操作系統中專門開闢的PCB區內。PCB是進程存在的唯一標誌,常駐於內存中。
      PCB主要包括四方面的信息:進程標識符、處理機狀態、進程調度信息、進程控制信息
      (1)進程標識符
           內部標識符,進程的序號,方便系統調用;
           外部標識符,由創建者提供,方便用戶使用;
      (2)處理機狀態
           處理機在運行時,許多信息都放在寄存器中。當處理機被中斷時,所有這些信息都必須保存在PCB中,以便中斷後重新執行。這些信息包括(通用寄存器、指令計數器、程序狀態字PSW、用戶棧指針)這些寄存器的數據;
      (3)進程調度信息
           與進程調度和進程對換的相關信息,包括:進程狀態、進程優先級、進程調度的其他信息和事件(即阻塞原因);
      (4)進程控制信息
           包括程序和數據的地址、進程同步和通信機制(如消息隊列指針、信號量等)、資源清單(即進程所需的全部資源)、鏈接指針(指向下一個PCB)。
      PCB在內存中的組織方式有鏈接方式和索引方式兩種。

二、進程控制

   進程控制包括:進程的創建、進程的終止、進程的狀態轉換
   1、進程的創建
      引起創建進程的事件包括:用戶登錄、作業調度、提供服務、應用請求。
      創建進程的過程:申請空白PCB—>爲新進程分配資源—>初始化PCB—>將PCB插入就緒隊列。
   2、進程的終止
      引起終止進程的事件包括:正常結束、異常結束、外界干預(如父進程終止)。
      終止進程的過程:根據進程標識符讀取PCB(若執行狀態,置調度標誌真)—>終止子孫進程—>釋放全部資源—>將PCB從隊列移除。
   3、進程的狀態轉換
      (1)進程的阻塞和喚醒
           引起事件:請求系統服務(阻塞)、啓動某種操作(喚醒)、新數據尚未到達(阻塞)、無新工作可做(阻塞)。
           進程阻塞的過程:停止本進程—>改變PCB—>調度新進程;
           進程喚醒的過程:PCB從阻塞隊列移除—>改變PCB—>PCB插入到就緒隊列;
      (2)進程的掛起和激活
           進程掛起的進程:改變PCB—>複製PCB(方便用戶或父進程考查該進程)—>調度新進程;
           進程激活的進程:將該進程從外存調入內存—>改變PCB—>調度該進程;
三、,

   進程同步的主要任務,是是併發執行的諸進程之間能有效地共享資源和相互合作,從而使程序的執行具有可再現性。
   1、同步機制
      間接相互制約關係:如:A進程使用一資源,B進程只能等待,即A進程通過共享資源簡介制約B進程;
      直接相互制約關係:如:B進程執行所需的數據由A進程得到,即A進程直接制約B進程;
      同步機制應遵循的規則包括:空閒讓進、忙則等待、有限等待、讓權等待。
   2、信號量機制
      其中包括整形信號量、記錄型信號量、AND信號量。
      三種信號量的區別:
      整形信號量N只是一個整型值,代表着某類資源的數目,當N<=0,即後申請使用該資源的進程會不斷地查詢是否N>0,一旦N>0,即取之來用,這是一種忙等現象;
      記錄型信號量S是一個結構體,S.value相當於整形信號量N,當S.value<=0,即後申請使用該資源的進程會進入阻塞狀態,並將其掛在S.L中,等待喚醒,遵循“讓權等待”策略;
      AND信號量代表着多類資源的數目,其中有一類資源的數目小於零,即分配資源失敗。
四、進程通信

   高級進程通信機制有五種:共享存儲器系統、消息傳遞系統、管道通信系統、信號機制、信號量機制。
   
   1、共享存儲器系統(傳送大量數據,鎖機制):
   共享內存區域是被多個進程共享的一部分物理內存。如果多個進程都把該內存區域映射到自己的虛擬地址空間,則這些進程就都可以直接訪問該共享內存區域,從而可以通過該區域進行通信。共享內存是進程間共享數據的一種最快的方法,一個進程向共享內存區域寫入了數據,共享這個內存區域的所有進程就可以立刻看到其中的內容。
   共享內存實現分爲兩個步驟:(1)創建共享內存(2)映射共享內存,將這段創建的共享內存映射到具體的進程空間去
   
   2、消息傳遞系統(消息緩衝隊列通信機制,傳送小量數據):
      (1)進程間的數據交換是以格式化的消息(報文)爲單位的,程序員直接利用系統提供的通信原語進行通信,操作系統隱藏了通信的實現細節。其中的直接通信方式即直接向某進程發送報文或直接向某進程接收報文,而間接通信方式即爲向某信箱發送報文或向某信箱接收報文,其中的信箱爲“中轉站”,包括私有信箱、公用信箱、共享信箱。
      (2)由於消息緩衝機制中所使用的緩衝區爲公用緩衝區,因此使用消息緩衝機制傳送數據時,兩通信進程必須滿足如下條件。
第一,在發送進程把寫入消息的緩衝區掛入消息隊列時,應禁止其他進程對該消息隊列的訪問,否則,將引起消息隊列的混亂。同理,當接收進程正從消息隊列中取消息時,也應禁止其他進程對該隊列的訪問。
第二,當緩衝區中無消息存在時,接收進程不能接收到任何消息;而發送進程是否可以發送消息,則只由發送進程是否能夠申請到緩衝區決定。

   3、管道通信系統(讀者-寫者):
   管道是單向的、先進先出的、無結構的、固定大小的字節流,它把一個進程的標準輸出和另一個進程的標準輸入連接在一起。寫進程在管道的尾端寫入數據,讀進程在管道的首端讀出數據。數據讀出後將從管道中移走,其它讀進程都不能再讀到這些數據。管道提供了簡單的流控制機制。進程試圖讀空管道時,在有數據寫入管道前,進程將一直阻塞。同樣,管道已經滿時,進程再試圖寫管道,在其它進程從管道中移走數據之前,寫進程將一直阻塞;
   
   4、信號機制:發送信號
   
   5、信號量機制:P、V操作,進程間同步互斥,生產者-消費者,哲學家進餐等。
   
   參考網站:
   http://blog.csdn.net/zccst/article/details/4836901
   http://blog.csdn.net/zccst/article/details/4836937
五、進程調度

   1、進程調度的種類
      高級調度:又叫作業調度,即每次要接納多少個作業進入內存;
      中級調度:把那些暫時不能運行的進程調至外存上等待;
      低級調度:又叫進程調度,即將處理機分配給哪個進程使用。
      進程調度的準則:
      面向用戶的準則包括:週轉時間短、響應時間快、截止時間保證;
      面向系統的準則包括:系統吞吐量高、處理機利用率好、各類資源的平衡利用。
   2、調度算法
      (1)先來先服務調度算法(FCFS):有利於長作業,而不利於短作業;
      (2)短作業優先調度(SJF):對長作業不利;未考慮作業的緊迫程度;作業長短的時間估計不一定精確;
      (3)高優先權先調度讀算法(FPF):其中的高響應比優先調度算法比較理想;
      (4)基於時間片的輪轉調度算法:其中的多級反饋隊列調度算法比較理想;
   3、實時系統中的調度
      爲了實現實時調度,系統應向調度進程提供相關信息,包括:就緒時間、開始截止時間和完成截止時間、處理時間、資源要求和優先級。常使用最早截止時間優先算法(EDF)(利用到開始截止時間)和最低鬆弛度優先算法(LLF)(利用到完成截止時間和處理時間);
   4、多處理機系統中的調度
      多處理機系統的分類:從多處理機之間耦合的緊密程度分爲緊密耦合和鬆弛耦合,根據系統中所用處理機的相同與否可分爲對稱多處理機系統和非對稱多處理機系統。
      進程分配方式:靜態分配,即一個進程從開始執行直至其完成,都被固定地分配到一個處理機上去執行;而動態分配,即系統中設有一個公共就緒隊列,分配時,可將進程分配到任何一個處理機上;
      進程調度方式:自調度方式,即系統中設有一個公共就緒隊列,哪一個處理機有空閒,就自己去該隊列中取一就緒進程來運行;成組調度方式,即將一個進程中的一組線程分配到一組處理機上去執行,可面向所有應用程序平均分配處理機時間,也可以面向所有線程平均分配處理機時間;專用處理機分配,即專門爲該應用程序分配一組處理器,每個線程一個處理機,直至該應用程序完成。
   5、死鎖
      產生原因:競爭資源、進程間推進順序非法;
      必要條件:互斥條件、請求和保持條件、不剝削條件、環路等待條件;
      處理方法:預防死鎖(執行前預防)、避免死鎖(執行時避免)、檢測和解除死鎖(執行後檢測和解除)。

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