Где находится плата на Linux

10

Печатная плата или блок управления процессом , определяется как это в Википедии

Блок управления процессом (PCB, также называемый блоком управления задачами, [1] Task Struct или Switchframe) - это структура данных в ядре операционной системы, содержащая информацию, необходимую для управления конкретным процессом. PCB - это «проявление процесса в операционной системе»

и его долг:

Process identification data
Processor state data
Process control data

Итак, где можно найти печатную плату процесса?

Мохаммед Реза Резвани
источник
Также см. Блок управления процессом в Linux по переполнению стека.

Ответы:

15

В ядре Linux каждый процесс представлен task_structв виде двусвязного списка, заголовок которого init_task(pid 0, а не pid 1). Это широко известно как таблица процессов .

В режиме пользователя таблица процессов видна обычным пользователям в /proc. Принимая заголовки для вашего вопроса:

  • Идентификационные данные процесса - это идентификатор процесса (который находится в пути /proc/<process-id>/...), командная строка ( cmd) и, возможно, другие атрибуты, в зависимости от вашего определения «идентификация».

  • Данные состояния процесса включает в себя данные планирования ( sched, statи schedstat), то , что процесс в настоящее время ожидания на ( wchan), его окружение ( environ) и т.д.

  • Можно сказать, что данными управления процессом являются его учетные данные ( uid_map) и ограничения ресурсов ( limits).

Так что все зависит от того, как вы определяете свои термины ... но в целом все данные о процессе можно найти в /proc.

Flup
источник
«глава которого init_task(pid 0, а не pid 1)» Нет такой вещи как init_task. Это initи его pid 1, а не 0 (подтверждается через pidof init).
AleksandrH
1
@AleksandrH init_task - это структура ядра, а не процесс. Это указывает на пустую задачу, которая внутренне представлена ​​pid 0. init_task и init - это совершенно разные вещи.
Flup
И все pidже только для процессов ...
АлександрH
1
@AleksandrH Прочитайте init / init_task.c в дереве исходных кодов ядра ( github.com/torvalds/linux/blob/master/init/init_task.c ).
Flup