Gerenciamento de Processos em Sistemas Operacionais

Classificado em Computação

Escrito em em português com um tamanho de 5,32 KB

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.

Entradas relacionadas: