Gerenciamento de Processos em Sistemas Operacionais

Computação5,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.

Baixar

PDF Word HTML