Gestão de Processos e Comutação em SO

Classificado em Computação

Escrito em em português com um tamanho de 4,79 KB

Scheduling de Processos

É característico dos sistemas operativos de tipo 'batch'. Porquê?

Preemptive scheduling - quando o processador pode ser retirado ao processo que o detém; tipicamente, por esgotamento do intervalo de tempo de execução que lhe foi atribuído, ou por necessidade de execução de um processo de prioridade mais elevada. É característico dos sistemas operativos de tipo interativo. Porquê? Que política de 'scheduling' deverá existir nos sistemas operativos de tempo real? Porquê?

Comutação de Processos

Os processadores atuais têm basicamente dois níveis de funcionamento:

  • Nível supervisor - todo o conjunto de instruções do processador (instruction set) pode ser executado; trata-se de um modo de funcionamento privilegiado, reservado para o sistema operativo;
  • Nível utilizador - só uma parte do conjunto de instruções do processador pode ser executada; estão excluídas as instruções de entrada-saída e quase todas as instruções que permitem modificar o conteúdo dos registos da unidade de controlo; constitui o modo normal de funcionamento.

A passagem do nível supervisor para o nível utilizador efetua-se por alteração de um bit do 'program status word'. Por razões de segurança, contudo, não há instruções que possibilitem diretamente a passagem inversa. Ela só é realizada quando o processador processa uma exceção. Uma exceção é, no fundo, algo que interrompe a normal execução de instruções. Pode ser provocada por:

  • um dispositivo externo (interrupção);
  • a execução de uma instrução ilegal, ou que conduz a um erro (divisão por zero, por ex.);
  • a execução de uma instrução trap (interrupção por 'software').

Assim, para que o sistema operativo, ao nível do kernel, funcione no modo privilegiado, com total acesso a toda a funcionalidade do processador, as chamadas ao sistema associadas, quando não despoletadas pelo próprio 'hardware', são implementadas a partir de instruções trap. Cria-se, portanto, um ambiente operacional uniforme, em que todo o processamento pode ser encarado como o serviço de exceções. Nesta perspectiva, a comutação de processos pode ser visualizada globalmente como uma vulgar rotina de serviço à exceção, apresentando, porém, uma característica peculiar que a distingue de todas as outras: normalmente, a instrução que vai ser executada, após o serviço da exceção, é diferente daquela cujo endereço foi salvaguardado ao dar-se início ao processamento da exceção.

Processamento de uma Exceção Genérica

  1. Salvaguarda do PC e do PSW (do processo no estado RUN) no 'stack' de sistema
  2. Carga no PC do endereço da rotina de serviço à exceção
  3. Salvaguarda do conteúdo dos registos internos do processador que vão ser usados
  4. Processamento da exceção
  5. Restauro do conteúdo dos registos internos do processador que foram usados
  6. Restauro do PSW e do PC (do processo no estado RUN) a partir do 'stack' de sistema

Comutação Propriamente Dita

  1. Salvaguarda da caracterização do espaço de endereçamento atual e dos contextos do processador e de I/O na entrada referente ao processo da PCT
  2. Atualização do estado do processo e de outra informação associada na entrada correspondente da PCT (timer run-out -> READY-TO-RUN; sleep -> BLOCKED; exit / abort -> TERMINATED)
  3. Seleção do próximo processo para execução da fila de espera READY-TO-RUN, usando um algoritmo específico de 'scheduling'
  4. Colocação no estado RUN do processo agendado para execução e modificação de informação associada por atualização da entrada correspondente da PCT
  5. Restauro da caracterização do espaço de endereçamento atual e dos contextos do processador e de I/O por transferência da entrada referente ao processo da PCT

Comunicação entre Processos

Num ambiente multiprogramado, os processos que coexistem podem ter comportamentos diversos em termos de interação:

  • Processos independentes - são processos que são criados, têm o seu 'tempo de vida' e terminam sem interagirem de um modo explícito; a interação que ocorre é implícita e tem origem na sua competição pelos recursos do sistema computacional; exemplos de processos deste tipo são os processos lançados pelos diferentes utilizadores num

Entradas relacionadas: