Um PCB ou bloco de controle de processo é definido como este na Wikipedia
O Process Control Block (PCB, também chamado Task Control Control Block, [1] Task Struct ou Switchframe) é uma estrutura de dados no kernel do sistema operacional que contém as informações necessárias para gerenciar um processo específico. O PCB é "a manifestação de um processo em um sistema operacional
e seu dever é:
Process identification data
Processor state data
Process control data
Então, onde o PCB de um processo pode ser encontrado?
Respostas:
No kernel do Linux, cada processo é representado por uma
task_struct
em uma lista duplamente vinculada, cujo cabeçalho éinit_task
(pid 0, não pid 1). Isso é conhecido como tabela de processo .No modo de usuário, a tabela de processos é visível para usuários normais em
/proc
. Tomando os títulos da sua pergunta:Os dados de identificação do processo são o ID do processo (que está no caminho
/proc/<process-id>/...
), a linha de comando (cmd
) e possivelmente outros atributos, dependendo da sua definição de 'identificação'.Os dados do estado do processo incluem dados de agendamento (
sched
,stat
eschedstat
), o que o processo está aguardando no momento (wchan
), seu ambiente (environ
) etc.Pode-se dizer que os dados de controle de processo são suas credenciais (
uid_map
) e limites de recursos (limits
).Portanto, tudo depende de como você define seus termos ... mas, em geral, todos os dados sobre um processo podem ser encontrados
/proc
.fonte
init_task
(pid 0, não pid 1)" Não existe tal coisa comoinit_task
. Éinit
, e seu pid é 1, não 0 (confirmado viapidof init
).pid
é apenas para processos ...