Algoritmos de escalonamento
Escalonamento de Processos Sistemas Interativos Algoritmos para Sistemas Interativos: First-Come-First-Served (FIFO) Round-Robin; Prioridade; Múltiplas Filas; Utilizam escalonamento em dois níveis (escalonador da CPU e memória); 2
Escalonamento de Processos Algoritmos de escalonamento podem ser divididos em duas categorias dependendo de como essa interrupção de clock é tratada: Preemptivo: estratégia de suspender o processo sendo executado; Não-preemptivo: estratégia de permitir que o processo sendo executado continue sendo executado até ser bloqueado por alguma razão (semáforos, operações de E/S-interrupção); 3
Escalonamento de Processos Categorias de Ambientes: Sistemas em Batch: usuários não esperam por respostas rápidas; algoritmos preemptivos ou não-preemptivos; Sistemas Interativos: interação constante do usuário; algoritmos preemptivos; Processo interativo espera comando e executa comando; Sistemas em Tempo Real: processos são executados mais rapidamente; tempo é crucial sistemas críticos; 4
Escalonamento de Processos Características de algoritmos de escalonamento: Sistemas em Batch: Taxa de execução (throughput): máximo número de jobs executados por hora; Turnaround time: tempo no qual o processo espera sua resposta (para ser executado); Eficiência: CPU deve estar 100% do tempo ocupada; Sistemas Interativos: Tempo de resposta : tempo esperando respostas; Satisfação do usuários; 5
Escalonamento de Processos Características de algoritmos de escalonamento: Sistemas em Tempo Real: Prevenir perda de dados; Previsibilidade: prevenir perda da qualidade dos serviços oferecidos; 6
Escalonamento de Processos Escalonamento Three-Level (três níveis) Normalmente todos os processos estão na memória principal Suponha: processos na memória principal + processos no disco Chaveamento de processos que estão no disco requer mais tempo 1 ou 2 ordens de grandeza Utilizado em Sistemas em Batch; 7
Escalonamento de Processos Escalonamento Three-Level Subconjunto dos processos Memória Principal (MP); Escalonador se restringe a esses processos; Periodicamente um escalonador da CPU é acionado para remover processos da MP; 8
Escalonamento de Processos Escalonamento Three-Level CPU Escalonador da CPU * Fila de entrada Novo processo Escalonador de Admissão RAM Escalonador Da Memória Disco 9
Escalonamento de Processos Escalonamento Three-Level Escalonador de admissão: processos menores primeiro; processos com menor tempo de acesso à CPU e maior tempo de interação com dispositivos de E/S; Escalonador da Memória: decisões sobre quais processos vão para a MP: A quanto tempo o processo está esperando? Quanto tempo da CPU o processo utilizou? Qual o tamanho do processo? Qual a importância do processo? Escalonador da CPU: seleciona qual o próximo processo a ser executado; 10
First-Come-First-Served (FIFO) Não preemptivo por definição Primeiro processo da fila é o primeiro a ser executado Processos usam a CPU até terminar todo processamento Mesmo com alguma intercalação, processos com menor prioridade podem prejudicar processos com maior prioridade Desvantagem: Ineficiente quando se tem processos que demoram na sua execução 11
Algoritmos de escalonamento First In First Out (FIFO) Constitui-se no esquema mais simples de escalonamento em que os processos são executados do início até o fim, na ordem de chegada. 12
First-Come-First-Served (FIFO) Fila de entrada 3 2 1 CPU 0 Interrupção qualquer (semáforo, E/S)
First-Come-First-Served (FIFO) CPU Fila de entrada 0 3 2 1
Algoritmos de escalonamento Shortest Job First Processo mais curto primeiro Processos menores são executados primeiro. Processos curtos são favorecidos. Processo maiores são prejudicados. Pouco utilizado na prática. Pode ser preemptiva ou não-preemptiva Cada processo é associado ao seu tempo de uso do processador Escalonado o processo com o menor tempo de CPU privilegiam processos menores reduzem o tempo médio de espera na fila de prontos Problema: Como determinar quanto tempo de CPU será necessário?
Algoritmos de escalonamento Shortest Job First Processo mais curto primeiro Exemplo: Processo Tempo de Uso da CPU em ms (milissegundos) Chegada P1 7 0 P2 4 2 P3 1 4 P4 4 5
Shortest-Job-First A política SJF é ótima, minimizando o tempo médio de espera de um conjunto de processos Dificuldade: determinar antecipadamente o tempo de processador de cada processo Na prática, o tempo é estimado, é utilizada uma aproximação
Shortest-Job-First: não preemptivo Processo Tempo de chegada Duração da rajada P 1 0.0 7 P 2 2.0 1 P 3 4.0 4 P 4 5.0 4 SJF (não preemptivo) P 1 P 2 P 3 P 4 0 3 7 8 12 16 18
Shortest-Job-First: preemptivo Processo Tempo de chegada Duração da rajada P 1 0.0 7 terminado P 2 2.0 4 terminado P 3 4.0 1 terminado P 4 5.0 4 terminado SJF (preemptivo) P 1 P 2 P 3 P 2 P 4 P 1 0 2 4 5 7 11 16 19
Shortest-Job-First: preemptivo Processo Tempo de chegada Duração da rajada P 1 0.0 7 P 2 2.0 4 P 3 4.0 1 P 4 5.0 4 SJF (preemptivo) tempo terminado restante: 5 tempo terminado restante: 2 terminado terminado P 1 P 2 P 3 P 2 P 4 P 1 0 2?? 4 5 7 11 16 20
Prioridade A cada processo é atribuída uma prioridade O processo com maior prioridade é atribuído ao processador Pode ser não-preemptiva ou preemptiva não-preemptiva: o processo libera espontaneamente o processador preemptiva : o processo executando é interrompido caso chegue à fila de prontos um processo com maior prioridade 21
Prioridade Atribuição de prioridades estática: o processo tem uma prioridade fixa durante o seu tempo de vida dinâmica: prioridade muda ao longo do tempo de vida do processo, de acordo com o seu comportamento 22
Prioridade Dinâmica Atribuição pode ser ajustada de prioridades de acordo com tipo de processamento realizado normalmente é feita pelo SO a carga do SO pode ser configurada pelo superusuário quando o processo passa do estado de processos de usuário recebem uma prioridade espera para o estado executando ele é máxima de usuário penalizado e sua prioridade é reduzida, usuário processos pode diminuir a prioridade de seus processos ex.: CPU comando bound renice terão do suas Unix prioridades reduzidas a cada passagem para o estado executando I/O bound ficam em estado de espera com freqüência, processos 23 CPU bound não serão prejudicados
Prioridade Dinâmica Atribuição pode ser ajustada de prioridades de acordo com tipo de processamento realizado normalmente é feita pelo SO a carga do SO pode ser configurada pelo superusuário quando o processo passa do estado de processos de usuário recebem uma prioridade espera para o estado executando ele é máxima Estática de usuário penalizado e sua prioridade é reduzida, usuário processos é atribuída pode diminuir quando a prioridade o processo de é seus processos ex.: iniciado CPU comando bound renice terão do suas Unix prioridades reduzidas não é alterada a cada passagem durante a para existência o estado do executando processo I/O bound ficam em estado de espera com aceitáveis freqüência, processos 24 CPU bound não serão prejudicados pode oferecer tempos de resposta
Prioridade Dinâmica Atribuição pode ser ajustada de prioridades de acordo com tipo de processamento realizado normalmente é feita pelo SO a carga do SO pode ser configurada pelo superusuário quando o processo passa do estado de processos Estáticade usuário recebem uma prioridade espera para o estado executando ele é máxima de usuário penalizado é atribuída e sua quando prioridade o processo é reduzida, é usuário processos iniciado pode diminuir a prioridade de seus processos ex.: não CPU é alterada comando bound renice terão durante do suas a Unix prioridades existência do reduzidas processo Observação a cada passagem para o estado executando SO pode associar à alta prioridade um pode oferecer tempos de resposta número escalar pequeno aceitáveis I/O bound ficam em estado de espera com freqüência, 0 significa a processos maior prioridade 25 CPU bound não serão prejudicados
Prioridade Processo A 4 u.t. 3 u.t. 5 u.t. 1u.t. Processo B 4 u.t. 2 u.t. 2 u.t. 3 u.t. 4 8 10 13 16 18 23 26 27 tempo B solicita I/O preempção por B B solicita I/O A solicita I/O B solicita I/O preempção por B B solicita I/O Tempo de CPU (u.t.) Característica do Processo Prioridade Processo A 13 CPU bound 1 menor Processo B 11 I/O bound 0 maior 26
Prioridade Vantagens é possível fazer diferenciação entre processos adaptabilidade (prioridades dinâmicas) Desvantagem starvation: um processo com baixa prioridade pode nunca ser atribuído ao processador solução: aumentando, em intervalos regulares, a prioridade dos processos que estão há muito tempo esperando 27
Algoritmos de escalonamento Round Robin Alternância Circular Processos são executados na ordem FIFO, mas com um intervalo chamado quantum. Ao final de seu quantum, se o processo ainda estiver em execução, é interrompido (preempção) e voltará para o estado de pronto (final da fila) e o próximo processo da fila será alocado para ocupar a CPU. Se o processo terminar antes de finalizar o seu quantum, a CPU será liberada.
Algoritmos de escalonamento Round Robin Alternância Circular Exemplo: quantum de 20 ms Processo Tempo de Uso da CPU em ms (milissegundos) P1 50 P2 14 P3 65 P4 21
Round-Robin Bom para tempo compartilhado Similar a FIFO + tempo limite para execução (time-slice ou quantum) terminado o quantum, o processo é devolvido (preempção) para o final da fila de prontos processos não monopolizam a CPU quantum entre 100 a 300 ms 30
Round-Robin Processo A 5 u.t. 2 u.t. 5 u.t. 3 u.t. Processo B 4 u.t. 2 u.t. 2 u.t. 5 9 11 13 16 21 23 26 27 tempo termina quantum de A B solicita I/O A solicita I/O B solicita I/O termina quantum de A B solicita I/O A solicita I/O Tempo de CPU (u.t.) Característica do Processo Processo A 15 CPU bound Processo B 8 I/O bound 31
Round-Robin Vantagem do escalonamento Robin Round simplicidade Tamanho da fatia de tempo é crucial no escalonamento circular pequena: tempo de troca de contexto torna-se significativo grande: aumenta o tempo de resposta dos processos no final da fila de prontos 32
Round-Robin Se existem n processos na fila de prontos Se quantum = q cada processo tem 1/n do tempo de CPU em fatias de no máximo q unidades de tempo cada Nenhum processo espera por mais de (n-1) q unidades de tempo para ser atendido 33
Round-Robin Desempenho quantum = muito grande FIFO quantum = muito pequeno q deve ser grande comparado a mudança de contexto, caso contrário, o overhead é muito elevado 34
Round-Robin Processo Tempo de execução P 1 53 P 2 17 P 3 68 P 4 24 Diagrama de Gantt (quantum = 20 u.t.) P 1 P 2 P 3 P 4 P 1 P 3 P 4 P 1 P 3 P 3 0 20 37 57 77 97 117 121 134 154 162 Tipicamente, temos turnaround time médio maior que 35 na SJF, mais em compensação melhor resposta
Como um pequeno quantum de tempo aumenta as mudanças de contexto tamanho do processo: 10 u.t. quantum mudanças de contexto 0 10 12 0 6 1 0 6 10 1 9 0 1 2 3 4 5 6 7 8 9 1036
Múltiplas Filas Política do tipo preemptiva Prioridades são atribuídas às classes de processos Processos das classes de maior prioridade recebem o processador Processos podem migrar entre classes de acordo com seu comportamento Vantagem: adaptabilidade de acordo com o comportamento do processo 37
Múltiplas Filas Processos são classificados em função do tipo de processamento Cada grupo formado fila associada Fila de prontos associada a cada grupo permite aplicação de tipos de escalonamento diferentes 38
Múltiplas Filas Cada fila possui uma prioridade SO só vai escalonar processos em uma fila se todos os processos das filas de maior prioridade estiverem vazias 39
Múltiplas Filas processos interativos p = 3 p = 2 processos em batch p = 1 p = 0 40
sistema Exemplo mais prioritário algoritmo de escalonamento por prioridades interativo prioridade intermediária escalonamento Round-Robin batch menor prioridade usa Round-Robin ou FCFS Maior Prioridade Fila de Processos do Sistema Fila de Processos Interativos Fila de Processos Batch Menor Prioridade 41
Múltiplas Filas com Realimentação Escalonamento anterior a classificação dos processos era estática Se processo alterar seu comportamento, o esquema pode falhar (não existe reclassificação) Seria interessante que o SO reconhecesse a alteração de comportamento de um processo ajustasse dinamicamente o seu tipo de escalonamento 42
Múltiplas Filas com Realimentação No escalonamento por múltiplas filas com realimentação (multi-level feed-bak queues) é permitido que os processos sejam movimentados entre as filas ajuste dinâmico (mecanismo adaptativo) processo é direcionado para uma das filas em função de seu comportamento 43
Múltiplas Filas com Realimentação: Funcionamento Criação do processo prioridade mais alta e quantum mais baixo Cada fila pode implementar uma política de escalonamento diferente para chegar a CPU: FIFO com quantum SJF RR 44
Múltiplas Filas com Realimentação: Funcionamento Processo é reescalonado dentro da mesma fila quando processo volta ao estado de pronto sofre preempção por outro processo de uma fila mais prioritária Processo é direcionado para fila de menor prioridade e maior quantum quando processo esgota o seu quantum (sofrendo preempção) 45
Múltiplas Filas com Realimentação: Funcionamento Quanto maior a prioridade menor o quantum Escalonamento de uma fila só acontece depois que todas as outras filas de prioridade mais alta estão vazias Fila de menor prioridade Round-Robin 46
Múltiplas Filas com Realimentação: Características Atende as necessidades de escalonamento de diversos tipos de processos Processos I/O bound bom tempo de resposta: maior prioridade permanecem a maior parte do tempo nas filas de alta prioridade usa pouco a CPU 47
Múltiplas Filas com Realimentação: Características Processos CPU bound com o transcorrer do processamento sua prioridade vai sendo reduzida É um mecanismo complexo e gera overhead, mas os resultados são satisfatórios 48
Múltiplas Filas com Realimentação: Exemplo 1 Maior Prioridade Menor quantum Fila 1 (escalonamento FIFO) preempção por término de quantum Fila 2 (escalonamento FIFO) preempção por término de quantum Fila 3 (escalonamento FIFO) preempção por término de quantum... Menor Prioridade Fila m (Round-Robin) 49 Maior quantum
Múltiplas Filas com Realimentação: Exemplo 2 quantum = 8 quantum = 16 FCFS 50
Concorrência Os processo concorrem pelos recursos do sistema. Exemplo: fila de impressão
Deadlock Acontece quando dois ou mais processos estão disputando recursos e nenhum deles consegue seguir a execução porque ambos estão bloqueando uns aos outros. Exemplo: Dois processos querem gravar um CD. Processo P1 aloca o Gravador. Processo P2 aloca o HD. P1 espera P2 terminar de usar o HD. P2 espera P1 terminar de usar o gravador.
Exclusão Mútua Evitar que mais de um processo utilize um recurso compartilhado. Condições para exclusão mútua: 1. Dois processos não podem estar dentro de suas regiões críticas ao mesmo tempo, compartilhando o mesmo recurso. 2. A exclusão mútua dos processos deve ser independente da velocidade dos processos ou o número de CPUs. 3. Um processo executado fora da região crítica não pode bloquear outros processos. 4. Nenhum processo esperará para sempre para entrar em sua região crítica.
Exclusão mútua com espera ocupada Se um processo está acessando uma região crítica, ou seja, esta em execução, todos os outros processos que precisarem acessar esta região deverão entrar em estado de espera ocupada. Esta espera se refere apenas à região crítica. Desabilitar interrupções. Variável Lock. Variável Turn. Peterson. Instrução TSL.
Desabilitar interrupções Desabilitar todas as interrupções, inclusive as do sistema operacional, quando uma região crítica está sendo acessada, garantindo que o processo em execução termine de executar a região crítica sem a intervenção de outros processos.
Variável Lock Esta solução utiliza um algoritmo em que cada recurso compartilhado possui uma variável global chamada lock, com valor inicial igual a 0. O algoritmo controla o acesso à região crítica por meio da variável lock. Ao consultar, se o seu valor for 0, o processo executará a região crítica; e se for 1, o processo aguardará até que a variável lock se torne 0.
Variável Turn Se a variável turn for igual a i, o processo de número i executará a região crítica até terminar. Ao sair, o processo altera o valor de turn para i+1 para que o próximo processo, ao executar, tenha acesso à região crítica.
Solução de Peterson Combina as variáveis lock e turn solucionando os problemas individuais de cada uma delas.
Instrução TSL É uma instrução utilizada em muitos processadores que permite a implementação de variáveis lock. A vantagem é que nem mesmo uma interrupção de hardware pode interromper a execução.