Capítulo 2.5 - Gerenciamento de Processos
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Compreender como o Linux gerencia processos
- Explicar os estados dos processos
- Entender o escalonamento (scheduling)
- Identificar prioridades e valores nice
O que é um Processo?
Um processo é uma instância de um programa em execução. Cada processo possui:
- Um PID (Process ID) único
- Um PPID (Parent Process ID)
- Um espaço de memória próprio
- Arquivos abertos
- Recursos do sistema
Estados dos Processos
Um processo pode estar em diferentes estados:
Estados:
- Running (R): Em execução ou pronto
- Sleeping (S): Aguardando um evento
- Stopped (T): Suspenso (Ctrl+Z)
- Zombie (Z): Finalizado mas não limpo
- Uninterruptible (D): Aguardando I/O de disco
Escalonamento de Processos
O scheduler do Linux (CFS - Completely Fair Scheduler) decide qual processo executar:
Critérios de escalonamento:
- Prioridade (nice value)
- Tempo de CPU utilizado
- Tempo de espera
- Afinidade de CPU
Prioridades e Nice Values
A prioridade de um processo determina seu acesso à CPU:
Nice values:
- -20 a +19 (quanto menor, mais prioritário)
- 0: Prioridade padrão
- -20: Prioridade alta (apenas root)
- +19: Prioridade muito baixa
# Ver a prioridade
ps -o pid,ni,comm
# Alterar a prioridade ao iniciar
nice -n 10 comando
# Alterar a prioridade de um processo existente
renice 10 PID
# Processo em tempo real (root)
chrt -f 50 comando
Hierarquia de Processos
Os processos formam uma hierarquia (árvore):
Características:
- Processo pai pode criar filhos (fork)
- Se o pai morre, os filhos se tornam órfãos (adotados pelo init)
- Processo zombie se o pai não coleta o status
Comandos de Gerenciamento
# Ver os processos
ps aux
top
htop
# Matar um processo
kill PID
kill -9 PID # Forçar
killall nome_processo
# Suspender/Retomar
kill -STOP PID
kill -CONT PID
# Ver a árvore de processos
pstree
ps auxf
Comunicação Entre Processos
Os processos podem se comunicar via:
- Sinais: kill, SIGTERM, SIGKILL
- Pipes:
|(linha de comando) - Sockets: Comunicação de rede
- Arquivos compartilhados: Memória compartilhada
- Message queues: IPC System V
Resumo
Neste capítulo, você aprendeu:
Processo: Instância de um programa em execução
Estados: Running, Sleeping, Stopped, Zombie
Scheduler: CFS agenda a execução dos processos
Prioridades: Nice values de -20 a +19
Hierarquia: Árvore com init como raiz
Gerenciamento: ps, top, kill, nice, renice
Próximos Passos
Capítulo 2.6: Processos Init e systemd
Capítulo 2.7: Serviços e daemons
Capítulo criado em: Dezembro 2024