Linux

Linux上的PCB在哪裡

  • December 10, 2021

PCB或過程控制塊,在維基百科上是這樣定義的

過程控制塊(PCB,也稱為任務控制塊,

$$ 1 $$ Task Struct 或 Switchframe)是作業系統核心中的一種資料結構,包含管理特定程序所需的資訊。PCB是“一個程序在作業系統中的體現

其職責是:

Process identification data
Processor state data
Process control data

那麼在哪裡可以找到一個工藝的PCB呢?

在 Linux 核心中,每個程序都由一個task_struct雙向鍊錶中的 a 表示,其頭部是init_task(pid 0,而不是 pid 1)。這就是通常所說的程序表

在使用者模式下,程序表對普通使用者可見/proc。為你的問題取標題:

  • 程序標識數據是程序 ID(位於 path 中/proc/<process-id>/...)、命令行 ( cmd) 以及可能的其他屬性,具體取決於您對“標識”的定義。
  • 程序狀態數據包括調度數據(schedstatschedstat、程序目前正在等待的內容(wchan)、其環境(environ)等。
  • 過程控制數據可以說是它的憑證(uid_map)和資源限制(limits)。

所以這一切都取決於你如何定義你的術語……但一般來說,關於一個過程的所有數據都可以在/proc.

引用自:https://unix.stackexchange.com/questions/150734