SO-04 Escalonamento de Processos

36,318 views

Published on

Escalonamento de Processos. Conceitos básicos. Algoritmos de Escalonamento (Sistemas Operacionais)

Published in: Technology, Business
0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
36,318
On SlideShare
0
From Embeds
0
Number of Embeds
110
Actions
Shares
0
Downloads
1,227
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

SO-04 Escalonamento de Processos

  1. 1. Processos Escalonamento da CPU
  2. 2.   Conceitos Básicos   Escalonamento de Processador   Critérios de Escalonamento   Escalonamento Não Preemptivo   Escalonamento Preemptivo   Mecanismos de Interrupção em Intervalos de Tempo   Prioridades   Algoritmos de Escalonamento   Escalonamento para Vários Processadores   Escalonamento em Tempo Real   Estudo de Casos: Escalonamento no Unix, Windows XP, Linux e de Threads Eduardo Nicola F. Zagari 2 Escalonamento de CPU
  3. 3.   Multiprogramação: corresponde a diversos programas distintos executando em um mesmo processador   maximiza utilização da CPU   No entanto, somente um processo é executado a cada instante em um processador   Toda vez que um processo tiver que esperar (evento ou E/S) outro processo usa a CPU (“ciclo de vida” de um processo)   A execução de um processo consiste de um ciclo de execução de CPU e espera de I/O escalonado pronto execução interrupção Escalonador espera E/S ou evento bloqueado por E/S ou evento Eduardo Nicola F. Zagari 3 Escalonamento de CPU
  4. 4. Eduardo Nicola F. Zagari 4 Escalonamento de CPU
  5. 5.   Conhecido como Escalonador de Processsos   Determina/Escolhe, dentre os processos que estão em memória, qual processo será associado a uma CPU, quando esta estiver disponível   Age sobre os processos prontos para executar (processos do estado de pronto)   Segue uma política de escolha   Executado várias vezes por segundo   Reside permanentemente na memória Eduardo Nicola F. Zagari 5 Escalonamento de CPU
  6. 6.   Situação para escalonamento:   processo passa do estado em execução para pronto   processo passa de em execução para espera/bloqueado   processo passa de espera/bloqueado para pronto   processo termina   Preempção: é quando um processo em estado de pronto tem precedência sobre o que está usando a CPU.   Escalonamenteo Não-Preemptivo: não contempla as preempções, isto é, o escalonador não interrompe os processos que estão em execução.   Escalonamento Preemptivo: que contempla a preempção das tarefas, isto é, provoca uma interrupção forçada de um processo para que outro, com a preempção, possa usar a CPU. Eduardo Nicola F. Zagari 6 Escalonamento de CPU
  7. 7.   Determina qual processo no estado pronto para executar será associado a uma CPU, quando esta estiver disponível   É executado várias vezes por segundo   Reside permanentemente na memória Eduardo Nicola F. Zagari 7 Escalonamento de CPU
  8. 8.   Determina quais os processos que poderão competir pela CPU   Responsável pela suspensão e ativação de processos, o que significa flutuações na carga do sistema visando um melhor balanceamento   Atua como um buffer entre a admissão de jobs e a associação da CPU aos processos que constituem os jobs admitidos   Job: é um conjunto de atividades necessárias para a realização do trabalho computacional requerido por um usuário (divide-se em diversos steps (passos) ) Eduardo Nicola F. Zagari 8 Escalonamento de CPU
  9. 9.   Determina quais jobs serão admitidos e poderão competir pelos recursos do sistema (admission scheduling)   Permite que não existam jobs em demasia no sistema, o que acarretaria uma eterna competição pelos recursos   Todo job, uma vez admitido, acarreta na criação de um ou mais processos Eduardo Nicola F. Zagari 9 Escalonamento de CPU
  10. 10.   O módulo Dispatcher dá o controle da CPU para o processo selecionado pelo escalonador de curto prazo. Isto envolve:   Troca de contexto   Mudança do processador para o Modo Usuário   Salto para a localização adequada no programa do usuário para o seu reinício   Latência de Despacho – tempo que leva para o dispatcher parar um processo e reiniciar a execução de outro Eduardo Nicola F. Zagari 10 Escalonamento de CPU
  11. 11.   Utilização da CPU: % do tempo que a CPU fica ocupada (0 - 100%)   Throughput: número de processos completados por unidade de tempo   Turnaround: intervalo de tempo entre a submissão de um processo e sua finalização (soma dos intervalos esperando para ser carregado na memória, fila de pronto, em execução e em espera)   Tempo de espera: tempo que cada processo fica na fila de pronto   Tempo de resposta: tempo que o processo demora para produzir alguma resposta à uma requisição (importante para processos interativos)   É desejável maximizar os 2 primeiros e minimizar os 3 últimos   Para sistemas interativos, é importante minimizar a variância do tempo de resposta (previsibilidade) Eduardo Nicola F. Zagari 11 Escalonamento de CPU
  12. 12.   Objetivos das políticas de escalonamento:   maximizar a utilização da CPU   maximizar o throughput   minimizar o turnaround   minimizar o tempo de espera   minimizar o tempo de resposta   ser justa   maximizar o número de usuários interativos   ser previsível   minimizar o uso de recursos   balancear o uso de recursos   balancear usuários interativos com os demais   priorizar processo que segurem recursos chave   não degradar o sistema   etc Eduardo Nicola F. Zagari 12 Escalonamento de CPU
  13. 13.   Não permite a retirada da CPU de um processo após este tê-la conseguido   Tempo de resposta é mais previsível É mais justo?   Processos curtos precisam esperar pelos longos   Permite monopolização da CPU Eduardo Nicola F. Zagari 13 Escalonamento de CPU
  14. 14.   Permite que a CPU seja retirada de um processo para ser entregue a outro   Garante que os processos possam progredir uniformemente   Não permite a monopolização da CPU   Usado para:   atendimento rápido de processos mais importantes   tratamento de interrupções em sistemas de tempo real   atender os usuários em sistemas de tempo compartilhado   A mudança de contexto envolve sobrecarga Eduardo Nicola F. Zagari 14 Escalonamento de CPU
  15. 15.   Para prevenir processos do usuário de monopolizar o sistema (CPU), por acidente ou de propósito, uma interrupção por tempo é usada quantum ou time-slice  é o tempo limite para uso da CPU, após o qual ocorre a interrupção por tempo   Um processo do usuário, uma vez interrompido por término do seu quantum, volta à fila de pronto para executar e permite o escalonamento de outro processo   Um processo em execução mantém controle sobre a CPU até:   voluntariamente liberá-la   quantum time expirado   outra interrupção exija atenção da CPU para que seja tratada   erro de execução Eduardo Nicola F. Zagari 15 Escalonamento de CPU
  16. 16.   Podem ser fixas (estáticas) durante a vida do processo ou modificáveis (dinâmicas)   Podem ser associadas externamente ou de maneira automática   Podem ser calculadas e associadas de forma racional ou arbitrária Eduardo Nicola F. Zagari 16 Escalonamento de CPU
  17. 17.   FIFO (First-In First-Out) (também conhecido por FCFS (First- Come First-Served))   SJF (Shortest Job First)   Round-Robin   SRT (Shortest Remaining Time)   Prioridade   Múltiplas Filas   Múltiplas Filas com Realimentação   Escalonamento para Vários Processadores   Escalonamento de Tempo Real   Earliest Deadline Eduardo Nicola F. Zagari 17 Escalonamento de CPU
  18. 18.   Não preemptivo (Uma vez em execução, é executado até o término)   O processo que chegar primeiro (first-in) é o primeiro a ser selecionado para execução (first-out)   Implementado através de fila   Inicialmente criado para sistemas batch   Injusto com jobs curtos (veja exemplos!)   Ineficiente para sistemas de tempo compartilhado   Combinado com outros esquemas Eduardo Nicola F. Zagari 18 Escalonamento de CPU
  19. 19. Suponha que os processos cheguem na ordem P1, P2 e P3   Turnaround médio = ( 10 + 12 + 14 ) / 3 = 12 u.t.   Tempo de espera médio = ( 0 + 10 + 12) / 3 = 7,33 u.t. Eduardo Nicola F. Zagari 19 Escalonamento de CPU
  20. 20. Suponha que os processos cheguem na ordem P2, P3 e P1   Turnaround médio: ( 14 + 2 + 4 ) / 3 = 6,67 u.t.   Tempo de espera médio = ( 4 + 0 + 2) / 3 = 2 u.t. Eduardo Nicola F. Zagari 20 Escalonamento de CPU
  21. 21.   Não preemptivo   O processo com o menor tempo para ser completado é escolhido   quando a informação sobre o tempo de execução não se encontra disponível deve ser estimado ou usa-se o da última vez   desempate pode ser, por exemplo, por FIFO   Reduz tempo médio de espera mais do que isto: SJF é ótimo, pois dá o tempo de espera mínimo para um dado conjunto de processos   No entanto, apresenta uma grande variância no tempo de espera Eduardo Nicola F. Zagari 21 Escalonamento de CPU
  22. 22.   Turnaround médio FIFO: (6+14+21+24)/4 = 16,25 u.t.   Tempo de espera médio: (0 + 6 + 14 + 21)/4 = 10,25 u.t.   Turnaround médio SJF: (3 + 9 + 16 + 24) / 4 = 13 u.t.   Tempo de espera médio: (3 + 16 + 9 + 0) / 4 = 7 u.t. Eduardo Nicola F. Zagari 22 Escalonamento de CPU
  23. 23.   O processo em execução libera voluntariamente a CPU retornando para a fila de pronto sem a interrupção do sistema operacional (não preemptivo)   Um programa mal escrito pode monopolizar a CPU   Fila de mensagem é verificada periodicamente (Win 3.11) Eduardo Nicola F. Zagari 23 Escalonamento de CPU
  24. 24.   Define-se uma unidade de tempo denominada quantum ou time- slice (usualmente de 10 a 100ms) que corresponde ao tempo limite para uso da CPU por cada processo   Após este tempo ter sido passado, o processo sofre preempção e é colocado no final da fila de pronto   A fila de pronto é tratada como uma fila circular (FIFO)   O escalonador “pega” o primeiro processo da fila de pronto para ser executado e define um timer para o tempo de 1 quantum   Se o tempo de execução for maior que 1 quantum, o timer gera uma interrupção e o SO faz o chaveamento de contexto   Projetado para sistemas de tempo compartilhado   Se houver n processos na fila de pronto e o tempo do quantum for q, então cada processo obtém 1/n do tempo da CPU e fatias de no máximo q unidades de tempo por vez. Nenhum processo espera por mais que (n-1)q unidades de tempo. Eduardo Nicola F. Zagari 24 Escalonamento de CPU
  25. 25.   Claramente preemptivo   O tempo médio de espera é alto   O desempenho depende do tamanho do quantum   se for muito grande (infinito) tende a FIFO   se for muito pequeno, o overhead com ochaveamento de contexto se torna alto demais... Eduardo Nicola F. Zagari 25 Escalonamento de CPU
  26. 26. Quantum = 1 u.t.   Turnaround médio RR: (16 + 8 + 9) /3 = 11 u.t.   Tipicamente, o turnaround médio é maior que o do SJF, mas o tempo de resposta é melhor Eduardo Nicola F. Zagari 26 Escalonamento de CPU
  27. 27.   É a contra-partida preemptiva do SJF   O processo com menor tempo para ser completado é escolhido   Um processo em execução é interrompido se um novo processo, com menor tempo para ser completado aparece na fila de pronto   Apresenta sobrecarga maior que o SJF   Variações:  Tempo para ser completado pequeno  Tempo para ser completado do processo que chega é pouco menor Eduardo Nicola F. Zagari 27 Escalonamento de CPU
  28. 28.   Turnaround médio SRT: ((17-0)+(5-1)+(26-2)+(10-3))/4 = 13 u.t.   E qual é o turnaround médio se fosse escalonado segundo SJF?   Resp.: 14,25 u.t. Eduardo Nicola F. Zagari 28 Escalonamento de CPU
  29. 29.   Uma prioridade é associada a cada processo e a CPU é alocada ao processo de maior prioridade   SJF é um caso de escalonamento por prioridade em que a prioridade é maior para os processos de menor tempo de execução   A prioridade é geralmente representada por um número (entre 0-7 ou 0-255), mas não existe uma convenção de qual número (o maior ou o menor) é o de maior prioridade   Pode ser preemptivo ou não   SJF é um Escalonamento por Prioridade onde a prioridade é definida de acordo com o tempo de CPU estimado do processo Eduardo Nicola F. Zagari 29 Escalonamento de CPU
  30. 30.   Turnaround médio: (16+1+6+18+19)/4 = 15 u.t. Eduardo Nicola F. Zagari 30 Escalonamento de CPU
  31. 31.   Prioridade definida:   internamente: usa alguma quantidade mensurável para computar a prioridade. (dinâmica)  Ex.: memória, arq. abertos, razão I/O por CPU usada   externamente: importância do processo, departamento de origem, fatores políticos, hierarquia. (estática)   Problema: starvation - processos de baixa prioridade podem ficar indefinidamente no estado de pronto (IBM 7094 no MIT processo rodando por 6 anos)   Solução: aumentar progressivamente a prioridade dos processos que estão aguardando Eduardo Nicola F. Zagari 31 Escalonamento de CPU
  32. 32.   Os processos são previamente divididos em grupos em função do tipo de processamento realizado   Interativo (foreground)   Batch (background)   A cada grupo é aplicado um mecanismo de escalonamento adequado Alta Fila de processos   Interativo – RR prioridade do sistema   Batch – FIFO Fila de processos Possibilidade de interativos starvation Baixa Fila de processos prioridade batch   utra alternativa: time-slices entre filas (ex.: 80% para os interativos O em RR e 20% para os batch em FIFO) Eduardo Nicola F. Zagari 32 Escalonamento de CPU
  33. 33.   Os processos não permanecem em uma mesma fila até o término do processamento   O SO faz um ajuste dinâmico (mecanismo adaptativo) para ajustar os processos em função do comportamento do sistema   Os processos não são previamente associados às filas, mas direcionados pelo sistema entre as diversas filas com base no seu comportamento   Parâmetros:   número de filas,   algoritmo de escalonamento para cada fila,   método para mudar (promover ou rebaixar) o processo de fila,   método para determinar em que fila um processo entra   Método mais complexo Eduardo Nicola F. Zagari 33 Escalonamento de CPU
  34. 34.   Um exemplo (existem outras variações):   Processos novos entram no fim da primeira fila   Nas filas, os processos são escalonados segundo Round Robin   O quantum varia de uma fila para outra (aumenta em direção às últimas, quantum 1 para a primeira, 2 para a segunda, etc)   Os processos das primeiras filas têm maior prioridade (um processo não pode ser escolhido, a menos que, as filas anteriores estejam vazias)   Um processo em execução é interrompido, caso apareça um processo em uma das filas anteriores à sua   Sempre que um processo esgotar seu quantum , ele é suspenso na fila da próxima classe de prioridade   Se o processo liberar a CPU, sem preempção, sai da estrutura de filas   Quando um processo volta à estrutura, é colocado em uma fila de prioridade mais alta do que estava antes de sair Eduardo Nicola F. Zagari 34 Escalonamento de CPU
  35. 35. Alta Menor prioridade Fila 1 quantum Fila 2 Fila 3 ... Baixa Fila N Maior prioridade quantum Eduardo Nicola F. Zagari 35 Escalonamento de CPU
  36. 36.   Vantagens de uma política como esta:   Processos CPU-bound vão caindo em filas de prioridade mais baixas, sendo escolhidos para rodar com menos freqüência; no entanto, eles recebem quanta maiores, necessitando receber a CPU por um número menor de vezes, o que reduz a quantidade trocas de contexto   Processos interativos (I/O-bound), normalmente pequenos, são favorecidos, reduzindo-se o tempo de resposta médio do sistema   Processos interativos grandes, após interação com usuários, retornam em filas de prioridade mais alta   Problema: pressionar <ENTER> em terminais processando longos jobs não interativos (CPU-bound)   Moral da história: implementar uma boa política na prática é muitíssimo mais difícil do que idealizá-la Eduardo Nicola F. Zagari 36 Escalonamento de CPU
  37. 37.   Escalonamento mais complexo   Processadores idênticos (homogêneos)   Compartilhamento de carga (load sharing)   Fila por processador: processador pode ficar ocioso   Fila única: compartilhamento de dados (problemas!)   Abordagens:   Processamento simétrico  Cada processador faz seu próprio escalonamento (exclusão mútua!)   Mestre-Escravo: processamento assimétrico  um algoritmo, executado em um processador reservado para esse fim, é o escalonador dos outros processadores (alivia a necessidade de compartilhamento de dados) Eduardo Nicola F. Zagari 37 Escalonamento de CPU
  38. 38.   Sistemas de tempo real: requisitos temporais   Tempo compartilhado puro não funciona   Hard real-time: requisitos temporais rígidos  requer que uma tarefa crítica seja completada dentro de um tempo garantido  Ex.: tráfego aéreo, armas, sistemas médicos, controle industrial, etc   Soft real-time: requisitos temporais flexíveis  requer que um processo crítico receba prioridade sobre outros menos importantes  Ex.: multimídia, realidade virtual, etc   Sistemas de TR rígidos: processadores dedicados   Sistemas de TR flexíveis:   Implementados com outros esquemas   Processos críticos devem ter prioridade sobre outros   Implica na degradação do serviço dos outros usuários Eduardo Nicola F. Zagari 38 Escalonamento de CPU
  39. 39.   Escalonamento baseado em prioridades dinâmicas   A idéia básica é atribuir sempre a maior prioridade ao processo que apresentar o prazo mais próximo a expirar (earliest deadline)   Sempre que um novo processo chega na fila de pronto, são calculadas e atribuídas novas prioridades a todos   O Earliest Deadline é um algoritmo ótimo, isto é, o fator de utilização da CPU é 100%   Se os processos não forem independentes:   Problema da Inversão de Prioridades  Solução: Protocolo de Herança de Prioridade –  Conseqüência: queda no fator de utilização da CPU Eduardo Nicola F. Zagari 39 Escalonamento de CPU
  40. 40. Eduardo Nicola F. Zagari 40 Escalonamento de CPU
  41. 41.   Unix  Sistema de Tempo Compartilhado   Meta: bom tempo de resposta aos processos interativos   Escalonamento de 2 níveis   Escalonador de baixo nível: Filas Múltiplas (prioridade) com realimentação   Processos executando em modo kernel: prioridade negativa (que são as maiores)   Processos executando em modo usuário: prioridade positiva   Roda primeiro processo da fila prioritária não vazia  interrupções de tempo: incremento do contador de utilização da CPU (que aumentará o valor da prioridade do processo)   Round-Robin dentro de cada fila   A cada segundo as prioridades são recalculadas:  Contadores de uso da CPU divididos por 2  Nova prioridade = base + nice + contador de uso da CPU   Processos interativos voltam do bloqueio com prioridade negativa. Eduardo Nicola F. Zagari 41 Escalonamento de CPU
  42. 42. Eduardo Nicola F. Zagari 42 Escalonamento de CPU
  43. 43.   Dois algoritmos: time-sharing e real-time   Time-sharing   Prioridades baseadas em créditos – processo com mais créditos é o próximo a ser escalonado   Crédito subtraído quando ocorre uma interrupção por tempo   Quando crédito = 0, outro processo é escolhido   Quando todos os processos têm crédito = 0, ocorre “recarregamento” de créditos  Baseado em alguns fatores como prioridade e histórico   Real-time   Soft real-time (TR Flexível)   Aderente ao Posix.1b – duas classes  FIFO e RR  Processos de maior prioridade sempre executam primeiro Eduardo Nicola F. Zagari 43 Escalonamento de CPU
  44. 44.   Escalonamento Local – Como a biblioteca de threads decide qual thread do usuário executar quando há um LWP disponível   Escalonamento Global – Como o kernel decide qual kernel thread deve ser a próxima a ser executada Eduardo Nicola F. Zagari 44 Escalonamento de CPU
  45. 45. #include <pthread.h> #include <stdio.h> #define NUM THREADS 5 int main(int argc, char *argv[]) { int i; pthread t tid[NUM THREADS]; pthread attr t attr; /* get the default attributes */ pthread attr init(&attr); /* set the scheduling algorithm to PROCESS or SYSTEM */ pthread attr setscope(&attr, PTHREAD SCOPE SYSTEM); /* set the scheduling policy - FIFO, RT, or OTHER */ pthread attr setschedpolicy(&attr, SCHED OTHER); /* create the threads */ for (i = 0; i < NUM THREADS; i++) pthread create(&tid[i],&attr,runner,NULL); Eduardo Nicola F. Zagari 45 Escalonamento de CPU
  46. 46. /* now join on each thread */ for (i = 0; i < NUM THREADS; i++) pthread join(tid[i], NULL); } /* Each thread will begin control in this function */ void *runner(void *param) { printf("I am a threadn"); pthread exit(0); } Eduardo Nicola F. Zagari 46 Escalonamento de CPU
  47. 47.   JVM usa um algoritmo de escalonamento baseado em prioridades e preemptivo   Uma fila FIFO é usada se houver múltiplas threads com a mesma prioridade   JVM escalona uma thread para executar quando: 1.  A thread “em execução” sai do estado de “executável” 2.  Uma thread de maior prioridade entra no estado “executável” * Nota – a JVM não especifica se threads são “Time-Sliced” ou não Eduardo Nicola F. Zagari 47 Escalonamento de CPU
  48. 48. Uma vez que a JVM não assegura Time-Slicing, o método yield() pode ser usado: while (true) { // perform CPU-intensive task . . . Thread.yield(); } Isto passa o controle a uma outra thread de igual prioridade Eduardo Nicola F. Zagari 48 Escalonamento de CPU
  49. 49. Prioridade Comentário Thread.MIN_PRIORITY Prioridade Mínima de Thread Thread.MAX_PRIORITY Prioridade Máxima de Thread Thread.NORM_PRIORITY Prioridade Default de Thread As prioridades podem ser ajustadas usando-se o método setPriority(): setPriority(Thread.NORM_PRIORITY + 2); Eduardo Nicola F. Zagari 49 Escalonamento de CPU

×