Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais Escalonamento Prof. Humberto Caetano Humberto.ccs@gmail.com 2/28 Escalonamento ● Em sistemas multiprogramados existe a figura do escalonador. ● Este programa do sistema operacional é responsável por escolher quem vai para o processador quando um processo recebe uma interrupção ● Os algoritmos de escalonamento são as ferramentas utilizadas para gerenciar esse processo. 3/28 Escalonamento ● Introdução – Em sistemas em lote antigos o escalonamento era muito simples, apenas execute a próxima instrução. – Com o surgimento da multiprogramação, veio a necessidade de “escolhermos” qual o programa que irá ser executado quando um que estava no processador for suspenso. 4/28 Escalonamento ● Introdução – Computadores de usuários tem requisições muito diferentes. Para um usuário é importante que o programa que ele está operando execute com fluidez. – Servires executam várias tarefas ao mesmo tempo e tem que atender, ainda, as requisições de usuários que estão conectados a ele. 5/28 Comportamento de um Processo ● Todos os processos tem momentos em que estão usando a CPU e momentos que estão fazendo E/S. ● Alguns processos tem maior interesse em utilizar a CPU, são processos orientados a CPU, enquanto outros passam mais tempo trabalhando com E/S, processos orientados a E/S. 6/28 Comportamento de um Processo 7/28 Quando Escalonar ● Situações nas quais o escalonamento é necessário: – No momento da criação de um novo processo. Qual será executado o pai ou o filho? – No momento que um processo é encerrado. O processador está livre, quem será executado em seguida? – Um processo solicitou uma E/S, ou um semáforo. – Um dispositivo de E/S gerou uma interrupção. Executamos o processo que estava esperando essa informação? 8/28 Quando Escalonar ● Os algoritmos de escalonamento podem ser divididos em duas categorias: – Não preemptivos ● Permite que um processo seja executado até que ele seja bloqueado (E/S, outro processo), ou até que ele libere voluntariamente a CPU. – Preemptivos ● Escolhe um processo a ser executado e o deixa em execução por um tempo máximo fixado. 9/28 Algoritmos de Escalonamento ● Lote – São sistemas ainda utilizados para processamento em grande escala ● Interativo – Sistemas muito comuns, estão presentes em nossos desktops, celulares, servidores, etc ● Tempo Real – São sistemas que precisam de uma resposta imediata frente a um estímulo, como máquinas de UTI, robôs, etc. 10/28 Objetivos do Algoritmo 11/28 Escalonamento em Sistemas em Lote ● Primeiro a chegar, primeiro a ser servido (FCFS) – Existe uma fila única de processos. A primeira tarefa do dia é executada até que ela termine ou que ocorra um bloqueio por E/S. Esse processo bloqueado é colocado no fim da fila assim que estiver pronto. 12/28 Escalonamento em Sistemas em Lote ● Tarefa mais curta primeiro (SJF). – Neste algoritmo sabemos o tempo de execução de uma tarefa. – A tarefa mais rápida é colocada primeiro no processador e assim por diante. – Este algoritmo requer que as tarefas estejam disponíveis no processador para que este escolha qual será executada. 13/28 Escalonamento em Sistemas em Lote ● Próximo de menor tempo restante. – Aqui o escalonador executa a tarefa que tem o menor tempo restante de processamento. – O escalonador verifica se para terminar a tarefa atual demora mais que terminar uma outra tarefa, ele suspende a tarefa atual e inicia a que está próxima de ser encerrada. 14/28 Escalonamento em Sistemas Interativos ● Escalonamento por chaveamento circular (round robin) – A cada processo é atribuído um intervalo de tempo, o quantum do processo. – Caso o tempo do processo se encerre, ele será bloqueado e outro processo será sorteado para seu lugar. 15/28 Escalonamento em Sistemas Interativos ● Escalonamento por chaveamento circular (round robin) – O chaveamento do processo para outro requer tempo e precisamos balancear a execução dos processos com o chaveamento. – Caso o chaveamento dure 1ms, e o quanta seja de 4ms, o sistema gastará 20% do seu tempo só para alternar entre processos. 16/28 Escalonamento em Sistemas Interativos ● Escalonamento por chaveamento circular (round robin) – Outra possibilidade é utilizarmos o quanta de 100ms, assim o chaveamento custaria apenas 1%. – Mas nesse caso, se tivéssemos 50 processos no sistema, um simples comando ls poderia demorar 5 segundos para ser executado. – O ideal é tentarmos balancear o quanta entre 20ms e 50ms. 17/28 Escalonamento em Sistemas Interativos ● Escalonamento por prioridades – O escalonamento por prioridades tenta resolver o problema de executar primeiro o que é mais importante. – As prioridades podem ser atribuídas a um processo de forma estática ou dinâmica. – No Unix existe o comando nice que pode alterar a prioridade de um processo. 18/28 Escalonamento em Sistemas Interativos ● Próximo processo mais curto. – Em geral, em sistemas interativos, comandos são processos curtos, que são executados pelo usuário. – Pode ser interessante executar esse comando logo, pois o usuário estará aguardando a resposta do mesmo. 19/28 Escalonamento em Sistemas Interativos ● Escalonamento por loteria – A ideia é fazer um sorteio entre os processos que estão aguardando para serem executados, assim, em teoria, existirá uma divisão justa de processamento para cada processo. – Caso o sistema trabalhe com prioridades, basta gerar um número maior de bilhetes para um processo de alta prioridade, assim no sorteio ele terá mais chances. 20/28 Escalonamento em Sistemas de TR ● Em geral os sistemas de tempo real são categorizados em dois tipos: – Tempo real crítico → prazos absolutos devem ser cumpridos. – Tempo real não crítico → o descumprimento ocasional de um prazo é indesejável, mas tolerável. 21/28 Escalonamento em Sistemas de TR ● Um sistema de tempo real precisa atender a eventos periódicos e não periódicos. ● Cada evento gera um processo que deve ser tratado pela CPU. ● Existe a possibilidade de vários processos ocorrerem simultaneamente no sistema. 22/28 Escalonamento em Sistemas de TR ● Caso existam m eventos periódicos, e o evento i ocorrer em um período Pi e requer Ci segundos de CPU para executar, então para que o sistema seja escalonável, o somatório dos eventos no período deve ficar abaixo de 1. 23/28 Escalonamento em Sistemas de TR ● Exemplo: – Um sistema com três eventos periódicos com períodos de 100, 200 e 500ms. – Cada evento requer 50, 30 e 100ms de tempo de CPU por evento. – O sistema é escalonável pois ● 50/100 + 30/200 + 100/500 = 0,85 24/28 O Problema do Jantar dos Filósofos 25/28 O Problema do Jantar dos Filósofos 26/28 Trabalho 1 ● Implemente um conjunto de algoritmos de escalonamento de CPU e escreva um programa que calcula uma série de estatísticas baseado nestes algoritmos: ● Os algoritmos de escalonamento a serem implementados são os seguintes: – FCFS: First-Come, First-Served – SJF: Shortest Job First – RR: Round Robin (com quantum = 2) 27/28 Trabalho 1 ● O programa deverá ler da entrada padrão uma lista de processos com seus respectivos tempos de chegada e de duração. Em seguida deverá imprimir na saída padrão uma tabela contendo os valores para as seguintes métricas: – Tempo de retorno médio – Tempo de resposta médio – Tempo de espera médio 28/28 Trabalho 1 ● Descrição da entrada: – A entrada é composta pares de números inteiros separados por um espaçoem branco indicando o tempo de chegada e a duração de cada processo. Exemplo de entrada 1: ● 0 20 ● 0 10 ● 4 6 ● 4 8 ● Descrição da saída: – A saída é composta por linhas contendo a sigla de cada um dos três algoritmos e os valores das três métricas solicitadas. Cada linha apresenta os valores médios (com uma casa decimal) para tempo de retorno, tempo de resposta e tempo de espera, separados por um espaço em branco. Exemplo de saída 1 : ● FCFS 30,5 19,5 19,5 ● SJF 21,5 10,5 10,5 ● RR 31,5 2,0 20,5 Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28
Compartilhar