escalonamento de cpu

Upload: jessica-teixeira

Post on 07-Jul-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/18/2019 Escalonamento de CPU

    1/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    Aula 6

    Capítulo 6  – Escalonamento de CPU

    • 6.1 Conceitos básicos

    • 6.2 Critérios de Escalonamento

    • 6.3 Algoritmos de Escalonamento

  • 8/18/2019 Escalonamento de CPU

    2/48

  • 8/18/2019 Escalonamento de CPU

    3/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    6.1 Conceitos Básicos

    • Em um sistema monoprocessado s umprocesso pode ser executado de cada vez.

    • Se houver mais processos, o restante ter de esperar

    que a CPU esteja livre e possa se reescalonada.

    • O objetivo da multiprograma ão ter algum processoem execu ão durante todos os momentos, paramaximizar a utiliza ão da CPU.

  • 8/18/2019 Escalonamento de CPU

    4/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    6.1 Conceitos Básicos

    • Com a multiprogramação, tentamos usar esse tempode forma produtiva.

    • Diversos processos são mantidos na memória ao

    mesmo tempo. Quando um processo precisa esperar,o SO afasta a CPU desse processo e dá a CPU aoutro processo.

    • O escalonamento é uma função fundamental do SO.

    Quase todos os recursos são escalonados antes douso.

  • 8/18/2019 Escalonamento de CPU

    5/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    •  A execu ão de um processo consiste em um ciclo deexecu ão da CPU e espera por E/S.

    • Os processos alternam entre esses dois estados.

    •  A execução do processo come a com um burst deCPU se segue com um burst de E/S, que por sua vez,

    seguido por outro burst de CPU e assim por diante.

    Por fim, o burst de CPU final termina com umarequisição do sistema para encerrar a execu ão.

    6.1.1 Ciclo de Burst (surto) CPU  – E/S

  • 8/18/2019 Escalonamento de CPU

    6/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    6.1.1 Ciclo de Burst CPU  – E/S

    S O

  • 8/18/2019 Escalonamento de CPU

    7/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    •  A curva geralmente é caracterizada como exponencialou hiperexponencial  – veja figura a seguir.

    • Existe um grande número de bursts de CPU curtos e

    um número pequeno de bursts de CPU longos.• Um programa I/O-bound (limitado por E/S) geralmente

    terá muitos bursts de CPU curtos.

    Um programa CPU-bound (limitado por CPU) poderáter alguns bursts de CPU longos.

    6.1.1 Ciclo de Burst CPU  – E/S

    Si t O i i J

  • 8/18/2019 Escalonamento de CPU

    8/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    6.1.1 Ciclo de Burst CPU  – E/S

    Si t O i i J

  • 8/18/2019 Escalonamento de CPU

    9/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    • Quando a CPU fica ociosa o SO dever escolher umprocesso dentre os processos que estão na fila deprontos para ser executado.

    • O processo de sele ão executado peloescalonador de curto prazo ou  escalonador deCPU. 

    6.1.2 Escalonador de CPU

    Si t O i i J

  • 8/18/2019 Escalonamento de CPU

    10/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    • O escalonador seleciona um processo entre ospresentes na mem ria que estão prontos paraexecu ão, e o aloca CPU.

    • Não necessariamente a fila de processos prontosuma fila FIFO (primeiro a entrar, primeiro a sair).

    • Podemos organizar a fila de prontos usando v riasestrat gias como veremos mais adiante.

    6.1.2 Escalonador de CPU

    Sistemas Operacionais com Ja a

  • 8/18/2019 Escalonamento de CPU

    11/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    •  As decisões de escalonamento de CPU podemocorrer sob as quatro circunstâncias a seguir:

    1. Quando um processo passa do estado executando para o

    estado esperando.2.  Quando um processo passa do estado executando para o

    estado pronto.

    3. Quando um processo passa do estado esperando para o

    estado pronto.4. Quando um processo termina.

    6.1.3 Escalonamento preemptivo

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    12/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    • Nos casos 1 e 4, não há opção em termos deescalonamento.

    • Nestes casos dizemos que o esquema de

    escalonamento é não-preemptivo ou cooperativo.• Em escalonadores não-preemptivos, depois que a

    CPU foi alocada a um processo, o processo mantém aCPU até liberá-la terminando ou passando para o

    estado de espera.• Este esquema foi usado no Windows 3.x.

    6.1.3 Escalonamento preemptivo

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    13/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    • O escalonamento preemptivo ocorre nos casos 2 e 3.

    • Escalonadores preemptivos trazem custos adicionaisem relação a coordenação de acesso aos dados

    compartilhados.• Exemplo:

     – Considere o caso de dois processos que compartilhemos dados. Enquanto um está atualizando dados éinterrompido para que o segundo processo possaexecutar. O segundo processo tenta ler os dados, queestão no estado inconsistente. Precisamos de novosmecanismos para coordenar o acesso a dados

    compartilhados.

    6.1.3 Escalonamento preemptivo

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    14/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    •  A preempção também tem um efeito no projeto dokernel, em alguns casos o processo pode solicitaruma chamada de sistema e o kernel pode estar

    ocupado com uma atividade solicitada por outroprocesso.

    • Tais atividades podem implicar na alteração de dadosimportantes do kernel.

    • O que acontece se o processo for interrompido nomeio dessas mudanças e o kernel precisar ler oumodificar a mesma estrutura?

    6.1.3 Escalonamento preemptivo

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    15/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    • Certos SOs, incluindo a maioria das versões do UNIX,tratam desse problema esperando que uma chamadade sistema seja concluída ou que ocorra uma

    operação com um bloco de E/S antes de realizar umtroca de contexto.

    • Esse esquema garante que a estrutura do kernel serásimples, pois ele não se apropria de um processo

    enquanto as estruturas de dados do kernel estiveremem um estado incoerente.

    6.1.3 Escalonamento preemptivo

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    16/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    • Outro componente envolvido na função deescalonamento de CPU é o despachante.

    • Despachante (Dispatcher) o m dulo que dá o

    controle da CPU ao processo selecionado peloescalonador de curto prazo. Essa função envolve:

     – Trocar o contexto.

     – Trocar o modo do usu rio.

     – Desviar para o local apropriado no programa do usu rio parareiniciar esse programa.

    6.1.4 Despachante

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    17/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    • O despachante deve ser o mais r pido poss vel. Elechamado durante a troca de processo.

    • Latênc ia de despacho   tempo gasto para o

    despachante interromper um processo e iniciar aexecu ão de outro.

    6.1.4 Despachante

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    18/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    • Diferentes algoritmos de escalonamento têmdiferentes propriedades e podem favorecer umaclasse de processos mais que outra;

    • Os critérios usados incluem: – Utilização de CPU  – mantém a CPU ocupada pelo máximo

    de tempo possível.

     – Vazão  (Throughput)  –  número de processos que são

    completados por unidade de tempo. Para processos longos ataxa pode ser de um processo por hora; para transaçõescurtas, pode ser 10 processos por segundo.

    6.2 Critérios de escalonamento

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    19/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

     – Tempo de Retorno  (Turnaround)  –  é o intervalo entre asubmissão de um processo até seu término. Esse tempo é asoma dos períodos gastos esperando para acessar amemória, aguardando na fila de processos prontos,

    executando na CPU e realizando operações de E/S. – Tempo de espera   –  tempo que um processo gasta

    esperando na fila de prontos.

    6.2 Critérios de escalonamento

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    20/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

     – Tempo de resposta  o tempo que o processo leva paracome ar a responder, mas não o tempo que leva para gerara resposta. O tempo de resposta geralmente limitado pelavelocidade do dispositivo de sa da.

    desej vel maximizar   a utiliza ão de CPU e aVazão, e minimizar  o tempo de retorno, o tempo deespera e o tempo de resposta.

    6.2 Critérios de escalonamento

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    21/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    • Utilização de CPU máxima

    • Vazão (Throughput) máxima

    • Tempo de retorno (Turnaround) mínimo

    • Tempo de espera mínimo

    • Tempo de resposta mínimo

    6.2 Critérios de escalonamento

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    22/48

    Sistemas Operacionais com Java

    Silberschatz, Galvin e Gagne (c) 2003

    • O escalonamento de CPU trata do problema dedecidir qual dos processos na fila de prontos deve serentregue à CPU.

    • Existem muitos algoritmos de escalonamento de CPUdiferentes.

    •  A seguir veremos esses algoritmos:

    6.3 Algoritmos de escalonamento

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    23/48

    p

    Silberschatz, Galvin e Gagne (c) 2003

    o algoritmo mais simples.

    • O processo que solicita a CPU primeiro, a recebeprimeiro.

    •  A implementa ão da pol tica FCFS facilmentegerenciada com a fila FIFO.

    6.3.1 Escalonamento

    First-Come, First-Served (FCFS)

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    24/48

    p

    Silberschatz, Galvin e Gagne (c) 2003

    • Quando um processo entra na fila de processosprontos, seu PCB ligado ao final da fila.

    •  A CPU quando liberada aloca o processo que est no

    in cio da fila.• O tempo de espera m dio com a pol tica FCFS muitas

    vezes bem longo.

    6.3.1 Escalonamento

    First-Come, First-Served (FCFS)

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    25/48

    p

    Silberschatz, Galvin e Gagne (c) 2003

    Processo Burst de CPU(milissegundos)

    P1  24P2 3P3  3

    • Suponha que o processo chegue na ordem: P , P e P . Odiagrama de Gantt para o escalonamento será:

     – Tempo de espera para P = 0; P = 24; P = 27

     – Tempo de espera médio: (0 + 24 + 27)/3 = 17 milissegundos

    6.3.1 Escalonamento

    First-Come, First-Served (FCFS)

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    26/48

    p

    Silberschatz, Galvin e Gagne (c) 2003

    • Suponha que o processo chegue na ordemP , P , P

     – O diagrama de Gantt para o escalonamento será:

     – Tempo de espera para P = 6; P = 0; P = 3

     – Tempo de espera médio: (6 + 0 + 3)/3 = 3 milissegundos

    • Muito melhor do que no caso anterior• Efeito comboio  – processo curto atrás de processo longo

    6.3.1 Escalonamento

    First-Come, First-Served (FCFS)

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    27/48

    p

    Silberschatz, Galvin e Gagne (c) 2003

    • Esse algoritmo associa a cada processo a dura ão doseu pr ximo burst de CPU.

    • Usa esses tempos para escalonar o processo com o

    tempo mais curto.• Caso dois processos tenham a mesma dura ão do

    burst de CPU, o escalonamento FCFS ser usadopara o desempate.

    • O termo mais apropriado para este algoritmo seria opr ximo burst de CPU mais curto.

    6.3.2 Escalonamento

    Shortest Job First (SJF)

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    28/48

    Silberschatz, Galvin e Gagne (c) 2003

    Processo Burst de CPU(milissegundos)

    P1  7P2  4P3  1P4 4

     – Tempo de espera para P = 9; P = 1; P = 0; P = 5 – Tempo de espera médio: (9 + 1 + 0 + 5)/4 = 3,75 milissegundos

    6.3.2 Escalonamento

    Shortest Job First (SJF)

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    29/48

    Silberschatz, Galvin e Gagne (c) 2003

    • O escalonamento SJF comprovadamente timo,pois fornece o tempo m dio de espera m nimo paraum determinado conjunto de processos.

    •  A dificuldade com o algoritmo conhecer a dura ãodo pr ximo pedido de CPU.

    • O escalonamento SJF usado com frequência emescalonamento de longo prazo.

    • Então ele não pode ser abordado no n vel deescalonamento de CPU de curto prazo.

    6.3.2 Escalonamento

    Shortest Job First (SJF)

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    30/48

    Silberschatz, Galvin e Gagne (c) 2003

    • Uma t cnica utilizada tentar aproximar oescalonamento SJF.

    • Talvez não seja poss vel saber a dura ão do pr ximo

    burst de CPU, mas podemos tentar prever o seu valor.• Esperamos que o pr  ximo burst de CPU seja

    semelhante em dura ão aos anteriores.

    •  Assim podemos selecionar o processo com o menorburst de CPU previsto.

    6.3.2 Escalonamento

    Shortest Job First (SJF)

  • 8/18/2019 Escalonamento de CPU

    31/48

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    32/48

    Silberschatz, Galvin e Gagne (c) 2003

    Processo Chegada Burst de CPU

    (milissegundos)P1 0 7P2 2 4P3 4 1P4 5 4

    • SJF (não-preemptivo)

     – Tempo de espera para:• P1 = 0 (tempo de atendimento)  – 0 (chegada) = 0• P2 = 8 (tempo de atendimento) – 2 (chegada) = 6• P3 = 7 (tempo de atendimento) – 4 (chegada) = 3• P4 =12 (tempo de atendimento) – 5 (chegada) = 7

     – Tempo de espera médio = (0 + 6 + 3 + 7)/4 = 4 milissegundos 

    6.3.2 Escalonamento

    Shortest Job First (SJF)

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    33/48

    Silberschatz, Galvin e Gagne (c) 2003

    Exemplo de SJF preemptivo

    Processo chegada Burst de CPU(milissegundos)

    P1  0 7P2  2 4P3  4 1P4  5 4

    • SJF (preemptivo)

     – Tempo de espera para:• P1 = (0 atendimento  – 0 chegada) + (11 atendimento  – 2 processamento) = 9• P2 = (2 atendimento  – 2 chegada) + (5 atendimento  – 4 processamento) = 1• P3 = (4 atendimento  – 4 chegada) = 0• P4= (7 atendimento  – 5 chegada) = 2

     – Tempo de espera médio = (9 + 1 + 0 +2)/4 = 3 milissegundos

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    34/48

    Silberschatz, Galvin e Gagne (c) 2003

    Escalonamento por Prioridade

    •  A prioridade est associada a cada processo, e aCPU alocada ao processo com prioridade mais alta.Processos de prioridade igual são escalonados na

    ordem FCFS.•  As prioridades são indicadas por algum intervalo de

    n meros, como 0 a 7, ou 0 a 4095.

    • Contudo não existe um acordo geral com rela ão a se

    0 a maior ou a menor prioridade.

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    35/48

    Silberschatz, Galvin e Gagne (c) 2003

    Escalonamento por Prioridade

    • Um valor de prioridade (inteiro) associado a cadaprocesso.

    •  A CPU alocada para o processo com a prioridade

    mais alta (menor inteiro = prioridade mais alta). – Escalonadores preemptivo por prioridade interrompe o

    processo em execução quando o processo que chega na filade pronto tem maior prioridade sobre o processo emexecução.

     – Escalonadores não-preemptivo não interrrompe o processoem execução mas coloca o processo que chegou com maiorprioridade no topo da fila de prontos.

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    36/48

    Silberschatz, Galvin e Gagne (c) 2003

    Escalonamento por Prioridade

    • SJF é um escalonamento por prioridade em que aprioridade é o próximo tempo de surto de CPUprevisto.

    • Problema => Estagnação  –  processos de baixaprioridade podem nunca ser executados.

    • Solução => Envelhecimento  –  conforme o tempopassa, aumente a prioridade do processo.

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    37/48

    Silberschatz, Galvin e Gagne (c) 2003

    Escalonamento por Prioridade

    Processo Prioridade Burst de CPU(milissegundos)

    P1  3 10P2  1 1P3  3 2P4  4 1P5 2 5

    • Não-preemptivo

     – Tempo de espera para P = 6; P = 0; P = 16; P = 18; P = 1

     – Tempo de espera médio = (6 + 0 + 16 + 18 + 1)/5 = 8,2 milissegundos

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    38/48

    Silberschatz, Galvin e Gagne (c) 2003

    Escalonamento por Prioridade

    Processo Chegada Prioridade Burst de CPU(milissegundos)

    P1 0  3 10P2 1  4 1P3 2  2 5P4 3  3 2P5 4  1 1

    • Preemptivo

  • 8/18/2019 Escalonamento de CPU

    39/48

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    40/48

    Silberschatz, Galvin e Gagne (c) 2003

    Escalonamento por Prioridade

    • Curiosidade sobre o escalonamento por

    prioridade:

     – Dizem que, quando desativaram o IBM 7094 no MIT em

    1973, encontraram um processo de baixa prioridade que

    tinha sido submetido em 1967 e ainda não tinha sido

    executado.

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    41/48

    Silberschatz, Galvin e Gagne (c) 2003

    Algoritmo de escalonamento

    Round-Robin (RR)

    • Round-Robin (RR  –  Revezamento Circular) foiprojetado especialmente para sistemas de tempocompartilhado.

    • É semelhante ao escalonamento FCFS, mas apreempção é acrescentada para alternar entreprocessos.

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    42/48

    Silberschatz, Galvin e Gagne (c) 2003

    Algoritmo de escalonamento

    Round-Robin (RR)

    • Este escalonador introduz o conceito de QUANTUMDE TEMPO que é uma pequena unidade de tempoque geralmente é de 10 a 100 milissegundos.

    •  A fila de prontos é tratada como uma fila circular, oescalonador de CPU percorre a fila de processosprontos, alocando a CPU a cada processo por umintervalo de tempo de até 1 quantum de tempo.

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    43/48

    Silberschatz, Galvin e Gagne (c) 2003

    Algoritmo de escalonamento

    Round-Robin (RR)

    • Desempenho

     – Quantum de tempo grande  FIFO

     – Quantum de tempo pequeno  quantum precisa ser grande

    com relação ao tempo de troca de contexto ou o custoadicional será muito alto

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    44/48

    Silberschatz, Galvin e Gagne (c) 2003

    Exemplo de RR com

    Quantum de Tempo = 20

    Processo Burst de CPU(milissegundos)

    P1 53P2  17P3  68

    P4  24• O diagrama de Gantt :

    • Normalmente, turnaround m dio mais alto do que SJF,mas melhora a resposta

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    45/48

    Silberschatz, Galvin e Gagne (c) 2003

    Exemplo de RR com

    Quantum de Tempo = 20

     – Tempo de espera para:

    • P1 = 0 + (77 atendimento  – 20 processamento) + (121 atendimento  – 97 processamento) = 81

    • P2 = 20

    • P3 = 37 + (97 atendimento  – 57 processamento) (134 atendimento  – 117 processamento) = 94

    • P4= 57 + (117 atendimento  – 77 processamento) = 97

     – Tempo de espera médio = (81 + 20 + 94 + 97)/4 = 73 milissegundos

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    46/48

    Silberschatz, Galvin e Gagne (c) 2003

    Quantum de Tempo e

    Tempo de Troca de Contexto

    Sistemas Operacionais com Java

  • 8/18/2019 Escalonamento de CPU

    47/48

    Silberschatz, Galvin e Gagne (c) 2003

    O Turnaround varia Conforme o

    Quantum de Tempo

  • 8/18/2019 Escalonamento de CPU

    48/48