PCB 或过程控制块,在维基百科上是这样定义的
进程控制块(PCB,也称为任务控制块、[1] 任务结构或 Switchframe)是操作系统内核中的一个数据结构,包含管理特定进程所需的信息。 PCB是“操作系统中进程的表现形式
其职责是:
Process identification data
Processor state data
Process control data
那么一个工艺的PCB在哪里可以找到呢?
答案1
在Linux内核中,每个进程都由一个task_struct
在一个双向链表中,其头是init_task
(pid 0,不是 pid 1)。这通常被称为工艺表。
在用户模式下,进程表对普通用户可见/proc
。获取您问题的标题:
处理识别数据是进程 ID(位于 路径 中
/proc/<process-id>/...
)、命令行 (cmd
),以及可能的其他属性,具体取决于您对“标识”的定义。过程状态数据包括调度数据(
sched
、stat
和schedstat
)、进程当前正在等待什么(wchan
)、其环境(environ
)等。过程控制数据可以说是它的凭证(
uid_map
)和资源限制(limits
)。
因此,这完全取决于您如何定义术语...但一般来说,有关流程的所有数据都可以在 中找到/proc
。
答案2
linux中的PCB是一部分线程信息结构体
struct thread_info {
struct pcb_struct pcb; /* palcode state */
struct task_struct *task; /* main task structure */
unsigned int flags; /* low level flags */
unsigned int ieee_state; /* see fpu.h */
mm_segment_t addr_limit; /* thread address space */
unsigned cpu; /* current CPU */
int preempt_count; /* 0 => preemptable, <0 => BUG */
unsigned int status; /* thread-synchronous flags */
int bpt_nsaved;
unsigned long bpt_addr[2]; /* breakpoint handling */
unsigned int bpt_insn[2];};
struct pcb_struct {
unsigned long ksp; - Kernel Stack Pointer
unsigned long usp; - User stack Pointer
unsigned long ptbr; - Page table address
unsigned int pcc;
unsigned int asn;
unsigned long unique;
unsigned long flags;
unsigned long res1, res2;};