1 / 16

Sistemas Operacionais

Sistemas Operacionais. Escalonamento preemptivo. Escalonamento Preemptivo. Lembrando… O Sis. Op. escalona os processos na CPU de forma a otimizar seu uso. Várias métricas possíveis. O despachante efetua a troca de contexto entre os processos.

ondrea
Download Presentation

Sistemas Operacionais

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sistemas Operacionais Escalonamento preemptivo

  2. Escalonamento Preemptivo Lembrando… • O Sis. Op. escalona os processos na CPU de forma a otimizar seu uso. Várias métricas possíveis. • O despachante efetua a troca de contexto entre os processos. Copia os registradores, ponteiros para o espaço de endereçamento, descritores de arquivos… • O escalonador pode ser preemptivo ou não. Exemplos de não-preemptivos: FIFO, SJF, Prioridades. Os diagramas de Gantt são usados para visualizar um escalonamento.

  3. Escalonamento Preemptivo Algoritmos de escalonamento pre-emptivos • Round-Robin; • Por prioridades; • Múltiplas filas. • Estudos de caso de escalonadores: Windows Linux Minix

  4. Escalonamento Preemptivo O escalonamento Round Robin • O escalonador define um quantum (fatia de tempo) para cada processo. • Após se encerrar a fatia, o processo escalonado deve ceder o lugar na CPU a um outro. Também se perde a CPU se terminar antes do fim do quantum, ou faz um pedido de E/S. • Mantém-se uma lista circular de processos prontos. • Deve-se usar um mecanismo de interrupção regular, ocorrendo a cada fatia de tempo. • Usa o clock.

  5. Escalonamento Preemptivo Diagrama de Gant – Escalonamento Round Robin Ex. Quantum de duas unidades de tempo.

  6. Escalonamento Preemptivo Round-Robin: observações • Deve-se ter um algoritmo de desempate entre os processos prontos quando há uma interrupção… FIFO, SJF, prioridades… • Se o quantum aumenta muito, se obtém novamente um FIFO. • Espera média: A: 7 B: 6 C: 5 (7+6+5)/3 = 6.

  7. Escalonamento Preemptivo Round-Robin: limitações e problemas • O grande interesse do R.R. é sua “equidade” • Todos os processos acabam tendo uma chance regular de executar. • Como definir o quantum? Muito grande: = FIFO! Muito pequeno: só se faz troca de contexto… • Processos I/O bound são prejudicados! Esperam tanto como os outros, mas não chegam a usar seu quantum todo! Solução: juntar Round Robin e prioridades com preempção

  8. Escalonamento Preemptivo Prioridades com preempção • Define-se prioridades para os processos. • Logo que surgir um processo com maior prioridade que o que está executando, ele preempta o mesmo que volta para a fila dos “prontos”. • Caso haja mais de um processo com uma dada prioridade, se aplica um segundo algoritmo de desempate. Tipicamente Round-Robin; Também pode ser um FIFO ou SJF. • Neste caso, obtém-se uma lista por nível de prioridades. Quando uma fila está vazia, considera-se a lista de prioridade inferior. Múltiplas filas, com realimentação. Pode ter um algoritmo distinto de desempate em cada fila.

  9. Escalonamento Preemptivo R.R. com prioridades e Prioridades com R.R. O Round-Robin com prioridades usa-as para desempatar processos prontos no início de uma fatia de tempo.

  10. Escalonamento Preemptivo R.R. com prioridades e Prioridades com R.R. O algoritmo de prioridades com Round-Robin usa-o para desempatar os processos que têm uma prioridade idêntica.

  11. Escalonamento Preemptivo Definição de prioridades • Estática: a prioridade é dada na criação do processo Pelo Sis. Op., pelo usuário… Problema: há risco de postergação indefinida (starvation) para um processo com baixa prioridade. • Dinâmica: a prioridade evolui durante o ciclo de vida do processo. Começa com um valor estático . Evolui depois: Aumenta a medida que o processo usa a CPU; Aumenta proporcionalmente à fração do quantum que não usou. Assim, os processos I/O bound voltam na fila de espera com alta prioridade!

  12. Escalonamento Preemptivo Estudo de caso: windows 2000 Escalonador preemptivo com prioridades, com R.R. O quantum varia conforme a prioridade. Default (XP): 2 “clock intervalos” (10 ms em x86). Duas classes com 16 prioridades: Maior o valor, maior a prioridade. Prioridades estáticas (para tempo real) Níveis 16-31 Prioridades dinâmicas Níveis 0-15 (0 é reservado) Categorias: high (13) above normal (10) normal (8) below normal (6) idle (4) Cada nível tem uma fila usando um Round_Robin para desempatar.

  13. Escalonamento Preemptivo Detalhes: Variação das prioridades e do quantum no Windows • O processo recebe uma prioridade de base (herdada do processo pai. ) • Pode ser alterada com o explorador de processos. • O quantum varia conforme o ciclo de vida • A prioridade varia conforme o ciclo de vida: • Se há preempção, o processo preemptado entra no início da fila. • Se termina uma E/S o processo sofre aumento de prioridade O aumento depende do driver de E/S. O aumento baixa com o tempo. Nunca desce em baixo da base (0 ou 16), nem aumenta acima do teto (15 ou 32).

  14. Escalonamento Preemptivo Estudo de caso: LINUX 2.4 • Duas classes de processos: Regulares: interativos & batches Tempo real. • Quanto maior o valor, maior a prioridade. Regulares: de 0 até 999 Tempo real: de 1000 a 1099. • A prioridade se chama “goodness” • No caso tempo real, usa-se um mecanismo de prioridades estáticas Fixadas pelo usuário entre 1 e 99 (+ 1000). Com RR para desempatar (SCHED_RR); Com FIFO para desempatar (SCHED_FIFO);

  15. Escalonamento Preemptivo Estudo de caso: LINUX 2.4 • Define-se “epochs” (duração fixa de tempo). • No início de uma “época”, os processos recebem um quantum de base Qi. • Quando todos zeram seu quantum, começa uma nova época. • Ao ser criado, um processo i recebe uma prioridade inicial (p) • O usuário pode diminuir o default através da chamada de sistema nice()/setpriority()

  16. Escalonamento Preemptivo Estudo de caso: LINUX 2.4 Sua prioridade definitiva = p + tempo de sobra em seu quantum. Enquanto o processo executa, seu quantum é decrementado. Quando zera, o processo é bloqueado. Se é preemptado antes do fim de seu quantum, prioridade = p + sobra Ou seja, obtém uma prioridade maior do que um recém-criado “normal”. Quando não tem mais nenhum processo pronto, começa um novo epoch. Prioridade(i) = p + (quantum restante)/2 Todos processos ganham novos créditos, mas quem ainda tinha tem mais!

More Related