560 likes | 928 Views
Escalonamento. Prof. Alexandre Monteiro Recife. Contatos. Prof. Guilherme Alexandre Monteiro Reinaldo Apelido: Alexandre Cordel E-mail/ gtalk : alexandrecordel@gmail.com greinaldo@fbv.edu.br Site: http://www.alexandrecordel.com.br/fbv Celular: (81) 9801-1878.
E N D
Escalonamento Prof. Alexandre Monteiro Recife
Contatos • Prof. Guilherme Alexandre Monteiro Reinaldo • Apelido: Alexandre Cordel • E-mail/gtalk: alexandrecordel@gmail.com greinaldo@fbv.edu.br • Site: http://www.alexandrecordel.com.br/fbv • Celular: (81) 9801-1878
Introdução a Escalonamento • O escalonador é a entidade do SO responsável por selecionar um processo apto para executar no processador • O objetivo é dividir o tempo de CPU entre os processos aptos de forma justa • Típicos de sistemas multiprogramados: batch, time-sharing multiprogramado ou tempo real. • Requisitos e restrições diferentes em relação a utilização da CPU • Duas partes • Escalonador: política de seleção • Dispatcher: efetua a troca de contexto OBS: A parte do SO responsável por essa decisão é chamada escalonador, e o algoritmo usado para tal é chamado de algoritmo de escalonamento
T12 Escalonamento de ProcessosAbstração • Uma máquina para cada processo • Paralelismo real T11 mP1 mP2 T0 mP3 T22 mP3
T12 T22 T0 T11 T0 Escalonamento de ProcessosRealidade • Compartilhamento do tempo • Pseudo-paralelismo (Concorrência) Troca de Contexto mP1 1 41 51 70 90 121 t
Objetivos do Escalonamento • Maximizar a utilização do processador • Maximizar o nº de processos executados por unidade de tempo (throughput) • Minimizar o tempo total de execução de um processo (turnaround) • Minimizar o tempo de espera (na lista de processos aptos) • Minimizar o tempo de resposta decorrido entre a requisição e sua realização
Características de Escalonamento • Justiça (fairness) • Todos os processos têm chances iguais de uso dos processador • Eficiência • Taxa de ocupação do processador ao longo do tempo • Tempo de Resposta • Tempo entre a ocorrência de um evento e o término da ação correspondente • Turnaround • “Tempo de resposta” para usuários em batch • Minimizar o tempo que usuários batch devem esperar pelo resultado • Throughput • No. de “jobs” (processos) executados por unidade de tempo
ResumindoObjetivos Objetivos do algoritmo de escalonamento
EscalonamentoIntrodução ao Escalonamento (1) • Surtos de uso da CPU alternam-se com períodos de espera por E/S • um processo orientado à CPU • um processo orientado à E/S
A importância da Interrupção Ex: escrita em disco • Num sistema simples, CPU deve esperar a execução do comando de E/S • A cada chamada do comando write a CPU fica esperando o dispositivo executar o comando. SO HD
A importância da Interrupção Ex: escrita em disco • Um sistema com interrupção não fica esperando • A CPU solicita o write e fica executando outras tarefas até ser interrompida pelo disco. SO HD
Não Interrupção? Sim 1) Pára o processo atual 2) Salta p/ rotinade interrupção Conceitos BásicosOperação Básica da CPU Busca instrução e dados Incrementa PC Executa a instrução Com interrupção
Conceitos BásicosProcesso de Interrupção Salva resto da Informação do contexto do processo Dispositivo pede interrupção Processa rotina de Interrupção Processador salva PSW e PC na pilha de controle Hardware Software Restaura Informação do estado do processoemexecuçãoantes dainterrupção Processador carrega novo valor do PC baseado na interrupção Restaura PSW e PC do processo em execuçãoantes dainterrupção • PSW = Program Status Word • PC = Program Counter
Situações típicas para execução do escalonador • Depende se o escalonador é preemptivo ou não- preemptivo, se considera prioridades ou não: • Sempre que a CPU estiver livre e houver um processo apto para executar • Criação e término de processos • Um processo de mais alta prioridade ficar pronto para executar • Interrupção de tempo • Processo executou por um período de tempo máximo permitido • Interrupção de E/S • Interrupção de Falta de Página em Memória • Endereço acessado não está carrego na memória (memória virtual) • Interrupção por erro
Níveis de escalonamento • Longo Prazo • Médio Prazo • Curto Prazo
Longo Prazo • Executado quando um novo processo é criado • Determina quando um processo novo passa a ser considerado no sistema, isto é, quando após sua criação passa a ser apto. • Controle de admissão • Controla o grau de multiprogramação do sistema • Quanto maior o número de processos ativos, menor a porcentagem de tempo de uso do processador por processo
Médio Prazo • Associado a gerencia de memória • Participa do mecanismo de swapping (memória principal -> disco [swap out] | disco -> memória principal [swap in]) • Suporte adicional a multiprogramação • Grau de multiprogramação efetiva (diferencia aptos dos aptos-suspensos)
Curto Prazo • Mais importante, pois determina qual processo apto irá utilizar o processador • Executado sempre que ocorre eventos importantes: • Interrupções (de relógio, E/S) • Chamada de Sistemas • Sinais (interrupções de software)
Filas de Escalonamento • High-level (Longo Prazo) • Decide quantos programas são admitidos no sistema • Aloca memória e cria um processo • Controla a long-termqueue • Short-term (Curto prazo) • Decide qual processo deve ser executado • Controla a short-termqueue • I/O (Médio prazo) • Decide qual processo (com I/O) pendente deve ser tratado pelo dispositivo de I/O • Controla a I/O queue
I/O I/O Interrupt of process I/O Interrupt from I/O Filas de Escalonamento Short-term scheduling Long- term queue Short- term queue Process request FIM CPU High-level scheduling I/O queue I/O scheduling I/O queue Interrupt Handler I/O queue
Contr. Serviços Contr. Serviços Escalonador Escalonador contr. interrupção contr. interrupção Exemplo Execu-tando Sist. Operacional Sist. Operacional Sist. Operacional • Processo A parou. Por que? • Req. serviço ao S.O. • Interrupção de AEx. erro • Interrupção de outra fonte. Ex. I/O • Tempo acabou Contr. Serviços Escalonador contr. interrupção A Bloqueado A Rodando A Bloqueado Execu-tando B Rodando B Pronto B Pronto Execu- tando Outros processos Outros processos Outros processos tempo
Algoritmo de Escalonamento • Algoritmo de escalonamento escolhe qual processo deve executar em um determinado instante de tempo • Existem vários algoritmos para atingir os objetivos do escalonamento • Os algoritmos buscam: • Obter bons tempos médios (independente de critérios) • Privilegiar a variância em relação aos tempos médios • Os algoritmos estão categorizados em: • Lote • Interativo • Tempo Real
Tipos de Escalonador • Uma vez escalonado, o processo utiliza o processador até que: • Não-preemptivo (não troca de contexto): • Término de execução do processo • Execução de uma requisição de E/S ou sincronização • Liberação voluntário do processador para outro processo (yield) • Preemptivo(troca de contexto) • Término de execução do processo • Execução de uma requisição de E/S ou sincronização • Liberação voluntário do processador para outro processo (yield) • Interrupção de relógio • Processo de mais alta prioridade esteja pronto para executar
Tipos de Escalonamento • Mecanismos de Escalonamento • Preemptivo x Não-preemptivo • Políticas de Escalonamento • Round-Robin • FIFO (First-In First-Out) • Híbridos • Partições de Lote (Batch) • MFQ - Multiple Feedback Queue • SJF – Shortest Job First • SRJN – Shortest Remaining Job Next Se diz que um algoritmo/sistema operacional é preemptivo quando um processo entra na CPU e o mesmo pode ser retirado da CPU antes do término da sua execução
Algoritmos de Escalonamento • Algoritmos Não-Preemptivos (cooperativos) • First-In-First-Out (FIFO) ou First-Come-First-Served (FCFS) • ShortestJobFirst (SJF) ou Shortest Processo Next (SPN) • AlgortimosPreemptivos • Round Robin (Circular) • Baseado em Prioridades • Existem outros algoritmos de escalonamento • High Response Ratio Next (HRRN) • ShortestRemaining Time (SRT) • Ect...
T12 T22 T0 T11 T0 Preempção Escalonamento Preemptivo • Permite a suspensão temporária de processos • Quantum ou time-slice: período de tempo durante o qual um processo usa o processador a cada vez mP1 1 41 51 70 90 121 t
Quantum • Quando uma tarefa recebe o processador, o núcleo ajusta um contador de ticksque essa tarefa pode usar, ou seja, seu quantum é definido em número de ticks. • A cada tick, o contador é decrementado; quando ele chegar a zero, a tarefa perde o processador e volta à fila de prontas.
Problema das trocas de processos • Mudar de um processo/tarefa para outro requer um certo tempo para a administração — salvar e carregar registradores e mapas de memória, atualizar tabelas e listas do SO, etc • Isto se chama troca de contexto • Suponha que esta troca dure 5 ms • Suponha também que o quantum está ajustado em 20 ms • Com esses parâmetros, após fazer 20 ms de trabalho útil, a CPU terá que gastar 5 ms com troca de contexto. Assim, 20% do tempo de CPU (5 ms a cada 25 ms) é gasto com o overhead administrativo...
Troca de Contexto 5 ms
Solução? • Para melhorar a eficiência da CPU, poderíamos ajustar o quantum para 500 ms • Agora o tempo gasto com troca de contexto é menos do que 1% - “desprezível”... • Considere o que aconteceria se dez usuários apertassem a tecla <ENTER> exatamente ao mesmo tempo, disparando cada um processo: • Dez processos serão colocados na lista de processo aptos a executar • Se a CPU estiver ociosa, o primeiro começará imediatamente, o segundo não começará cerca de ½ segundo depois, e assim por diante • O “azarado” do último processo somente começará a executar 5 segundos depois do usuário ter apertado <ENTER>, isto se todos os outros processos tiverem utilizado todo o seu quantum • Muitos usuários vão achar que o tempo de resposta de 5 segundos para um comando simples é “muita” coisa
“Moral da estória” • Ajustar um quantum muito pequeno causa muitas trocas de contexto e diminui a eficiência da CPU, ... • ...mas ajustá-lo para um valor muito alto causa um tempo de resposta inaceitável para pequenas tarefas interativas • A duração atual do quantum depende muito do tipo de sistema operacional; no Linux ela varia de 10 a 200 milissegundos, dependendo do tipo e prioridade da tarefa [Love, 2004]. • Quantum grande: • Diminui número de mudanças de contexto e overhead do S.O. X Ruim para processos interativos
Tar. B Contexto Tar. C Contexto Tar. A Contexto Tar. A Contexto Tar. A Contexto Round-RobinFIFOHíbridoSJFSRJN Políticas de EscalonamentoRound-Robin • Uso de uma lista de processos sem prioridade • Escalonamento preemptivo • Simples e justo • Bom para sistemas interativos CPU:Running
Round Robin • Cada processo recebe um tempo limitado (time slice = quantum) para executar um ciclo de processador • Fila de processos aptos é circular • Necessita de relógio para delimitar as fatias de tempo (interrupção de tempo/relógio) • Se o (quantum = ∞) obtem-se o comportamento de um escalonador FIFO. • Tamanho do quantum igual prejudica processos I/O bound (prioridade)
Round-RobinFIFOHíbridoSJFSRJN Políticas de EscalonamentoFirst-In First-Out (FIFO) • Uso de uma lista de processos sem prioridade (Fila) • Escalonamento não-preemptivo • Simples e justo • Bom para sistemas em batch (lote) CPU B C D E F … N A Processo aptos inseridos no final da fila Processo no início da fila é o próximo. Processo executa até terminar, libere o processador ou realize um chamada de sistema FIM
Round-RobinFIFOHíbridoSJFSRJN Políticas de EscalonamentoHíbridos • Partições de Lote (Batch) • MFQ - Multiple Feedback Queue • Como combinar processos batch com interativos? • Uso de Partições de Lote (batch) • O sistema aceita tantos processos batch quantas forem as partições de lote • O sistema aceita todos os processos interativos • Escalonamento em dois níveis
Round-RobinFIFOHíbridoSJFSRJN Escalonamentos HíbridosPartições de Lote Memória Processos interativos são ativados imediatamente Processos Interativos Processos batch esperam a liberação do lote B C D E F … N Partição de Lote A
Round-RobinFIFOHíbridoSJFSRJN Escalonamentos HíbridosMultiple Feedback Queue • Como saber a priori se o processo é CPU-bound ou I/O-bound? • MFQ usa abordagem de prioridades dinâmicas • Adaptação baseada no comportamento de cada processo • Usado no VAX / VMS (arquiteturas de computadores)
Round-RobinFIFOHíbridoSJFSRJN Escalonamentos HíbridosMultiple Feedback Queue • Novos processos entram na primeira fila (prioridade mais alta) • Se acabar o quantum desce um nível • Se requisitar E/S sobe um nível • Lembrando: I/O-bound sãoprioritários Prioridade ... Fila 1 Quantum ... Fila 2 ... Fila n
Exemplo de escalonamento job mais curto primeiro (Shortest Job First – SJF) Round-RobinFIFOHíbridoSJF SRJN Escalonamentosbaseados no tempo de execução • Shortest Job First (não-preemptivo) • Shortest Remaining Job Next (preemptivo) • Melhora o tempo de resposta • Não é justo: pode causar estagnação (starvation) • Pode ser resolvida alterando a prioridade dinamicamente
Shortest Job First • Algoritmo ótimo, fornece o menor tempo médio de espera para um conjunto de processos • Processos I/O bound são favorecidos • Dificuldade é determinar o tempo do próximo ciclo de CPU de cada processo, porém: • Pode ser empregado em processos batch (long term scheduler) • Prever o futuro com base no passado
EscalonamentoemSistemasInterativos Um algoritmo de escalonamento com quatro classes de prioridade
Como definir a Prioridade? • Prioridade Estática: • Processo é criado com determinada prioridade e esta é mantida durante todo o processo. • Prioridade Dinâmica: • Prioridade é ajustada de acordo com o estado de execução do processo e/ou sistema. • Ex. ajustar a prioridade em função da fração de quantum que foi realmente utilizada pelo processo. • q = 100ms • Processo A = 2ms -> nova prioridade = 1/0.02 = 50 • Processo B = 50ms -> nova prioridade = 1/0.5 = 2
Problemas com prioridades • Processos de baixa prioridade podem não ser executados • Postergação indefinida (starvation) • Processo com prioridade estática pode ficar mal classificado e ser penalizado ou favorecido em relação aos demais • Solução: múltiplas filas de realimentação.
Conceitos Processos x Threads (processos leves) Interrupção Cooperação hardware-software Escalonamento Tipos de processos CPU-bound x I/O-bound Lote (batch) x interativo Filas de escalonamento Long-term (admissão) Short-term I/O Escalonamento (cont.) Objetivos Justiça Eficiência Tempo de Resposta Conceitos Preempção Quantum (time-slice) Troca de contexto Algoritmos Propósito x Complexidade x Eficiência ConclusõesComo funcionam dois ou mais programas ao mesmo tempo?