SOP - TADS Escalonamento de Processos Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Cronograma Conceito de Escalonamento Comportamentos dos Processos Categoria dos algoritmos Objetivos do algoritmo de escalonamento Algoritmos de escalonamento 1
Conceito de Escalonamento Sistemas multiprogramados: Podem ter mais de um processo em estado de pronto Requisito básico: decidir qual o próximo processo a executar e por quanto tempo O componente do SO que faz isso é o escalonador (scheduler) Implementa um algoritmo de escalonamento A diferença entre os algoritmos se dá nos objetivos O que eles devem priorizar? Todos visam usar a CPU de modo eficiente Chaveamentos de processos é muito custoso» Salvar, Estado atual do processo, Registradores, Mapa de memória, selecionar novo processo Visão dos processos: Comportamento dos Processos [1/4] Em geral, processos alternam ciclos de CPU com ciclos de E/S Processo executa várias instruções de máquina e executa uma chamada de sistema solicitando um serviço do SO Ex. ler um arquivo ou escrever nele... Existem duas grandes classes de processos: Orientados a CPU (CPU-Bound) Orientados a E/S (IO-Bound) Também existem processos que equilibram 2
Comportamento dos Processos [2/4] (a) Um processo orientado a CPU (b) Um processo orientado a E/S Comportamento dos Processos [3/4] Quando escalonar Situações em que o escalonador é invocado: Na criação de um processo Executa pai ou filho? No encerramento de um processo Outro processo deve ser escolhido Quando um processo bloqueia Qual dos prontos deve ser escolhido O motivo do bloqueio pode influenciar Quando ocorre um interrupção de E/S O processo bloqueado fica pronto para execução Quando ocorre interrupção de relógio Escalonamento preemptivo» Execução por tempo máximo determinado 3
Comportamento dos Processos [4/4] Escalonamento não preemptivo e preemptivo Não preemptivo: Processo só para de executar na CPU se quiser Invocação de uma chamada de sistema Liberação voluntária da CPU Preemptivo Processo pode perder a CPU mesmo contra a sua vontade Preempção por tempo (mais comum) Preempção por prioridade Chegada de um processo mais prioritário As possibilidades do não preemptivo também se enquadram Categorias de Algoritmos Três categorias básicas para escalonamento, distinguem-se pelo foco do sistema: Lote (batch) Sem usuários interativos Ciclos longos aceitáveis menos preempções Interativo Com usuários interativos Ciclos curtos para que todos os processos progridam Nenhum deve sugar a CPU por tempo indeterminado Tempo real Processos com requisitos temporais específicos 4
Objetivos do algoritmo de escalonamento Que critérios podem ser usados para avaliar um algoritmo de escalonamento? Vazão (throughput): Número de Jobs processados por hora Tempo de retorno: Tempo médio do momento que um job foi submetido até o tempo que foi terminado Sistemas em lote Tempo de resposta: Tempo entre emissão de um comando e obtenção de um resultado Sistemas interativos Proporcionalidade: para atividades complexas aceita-se demora, para outras, mais simples, não Algoritmos de escalonamento [1/12] Escalonamento para sistemas em lote Primeiro a chegar, primeiro a ser servido (FCFS) Job mais curto primeiro (SJF) Próximo de menor tempo restante Escalonamento para sistemas interativos Alternância circular (round-robin) Por Prioridades Filas Múltiplas Fração Justa 5
Algoritmos de escalonamento [2/12] FCFS [1/2] Processos são atendidos por ordem de chegada Primeiro a chegar, primeiro a ser servido First come, first served (FCFS) O processo escalonado usa a CPU por quanto tempo quiser não preemptivo Até encerrar, bloquear, ou entregar o controle Simples de implementar Não diferencia processos orientados a CPU e orientados a E/S Isso pode prejudicar os de E/S Exemplo - FCFS 35 30 25 20 15 10 5 0 Processo Tempo A 10 B 15 C 5 D 3 Ordem de chegada: A-B-C-D no instante 0 Diagrama temporal da execução: A B C D Vazão? Tempo de Retorno? 6
Algoritmos de escalonamento [3/12] FCFS [2/2] Imagine a situação: Um processo CPU-bound que executa 1 segundo por vez (P1) Muitos processos orientados a E/S que usem pouco tempo de CPU, mas que precisem realizar cada um mil leituras de disco (P2) Depois que P1 executa por 1 segundo, bloqueia a espera de E/S P2 podem executar e iniciam leituras de disco P1 obtém E/S (desbloqueia), executa por mais 1 segundo Resultado: Cada P2 lê um bloco por segundo e, demorará mil segundos para terminar Preempção por tempo resolveria, a cada dez milisegundos uma leitura 10 segundos para as mil leituras Algoritmos de escalonamento [4/12] SJF (Short Job First) Os processos mais curtos são atendidos primeiro Mais curto menor tempo de CPU Não preemptivo Menor tempo médio de retorno Premissas: Todas as tarefas devem estar disponíveis simultaneamente A duração dos ciclos de CPU deve ser conhecida 7
Exemplo - SJF 35 30 25 20 15 10 5 0 Processo Tempo A 10 B 15 C 5 D 3 Ordem de chegada: A-B-C-D no instante 0 Diagrama temporal da execução: A B C D Vazão? Tempo de Retorno? Algoritmos de escalonamento [5/12] Próximo de menor tempo restante Shortest remaining time next (SRTN) Variante preemptiva do SJF Quando chega um novo processo seu tempo é comparado com o tempo restante do processo que está executando Se for menor, o novo processo sofre preempção e o novo processo é escalonado em seu lugar Garante bom desempenho para jobs curtos Também requer tempos conhecidos de CPU 8
Exemplo - SRTN 35 30 25 20 15 10 5 0 Processo Tempo de execução Instante de Chegada A 10 0 B 15 5 C 5 10 D 3 15 Ordem de chegada: A-B-C-D Diagrama temporal da execução: A B C D Vazão? Tempo de Retorno? Algoritmos de escalonamento [6/12] Alternância circular (round-robin) [1/2] Cada processo que ganha a CPU executa por um determinado tempo (quantum) Se ele não liberar a CPU ao final do quantum ele perde o processador e volta para a fila de prontos Algoritmo preemptivo Exemplo: B usa todo seu quantum 9
Algoritmos de escalonamento [7/12] Alternância circular (round-robin) [2/2] Determinando o quantum A decisão sobre o tamanho é a mais importante neste algoritmo Quanto menor o quantum, maior o overhead Tempo para chaveamento de contexto, se aproxima do tempo de execução Quanto maior o quantum, pior o tempo de resposta Ocorrem menos preempções Processo demora mais a ser escalonado Prejudica processos orientados a E/S Na prática, utiliza-se entre 20 e 100 ms Exemplo Round-Robin Processo Tempo de execução A 10 B 15 C 5 D 3 Ordem de chegada: A-B-C-D quantum = 5 Diagrama temporal da execução: Tempo de Retorno? 10
Algoritmos de escalonamento [8/12] Escalonamento por prioridades [1/3] Nem todos os processos têm a mesma prioridade Um antivírus não deve prejudicar a exibição de um vídeo Características Cada processo recebe uma prioridade O processo de maior prioridade executa Para evitar que processos mais prioritários executem indefinidamente, a prioridade pode ser periodicamente reduzida Prioridade preemptiva vs não-preemptiva Preemptiva: Se alguém de maior prioridade chegar Executa Não Preemptiva: Se alguém de maior prioridade chegar Espera Exemplo Por prioridades 35 30 25 20 15 10 5 0 Processo Tempo de execução Prioridade A 10 3 B 15 2 C 5 1 D 3 4 Ordem de chegada: A-B-C-D, no instante 0 Não-preemptiva Considerar menor número maior prioridade Diagrama temporal da execução: A B C D Vazão? Tempo de Retorno? 11
Algoritmos de escalonamento [9/12] Escalonamento por prioridades [2/3] Prioridades podem ser estáticas ou dinâmicas Igual a fração do ultimo quantum usado Ex.: Definir uma prioridade 1/f, onde f é a fração de uso do quantum. Em uma ultima execução um processo utilizou 2ms de um quantum de 100ms, na próxima execução sua prioridade será 50 É comum agrupar os processos em classes de prioridades Prioridade entre as classes Round-robin dentro de cada classe Algoritmos de escalonamento [10/12] Escalonamento por prioridades [3/3] é necessário ajustar dinamicamente as prioridades para que processos nas classes mais baixas não morram por inanição 12
Algoritmos de escalonamento [11/12] Filas Múltiplas Variação do escalonamento por prioridades Cada classe de prioridade tem um quantum Classes mais prioritárias têm quantum menor Se o quantum acaba antes que o processo consiga concluir o ciclo de CPU, ele muda a prioridade Reduz a quantidade de chaveamento de contexto para processos orientados a CPU Processos interativos têm alta prioridade Usuários de processos em lote descobriram que poderiam acelerar seus processos usando o terminal (tem alta prioridade) Algoritmos de escalonamento [12/12] Escalonamento por fração justa Fair share scheduling Os algoritmos anteriores tratam todos os processos de forma igual Usuários com muitos processos têm mais tempo de CPU que usuários com poucos processos A ideia é atribuir uma fração da CPU para cada usuário O escalonador escolhe o processo a executar de modo a respeitar estas frações Outras possibilidades existem, dependem da noção de justiça 13
Bibliografia Andrew S. Tanenbaum. Sistemas Operacionais Modernos, 3a Edição. Capítulo 2.Pearson Prentice-Hall, 2009. Carlos A. Maziero: http://dainf.ct.utfpr.edu.br/~maziero/doku.p hp/so:livro_de_sistemas_operacionais Exercício para entrega Escrito no escaninho até 27/09 Considere os seguintes processos e os respectivos tempos de CPU, todos chegando no instante 0, na ordem A-B-C-D-E: Processo Tempo de CPU Prioridade A 10 3 B 1 1 C 2 3 D 1 4 E 5 2 A) Elaborar diagramas temporais usando FCFS, SJF, prioridade não preemptiva (menor valor maior prioridade) e round-robin com quantum = 2. B) Qual o tempo de retorno de cada algoritmo? C) Qual o tempo de espera de cada processo em cada algoritmo? (tempo em que o processo fica em alguma fila de execução) D) Quais algoritmos representam o maior e o menor tempo de espera médio, quais esses tempos? 14