Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Sistemas Operacionais Escalonamento Objetivos – Escalonamento – Escalonamento não preemptível – Escalonamento preemptível – Monitoramento 1 – Escalonamento 1.1 – Funções do escalonamento Funções do escalonamento • A política de escalonamento de um sistema operacional possui diversas funções básicas como: Manter o processador ocupado a maior parte do tempo Balancear o uso da UCP entre os processos Privilegiar a execução de aplicações críticas Maximizar o throughput do sistema Oferecer tempos de resposta razoáveis para usuários interativos Funções do escalonamento Funções do escalonamento • Cada sistema operacional possui a sua rotina de escalonamento adequada ao seu propósito e às suas características; • Sistemas de tempo compartilhado e de tempo real possuem requisitos distintos na forma de escalonar os processos; • O escalonamento trata a fila de prontos dos processos; 1.2 – Escalonador e dispatcher Escalonador • É uma das mais importantes rotinas do sistema operacional; • Em um sistema multiprogramável, o escalonador é fundamental, pois todo o compartilhamento do processador é dependente dessa rotina; Dispatcher • É a rotina responsável por trocar os contextos dos processos após o escalonador determinar qual processo deve fazer uso do processador; • O período gasto na substituição de um processo por outro é denominado de latência do dispatcher; 1.3 – Critérios do escalonamento Critérios do escalonamento • Utilização do processador = Fazer com que o processador fique ocupado a maior parte do tempo; • Throughput = É a quantidade de processos executados em um intervalo de tempo; • Tempo do processador = É o tempo em que um processo leva no estado de execução durante o seu processamento; Critérios do escalonamento • Tempo de espera = É o tempo em que o processo fica na fila de pronto a espera de ser executado pela primeira vez; • Tempo de turnaround = É o tempo total que um processo leva desde a sua criação até o seu termino, considerando todos os estados do processo; • Tempo de resposta = É o tempo decorrido entre uma requisição ao sistema ou a aplicação e o instante em que a resposta é exibida; • A política de escalonamento tenta equilibrar todos estes critérios, ou então, dependendo da característica, priorizar algum deles; 2 – Escalonamentos não preemptiveis Escalonamento não preemptível • Foi o primeiro tipo de escalonamento implementado nos sistemas operacionais multiprogramáveis, predominando o processamento batch; • Neste tipo de escalonamento, nenhum evento externo pode ocasionar o desvio do processador, ou seja, o processo só sai do estado de execução caso termine o seu processamento ou execute instruções que mudem para o estado de espera (I/O); 2.1 – Escalonamento FIFO First-in-First-Out - FIFO • O primeiro processo a chegar no estado de pronto, será o primeiro processo a ser selecionado para a execução; SIMULADORES !!!!! Carta Gantt no FIFO • Qual a média do tempo de espera em cada caso? • Qual a média do turnaround em cada caso? Vantagens do FIFO • É um algoritmo de simples implementação; Desvantagens do FIFO • Imprevisibilidade do tempo de inicio do processo, uma vez que este algoritmo não se preocupa em melhorar os tempos de espera; • Processo CPU-bound levam maior vantagem, uma vez que o I/O-bound vão sempre para o final da fila de prontos; • Não é adequado para sistemas operacionais interativos; 2.2 – Escalonamento SJF Shortest-Job-First - SJF • É selecionado o processo que tem menor tempo do processador a executar; • O operador da máquina ao colocar o processo, entrava manualmente com o tempo de CPU do processo como contexto de software; • O tempo do processo era baseado em análise estatísticas das execuções de processos anteriores; SIMULADORES !!!!! Carta Gantt no SJF • Qual a média do tempo de espera em cada caso? • Qual a média do turnaround em cada caso? Vantagens do SJF • Melhora o tempo de espera e de turnaround em relação ao FIFO; Desvantagens do SJF • O usuário determina o tempo do processador para cada processo, e partir daí, o escalonador selecionava os processos conforme o tempo SJF; • Possibilidade de haver “starvation” para processos longos (alto tempo de CPU), ou tipicamente CPU-Bound; Desvantagens do SJF • O usuário determina o tempo do processador para cada processo, e partir daí, o escalonador selecionava os processos conforme o tempo SJF; • Possibilidade de haver “starvation” para processos longos (alto tempo de CPU), ou tipicamente CPU-Bound; 2.3 – Escalonamento cooperativo Cooperativo • Como forma de equilibrar melhor o uso da CPU entre os processos na fila de pronto, os processos liberam voluntariamente o processador e entram novamente na fila de pronto; • O sistema operacional não tem intervenção nesta política, pois, a liberação da CPU dependem de instruções específicas dos processos; • Escalonamento utilizado no windows 3.1 e 3.11. Vantagens do cooperativo • Melhor distribuição da CPU entre os processos; • Gera um pseudo time-slice, como se fosse um sistema preemptivo; Desvantagens do cooperativo • Programas mal escritos podem entrar em looping, monopolizando a CPU; • O tempo de troca dos processos não é tarefa do sistema operacional, logo, maior probabilidade de erros por parte dos programadores; 3 – Escalonamentos preemptiveis Escalonamento preemptível • Os processos são interrompidos pelo sistema operacional; • O uso da preempção faz com que seja possível priorizar a execução de processos; • Melhor balanceamento do uso do processador entre os processos; • A preempção é largamente utilizada em sistemas operacionais de tempo compartilhado e de tempo real; 3.1 – Escalonamento circular Circular (Round robin) • Esse algoritmo é bastante similar ao FIFO, porém, cada processo tem um tempo limite para uso do processador; • Este tempo de uso é conhecido como time-slice ou quantum de tempo; • O tempo é gerado pelo relógio da máquina; • Este método baseado em relógio, é conhecido como preempção por tempo; Circular (Round robin) SIMULADORES !!!!! Carta Gantt para Circular • Qual o valor do time-slice? • Qual a média do tempo de espera em cada caso? • Qual a média do turnaround em cada caso? Vantagens do circular • Os processos não monopolizam a CPU em virtude do time- slice, que variam entre 10 e 100 ms (depende do sistema operacional); • É um escalonamento aceitável em sistemas multitarefas; Desvantagens do circular • Os processos CPU-bound são beneficiados por utilizar todo o time-slice, enquanto os I/O-bound não são priorizados e sempre quando saem da fila de espera, vão para o final da filade prontos; • Valores altos de time-slice podem tender a um comportamento FIFO; • Valores baixos de time-slice geram muitas preempções, ocasionando muitas mudanças de contextos pelo dispatcher, gerando muito overhead; • O time-slice tem que ser maior que o tempo de latência do dispatcher (USAR SIMULADOR !!!!!!) Time slice (Local timer interrupts) #watch -d -n 1 cat /proc/interrupts 3.2 – Escalonamento por prioridades Prioridades • A preempção é realizada com base em um valor de prioridade dada a cada processo; • O processo com maior prioridade na fila de pronto é o escolhido para a execução, ou seja, o primeiro; • Processos de mesma prioridade comportam-se como o FIFO; • Não existe preempção do processo por tempo; • A perda do processador ocorrerá ao término voluntário do processo ou ao estado de espera; Prioridades Carta Gantt prioridades • Qual o valor do time-slice? • Qual a média do tempo de espera em cada caso? • Qual a média do turnaround em cada caso? Rescheduling • O escalonador de prioridades é implementando com base em uma política de preempção por tempo (interrupção do relógio por tempo); • Este tempo serve para que o escalonador organize a fila de prontos, caso chegue novos processos com maiores prioridades; • Em caso de não haver mudanças nas prioridades, o escalonador não fará mudança na ordem dos processos da fila de pronto; Rescheduling interrupts < Timer INT Prioridades estáticas e dinâmicas • A prioridade estática é aquela em que não pode ser modificada em tempo real de execução; • A prioridade dinâmica é aquela em que pode ser modificada em tempo real de execução, a partir de uma entrada do usuário ou pelo próprio sistema operacional em função do comportamento do processo; Vantagens das prioridades • Dar maior tempo de CPU a um processo que precise de mais tempo; • Processos I/O-bound podem ser priorizados; • Mais utilizado em sistemas de tempo real; Desvantagens das prioridades • Processos com menor prioridade podem tender a um “starvation” quando chegar processos de maior prioridade na fila de prontos; 3.3 – Escalonamento circular com prioridades Circular com prioridades • Implementa o conceito de time-slice e de prioridade de execução associada a cada processo; • Neste escalonamento um processo permanece no estado de execução até o seu término natural, ou passe para o estado de espera ou sofra preempção por prioridade ou tempo; • Este escalonamento permite o melhor balanceamento no uso da UCP, com a possibilidade de diferenciar o grau de importância dos processos; • Amplamente utilizado em sistemas de tempo compartilhado; Circular com prioridades Escalonamento do linux >> Vide slide!! #!/bin/bash while : ; do cont=$(($cont+1)) echo "p1 $cont" sleep 0.05 done #!/bin/bash while : ; do cont=$(($cont+1)) echo "p2 $cont" sleep 0.05 done • Execute os dois scripts através de ./teste1sh & ./teste2.sh • Através dos sinais NICE E RENICE do htop, verifique o comportamento destes dois processos; (-20 a 19 PRI)!!! • Ajuste os valeres de tempo para verificar o impacto, e explique as respostas!!!! Questionamentos • Na ferramenta htop, quem é PRI e NI? • Mexa na prioridade do processo e verifique o range de variação; • Através do NI e do resultado da execução dos scripts anteriores, verifique como aumentar ou diminuir a prioridade; • O escalonador muda dinamicamente a prioridade porque? (evitar o “starvation” pelo algoritmo do envelhecimento ou idade); #schedtool - 1 • apt-get install schedtool • man schedtool (ler o manual) #schedtool PID Discuta os itens de saída do comando; #schedtool - 2 Executar os testes no programa thread1.c (quatro threads com while(1) loop infinito) Após a execução, verificar o uso de CPU de cada thread e o tempo de execução de cada uma delas pelo comando abaixo; #htop –d -1 #schedtool - 3 Escalonando CPUs #schedtool –a 0x2 PID • Escalone a metade das threads para um núcleo só!!!!! • Verifique o tempo e o consumo da CPU de cada uma thread e compare!!!!; #schedtool - 3 #watch –d –n -1 cat /proc/interrupts Desloque todas a threads para a CPU 1, e verifique se as interrupções do teclado ficam comprometidas assim como as do mouse; #schedtool - 4 Mudando as políticas de escalonamento #schedtool –F –p 20 PID (FIFO) #schedtool –R –p 20 PID (Round Robin) #schedtool - 5 Copie thread1 para /sbin Inicializando um programa com parâmetros específicos #schedtool –F –p 20 –a 0x2 –e thread1 Discuta o resultado e compare com o escalonamento –R e –B Visualize dentro do htop os tempos de escalonamento #schedtool - Fim Coloque a máquina com apenas 1 CPU e execute #schedtool –F –p 20 –a 0x1 –e thread1 Para as seguintes situações: Quatro threads em loop infinito Quatro threads contando números e imprimindo só no final Quatro threads contando e imprimindo cada número contado DISCUTA O RESULTADO!!!!!! 3.4 – Escalonador real Escalonador real • Na prática, sistemas operacionais implementam mais de um algoritmo de escalonamento; • Este tipo escalonamento é conhecido como múltiplas filas, sendo que cada uma delas utiliza um algoritmo de escalonamento distinto com suas políticas independentes; • Processos de sistema utilizam FIFO; #schedtool 1 2 3 4 5 6 7 8 9 10 Escalonador real – Múltiplas filas 4 – Monitoramento 4.1 – Métricas da CPU #top ou htop • %su = Processos em modo usuário • %sy = Processos em modo kernel • %ni = Processos em modo usuário com nice (variação da prioridade) • %id = Ociosidade da CPU • %wa = Espera por E/S • %hi = Tratamento de interrupções de hardware • %si = Tratamento de interrupções de software • %st = Tempo usado para máquinas virtuais; 4.2 – Média de consumo #top ou htop LOAD AVERAGE Média de consumo % em 1 minuto Média de consumo % em 5 minutos Média de consumo % em 15 minutos #top Execute #./thread1 Execute #iozone –a E compare as métricas Execute mais de um processo thread1 A máquina ficou lenta??? Justifique!!! #vmstat 1 • in = quantidade de interrupções por segundo • cs = quantidade de trocas de contexto por segundo (dispacher) • %us = processos em modo usuário • %sy = processos em modo kernel • %id = ociosidade da CPU • %wa = espera por E/S
Compartilhar