Sistemas Operacionais
Aula Passada
• Iniciou o estudo de Escalonamento • O que é Escalonar CPU?
• Ciclo de Burst CPU/E-S
• Escalonamento Preemptivo e Não-preemptivo • Despachante
Burst de CPU e Burst de I/O
• Burst de CPU: Tempo gasto utilizando a CPU
• Burst de I/O: Tempo gasto utilizado dispositivos de
entrada e saída
• O processos podem ser classificados como: • CPU bound:
longo burst de CPU e curto burst de I/O
• I/O bound
Escalonamento não preemptivo
e preemptivo
• Escalonamento não preemptivo: o escalonamento
acontece quando o processo que está utilizando a CPU termina sua execução ou quando libera a
CPU para executar tarefa de I/O.
• Escalonamento preemptivo: o escalonamento
acontece através da interrupção do método que está utilizando a CPU.
ALGORITMOS DE
ESCALONAMENTO
Algoritmos de
Escalonamento
• Como dito, o escalonamento de CPU consiste em decidir qual dos
processos da fila de prontos deve ser entregue à CPU.
• Algoritmos:
• Escalonamento First Come First Server - FCFS
• Escalonamento Shortest Job First - SJF
• Escalonamento por prioridade
• Escalonamento Round-Robin
• Escalonamento Multilevel Queue
First Come First Server
• First Come First Server
• Primeiro a chegar, primeiro a ser atendido
• Esse é o algortimo de escalonamento mais simples • O processo que primeiro requisitar a CPU é o
processo que será atendido
• Facilmente implementado por meio de uma fila
FILA DE PRONTOS P1 24 P2 3 P3 3 Tempo de Burst
First Come First Server
P1 P2 P3 0 24 27 30 P1 24 P2 3 P3 3Qual o tempo de espera médio?!
!
First Come First Server
P1 P2 P3 0 24 27 30 P1 24 P2 3 P3 3 TE (P1) = 0 TE (P2) = 24 TE (P3) = 27 Tempo de Espera Médio ! 17 msFILA DE PRONTOS P1 24 P2 3 P3 3 Tempo de Burst
First Come First Server
P1 P2 P3 0 3 6 30 P1 24 P2 3 P3 3First Come First Server
P1 P2 P3 0 3 6 30 P1 24 P2 3 P3 3 TE (P1) = 6 TE (P2) = 0 TE (P3) = 3 Tempo de Espera Médio ! 3 msFirst Come First Server
• Desvantagens em se utilizar essa abordagem
• O tempo de espera mínimo geralmente não é o
mínimo
• Possui tempos de espera normalmente longos • E o tempo de espera pode variar muito se os
First Come First Server
• O algoritmo FCFS ele é não preemptivo
• Quando a CPU é alocada a um processo, ele
mantém a CPU até liberá-la, pelo término ou por uma requisição de E/S
Shortest Job First
• Shortest Job First• Menor tarefa primeiro
• Quando a CPU estiver disponível, ela será alocada ao
processo que possui menor próximo burst de CPU
• Se forem iguais, utiliza-se FCFS
• Se baseia no fato de que o menor tempo médio é
obtido quando se executa primeiro os processos de menor ciclo de CPU (I/O-bound)
FILA DE PRONTOS P1 6 P2 8 P3 7 Tempo de Burst
Considere a seguinte execução de processos
P4
Shortest Job First
P1 P3 P2 0 3 9 24 P1 6 P2 8 P3 7 P4 3 P4 16 TE (P1) = 3 TE (P2) = 16 TE (P3) = 9 TE (P4) = 0 Tempo de Espera Médio ! 7 ms E se usássemos o FCFS?Shortest Job First
• Neste tipo de escalonamento, os processos I/O-burst são
favorecidos. Por que?
• CPU-Burst curtos
• A grande dificuldade em se usar esse tipo de escalonamento
está no fato de que não é possível determinar exatamente o tempo do próximo burst de CPU de um processo
• normalmente é utilizado em processos hatch
• é possível prever o próximo tempo de burst baseado nos
Shortest Job First
• O algoritmo SJF apresentado até aqui é não
preembitivo
• O escalonamento só acontece quando o
processo é finalizado ou quando está executando um burst de I/O.
Shotest Job First
• Podemos alterar o SJF para que ele seja
preembitivo
• Essa algoritmo recebe o nome de SRTF
• Shortest Remaining Time First (menor tempo
restante primeiro)
• O SRTF retira o processo em execução se o novo
processo que chegar tiver burst de CPU menor que o restante do processo em execução
FILA DE PRONTOS P1 8 | 0 P2 4 | 1 P3 9 | 2 Tempo de Burst
SJF Preempitivo
P4 5 | 3burst de CPU | ordem de chegada
0 1
SJF Preemptivo
P1 P2 P3 0 1 5 17 P4 10 TE (P1) = 10 -1 = 9 TE (P2) = 1 - 1 = 0 TE (P3) = 17 - 2 = 15 TE (P4) = 5 - 3 = 2 Tempo de Espera Médio ! 6,5 msE se usássemos o Não Preemptivo?
P1 8 | 0 P2 4 | 1 P3 9 | 2 P4 5 | 3 P1 26
Escalonamento por
prioridade
• O algoritmo SJF, visto anteriormente, é um caso
especial do algoritmo de escalonamento por prioridade
• Nesse caso a prioridade é o tempo de burst de CPU • Um prioridade é associada ao processo e a CPU é
alocada para aqueles processos com maior prioridade
• Processos com mesma prioridade são escalonados na
Escalonamento por
prioridade
• O SJF é um algoritmo por prioridade no qual a prioridade
é o inverso do próximo burst de CPU (previsto). Quanto maior o burst de CPU, menor a prioridade, e vice-versa.
• Normalmente as prioridades são determinadas por
intervalos de 0 a N.
• Não existe uma regra que determine se 0 é de maior ou
menor prioridade. Depende do sistema.
• Vamos considerar que números baixos representam alta
Escalonamento por prioridade
P5 P2 P3 0 1 6 16 P4 TE (P1) = 6 TE (P2) = 0 TE (P3) = 16 TE (P4) = 18 TE (P5) = 1 Tempo de Espera Médio ! 8,2 msE como definimos as prioridades?
P1 10 | 2 P2 1 | 0 P3 2 | 3 P4 1 | 4 P1 18 P5 5 | 1 19
Escalonamento por
prioridade
• As prioridades podem ser definidas por meio
interno ou externo
• Interna: limite de tempo, requisitos de memória,
número de arquivos abertos e a razão entre burst de CPU e burst de I/O
• Externa: importância de um processo, o tipo,
quantidade de fundos pago pelo uso do computador etc.
Escalonamento por
prioridade
• Assim como no SJF, o escalonamento pode ser
preemptivo ou não preemptivo
• No escalonamento preemptivo, se um processo
com maior prioridade chegar a fila de pronto, o processo em execução é trocado pelo novo
processo.
• No escalonamento não-preemptivo, o processo vai
para o início da fila de pronto e espera o processo em execução finalizar.
Escalonamento por
prioridade
• Qual o problema dos algoritmos por prioridades?
• Um algoritmo de prioridade pode deixar um processo
de baixa prioridade esperando indefinidamente pela CPU
• Esse problema é conhecido como: starvation (ou
bloqueio indefinido)
• Exemplo: desativação do IBM 7094 no MIT 1973
• Encontraram um processo de baixa prioridade iniciado
Escalonamento por
prioridade
• Qual solução?
• Envelhecimento (aging)
• Na técnica de envelhecimento, aumenta-se
gradualmente a prioridade dos processos que estão esperando no sistema por um longo tempo
Escalonamento Round-Robin
• Semelhante ao escalonamento FCFS, mas a
preempção é acrescentada para alternar entre os processos.
• É definida uma pequena quantidade de tempo
(quantum de tempo ou fatia de tempo) é definida
• O escalonador percorre a fila de prontos, alocando
a CPU a cada processo por um intervalo de tempo até 1 quantum de tempo
FILA DE PRONTOS P1 24 P2 3 P3 3 Tempo de Burst
Escalonamento RR - Exemplo
Quantum de tempo: 4ms 0! 1! 2! 3! 4! 5! 6! 7! 8! 9! 10! 11! 12! 13! 14! 15! 16! 17! 18! 19! 20! 21! 22! 23! 24! 25! 26! 27! 28! 29! 30 0! 1! 2! 3! 4! 5! 6! 7! 8! 9! 10! 11! 12! 13! 14! 15! 16! 17! 18! 19! 20! 21! 22! 23! 24! 25! 26! 27! 28! 29! 30Escalonamento Round-Robin
P1 P2 P3 0 4 7 10 P1 24 P2 3 P3 3 P1 P1 P1 P1 P1 14 18 22 26 30 TE (P1) = 10 - 4 = 6 TE (P2) = 4 TE (P3) = 7 Tempo de Espera Médio ! 5,66 msEscalonamento Round-Robin
• Nenhum processo recebe a CPU por mais de 1
quantum de tempo seguido (ao menos que seja o único processo executável)
• Se o burst CPU ultrapassar 1 quantum de tempo,
esse processo é interrompido e colocado de volta para a fila de prontos
Escalonamento Round-Robin
• O desempenho do escalonamento RR depende do
tamanho do quantum
• Quantum extremamente grande: RR = FCFS • Quantum extremamente pequeno:
• processor sharing (compartilhamento de processos) • cria a aparência de que cada n processos possui
seu processador executando a 1/n da velocidade do processador
Escalonamento Round-Robin
• No algoritmo de escalonamento RR precisamos
considerar a troca de contexto no desempenho tempo do processo = 10 0 6 10 0 1 2 3 4 5 6 7 8 9 10 quantum trocas de contexto 12 6 1 0 1 9
Escalonamento Round-Robin
• O turnaround também depende do tamanho do
quantum
• Uma regra prática é que 80% dos burst de CPU
Escalonamento Multilevel
Queue
• Técnica de escalonamento utilizada para casos em
que os processos são organizados em diversos grupos
• Exemplo:
• Processos de primeiro-plano • Processos de segundo-plano
Escalonamento Multilevel
Queue
• Técnica de escalonamento utilizada para casos em
que os processos são organizados em diversos grupos
• Exemplo:
• Processos de primeiro-plano • Processos de segundo-plano
Escalonamento Multilevel
Queue
• Por que organizá-los em grupos diferentes?
• Os processos podem possuir requisitos e prioridades diferentes
• Por exemplo:
• No caso de processos de primeiro plano e segundo plano, os processos podem possuir requisitos de tempo de
resposta diferentes.
• Além disso, processos de primeiro plano podem ter
prioridade superior se comparadas com os processos de segundo plano
Escalonamento Multilevel
Queue
• Cada fila possui seu próprio
algoritmo de escalonamento
• Primeiro plano: RR
• Segundo plano: FCFS • Deve haver um
escalonamento entre as filas
• Definir prioridades
• Dividir o tempo entre as
filas
Escalonamento Multilevel
Feedback Queue
• No caso do Escalonamento Multilevel, o processo
era atribuído a uma fila permanentemente.
• No caso do Multilevel Feedback Queue, os
processos podem trocar de filas
• Os processos podem mudar de prioridade e
Escalonamento Multilevel
Feedback Queue
• Organizar os processos de acordo com diferentes
características de burst
• Se um processo utiliza muito burst de CPU, este
processo pode ser movido para uma fila de menor prioridade
• Utilizado também para evitar o starvation
• Se um processo espera muito tempo em uma fila de
menor prioridade ele pode ser movido para uma fila de maior prioridade
Escalonamento Multilevel
Feedback Queue
0 1 2
Escalonamento Multilevel
Feedback Queue
0 1 2 10 22 Quantum: 8 ms Quantum: 16 ms FCFSEscalonamento Multilevel
Feedback Queue
• Para definir um Escalonamento Multilevel Feedback precisamos determinar alguns parâmetros
• O número de filas
• O algoritmo de escalonamento de cada fila
• O método usado para determinar quando mover um processo para uma fila de maior prioridade
• O método usado para determinar quando mover um processo para uma fila de menor prioridade
Escalonamento Multilevel
Feedback Queue
• É o algoritmo mais genérico aqui estudado • Ele pode ser configurado de acordo com a
necessidade do sistema
• Ele é o mais complexo dada a quantidade de