為了使參與并發執行的每個程序,包含數據都能獨立地運行,在操作系統中必須為之配置一個專門的數據結構,稱為進程控制塊(PCB,Process Control Block)。進程與PCB是一一對應的,用戶進程不能修改。
進程控制塊PCB的作用:
為了便于系統描述和管理進程的運行,在OS的核心為每個進程專門定義了一個數據結構——進程控制塊PCB(ProcessControlBlock)。PCB作為進程實體的一部分,記錄了操作系統所需的,用于描述進程的當前情況以及管理進程運行的全部信息,是操作系統中最重要的記錄型數據結構。PCB的作用是使一個在多道程序環境下不能獨立運行的程序(含數據)成為一個能獨立運行的基本單位,一個能與其他進程并發執行的進程。
(1)PCB作為獨立運行基本單位的標志。當一個程序(含數據)配置了PCB后,就表示它已經是一個能在多道程序環境下獨立運行的、合法的基本單位,也就具有取得OS服務的權力,如打開文件系統中的文件,請求獲得系統中的I/O設備,以及與其它相關進程的進行通信等。因此,當系統創建一個新進程時,就為它建立了一個PCB。進程結束時又回收其PCB,進程于是也隨之消亡。系統是通過PCB感知進程的存在的。事實上,PCB已成為進程存在于系統中的唯一標志。
(2)PCB能實現間斷性運行方式。在多道程序環境下,程序是采用停停走走間斷性的運行方式運行的。當進程因阻塞而暫停運行時,它必須保留自己運行時的CPU現場信息。在有了PCB后,系統就可以將CPU現場信息保存在被中斷進程的PCB中,供該進程再次被調度執行時恢復CPU現場時使用。由此,可再次明確,在多道程序環境下,作為傳統意義上的靜態程序,因其并不具有保護或保存自己運行現場的手段,無法保證其運行結果的可再現性,從而失去運行的意義。
(3)PCB提供進程管理所需要的信息。當調度程序調度到某進程運行時,只能根據該進程PCB中記錄的程序和數據在內存或外存中的始址指針,找到相應的程序和數據;在進程運行過程中,當需要訪問文件系統中的文件或I/O設備時,也都需要借助于PCB中的信息。另外,還可根據PCB中的資源清單了解到該進程所需的全部資源等。可見,在進程的整個生命周期中,操作系統總是根據PCB實施對進程的控制和管理。
(4)PCB提供進程調度所需要的信息。只有處于就緒狀態的進程才能被調度執行,而在PCB中就提供了進程出于何種狀態的信息。如果進程處于就緒狀態,系統便將它插入到進程就緒隊列中,等待著調度程序的調度;另外在進行調度時往往還需要了解進程的其他信息,如在優先級調度算法中,就需要知道進程的優先級。在有些較為公平的調度算法中,還需要知道進程的等待時間和已執行過的事件等。
(5)PCB實現與其他進程的同步與通信。進程同步機制是用于實現諸進程的協調運行的,在采用信號量機制時,它要求在每個進程中都設置有相應的用于同步的信號量。在PCB中還具有用于實現進程通信的區域或通信隊列指針等。
-
pcb
+關注
關注
4319文章
23111瀏覽量
398248 -
操作系統
+關注
關注
37文章
6838瀏覽量
123380 -
進程
+關注
關注
0文章
203瀏覽量
13962
發布評論請先 登錄
相關推薦
評論