簡述PCB的含義和作用

為了使參與並發執行的每個程序,包括數據都可以獨立運行,必須在操作系統中為其配置一個特殊的數據結構,稱為進程控制塊(PCB,過程控制塊)。 工藝與PCB是一一對應的,用戶工藝不能修改。

印刷電路板

過程控制塊PCB的作用:

為了便於系統描述和管理進程的運行,在OS-Process Control Block PCB(Process Control Block)的核心中為每個進程專門定義了一個數據結構。 PCB作為流程實體的一部分,記錄了操作系統需要的所有信息,用於描述流程的當前情況,管理流程的運行。 它是操作系統中最重要的記錄數據結構。 PCB的作用是使在多程序環境中不能獨立運行的程序(包括數據)成為一個可以獨立運行的基本單元,一個可以與其他進程並發執行的進程。

(2)PCB可實現間歇運行模式。 在多程序環境中,程序以走走停停的間歇操作模式運行。 當一個進程因阻塞而被掛起時,它在運行時必須保留CPU站點信息。 有了PCB後,系統可以將CPU站點信息保存在中斷進程的PCB中,以備進程再次調度執行時CPU站點恢復時使用。 因此,可以再次明確,在多程序環境下,作為傳統意義上的靜態程序,由於沒有保護或保存自身運行站點的手段,因此無法保證其運行結果的可再現性。 ,從而失去其操作。 意義。

(3) PCB 提供工藝管理所需的信息。 調度器在調度一個進程運行時,只能根據進程的PCB中記錄的程序的起始地址指針和數據,在內存或外存中找到對應的程序和數據; 在運行過程中,當需要訪問文件時,系統中的文件或I/O設備,也需要依賴PCB中的信息。 另外,根據PCB中的資源列表,可以了解到該工藝所需的所有資源。 可見,在一個流程的整個生命週期中,操作系統始終根據PCB對流程進行控制和管理。

(4) PCB 提供進程調度所需的信息。 只有處於就緒狀態的進程才能被調度執行,PCB提供進程處於什麼狀態的信息。如果進程處於就緒狀態,系統將其插入進程就緒隊列中,等待調度器調度; 另外,在調度的時候往往需要知道進程的其他信息。 比如在優先級調度算法中,需要知道進程Priority。 在一些更公平的調度算法中,還需要知道進程的等待時間和已經執行的事件。

(5)PCB實現與其他進程的同步和通信。 進程同步機制用於實現各個進程的協同運行。 採用信號量機制時,需要在每個進程中設置相應的同步信號量。 PCB還有一個區域或通信隊列指針,用於進程通信。

進程控制塊中的信息:

在進程控制塊中,主要包括以下信息:

(1)進程標識符:進程標識符用於唯一地指示一個進程。 一個進程通常有兩種標識符: ① 外部標識符。 為了方便用戶進程訪問進程,必須為每個進程設置一個外部標識符。 它由創建者提供,通常由字母和數字組成。 為了描述進程的家族關係,還需要設置父進程ID和子進程ID。 此外,可以設置用戶 ID 來指示擁有進程的用戶。 ②內部標識符。 為了方便系統對進程的使用,OS中為進程設置了一個內部標識符,即給每個進程一個唯一的數字標識符,通常是一個進程的序列號。

(2)處理器狀態:處理器狀態信息也稱為處理器的上下文,主要由處理器的各種寄存器的內容組成。 這些寄存器包括: ①通用寄存器,也稱為用戶可見寄存器,可供用戶程序訪問,用於臨時存儲信息。 在大多數處理器中,有 8 到 32 個通用寄存器。 在RISC結構的計算機中可以有100多個; ②指令計數器,存儲下一條要訪問的指令的地址; ③程序狀態字PSW,包含狀態信息,如條件碼、執行方式、中斷屏蔽標誌等; ④用戶棧指針,表示每個用戶進程有一個或多個相關的系統棧,用於存儲進程和系統調用參數和調用地址。 棧指針指向棧頂。 當處理器處於執行狀態時,大部分正在處理的信息都放在寄存器中。 進程切換時,處理器狀態信息必須保存在對應的PCB中,以便進程重新執行時可以從斷點處繼續執行。

(3)進程調度信息:OS在調度時,需要了解進程的狀態和進程調度的信息。 這些信息包括: ①進程狀態,表示進程的當前狀態,作為進程調度和交換的依據 ②進程優先級是一個整數,用於描述使用處理器的進程的優先級。 優先級高的進程應該先得到處理器; ③進程調度所需的其他信息,與使用的進程調度算法有關,例如進程等待CPU的時間總和,進程已經執行的時間總和等; ④事件是指等待進程從執行狀態變為阻塞狀態的事件,即阻塞的原因。

(4)進程控制信息:指進程控制所必需的信息,包括: ①程序和數據的地址,程序和數據在進程實體中的內存或外存地址,以便調度到進程執行時執行。 ,程序和數據可以從PCB上查到; ②進程同步和通信機制,是同步和進程通信的必要機制,如消息隊列指針、信號量等,它們可以全部或部分放置在PCB中; ③資源列表,其中列出了進程在運行過程中所需的所有資源(CPU除外),還有一個分配給該進程的資源列表; ④鏈接指針,給出進程(PCB)隊列中下一個進程的PCB的首地址。