Buscar

aula_4_escalonamento_cpu

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

1
Sistemas OperacionaisSistemas Operacionais
Escalonamento da CPU
2 Escalonamento de CPUEduardo Nicola F. Zagari
EscalonamentoEscalonamento dada CPUCPU
n Conceitos Básicos
n Escalonamento de Processador
n Critérios de Escalonamento
n Escalonamento Não Preemptivo
n Escalonamento Preemptivo
n Mecanismos de Interrupção em Intervalos de Tempo
n Prioridades
n Algoritmos de Escalonamento
n Escalonamento para Vários Processadores
n Escalonamento em Tempo Real
n Estudo de Casos: Escalonamento no Unix, Windows XP, 
Linux e de Threads
2
3 Escalonamento de CPUEduardo Nicola F. Zagari
ConceitosConceitos BásicosBásicos
n Multiprogramação: corresponde a diversos programas distintos 
executando em um mesmo processador
l maximiza utilização da CPU
n No entanto, somente um processo é executado a cada instante 
em um processador
n Toda vez que um processo tiver que esperar (evento ou E/S) 
outro processo usa a CPU (“ciclo de vida” de um processo)
l A execução de um processo consiste de um ciclo de execução de 
CPU e espera de I/O
pronto
bloqueado
execução
E/S ou evento
interrupção
espera 
por E/S 
ou evento
escalonado
EscalonadorEscalonador
4 Escalonamento de CPUEduardo Nicola F. Zagari
SeqüênciaSeqüência AlternadaAlternada de “de “RajadasRajadas” de CPU e I/O” de CPU e I/O
3
5 Escalonamento de CPUEduardo Nicola F. Zagari
Escalonamento de ProcessadorEscalonamento de Processador
n Conhecido como Escalonador de Processsos
n Determina/Escolhe, dentre os processos que estão em memória, 
qual processo será associado a uma CPU, quando esta estiver 
disponível
n Age sobre os processos prontos para executar (processos do 
estado de pronto)
n Segue uma política de escolha
n Executado várias vezes por segundo
n Reside permanentemente na memória
6 Escalonamento de CPUEduardo Nicola F. Zagari
Escalonamento de ProcessadorEscalonamento de Processador
n Situação para escalonamento:
l processo passa do estado em execução para pronto
l processo passa de em execução para espera/bloqueado
l processo passa de espera/bloqueado para pronto
l processo termina
n Preempção: é quando um processo em estado de pronto tem 
precedência sobre o que está usando a CPU.
n Escalonamenteo Não-Preemptivo: não contempla as 
preempções, isto é, o escalonador não interrompe os processos
que estão em execução.
n 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.
4
7 Escalonamento de CPUEduardo Nicola F. Zagari
Escalonamento de Curto PrazoEscalonamento de Curto Prazo
n Determina qual processo no estado pronto para executar será 
associado a uma CPU, quando esta estiver disponível
n É executado várias vezes por segundo
n Reside permanentemente na memória
8 Escalonamento de CPUEduardo Nicola F. Zagari
Escalonamento de Médio PrazoEscalonamento de Médio Prazo
(Nível Intermediário)(Nível Intermediário)
n Determina quais os processos que poderão competir pela CPU
n Responsável pela suspensão e ativação de processos, o que 
significa flutuações na carga do sistema visando um melhor 
balanceamento
n Atua como um buffer entre a admissão de jobs e a associação 
da CPU aos processos que constituem os jobs admitidos
n 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) )
5
9 Escalonamento de CPUEduardo Nicola F. Zagari
Escalonamento de Longo Prazo (Alto Nível)Escalonamento de Longo Prazo (Alto Nível)
n Determina quais jobs serão admitidos e poderão competir pelos 
recursos do sistema (admission scheduling)
n Permite que não existam jobs em demasia no sistema, o que 
acarretaria uma eterna competição pelos recursos
n Todo job, uma vez admitido, acarreta na criação de um ou mais 
processos
10 Escalonamento de CPUEduardo Nicola F. Zagari
DispatcherDispatcher
n O módulo Dispatcher dá o controle da CPU para o processo
selecionado pelo escalonador de curto prazo. Isto envolve:
l Troca de contexto
l Mudança do processador para o Modo Usuário
l Salto para a localização adequada no programa do usuário para o 
seu reinício
n Latência de Despacho – tempo que leva para o dispatcher parar
um processo e reiniciar a execução de outro
6
11 Escalonamento de CPUEduardo Nicola F. Zagari
Critérios de EscalonamentoCritérios de Escalonamento
n Utilização da CPU: % do tempo que a CPU fica ocupada (0 -
100%)
n Throughput: número de processos completados por unidade de 
tempo
n 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)
n Tempo de espera: tempo que cada processo fica na fila de 
pronto
n Tempo de resposta: tempo que o processo demora para 
produzir alguma resposta à uma requisição (importante para 
processos interativos)
n É desejável maximizar os 2 primeiros e minimizar os 3 últimos
n Para sistemas interativos, é importante minimizar a variância do
tempo de resposta (previsibilidade)
12 Escalonamento de CPUEduardo Nicola F. Zagari
ObjetivosObjetivos
n Objetivos das políticas de escalonamento:
l maximizar a utilização da CPU
l maximizar o throughput
l minimizar o turnaround
l minimizar o tempo de espera
l minimizar o tempo de resposta
l ser justa
l maximizar o número de usuários interativos
l ser previsível
l minimizar o uso de recursos
l balancear o uso de recursos
l balancear usuários interativos com os demais
l priorizar processo que segurem recursos chave
l não degradar o sistema
l etc
7
13 Escalonamento de CPUEduardo Nicola F. Zagari
Escalonamento Não Escalonamento Não PreemptivoPreemptivo
n Não permite a retirada da CPU de um processo após este tê-la 
conseguido
n Tempo de resposta é mais previsível
É mais justo?
n Processos curtos precisam esperar pelos longos
n Permite monopolização da CPU
14 Escalonamento de CPUEduardo Nicola F. Zagari
Escalonamento Escalonamento PreemptivoPreemptivo
n Permite que a CPU seja retirada de um processo para ser 
entregue a outro
n Garante que os processos possam progredir uniformemente
n Não permite a monopolização da CPU
n Usado para:
l atendimento rápido de processos mais importantes
l tratamento de interrupções em sistemas de tempo real
l atender os usuários em sistemas de tempo compartilhado
n A mudança de contexto envolve sobrecarga
8
15 Escalonamento de CPUEduardo Nicola F. Zagari
Mecanismos de Interrupção Mecanismos de Interrupção 
em Intervalos de Tempoem Intervalos de Tempo
n Para prevenir processos do usuário de monopolizar o sistema 
(CPU), por acidente ou de propósito, uma interrupção por tempo 
é usada
4é o tempo limite para uso da CPU, após o qual ocorre a 
interrupção por tempo
n 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
n Um processo em execução mantém controle sobre a CPU até:
l voluntariamente liberá-la
l quantum time expirado
l outra interrupção exija atenção da CPU para que seja tratada
l erro de execução
quantum ou time-slice
16 Escalonamento de CPUEduardo Nicola F. Zagari
PrioridadesPrioridades
n Podem ser fixas (estáticas) durante a vida do processo ou 
modificáveis (dinâmicas)
n Podem ser associadas externamente ou de maneira automática
n Podem ser calculadas e associadas de forma racional ou 
arbitrária
9
17 Escalonamento de CPUEduardo Nicola F. Zagari
Algoritmos de EscalonamentoAlgoritmos de Escalonamento
n FIFO (First-In First-Out) (também conhecido por FCFS (First-
Come First-Served))
n SJF (Shortest Job First)
n Round-Robin
n SRT (Shortest Remaining Time)
n Prioridade
n Múltiplas Filas
n Múltiplas Filas com Realimentação
n Escalonamento para Vários Processadores
n Escalonamento de Tempo Real
l Earliest Deadline
18 Escalonamento de CPUEduardo Nicola F. Zagari
FIFO (FIFO (FirstFirst--InIn FirstFirst--OutOut))
FCFS (FirstFCFS(First--Come, FirstCome, First--Served)Served)
n Não preemptivo (Uma vez em execução, é executado até o 
término)
n O processo que chegar primeiro (first-in) é o primeiro a ser 
selecionado para execução (first-out)
n Implementado através de fila
n Inicialmente criado para sistemas batch
n Injusto com jobs curtos (veja exemplos!)
n Ineficiente para sistemas de tempo compartilhado
n Combinado com outros esquemas
10
19 Escalonamento de CPUEduardo Nicola F. Zagari
n Turnaround médio = ( 10 + 12 + 14 ) / 3 = 12 u.t.
n Tempo de espera médio = ( 0 + 10 + 12) / 3 = 7,33 u.t.
FIFO (FIFO (FirstFirst--InIn FirstFirst--OutOut))
FCFS (FirstFCFS (First--Come, FirstCome, First--Served)Served)
Suponha que os processos cheguem na ordem P1, P2 e P3
20 Escalonamento de CPUEduardo Nicola F. Zagari
FIFO (FIFO (FirstFirst--InIn FirstFirst--OutOut))
FCFS (FirstFCFS (First--Come, FirstCome, First--Served)Served)
n Turnaround médio: ( 14 + 2 + 4 ) / 3 = 6,67 u.t.
n Tempo de espera médio = ( 4 + 0 + 2) / 3 = 2 u.t.
Suponha que os processos cheguem na ordem P2, P3 e P1
11
21 Escalonamento de CPUEduardo Nicola F. Zagari
SJF (ShortestSJF (Shortest--JobJob--First)First)
n Não preemptivo
n O processo com o menor tempo para ser completado é 
escolhido 
l 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
l desempate pode ser, por exemplo, por FIFO
n 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
n No entanto, apresenta uma grande variância no tempo de 
espera
22 Escalonamento de CPUEduardo Nicola F. Zagari
SJF (ShortestSJF (Shortest--JobJob--First)First)
n Turnaround médio FIFO: (6+14+21+24)/4 = 16,25 u.t.
n Tempo de espera médio: (0 + 6 + 14 + 21)/4 = 10,25 u.t.
n Turnaround médio SJF: (3 + 9 + 16 + 24) / 4 = 13 u.t.
n Tempo de espera médio: (3 + 16 + 9 + 0) / 4 = 7 u.t.
12
23 Escalonamento de CPUEduardo Nicola F. Zagari
Escalonamento CooperativoEscalonamento Cooperativo
n 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)
n Um programa mal escrito pode monopolizar a CPU
n Fila de mensagem é verificada periodicamente (Win 3.11)
24 Escalonamento de CPUEduardo Nicola F. Zagari
Round Robin (RR)Round Robin (RR)
ouou Escalonamento CircularEscalonamento Circular
n 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
n Após este tempo ter sido passado, o processo sofre preempção 
e é colocado no final da fila de pronto
n A fila de pronto é tratada como uma fila circular (FIFO)
n O escalonador “pega” o primeiro processo da fila de pronto para 
ser executado e define um timer para o tempo de 1 quantum
n 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
n Projetado para sistemas de tempo compartilhado
l 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.
13
25 Escalonamento de CPUEduardo Nicola F. Zagari
Round Robin (RR)Round Robin (RR)
ouou Escalonamento CircularEscalonamento Circular
n Claramente preemptivo
n O tempo médio de espera é alto
n O desempenho depende do tamanho do quantum
l se for muito grande (infinito) FIFO
l se for muito pequeno, o overhead com ochaveamento de 
contexto se torna alto demais...
Quantum Tempo de chaveamento % 
20 5 1/5 
500 5 ~1/100 
 
 
tende a
26 Escalonamento de CPUEduardo Nicola F. Zagari
Round Robin (RR)Round Robin (RR)
ouou Escalonamento CircularEscalonamento Circular
Quantum = 1 u.t.
n Turnaround médio RR: (16 + 8 + 9) /3 = 11 u.t.
n Tipicamente, o turnaround médio é maior que o do SJF, mas o 
tempo de resposta é melhor
14
27 Escalonamento de CPUEduardo Nicola F. Zagari
SRT (SRT (ShortestShortest RemainingRemaining Time)Time)
n É a contra-partida preemptiva do SJF
n O processo com menor tempo para ser completado é escolhido
n Um processo em execução é interrompido se um novo processo, 
com menor tempo para ser completado aparece na fila de pronto
n Apresenta sobrecarga maior que o SJF
l Variações:
4Tempo para ser completado pequeno
4Tempo para ser completado do processo que chega é pouco 
menor
28 Escalonamento de CPUEduardo Nicola F. Zagari
n Turnaround médio SRT: ((17-0)+(5-1)+(26-2)+(10-3))/4 = 13 u.t.
n E qual é o turnaround médio se fosse escalonado segundo SJF? 
l Resp.: 14,25 u.t. 
Processo Tempo de chegada Tempo de execução 
P1 0 8 
P2 1 4 
P3 2 9 
P4 3 5 
 
 
SRT (SRT (ShortestShortest RemainingRemaining Time)Time)
15
29 Escalonamento de CPUEduardo Nicola F. Zagari
Escalonamento por PrioridadeEscalonamento por Prioridade
n Uma prioridade é associada a cada processo e a CPU é alocada 
ao processo de maior prioridade
n SJF é um caso de escalonamento por prioridade em que a 
prioridade é maior para os processos de menor tempo de 
execução
n 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
n Pode ser preemptivo ou não
n SJF é um Escalonamento por Prioridade onde a prioridade é 
definida de acordo com o tempo de CPU estimado do processo
30 Escalonamento de CPUEduardo Nicola F. Zagari
(cont.) Escalonamento por Prioridade(cont.) Escalonamento por Prioridade
n Turnaround médio: (16+1+6+18+19)/4 = 15 u.t.
Processo Tempo de execução Prioridade 
P1 10 3 
P2 1 1 
P3 2 3 
P4 1 4 
P5 5 2 
 
 
16
31 Escalonamento de CPUEduardo Nicola F. Zagari
(cont.) Escalonamento por Prioridade(cont.) Escalonamento por Prioridade
n Prioridade definida:
l internamente: usa alguma quantidade mensurável para computar a 
prioridade. (dinâmica)
4Ex.: memória, arq. abertos, razão I/O por CPU usada
l externamente: importância do processo, departamento de origem, 
fatores políticos, hierarquia. (estática)
n Problema: starvation - processos de baixa prioridade podem 
ficar indefinidamente no estado de pronto (IBM 7094 no MIT 
processo rodando por 6 anos)
n Solução: aumentar progressivamente a prioridade dos 
processos que estão aguardando
32 Escalonamento de CPUEduardo Nicola F. Zagari
Possibilidade de
starvation
n Os processos são previamente divididos em grupos em função do 
tipo de processamento realizado 
l Interativo (foreground)
l Batch (background)
n A cada grupo é aplicado um mecanismo de escalonamento 
adequado
l Interativo – RR
l Batch – FIFO
Múltiplas FilasMúltiplas Filas
Fila de processos
batch
Fila de processos
batch
Fila de processos
interativos
Fila de processos
interativos
Fila de processos
do sistema
Fila de processos
do sistema
Alta
prioridade
Baixa
prioridade
nOutra alternativa: time-slices entre filas (ex.: 80% para os interativos 
em RR e 20% para os batch em FIFO)
17
33 Escalonamento de CPUEduardo Nicola F. Zagari
Múltiplas Filas com RealimentaçãoMúltiplas Filas com Realimentação
n Os processos não permanecem em uma mesma fila até o término 
do processamento
n O SO faz um ajuste dinâmico (mecanismo adaptativo) para ajustar 
os processos em função do comportamento do sistema
n Os processos não são previamente associados às filas, mas 
direcionados pelo sistema entre as diversas filas com base no seu 
comportamento
n Parâmetros: 
l número de filas, 
l algoritmo de escalonamento para cada fila, 
l método para mudar (promover ou rebaixar) o processo de fila, 
l método para determinar em que fila um processo entra
n Método mais complexo
34 Escalonamento de CPUEduardo Nicola F. Zagari
Múltiplas Filas com RealimentaçãoMúltiplas Filas com Realimentação
n Um exemplo (existem outras variações):
l Processos novos entram no fim da primeirafila
l Nas filas, os processos são escalonados segundo Round Robin
l O quantum varia de uma fila para outra (aumenta em direção às 
últimas, quantum 1 para a primeira, 2 para a segunda, etc)
l Os processos das primeiras filas têm maior prioridade (um processo 
não pode ser escolhido, a menos que, as filas anteriores estejam
vazias)
l Um processo em execução é interrompido, caso apareça um processo
em uma das filas anteriores à sua
l Sempre que um processo esgotar seu quantum , ele é suspenso na fila 
da próxima classe de prioridade
l Se o processo liberar a CPU, sem preempção, sai da estrutura de filas 
l Quando um processo volta à estrutura, é colocado em uma fila de 
prioridade mais alta do que estava antes de sair
18
35 Escalonamento de CPUEduardo Nicola F. Zagari
Múltiplas Filas com RealimentaçãoMúltiplas Filas com Realimentação
Fila 3Fila 3
Fila 2Fila 2
Fila 1Fila 1
Alta
prioridade
Baixa
prioridade
Fila NFila N
...
Menor
quantum
Maior
quantum
36 Escalonamento de CPUEduardo Nicola F. Zagari
Múltiplas Filas com RealimentaçãoMúltiplas Filas com Realimentação
n Vantagens de uma política como esta:
l 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
l Processos interativos (I/O-bound), normalmente pequenos, são 
favorecidos, reduzindo-se o tempo de resposta médio do sistema
l Processos interativos grandes, após interação com usuários, retornam 
em filas de prioridade mais alta
n Problema: pressionar <ENTER> em terminais processando longos 
jobs não interativos (CPU-bound)
n Moral da história: implementar uma boa política na prática é 
muitíssimo mais difícil do que idealizá-la
19
37 Escalonamento de CPUEduardo Nicola F. Zagari
EscalonamentoEscalonamento
para Vários Processadorespara Vários Processadores
n Escalonamento mais complexo
n Processadores idênticos (homogêneos)
l Compartilhamento de carga (load sharing)
l Fila por processador: processador pode ficar ocioso
l Fila única: compartilhamento de dados (problemas!)
n Abordagens:
l Processamento simétrico
4Cada processador faz seu próprio escalonamento (exclusão 
mútua!)
l Mestre-Escravo: processamento assimétrico
4um algoritmo, executado em um processador reservado para 
esse fim, é o escalonador dos outros processadores (alivia a 
necessidade de compartilhamento de dados)
38 Escalonamento de CPUEduardo Nicola F. Zagari
Escalonamento de Tempo RealEscalonamento de Tempo Real
n Sistemas de tempo real: requisitos temporais
l Tempo compartilhado puro não funciona 
l Hard real-time: requisitos temporais rígidos à requer que uma tarefa 
crítica seja completada dentro de um tempo garantido
4Ex.: tráfego aéreo, armas, sistemas médicos, controle industrial, 
etc
l Soft real-time: requisitos temporais flexíveis à requer que um processo 
crítico receba prioridade sobre outros menos importantes
4Ex.: multimídia, realidade virtual, etc
n Sistemas de TR rígidos: processadores dedicados
n Sistemas de TR flexíveis:
l Implementados com outros esquemas
l Processos críticos devem ter prioridade sobre outros
l Implica na degradação do serviço dos outros usuários
20
39 Escalonamento de CPUEduardo Nicola F. Zagari
EarliestEarliest DeadlineDeadline
n Escalonamento baseado em prioridades dinâmicas
n A idéia básica é atribuir sempre a maior prioridade ao processo que 
apresentar o prazo mais próximo a expirar (earliest deadline)
n Sempre que um novo processo chega na fila de pronto, são 
calculadas e atribuídas novas prioridades a todos
n O Earliest Deadline é um algoritmo ótimo, isto é, o fator de 
utilização da CPU é 100%
n Se os processos não forem independentes: 
l Problema da Inversão de Prioridades 
4Solução: Protocolo de Herança de Prioridade
– Conseqüência: queda no fator de utilização da CPU
40 Escalonamento de CPUEduardo Nicola F. Zagari
EscalonamentoEscalonamento no Solaris 2no Solaris 2
21
41 Escalonamento de CPUEduardo Nicola F. Zagari
Escalonamento no UnixEscalonamento no Unix
n Unix à Sistema de Tempo Compartilhado
l Meta: bom tempo de resposta aos processos interativos
n Escalonamento de 2 níveis
n Escalonador de baixo nível: Filas Múltiplas (prioridade) com 
realimentação
l Processos executando em modo kernel: prioridade negativa (que são as 
maiores)
l Processos executando em modo usuário: prioridade positiva
l 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)
l Round-Robin dentro de cada fila
l A cada segundo as prioridades são recalculadas:
4Contadores de uso da CPU divididos por 2
4Nova prioridade = base + nice + contador de uso da CPU
l Processos interativos voltam do bloqueio com prioridade negativa.
42 Escalonamento de CPUEduardo Nicola F. Zagari
PrioridadesPrioridades no Windows XPno Windows XP
22
43 Escalonamento de CPUEduardo Nicola F. Zagari
EscalonamentoEscalonamento no Linuxno Linux
n Dois algoritmos: time-sharing e real-time
n Time-sharing
l Prioridades baseadas em créditos – processo com mais créditos é o 
próximo a ser escalonado
l Crédito subtraído quando ocorre uma interrupção por tempo
l Quando crédito = 0, outro processo é escolhido
l Quando todos os processos têm crédito = 0, ocorre
“recarregamento” de créditos
4Baseado em alguns fatores como prioridade e histórico
n Real-time
l Soft real-time (TR Flexível)
l Aderente ao Posix.1b – duas classes
4FIFO e RR
4Processos de maior prioridade sempre executam primeiro
44 Escalonamento de CPUEduardo Nicola F. Zagari
EscalonamentoEscalonamento de Threadsde Threads
n Escalonamento Local – Como a biblioteca de threads decide 
qual thread do usuário executar quando há um LWP disponível
n Escalonamento Global – Como o kernel decide qual kernel 
thread deve ser a próxima a ser executada
23
45 Escalonamento de CPUEduardo Nicola F. Zagari
EscalonamentoEscalonamento API API PthreadPthread
#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);
46 Escalonamento de CPUEduardo Nicola F. Zagari
EscalonamentoEscalonamento API API PthreadPthread
/* 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 thread\n");
pthread exit(0);
}
24
47 Escalonamento de CPUEduardo Nicola F. Zagari
EscalonamentoEscalonamento de Thread Javade Thread Java
n JVM usa um algoritmo de escalonamento baseado em
prioridades e preemptivo
n Uma fila FIFO é usada se houver múltiplas threads com a 
mesma prioridade
n 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
48 Escalonamento de CPUEduardo Nicola F. Zagari
TimeTime--SlicingSlicing
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
25
49 Escalonamento de CPUEduardo Nicola F. Zagari
PrioridadesPrioridades de Threads de Threads 
Prioridade Comentário
Thread.MIN_PRIORITY Prioridade Mínima de Thread 
Thread.MAX_PRIORITY Prioridade Máxima de Thread
Thread.NORM_PRIORITY Prioridade Defaultde Thread 
As prioridades podem ser ajustadas usando-se o método
setPriority():
setPriority(Thread.NORM_PRIORITY + 2);

Outros materiais