我试图更好地理解内核如何实现 pid namespace 。正在使用的基本结构之一是struct pid
:
struct pid {
atomic_t count;
unsigned int level;
/* lists of tasks that use this pid */
struct hlist_head tasks[PIDTYPE_MAX];
struct rcu_head rcu;
struct upid numbers[1]; }
现在,据我了解,数字数组会跟踪不同 pid 命名空间中的进程不同的 pid。
我不明白的是tasks
会员的目的。它在这里说:(LWN):
.." 该结构包含 ID 值,具有此 ID 的任务列表.."
所以我从中了解到,相同的pid在几个 proccess/tasks 之间共享。现在,不同的进程/线程可以共享相同的 tpid/gpid 但不能共享相同的 pid!那么为什么会有具有相同 PID 的任务列表呢?我错过了什么?
谢谢