Aula 5: O Que É um Processo? /proc e a Organização da Memória
Um processo é um programa em execução — não o binário no disco, mas sua instância viva com memória, file descriptors e estado. Na NVIDIA, cada aplicação CUDA é um processo com seu próprio contexto de GPU. Quando uma GPU trava, ps aux | grep cuda encontra o PID e /proc/<pid>/maps mostra se a CUDA map
Um processo é como um funcionário realizando uma tarefa: o ficheiro binário é um currículo escrito no papel, mas o processo é o funcionário de verdade, sentado na mesa, usando o computador e se comunicando com outros. /proc é o quadro de gestão que mostra cada funcionário e o que ele está a fazer.
- Processo
- Uma instância em execução de um programa. Cada processo recebe um PID único, espaço de memória separado, file descriptors e estado de CPU. Processos diferentes não compartilham memória diretamente.
- PID (identificador de processo)
- Um número inteiro único que o kernel atribui a cada processo. O PID 1 é sempre o init/systemd. /proc/<pid>/ contém todas as informações sobre um processo.
- PPID (identificador do processo pai)
- O PID do processo pai que criou o processo atual. Todo processo é criado por outro processo (exceto o init). PPID=0 indica que o kernel criou o processo.
- Estado do Processo
- Estado atual de um processo: R (Running/Runnable — em execução), S (Sleeping — esperando I/O), D (Uninterruptible sleep — esperando o kernel), Z (Zombie — terminou mas o pai não fez a limpeza), T (Stopped — parado).
- Sistema de ficheiros /proc
- Um sistema de ficheiros virtual que o kernel gera na memória. Cada /proc/<pid>/ é um diretório que contém informações em tempo real sobre um processo: status, maps, fd, cmdline e mais.