Я не могу понять ядро ​​внутреннего представления PID - PullRequest
2 голосов
/ 16 января 2012

Ядро 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 Ответ

5 голосов
/ 16 января 2012

Потому что более одного задания могут быть частью одного процесса.Рассмотрим, например, многопоточный процесс с использованием потоковой библиотеки 1-к-1, такой как NPTL.Он имеет один идентификатор процесса, является одним процессом, но состоит из нескольких объектов, запланированных ядром.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...