sistemas operacionais

16
Sistemas Operacionais Escalonamento preemptivo

Upload: ondrea

Post on 05-Jan-2016

28 views

Category:

Documents


0 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Sistemas Operacionais

Sistemas Operacionais

Escalonamento preemptivo

Page 2: Sistemas Operacionais

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.

Page 3: Sistemas Operacionais

Escalonamento Preemptivo

Algoritmos de escalonamento pre-emptivos

Round-Robin; Por prioridades; Múltiplas filas.

Estudos de caso de escalonadores: Windows Linux Minix

Page 4: Sistemas Operacionais

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.

Page 5: Sistemas Operacionais

Escalonamento Preemptivo

Diagrama de Gant – Escalonamento Round Robin

Ex. Quantum de duas unidades de tempo.

Page 6: Sistemas Operacionais

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: 7B: 6C: 5(7+6+5)/3 = 6.

Page 7: Sistemas Operacionais

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

Page 8: Sistemas Operacionais

Escalonamento PreemptivoPrioridades 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.

Page 9: Sistemas Operacionais

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.

Page 10: Sistemas Operacionais

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.

Page 11: Sistemas Operacionais

Escalonamento PreemptivoDefiniçã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!

Page 12: Sistemas Operacionais

Escalonamento PreemptivoEstudo 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.

Page 13: Sistemas Operacionais

Escalonamento PreemptivoDetalhes: 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 prioridadeO 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).

Page 14: Sistemas Operacionais

Escalonamento PreemptivoEstudo de caso: LINUX 2.4

Duas classes de processos:

Regulares: interativos & batchesTempo 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);

Page 15: Sistemas Operacionais

Escalonamento PreemptivoEstudo 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()

Page 16: Sistemas Operacionais

Escalonamento PreemptivoEstudo 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!