A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 5: Escalonamento de CPU.

Apresentações semelhantes


Apresentação em tema: "Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 5: Escalonamento de CPU."— Transcrição da apresentação:

1 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 5: Escalonamento de CPU

2 5.2 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Conceitos básicos Utilização máxima da CPU obtida com a multiprogramação Execução de processos consiste de ciclos contendo rajadas de requisições a CPU e tempo de espera por I/O

3 5.3 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Ciclo de uso da CPU

4 5.4 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Histograma do tempo da rajada de requisições para a CPU

5 5.5 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonador de CPU O escalonador escolhe um processo na fila ready e aloca a CPU para ele A fila pode ser ordenada de acordo com diferentes critérios Fila de prontos (ready): Novos processos que ainda não acessaram a CPU, processos em execução que foram retirados da CPU devido a uma interrupção e processos que estavam esperando uma resposta de I/O e receberam essa resposta

6 5.6 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonador de CPU Decisões de escalonamento de CPU são tomadas quando um processo: 1. Sai do estado de execução (running) para o estado de espera (waiting) Ocorre quando existe uma solicitação de I/O 2. Sai do estado de execução (running) para o estado de pronto (ready) Ocorre quando acontece uma interrupção de clock 3. Sai do estado de espera (waiting) para o estado de pronto (ready) Ocorre quando acontece uma interrupção avisando o fim de uma operação de I/O 4. Termina O escalonamento nas condições 1 e 4 é não preemptivo ou colaborativo O escalonamento nas condições 2 e 3 é preemptivo

7 5.7 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonador de CPU Preempção Interrupção de clock Interrupção de I/O Troca de contexto irá depender do escalonador

8 5.8 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonador de CPU – Acesso a dados compartilhados Processo 1 Variável A compartilhada Leia do disco Escreve resultado em A Processo 2 Variável A compartilhada Leia variável A Escreve resultado na tela Execução SO escolhe P1 P1 lê do disco e começa a escrever o resultado em A SO para P1 e dá a vez a P2 P2 lê valor inconsistente em A P2 escreve valor inconsistente ( x x x x) na tela P2 termina e passa a vez a P1 P1 acaba de escrever resultado em A 101xx xxxxx x x

9 5.9 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonador de CPU – Preempção no modo kernel Se o sistema operacional aplicasse preempção sobre o seu próprio funcionamento durante chamadas de sistema: Processo 1 Leia do disco Escreve resultado em A Processo 2 Leia do disco Escreve resultado na tela Chamadas de sistema Controle passa para o kernel

10 5.10 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonador de CPU – Preempção no modo kernel Se o sistema operacional aplicasse preempção sobre o seu próprio funcionamento durante chamadas de sistema: Execução SO escolhe P1 P1 faz chamada de sistema para leitura de disco Passagem para o modo kernel e inicio da atualização do ponteiro de leitura de disco SO para P1 e dá a vez a P2 P2 faz chamada de sistema para leitura de disco Passagem para o modo kernel e inicio da atualização do ponteiro de leitura de disco, sobrescrevendo dados de P1 SO para P2 e dá a vez a P1 Fim da atualização do ponteiro para P1 (...) Valor inconsistente no ponteiro Em geral, SOs não fazem troca de contexto durante chamadas de sistema!

11 5.11 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Despachante O despachante dá ao processo selecionado pelo escalonador o acesso a CPU. Para tanto, ele realiza: Troca de contexto Comutação para o modo usuário Direcionamento para a parte adequada do programa do usuário para reiniciar o programa Latência de despacho– tempo que o despachante gasta entre parar um processo e iniciar outro

12 5.12 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Critérios de Escalonamento Utilização de CPU Manter a CPU utilizada pelo maior tempo possível Vazão Aumentar o número de processos que são terminados por unidade de tempo Tempo de Turnaround Diminuir o tempo para executar um certo processo (tempo de execução + tempo em filas) Tempo de espera Diminuir o tempo que o processo espera na fila de prontos (ready) (tempo em filas) Tempo de resposta Diminuir o tempo entre a submissão de um pedido e a obtenção da primeira resposta (não necessariamente a saída do processo) (tempo de execução até primeira resposta + tempo em filas)

13 5.13 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Algoritmos de escalonamento First-Come, First-Served (FCFS) Scheduling Shortest-Job-First (SJF) Scheduling Shortest-remaining-time-first Escalonamento por prioridade Round Robin (RR) Filas multiníveis Filas multiníveis com realimentação

14 5.14 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition First-Come, First-Served (FCFS) Scheduling Semelhante à fila FIFO, sem preempção ProcessoTempo de Rajada P 1 24 P2 3 P2 3 P3 3 P3 3 Assuma que os processos cheguem na ordem: P 1, P 2, P 3 Então: Tempo de espera: P 1 = 0; P 2 = 24; P 3 = 27 Tempo de espera médio: ( )/3 = 17 P1P1 P2P2 P3P

15 5.15 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition FCFS Scheduling (Cont.) Agora, assuma que os processo chegam na ordem: P 2, P 3, P 1 Então: Tempo de espera: P 1 = 6; P 2 = 0 ; P 3 = 3 Tempo de espera médio: ( )/3 = 3 Muito melhor que no exemplo anterior Efeito comboio Processo pequeno após processos longos pode causar uma baixa utilização da CPU P1P1 P3P3 P2P

16 5.16 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition FCFS Efeito comboio Desvantagens Atrasos grandes Baixa utilização da CPU P1 P2 P3 P1 P2 P3 Ocioso Espera por I/O de P1 Espera por I/O de P2 Espera por I/O de P3

17 5.17 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Shortest-Job-First (SJF) Scheduling Associar cada processo com o comprimento de sua próxima rajada de uso de CPU O próximo processo a acessar a CPU é aquele que apresentar o menor tempo de uso de CPU Não está relacionado ao tamanho do job, mas ao tamanho esperado até o próximo pedido de E/S Pode ter ou não preempção

18 5.18 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Shortest-Job-First (SJF) Scheduling SJF é um algoritmo ótimo para garantir o tempo médio mínimo Garante um tempo de espera médio mínimo dado um conjunto de processos Problema Descobrir qual o tempo da rajada de uso de CPU Ideal apenas para garantir o tempo médio mínimo. Um processo orientado a CPU em meio a inúmeros processos orientados a I/O pode nunca conseguir o acesso à CPU

19 5.19 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Exemplo de SJF Tempo de chegada do processoTempo de rajada P P P P Então: Tempo de espera médio = ( ) / 4 = 7 P4P4 P3P3 P1P P2P2 24

20 5.20 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Determinando o tempo da próxima rajada de CPU Pode ser apenas estimado Portanto, é escolhido o processo com menor tempo previsto Estimativa pode ser feita utilizando o tempo das rajadas anteriores daquele processo 1. t n = duração da n-ésima rajada de uso de CPU 2. = valor previsto para a próxima rajada de uso de CPU 3. α, 0 α 1 4. Defina: Geralmente, α = ½

21 5.21 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Predição do comprimento da próxima rajada de CPU

22 5.22 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Shortest-remaining-time-first Exemplo: Processo Tempo de chegada Tempo de rajada P 1 08 P 2 14 P 3 29 P 4 35 Então: Tempo de espera médio = [(10-1)+(1-1)+(17-2)+5-3)]/4 = 26/4 = 6.5 ms Sem preempção: Tempo médio = 7,75 ms P1P1 P1P1 P2P P3P P4P4 Versão do Menor Job Primeiro (SJF) com preempção Ver no quadro o funcionamento.

23 5.23 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonamento por Prioridade Uma prioridade é associada com cada processo A CPU é alocada ao processo com maior prioridade (menor inteiro maior prioridade) Preemptivo Não-preemptivo O SJF é um escalonamento por prioridade, no qual a prioridade vale o inverso do tempo previsto para a próxima rajada de CPU Problema Inanição – Processos com baixa prioridade podem não ser executados nunca Solução Envelhecimento – Prioridade de um processo aumenta com o passar do tempo Supondo uma prioridade variando de 0 a N, 0 pode representar a mais alta ou a mais baixa prioridade. Daqui para frente, será usada a notação de 0 como mais alta prioridade.

24 5.24 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Exemplo de escalonamento por prioridade Processo Tempo de rajadaPrioridade P1103 P1103 P 2 11 P324 P324 P415 P415 P552P552 Então: Tempo de espera médio = 8.2 ms P2P2 P3P3 P5P P4P P1P1 Chegada de todos em T0 Definida internamente ou externamente Exemplo sem preempção igual ao mesmo exemplo com preempção, pois todos chegam ao mesmo tempo

25 5.25 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Round Robin (RR) Cada processo recebe uma unidade de tempo pequena, chamada de quantum de tempo (q), que usualmente vale entre milissegundos. Após o fim de um quantum, o processo é deixa a CPU por preempção e é adicionado ao final da fila de prontos. Semelhante ao FCFS com preempção. P1 P2P3 P4... Pn Fim do quantum ou espera por E/S

26 5.26 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Exemplo de RR com Quantum = 4 ProcessoTempo de rajada P 1 24 P 2 3 P 3 3 Então: Tipicamente, apresenta um tempo de turnaround maior que o SJF, mas com melhor tempo de resposta q deve ser grande, quando comparado ao tempo de troca de contexto (Usualmente, q ~ 10ms a 100ms, troca de contexto < 10 us) P1P1 P2P2 P3P3 P1P1 P1P1 P1P1 P1P1 P1P

27 5.27 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Round Robin (RR) Se existem n processos na fila de prontos e o quantum de tempo vale q, então cada processo recebe 1/n do tempo de CPU dividido em intervalos de tempo com q unidades de tempo. Nenhum processo esperará mais do que (n-1)q unidades de tempo. O temporizador gera uma interrupção a cada quantum para escalonar o próximo processo Desempenho q grande FIFO q pequeno s q não for grande com relação ao tempo de troca de contexto, então a sobrecarga é muito alta Ex: 5 processos, quantum = 20 ms -Cada processo recebe 20 ms de CPU a cada 5*20=100 ms

28 5.28 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Quantum e troca de contexto

29 5.29 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Variação do tempo de turnaround médio de acordo com o quantum 80% das rajadas de CPU devem ser menores que q

30 5.30 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Filas Multiníveis Fila de prontos é particionada em diferentes filas. Ex: foreground (processos interativos) background (processos em batch) Processos permanentemente em uma dada fila Cada fila tem o seu próprio algoritmo de escalonamento: Ex: foreground – RR background – FCFS O escalonamento precisa ser realizado entre filas: Escalonamento com prioridade fixa Ex: Servir a todos os processos de foreground antes de servir os processos de background (Possibilidade de inanição). Porção de tempo – cada fila obtém uma certa quantidade de tempo de CPU Exemplo: 80% para foreground em RR e 20% para background em FCFS

31 5.31 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonamento em filas multiníveis

32 5.32 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Filas multiníveis com realimentação Um processo pode ser movido entre várias filas Envelhecimento pode ser implementado dessa forma Parâmetros do escalonador: Número de filas Algoritmo de escalonamento de cada fila Método para determinar o processo de escalonamento entre filas Método para rebaixar um processo Método para determinar a qual fila pertence um novo processo

33 5.33 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Exemplo de Filas multiníveis com realimentação Três filas: Q 0 – RR com quantum de 8 ms Q 1 – RR com quantum de 16 ms Q 2 – FCFS Escalonamento Rebaixamento de jobs Novos jobs na fila Q 0 – Quando o processo chega a CPU, pode ser processado por no máximo 8 ms – Se precisar de mais tempo de CPU, o job é movido para a fila Q 1 Na fila Q 1, o job recebe um máximo de 16 ms de tempo de CPU – Se não for suficiente para terminar ou fazer um pedido de I/O, ele é posto em Q 2 Entre filas: Q 2 só é acessada quando não existem jobs em Q 1, que por sua vez só é acessada quando não existem jobs em Q 0

34 5.34 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Filas multiníveis com realimentação Sujeito a inanição!

35 5.35 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonamento de Threads Distinção entre threads de nível de usuário e de nível de kernel Usuário – gerenciados por biblioteca, sem interferência do kernel Biblioteca mapeia os threads de usuário em processos leves Kernel – gerenciados pelo kernel

36 5.36 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Relembrando... Modelos multithreads

37 5.37 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonamento de Threads Distinção entre threads de nível de usuário e de nível de kernel Usuário – gerenciados por biblioteca, sem interferência do kernel Biblioteca mapeia os threads de usuário em processos leves Kernel – gerenciados pelo kernel Quando o sistema tem suporte a thread, threads são escalonados e não processos Cada processo é mapeado em um ou mais threads

38 5.38 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Relembrando....Processos e Threads

39 5.39 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonamento com múltiplos processadores Escalonamento de CPU é mais complexo quando múltiplas CPUs estão em uso Multiprocessadores Homogêneos Todos os processadores tem capacidades iguais Heterogêneos Multiprocessamento Assimétrico Simples – Um processador (mestre) cuida do escalonamento, processamento de I/O e outras atividades do sistema – Demais processadores executam código de usuários Simétrico Cada processador cuida do seu próprio escalonamento Fila de prontos pode ser única ou por processador Usado em praticamente todos os sistemas operacionais

40 5.40 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonamento com múltiplos processadores Afinidade do processador Processo tem afinidade com o seu processador corrente Leve – Processo tende a ficar no mesmo processador, mas eventualmente pode ser trocado Forte – Processo especifica que não deve migrar para outros processadores Melhora a eficiência no uso do cache do processador

41 5.41 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Exemplos de Sistemas Operacionais Escalonamento no Solaris Escalonamento no Linux

42 5.42 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Solaris Escalonamento baseado em prioridade Seis classes Tempo compartilhado (padrão) Interativo Tempo real Sistema Compartilhamento justo Prioridade fixa Um thread só pode pertencer a uma classe de cada vez Cada classe tem seu próprio algoritmo de escalonamento A classe tempo compartilhado tem uma fila de múltiplos níveis com realimentação

43 5.43 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Tabela de despacho para classes padrão e interativa Alta prioridade Próxima prioridade se quantum de tempo chegar ao fim Próxima prioridade de processos que foram suspensos antes de usarem todo o quantum (ex: pedido de I/O) Baixa prioridade

44 5.44 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonamento do Solaris Escalonamento entre filas Escalonador converte prioridades específicas de cada classe em uma prioridade global por thread O thread com a maior prioridade é o próximo a ser executado Threads com mesma prioridade são escolhidos via RR Thread executa até que: Seja bloqueado Use a sua fatia de tempo Seja movido por preempção por um thread de maior prioridade

45 5.45 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonamento do Solaris

46 5.46 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonamento do Linux Escalonador é executado em tempo constante, independente da carga do sistema Melhora com relação à versão original, herdada do Unix Preemptivo Baseado em prioridade Duas classes Tempo compartilhado e tempo real Quanto menor o valor, maior a prioridade Jobs com prioridade maior ganham maior fatia de tempo Diferentemente do Solaris

47 5.47 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Prioridades e tamanho da fatia de tempo

48 5.48 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonamento do Linux Tarefas organizadas em fila de execução (uma por processador) Organizadas em dois arrays com prioridade (ativo, expirado) Uma tarefa pode executar enquanto tiver tempo disponível em sua fatia Ao terminar de usar sua fatia de tempo, a tarefa não pode ser executada até que todas as outras tenham expirado o seu tempo Movida do array de ativos para array de expirados Quando o array de ativos fica vazio, os arrays são trocados

49 5.49 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Arrays de ativos e expirados

50 5.50 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Escalonamento do Linux Escalonamento de tempo real de acordo com o POSIX.1b Tarefas de tempo real tem prioridade estática Demais tarefas com prioridade dinâmica Escalonador favorece tarefas interativas Tarefas interativas tem muito I/O e, consequentemente, grande tempo de suspensão Atualização de prioridade feita com base no tempo de suspensão (de -5 a +5) – Tempos de suspensão maiores levam a reduções maiores no valor da prioridade (aumento da prioridade) – Processos limitados por I/O – Tempos de suspensão menores levam a aumentos maiores no valor da prioridade (redução da prioridade) – Processos limitados por CPU A atualização da prioridade é feita quando a tarefa expira

51 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Fim do capítulo 5


Carregar ppt "Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 5: Escalonamento de CPU."

Apresentações semelhantes


Anúncios Google