Juliana Jenny Kolb
Sistemas Operacionais – Gerência do Processador
O gerenciamento do processador surgiu com os sistemas multiprogramáveis, onde vários processos estão residindo na memória principal, compartilhando o uso da CPU.
Funções Básicas da Gerência do Processados
- Manter o processador ocupado a maior parte do tempo;
- Balancear o uso da CPU entre os processos;
- Privilegiar o uso da aplicações críticas;
- Maximizar o throughput (taxa em que os dados são transmitidos) do sistema;
- Oferecer tempos de respostas razoáveis aos usuários.
*processo fica em espera/bloqueado quando necessita aguardar um recurso externo.
Escalonador (Scheduler)
Escalonador é a rotina do SO responsável por implementar os critérios da política de escalonamento. Todo compartilhamento de uso da CPU é dependente dessa rotina.
Dispatcher
Rotina do SO responsável pela troca de contextos dos processos. O período de tempo gasto na troca do processo por outro chama-se latência do dispatcher.
Critérios de Escalonamento
São implementadas de acordo com as características de cada SO.
Exemplos:
- Tempo Compartilhado (Time Sharing): todos os processos são tratados de forma igual.
- Tempo Real (Real Time): a execução de processos críticos é priorizado em detrimento de outros processos.
Principais critérios considerados em uma política de escalonamento:
- Utilização do processador: maximização do uso do processador;
- Throughput: número de processos executados em determinado intervalo de tempo;
- Tempo de Processador (CPU): tempo que um processo leva no estado de execução;
- Tempo de Espera: tempo total de um processo na fila de pronto;
- Tempo de Turnaround: tempo de um processo desde sua criação até seu término (alocação de memória, fila de pronto (tempo de espera), tempo de CPU, e na fila de espera);
- Tempo de Resposta: tempo decorrido entre uma requisição ao sistema e o instante da resposta. Mais limitada pela velocidade dos dispositivos de E/S do que pela velocidade do processamento.
As políticas de escalonamento visam:
- Maximizar utilização do processador e throughput;
- Diminuir os tempos de turnaround, espera e resposta.
*Quando um processo nunca é executado, pois os de maior prioridade sempre o impedem, essa situação é chamada de starvation.
Tipos de Escalonamento
- Não-Preemptivo: nenhum evento externo pode ocasionar a perda do processador. O evento sairá de execução apenas quando no:
- Término de sua execução;
- Instrução do próprio código, mudando seu estado para “espera” ou “bloqueado”.
- Preemptivo: o SO pode interromper um processo em execução, passando para o estado de “pronto”, alocando outro processo para o uso da CPU.
Algoritmos de Escalonamento
- Não-Preemptivos:
- FIFO ou FCFS: primeiro processo na fila de pronto, será o primeiro a ser escalonado/executado.
- Desvantagens: impossibilidade de prever quando o processo terá sua execução iniciada;
- SJF: seleciona o processo que tiver menor tempo de processador para processar.
- Cooperativo: aumentam o grau de multiprogramação em políticas de escalonamento não-preemptiva, como o FIFO e o SJF. O processo em execução pode voluntariamente liberar o processador retornando a fila de pronto.
- FIFO ou FCFS: primeiro processo na fila de pronto, será o primeiro a ser escalonado/executado.
- Preemptivos:
- SRT: versão preemptiva do SJF, selecionando os processos de menor tempo de processador.
- Round Robin: semelhante ao FIFO. Trabalha com conceito de fatia de tempo (time-slice) ou quantum de uso do processador.
- Prioridade: baseado em um valor associado a cada processo.
- O processo com maior prioridade são escalonados. Os processos com mesma prioridade utilizam critério FIFO;
- Preempção implementada por interrupção de clock;
- Pode gerar starvation;
- Técnica de aging: incremento gradual de prioridade nos processos há tempo na fila de pronto.
- Circular por Prioridade: baseado nos conceitos de fatia de tempo e prioridade de execução.
- Múltiplas Filas: implementa diversas filas de processo em estado de “pronto”. O SO apenas poderá escalonar processos de determinada fila, se todas as outras filas de maior prioridade estiverem vazias.
- Cada fila possui prioridades específicas:
- importância para a aplicação;
- tipo de processamento;
- área de memória necessária.
- Cada fila possui prioridades específicas: