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

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

Sistemas Operacionais

Apresentações semelhantes


Apresentação em tema: "Sistemas Operacionais"— Transcrição da apresentação:

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!


Carregar ppt "Sistemas Operacionais"

Apresentações semelhantes


Anúncios Google