Pular para o conteúdo principal

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:

  1. Sinais: kill, SIGTERM, SIGKILL
  2. Pipes: | (linha de comando)
  3. Sockets: Comunicação de rede
  4. Arquivos compartilhados: Memória compartilhada
  5. 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