我无法理解PID的内核表示

时间:2012-01-16 01:07:29

标签: c linux kernel

Linux内核使用struct pid在内核空间中表示PID .C代码如下。

struct pid
{
atomic_t count;
/* lists of tasks that use this pid */
struct hlist_head tasks[PIDTYPE_MAX];
int level;
struct upid numbers[1];
};

我无法理解为什么成员任务可以表示“任务列表”。因为task_struct是任务的内核内部表示,而一个任务只使用一个task_struct。为什么可以有多个任务共享一个“struct pid” “?

1 个答案:

答案 0 :(得分:5)

因为多个任务可以属于同一个过程。例如,考虑使用像NPTL这样的1对1线程库的多线程进程。它有一个进程ID,是一个进程,但由内核调度的多个实体组成。