複製鏈接
請複製以下鏈接發送給好友

PCB

(進程管理塊)

鎖定
為了描述控制進程的運行,系統中存放進程的管理和控制信息的數據結構稱為進程控制塊(PCB Process Control Block),它是進程實體的一部分,是操作系統中最重要的記錄性數據結構。它是進程管理和控制的最重要的數據結構,每一個進程均有一個PCB,在創建進程時,建立PCB,伴隨進程運行的全過程,直到進程撤消而撤消。
中文名
進程管理塊
外文名
Process Control Block
適用領域
編程
所屬學科
計算機科學

PCB簡介

PCB中記錄了操作系統所需的,用於描述進程的當前情況以及控制進程運行的全部信息。PCB的作用是使一個在多道程序環境下不能獨立運行的程序(含數據),成為一個能獨立運行的基本單位,一個能與其他進程併發執行的進程。或者説,OS是根據PCB來對併發執行的進程進行控制和管理的。例如,當OS要調度某進程執行時,要從該進程的PCB中查處其現行狀態及優先級;在調度到某進程後,要根據其PCB中所保存的處理機狀態信息,設置該進程恢復運行的現場,並根據其PCB中的程序和數據的內存始址,找到其程序和數據;進程在執行過程中,當需要和與之合作的進程實現同步,通信或者訪問文件時,也都需要訪問PCB;當進程由於某種原因而暫停執行時,又須將器斷點的處理機環境保存在PCB中。可見,在進程的整個生命期中,系統總是通過PCB對進程進行控制的,即系統是根據進程的PCB而不是任何別的什麼而感知到該進程的存在的。所以説,PCB是進程存在的唯一標誌。

PCB組成

PCB進程控制塊是進程的靜態描述,由PCB、有關程序段和該程序段對其進行操作的數據結構集三部分組成。
Unix或類Unix系統中,進程是由進程控制塊,進程執行的程序,進程執行時所用數據,進程運行使用的工作區組成。其中進程控制塊是最重要的一部分。
進程控制塊是用來描述進程的當前狀態,本身特性的數據結構,是進程中組成的最關鍵部分,其中含有描述進程信息和控制信息,是進程的集中特性反映,是操作系統對進程具體進行識別和控制的依據。
PCB一般包括:
1、程序ID(PID、進程句柄):它是唯一的,一個進程都必須對應一個PID。PID一般是整形數字
2、特徵信息:一般分系統進程、用户進程、或者內核進程等
3、進程狀態:運行、就緒、阻塞,表示進程現的運行情況
4、優先級:表示獲得CPU控制權的優先級大小
5、通信信息:進程之間的通信關係的反映,由於操作系統會提供通信信道
6、現場保護區:保護阻塞的進程用
7、資源需求、分配控制信息
8、進程實體信息,指明程序路徑和名稱,進程數據在物理內存還是在交換分區(分頁)中
9、其他信息:工作單位,工作區,文件信息等 [1] 

PCB作用

PCB進程控制塊

進程控制塊的作用是使一個在多道程序環境下不能獨立運行的程序(包含數據),成為一個能獨立運行的基本單位,一個能與其它進程併發執行的進程。

PCB程序段

進程中能被進程調度程序在CPU上執行的程序代碼段。

PCB數據段

一個進程的數據段,可以是進程對應的程序加工處理的原始數據,也可以是程序執行後產生的中間或最終數據。 [1] 

PCB包含信息

在不同的操作系統中對進程的控制和管理機制不同,PCB中的信息多少也不一樣,通常PCB應包含如下一些信息。

PCB進程標識符信息

每個進程都必須有一個唯一的標識符,可以是字符串,也可以是一個數字。UNIX系統中就是一個整型數。在進程創建時由系統賦予。進程標識符用於唯一的標識一個進程。一個進程通常有以下兩種標識符。
外部標識符。由創建者提供,通常是由字母、數字組成,往往是用户(進程)訪問該進程使用。外部標識符便於記憶,如:計算進程、打印進程、發送進程、接收進程等。
內部標識符:為了方便系統使用而設置的。在所有的OS中,都為每一個進程賦予一個唯一的整數,作為內部標識符。它通常就是一個進程的符號,為了描述進程的家族關係,還應該設置父進程標識符以及子進程標識符。還可以設置用户標識符,來指示該進程由哪個用户擁有。

PCB處理機狀態信息

説明進程當前所處的狀態。為了管理的方便,系統設計時會將相同的狀態的進程組成一個隊列,如就緒進程隊列,等待進程則要根據等待的事件組成多個等待隊列,如等待打印機隊列、等待等。處理機狀態信息主要是由處理機各種寄存器中的內容所組成。
通用寄存器。又稱為用户可視寄存器,可被用户程 序訪問,用於暫存信息。
指令寄存器。存放要訪問的下一條指令的地址。
程序狀態字PSW。其中含有狀態信息。(條件碼、 執行方式、中斷屏蔽標誌等)
用户棧指針。每個用户進程有一個或若干個與之相 關的系統棧,用於存放過程和系統調用參數及調用地址。棧指針指向該棧的棧頂。

PCB進程調度信息

在PCB中還存放了一些與進程調度和進程對換有關的信息。
(1)進程狀態。指明進程當前的狀態,作為進程調度和對換時的依據。
(2)進程優先級。用於描述進程使用處理機的優先級別的一個整數,優先級高的進程優先獲得處理機。
(3)進程調度所需要的其他信息。(進程已等待CPU的時間總和、進程已執行的時間總和)
(4)事件。這是進程由執行狀態轉變為阻塞狀態所等待發生的事件。(阻塞原因)

PCB進程上下文

是進程執行活動全過程的靜態描述。包括計算機系統中與執行該進程有關的各種寄存器的值、程序段在經過編譯之後形成的機器指令代碼集、數據集及各種堆棧值和PCB結構。可按一定的執行層次組合,如用户級上下文、系統級上下文等。

PCB進程存在的唯一標誌

在進程的整個生命週期中,系統總是通過PCB對進程進行控制的,亦即,系統是根據進程的PCB而不是任何別的什麼而感知到該進程的存在的,所以説,PCB是進程存在的唯一標誌。 [1] 

PCB進程的特徵

1、動態性
2、併發性
3、獨立性
進程實體是一個能獨立運行的基本單位,同時也是系統中獨立獲得資源和獨立調度的基本單位。沒有建立進程的程序,不能作為一個獨立的單位參加運行。
4、異步性
5、結構特性
從結構上看,進程由程序段、數據段及PCB三部分組成。 [1] 

PCB進程的狀態及其轉換

PCB進程的三種基本狀態

  • 就緒狀態(Ready)
當進程已經分配到除CPU以外的所有必要的資源後,只要能再獲得處理機,就可以立即執行。
  • 執行狀態(Running)(運行狀態)
指進程已獲得處理機而執行的狀態。
  • 阻塞狀態(Block)(等待狀態)
進程因為發生某個事件而暫停執行時的狀態(如:請求I/O、申請緩衝空間等)。有時也稱“等待”狀態或“睡眠”狀態。

PCB進程狀態轉換

①就緒→執行:調度
②執行→等待:等待某個事件發生而睡眠
③等待→就緒:因等待的事件發生而喚醒
④執行→就緒:時間片用完或出現高優先
就緒狀態→執行狀態
處於就緒狀態的進程,當進程調度程序為它分配了處理機後,該進程便由就緒狀態變為執行狀態,正在執行的進程也稱為當前進程。
執行狀態→阻塞狀態
正在執行的進程因發生某件事件而無法執行。例如:進程請求訪問臨界資源,而該資源正被其它進程訪問,則請求該資源的進程將由執行狀態轉變為阻塞狀態。
執行狀態→就緒狀態
正在執行的進程,如果事件發生或中斷而被暫停執行,該進程便由執行狀態轉變為就緒狀態。(分時系統中,時間片用完;搶佔調度方式中,優先權高搶佔處理機)
執行狀態→終止狀態
當一個進程經完成或發生某事件,如程序中出現地址越界、非法指令等錯誤,而被異常結束時,進程將由執行狀態轉變為終止狀態。 [1] 
參考資料