Gerenciamento de Processos em Sistemas Operacionais
Conceito de Processo
Um Sistema Operacional (SO) executa uma variedade de programas:
- Sistemas em batch (jobs)
- Sistemas de tempo compartilhado (programas de usuário ou tarefas)
Os termos tarefa, job e processo são frequentemente usados como sinônimos.
Processo: Um programa em execução, cuja execução deve ser sequencial.
Um processo inclui:
- Contador de programa
- Pilha
- Seção de dados
Diagrama de Estados de um Processo
À medida que o programa executa, seu estado muda:
- Novo: O processo está sendo criado.
- Em Execução: Instruções estão sendo executadas.
- Em Espera (Bloqueado): O processo espera por um evento (ex: conclusão de I/O).
- Pronto: O processo está esperando para ser atribuído a um processador (CPU).
- Encerrado: O processo terminou sua execução.
Bloco de Controle de Processos (PCB)
Informações associadas a cada processo:
- Estado do processo
- Contador de Programa
- Registradores da CPU
- Informações de escalonamento da CPU
- Informações de gerenciamento de memória
- Informações de contabilidade
- Informações de status de I/O
Filas de Escalonamento de Processos
- Fila de Jobs: Conjunto de todos os processos do sistema.
- Fila de Processos Prontos: Conjunto de todos os processos residindo na memória, prontos e esperando para serem executados.
- Filas de Dispositivos: Processos esperando por um dispositivo de I/O.
O processo migra entre as diversas filas durante sua execução.
Escalonadores (Schedulers)
- Escalonador de Longo Prazo (Escalonador de Jobs): Seleciona quais processos devem ser levados para a memória, na fila de processos prontos.
- Invocado menos frequentemente (segundos, minutos), portanto, pode ser mais lento.
- Controla o grau de multiprogramação.
- Escalonador de Curto Prazo (Escalonador de CPU): Seleciona qual processo deve ser executado e alocado à CPU.
- Invocado frequentemente (milissegundos), portanto, deve ser rápido.
Pode ser introduzido um Escalonador Intermediário, responsável por reduzir o grau de multiprogramação (inserção e remoção do processo na memória - swapping).
Classificação de Processos
Processos podem ser descritos como:
- Limitados por I/O: Gastam mais tempo realizando I/O do que computação.
- Limitados por CPU: Gastam mais tempo realizando computação.
Troca de Contexto (Context Switching)
Quando a CPU recebe um novo processo, o estado do processo anterior deve ser salvo (no PCB) e o estado do novo processo carregado.
O tempo necessário para a troca de contexto é um overhead (gasto extra de tempo), já que nenhum trabalho útil é realizado durante esse período.
O tempo despendido depende do suporte do hardware.
Criação de Processos
Processos pais podem criar processos filhos, formando uma árvore de processos.
Compartilhamento de Recursos
- Pais e filhos compartilham todos os recursos.
- Filhos compartilham parte dos recursos do pai.
- Pais e filhos não compartilham recursos.
Execução
- Pais e filhos executam concorrentemente.
- Pais esperam até que os filhos terminem.
Espaço de Endereçamento
- Filho é uma duplicata do pai.
- Filho tem um novo programa carregado nele.
Exemplo no Unix
Cada processo é identificado por um Identificador de Processo (PID).
- Um novo processo é criado pela chamada ao sistema
fork(). - A chamada de sistema
exec()pode ser usada em seguida para carregar e executar um novo programa.
Término do Processo
O processo executa a última instrução e pede ao SO que o exclua (chamada exit()).
O processo filho pode retornar dados ao pai (via wait()).
Os recursos do processo são liberados pelo SO.
O Processo Pai pode Terminar a Execução do Filho (Abort)
Motivos comuns:
- O filho excedeu o uso dos recursos alocados.
- A tarefa atribuída ao filho não é mais exigida.
- O pai está saindo (terminação em cascata).
Processos Cooperativos
- Um processo é independente se não puder afetar ou ser afetado por outros processos.
- Processos cooperativos podem afetar ou ser afetados por outros processos.
Vantagens de Processos Cooperativos
- Compartilhamento de informações
- Maior velocidade de execução
- Modularidade
- Praticidade (execução de várias tarefas em paralelo)
Problema do Produtor-Consumidor
Este é um paradigma fundamental para processos cooperativos: o processo produtor gera informação que é consumida por um processo consumidor.