• Operating System Video Tutorials

作業系統 - 程序控制塊



程序控制塊 (PCB) 是一種資料結構,包含與程序相關的各種資訊。程序控制塊也稱為程序描述符或任務控制塊。不同程序的 PCB 儲存在作業系統核心的程序表中。

當建立一個新程序時,作業系統會為其初始化一個程序控制塊,該塊儲存與程序相關的引數值,並跟蹤程序狀態(例如:新建、就緒、執行、等待或終止)。

PCB 對於幾乎所有與程序相關的活動中的程序管理都非常重要。排程程式和資源管理器等許多實用程式都會訪問和/或更新它們。由於 PCB 跟蹤程序狀態資訊,因此它們在上下文切換中發揮著至關重要的作用。

程序控制塊的結構

程序控制塊儲存許多有效程序管理所需的資料項。以下將透過圖表解釋其中一些資料項:

Structure of the Process Control Block

以下是一些資料項:

  • 程序號或 ID - 顯示特定程序的標識號。
  • 程序狀態 - 指定程序狀態,例如新建、就緒、執行、等待或終止。
  • 程式計數器 - 包含程序中需要執行的下一條指令的地址。
  • 暫存器 - 指定程序使用的暫存器。包括累加器、索引暫存器、堆疊指標、通用暫存器等。
  • 開啟檔案列表 - 與程序關聯的不同檔案。
  • CPU 排程資訊 - PCB 中包含的 CPU 排程資訊包括程序優先順序、排程佇列指標等。這也可能包括任何其他排程引數。
  • 記憶體管理資訊 - 記憶體管理資訊包括頁表或段表(取決於所使用的記憶體系統)。它還包含基暫存器、界限暫存器等的值。
  • I/O 狀態資訊 - 此資訊包括程序使用的 I/O 裝置列表、檔案列表等。
  • 會計資訊 - 時間限制、帳號、使用的 CPU 量、程序號等都是 PCB 會計資訊的一部分。
  • 程序控制塊的位置 - 程序控制塊儲存在一個受保護的記憶體區域中,防止普通使用者訪問。這是因為其中包含重要的程序資訊。一些作業系統將 PCB 放在程序的核心堆疊的開頭,因為它是一個安全的位置。

利用 PCB 的程序管理任務

程序控制塊在執行各種程序管理活動中發揮著重要作用,因為它們儲存與程序相關的關鍵資訊。以下是經常訪問 PCB 中儲存的詳細資訊的一些主要操作:

上下文切換

在上下文切換期間,正在執行程序的程序狀態儲存在 CPU 暫存器中,並將其副本儲存在相應的 PCB 中。下一個被選中執行的程序的狀態從其 PCB 中獲取,以便它可以執行。

程序排程

作業系統使用 PCB 的內容(例如程序優先順序、程序狀態和使用的資源)來排程就緒佇列中的程序。透過評估優先順序和其他相關資訊,排程程式確定程序執行的順序。

多工處理

作業系統可以藉助 PCB 中儲存的資訊(如資源分配、程序排程和程序同步)來同時執行多個程序。

資源共享

PCB 中儲存的資訊包括分配給程序的資源,例如開啟的檔案、共享變數、公共表和記憶體空間。當新程序請求資源時,作業系統會在 PCB 中搜索已分配的程序,檢查它們是否可共享,並相應地分配資源。因此,PCB 在資源共享中起著重要作用。

廣告