Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com
Escalonamento CPU Um vez escalonado, o processo utiliza o processador, de modo: Não preemptivo (FIFO, SJF, Cooperativo) Término de execução do processo; Execução de uma requisição de entrada/saída ou sincronização; Liberação voluntária do processador a outro processo (yield); Preemptivo (Round robin (circular), Múltiplas filas) Idem ao não preemptivo; Interrupção de relógio; Processo de mais alta prioridade esteja pronto para executar; 2/14
Simples de implementar Fila Funcionamento First In First Out - FIFO Processos que se tornam aptos são inseridos no final da fila; Processo que está no início da fila é o próximo a executar; Processo executa até que: Libere explicitamente o processador; Realize uma chamada de sistema (bloqueado); Termine sua execução. 3/14
Desvantagem: First In First Out - FIFO Prejudica processos I/O bound (uso intensivo de E/S); Tempo médio de espera na fila de execução: Ordem A-B-C-D = (0 + 12 + 20 + 35 ) / 4 = 16.75 u.t. Ordem D-A-B-C = (0 + 5 + 17 + 25 ) / 4 = 11.7 u.t. 4/14
First In First Out - FIFO Exemplo 5/14
First In First Out - FIFO Exemplo 6/14
Shortest Job First Originário do fato que o menor tempo médio é obtido quando se executa primeiro os processos de menor ciclo de processador (I/O bound) Tempo médio (D-B-A-C) : (0 + 5 + 13 + 25)/4 = 10.75 u.t. 7/14
Shortest Job First Algoritmo ótimo, isto é, fornece o menor tempo médio de espera para um conjunto de processos; Processos I/O bound são favorecidos (pouco uso da CPU); Dificuldade é determinar o tempo do próximo ciclo de CPU de cada processo, porém: Prever o futuro com base no passado (execução de job); Análise dos surtos de CPU no histórico do processo 8/14
Shortest Job First Associado com cada processo e seu CPU burst (ciclo de execução). Utiliza dois tipos de esquemas: Não preemptivo um dado processo na CPU não pode ser preemptado até completar seu CPU burst; Preemptivo se um novo processo chega a CPU com um CPU burst menor que o último tempo do que está executando, ele é preemptado. Este esquema é conhecido como Shortest-Remaining-Time-First (SRTF); 9/14
Shortest Job First Exemplo P 2 chegou no 2 e foi executado no 8 = 6 P 3 chegou no 4 e foi executado no 7 = 3 P 4 chegou no 5 e foi executado no 12 = 7 10/14
Shortest Job First Exemplo P 1 chegou no 0, executou 2 e esperou até 11 para ser executado (11-2) P 2 chegou no 2, executou 2 e esperou até 5 para ser executado (5-4) P 3 chegou no 4, executou 1 e não esperou (0) P 4 chegou no 5, esperou até 7 e foi executado (7-5) 11/14
RR - Round Robin Similar ao algoritmo FIFO, porém, é preemptivo; A cada processo é atribuído um intervalo de tempo (quantum), no qual ele é permitido executar; Se no final do quantum o processo não terminou, a CPU sofre uma preempção e outro processo entra para executar; Quando um processo termina o seu quantum, ele é colocado no final da fila. Fila de processos apto (pronto) é uma fila circular 12/14
RR - Round Robin Processo perde o processador quando: Libera explicitamente o processador; Realize uma chamada de sistema (bloqueado); Termina sua execução; Quando sua fatia de tempo é esgotada. Escalonamento do tipo Round Robin é preemptivo. Sem quantum obtém-se o comportamento de um escalonador FIFO; 13/14
RR - Round Robin Problema 1- Dimensionar o quantum Compromisso entre overhead e tempo de resposta em função do número de usuários; Compromisso entre tempo de chaveamento e tempo do ciclo de processador (quantum); Problema 2- Processos I/O bound são prejudicados Esperam da mesma forma que processos CPU bound, porém, muito provavelmente não utilizam todo o seu quantum; Solução: Prioridades 14/14
RR - Round Robin Exemplo RR - Round Robin: quantum =20 15/14
Escalonadores por prioridades Associar prioridades a processos I/O bound para compensar o tempo gasto em estado de espera; Sempre que um processo de maior prioridade que o processo atualmente em execução entrar no estado apto (pronto) deve ocorrer uma preempção; Escalonamento com prioridades é inerente a preempção; Escalonador deve sempre selecionar o processo de mais alta prioridade; 16/14
Prioridade estática: Escalonadores por prioridades Um processo é criado com uma determinada prioridade e esta prioridade é mantida durante todo o tempo de vida do processo Prioridade dinâmica: Prioridade do processo é ajustada de acordo com o estado de execução do processo e/ou do sistema Ex. ajustar a prioridade em função da fração do quantum que foi realmente utilizada pelo processo q = 100 ms Processo A utilizou 2ms nova prioridade = 1/0.02 = 50 Processo B utilizou 50ms nova prioridade = 1/0.5 = 2 17/14
Múltiplas filas Escalonadores por prioridades Múltiplas filas de prontos Cada fila uma prioridade Cada fila pode ter a sua própria política de escalonamento (FIFO, SJF, RR) 18/14
Escalonadores por prioridades A política de escalonamento FIFO com prioridade considera: Quando ocorre a preempção de um processo para execução ele é inserido no início de sua fila de prioridade; Quando um processo bloqueado passa a apto ele é inserido no final da fila de sua prioridade; Quando um processo troca de prioridade ele é inserido no final da fila de sua nova prioridade; Quando um processo em execução passa a vez para um outro processo ele é inserido no final da fila de sua prioridade; 19/14
Escalonadores por prioridades Problemas com prioridades (implementação) Com prioridades um processo de baixa prioridade pode não executar (starvation); Um processo que durante sua execução troca de comportamento (CPU bound a I/O bound) pode ficar mal classificado a nível de prioridades e ser penalizado Solução: Múltiplas filas com realimentação 20/14
Escalonadores por prioridades Múltiplas filas com realimentação Um processo pode se mover entre as filas Forma de implementar aging (envelhecimento) prioridade do processo que fica na fila aumenta à medida que o tempo passa Em função do tempo de uso da CPU a prioridade pode aumentar ou diminuir 21/14
Escalonamento tempo real Exemplo: Escalonamento em UNIX Múltiplas filas com realimentação empregando Round Robin em cada uma das filas; Prioridades são reavaliadas uma vez por segundo em função de: Prioridade atual; Prioridade do usuário; Tempo recente de uso da CPU; Prioridades recebem valores entre 0 e 127 (menor o valor numérico, maior a prioridade): 0-49: processos do kernel; 50-127: processo de usuário; 22/14
Escalonamento tempo real Hard real-time systems - necessita completar uma tarefa crítica dentro de uma determinada quantidade de tempo. Ex: sistemas de controle de sinais de tráfego; controle de trens de alta velocidade; sistemas embarcados em veículos espaciais; sistema de monitoramento de pacientes; Soft real-time computing necessita que um processo crítico receba uma prioridade maior que outros processos. Ex. sistema de reserva de passagens aéreas; sistema de apresentação multimídia; sistema de monitoração de veículos; 23/14
Referências SILBERSCHATZ, A. GALVIN, P. B. GAGNE, G. Sistemas Operacionais com Java. Rio de Janeiro : Elsevier, 2008. TANENBAUM, A. S.; WOODHULL, A. S. Sistemas Operacionais. Porto Alegre: Bookman, 2003. Notas de aula Prof. Dr. Carlos Henrique Neto Lahoz - UNIP. Conteúdo da UNIPVirtual Prof. Dr. Fábio Vieira do Amaral 24/12