進程的組織:控制塊、程序段和數據段


進程是操作系統的資源分配和獨立運行的基本單位。它一般由以下三個部分組成。

進程控制塊

進程創建時,操作系統就新建一個PCB結構,它之后就常駐內存,任一時刻可以存取, 在進程結束時刪除。PCB是進程實體的一部分,是進程存在的唯一標志。

當創建一個進程時,系統為該進程建立一個PCB;當進程執行時,系統通過其PCB了解進程的現行狀態信息,以便對其進行控制和管理;當進程結束時,系統收回其PCB,該進程隨之消亡。操作系統通過PCB表來管理和控制進程。

PCB通常包含的內容
進程描述信息 進程控制和管理信息 資源分配清單 處理機相關信息
進程標識符(PID) 進程當前狀態 代碼段指針 通用寄存器值
用戶標識符(UID) 進程優先級 數據段指針 地址寄存器值
  代碼運行入口地址 堆棧段指針 控制寄存器值
  程序的外存地址 文件描述符 標志寄存器值
  進入內存時間 鍵盤 狀態字
  處理機占用時間 鼠標  
  信號量使用    


上表是一個PCB的實例,PCB主要包括進程描述信息、進程控制和管理信息、資源分配清單和處理機相關信息等。各部分的主要說明如下:

1) 進程描述信息
進程標識符:標志各個進程,每個進程都有一個並且是唯一的標識號。
用戶標識符:進程歸屬的用戶,用戶標識符主要為共享和保護服務。

2) 進程控制和管理信息
進程當前狀態:描述進程的狀態信息,作為處理機分配調度的依據。
進程優先級:描述進程搶占處理機的優先級,優先級高的進程可以優先獲得處理機。

3) 資源分配清單,用於說明有關內存地址空間或虛擬地址空間的狀況;所打開文件的列表和所使用的輸入/輸出設備信息。

4) 處理機相關信息,主要指處理機中各寄存器值,當進程被切換時,處理機狀態信息都必須保存在相應的PCB中,以便在該進程重新執行時,能再從斷點繼續執行。

在一個系統中,通常存在着許多進程,有的處於就緒狀態,有的處於阻塞狀態,而且阻塞的原因各不相同。為了方便進程的調度和管理,需要將各進程的PCB用適當的方法組織起來。目前,常用的組織方式有鏈接方式和索引方式兩種。鏈接方式將同一狀態的PCB鏈接成一個隊列,不同狀態對應不同的隊列,也可以把處於阻塞狀態的進程的PCB,根據其阻塞原因的不同,排成多個阻塞隊列。索引方式是將同一狀態的進程組織在一個索引表中,索引表的表項指向相應的PCB,不同狀態對應不同的索引表,如就緒索引表和阻塞索引表等。

程序段

程序段就是能被進程調度程序調度到CPU執行的程序代碼段。注意,程序可以被多個進程共享,就是說多個進程可以運行同一個程序。

數據段

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM