Linux上的PCB在哪里

Moh*_*ani 12 linux cpu process

PCB或过程控制块,在维基百科上是这样定义的

进程控制块(PCB,也称为任务控制块,[1] 任务结构或切换帧)是操作系统内核中的一种数据结构,包含管理特定进程所需的信息。PCB是“一个进程在操作系统中的体现

它的职责是:

Process identification data
Processor state data
Process control data
Run Code Online (Sandbox Code Playgroud)

那么一个工艺的PCB在哪里可以找到呢?

Flu*_*lup 18

在Linux内核中,每个进程都由一个task_struct双向链表中的a表示,其头部为init_task(pid 0,而不是pid 1)。这就是通常所说的进程表

在用户模式下,进程表对普通用户是可见的/proc。为你的问题取标题:

  • 进程标识数据是进程 ID(在路径中/proc/<process-id>/...)、命令行 ( cmd) 和可能的其他属性,具体取决于您对“标识”的定义。

  • 进程状态数据包括调度数据(schedstatschedstat)、进程当前正在等待什么(wchan)、它的环境(environ)等。

  • 过程控制数据可以说是其凭据 ( uid_map) 和资源限制 ( limits)。

所以这完全取决于你如何定义你的术语......但一般来说,关于一个过程的所有数据都可以在/proc.

  • @AleksandrH 在内核源代码树 (https://github.com/torvalds/linux/blob/master/init/init_task.c) 中读取 init/init_task.c。 (2认同)