Sistemas Operacionais Escalonamento preemptivo Prof Diovani Milhorim Escalonamento

  • Slides: 16
Download presentation
Sistemas Operacionais Escalonamento preemptivo Prof. Diovani Milhorim

Sistemas Operacionais Escalonamento preemptivo Prof. Diovani Milhorim

Escalonamento Preemptivo Lembrando… n O Sis. Op. escalona os processos na CPU de forma

Escalonamento Preemptivo Lembrando… n O Sis. Op. escalona os processos na CPU de forma a otimizar seu uso. Várias métricas possíveis. n O despachante efetua a troca de contexto entre os processos. Copia os registradores, ponteiros para o espaço de endereçamento, descritores de arquivos… n 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.

Escalonamento Preemptivo Algoritmos de escalonamento pre-emptivos n n Round-Robin; Por prioridades; Múltiplas filas. Estudos

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

Escalonamento Preemptivo O escalonamento Round Robin n O escalonador define um quantum (fatia de

Escalonamento Preemptivo O escalonamento Round Robin n O escalonador define um quantum (fatia de tempo) para cada processo. n 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. n Mantém-se uma lista circular de processos prontos. n Deve-se usar um mecanismo de interrupção regular, ocorrendo a cada fatia de tempo. n Usa o clock.

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

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

Escalonamento Preemptivo Round-Robin: observações n Deve-se ter um algoritmo de desempate entre os processos

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

Escalonamento Preemptivo Round-Robin: limitações e problemas n O grande interesse do R. R. é

Escalonamento Preemptivo Round-Robin: limitações e problemas n O grande interesse do R. R. é sua “equidade” n Todos os processos acabam tendo uma chance regular de executar. n Como definir o quantum? Muito grande: = FIFO! Muito pequeno: só se faz troca de contexto… n 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

Escalonamento Preemptivo Prioridades com preempção n Define-se prioridades para os processos. n Logo que

Escalonamento Preemptivo Prioridades com preempção n Define-se prioridades para os processos. n Logo que surgir um processo com maior prioridade que o que está executando, ele preempta o mesmo que volta para a fila dos “prontos”. n 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. n 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.

Escalonamento Preemptivo R. R. com prioridades e Prioridades com R. R. O Round-Robin com

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.

Escalonamento Preemptivo R. R. com prioridades e Prioridades com R. R. O algoritmo de

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.

Escalonamento Preemptivo Definição de prioridades n Estática: a prioridade é dada na criação do

Escalonamento Preemptivo Definição de prioridades n 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. n 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!

Escalonamento Preemptivo Estudo de caso: windows 2000 Escalonador preemptivo com prioridades, com R. R.

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 x 86). 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.

Escalonamento Preemptivo Detalhes: Variação das prioridades e do quantum no Windows n n O

Escalonamento Preemptivo Detalhes: Variação das prioridades e do quantum no Windows n n O processo recebe uma prioridade de base (herdada do processo pai. ) Pode ser alterada com o explorador de processos. n O quantum varia conforme o ciclo de vida n A prioridade varia conforme o ciclo de vida: n Se há preempção, o processo preemptado entra no início da fila. n 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).

Escalonamento Preemptivo Estudo de caso: LINUX 2. 4 n Duas classes de processos: Regulares:

Escalonamento Preemptivo Estudo de caso: LINUX 2. 4 n Duas classes de processos: Regulares: interativos & batches Tempo real. n Quanto maior o valor, maior a prioridade. Regulares: de 0 até 999 Tempo real: de 1000 a 1099. n A prioridade se chama “goodness” n 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);

Escalonamento Preemptivo Estudo de caso: LINUX 2. 4 n Define-se “epochs” (duração fixa de

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

Escalonamento Preemptivo Estudo de caso: LINUX 2. 4 Sua prioridade definitiva = p +

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!