Escolar Documentos
Profissional Documentos
Cultura Documentos
nessa aula
• Partes 4 e 5
• Dinâmica
• Exercícios sobre escalonamento
O que você
vai aprender
nessa aula
• Referência base dessa aula:
• SILBERSCHATZ, Abraham; GALVIN, Peter B.;
GAGNE, Greg. Fundamentos de Sistemas
O que você vai Operacionais. 9.ed. Rio de Janeiro: LTC, 2015.
precisar para ISBN 978-85-216-3001-2. (e-book da Minha
Biblioteca).
acompanhar • https://integrada.minhabiblioteca.com.br/books/9
essa aula 78-85-216-3001-2
• As figuras utilizadas nessa aula foram retiradas
dessa referência
Infraestrutura e Sistemas Computacionais
Aula 03 – Parte 1
• Parte 1
• Conceitos, critérios e algoritmos
• Parte 2
O que você • Algoritmos de escalonamento
vai aprender • Parte 3
nessa aula • Escalonamento de threads e exemplos
• Parte 4
• Dinâmica
• Parte 5
• Dinâmica
• Objetivos
• Introduzir o escalonamento de CPU, que é a base para sistemas
operacionais multiprogramados
• Multiprogramação - execução de múltiplos programas em um mesmo sistema
• Processo - é uma entidade viva
• Escalonamento da CPU entre diversos processos
• Descrever diversos algoritmos de escalonamento
• Discutir critérios de avaliação para seleção de algoritmos de
escalonamento para um sistema em particular
• Maximizar o desempenho
• Métricas: tempo de resposta, justiça, entre outros
• Conceitos básicos
• Máxima utilização da CPU é obtida com multiprogramação
• Diversos processos competem pelos mesmos recursos do sistema
• O objetivo é encontrar uma forma de atender as solicitações da melhor forma possível
• Experiência do usuário
• Fase de uso da CPU e de E/S
• Execução de processos consiste de uma fase de execução da CPU e espera por E/S
• Cada processo possui um perfil específico
• Execução inicia com um CPU burst
• É seguido por I/O burst, e repete
• Distribuição das fases de uso da CPU (CPU bursts)
• Histograma de duração de fases de uso da CPU
• Grande número de CPU bursts curtos
• Pequeno número de CPU bursts longos
• Curva exponencial típica
• Alternando fases de uso da CPU e E/S
• Escalonador da CPU
• Seleciona dentre os processos na memória em estado pronto, e aloca a
CPU para um deles
• Latência de Despacho
• Tempo gasto pelo despachante para interromper a execução de um processo e iniciar
a execução de outro.
• Mudança para modo kernel -> troca de contexto -> mudança para modo usuário -
> reinício do processo escolhido
• Critérios de Alocação
• Utilização da CPU
• Manter a CPU ocupada a maior parte possível do tempo
• A utilização da CPU pode variar entre 0 e 100%
• Em um sistema real: de 40% (baixa carga) até 90% (alta carga)
• Produtividade (throughput)
• Número de processos que completam sua execução por unidade de tempo
• Para processos longos (tempo de execução), pode ser de um processo por hora
• Para transações curtas, pode ser dezenas de processos por segundo
• Tempo de processamento (turnaround time)
• Quantidade de tempo necessária para executar um determinado processo
• Intervalo de tempo entre a submissão de um processo (entrada) até sua compleção
(saída)
• Composto pela soma dos períodos no qual um processo fica no sistema, em espera
por recursos (memória, filas do sistema) e executando (CPU ou I/O)
• Critérios de Alocação
• Tempo de Espera
• Quantidade de tempo que um processo esteve esperando na fila de processos prontos
• Afeta apenas o tempo que um processo passa na fila de pronto
• Tempo de Resposta
• Intervalo de tempo entre o envio de uma requisição e a produção da primeira resposta,
não a saída (para ambientes tempo compartilhado)
• Pode não ser a melhor medida para sistema interativos
• Uma parte do resultado pode ser apresentada rapidamente, seguido por longos
tempos de espera
• Tempo para o processo começar a responder, não o tempo tomado para produção da
resposta do processamento
• Critérios de Otimização
• Maximizar utilização da CPU
• Maximizar produtividade
• Minimizar o tempo de processamento
• Minimizar o tempo de espera
• Minimizar o tempo de resposta
• Algoritmos de escalonamento
• O escalonamento de CPU lida com o problema de decidir qual dos
processos na fila de pronto deve ser alocado à CPU
• Existem diversos algoritmos diferentes para o escalonamento
• Cada algoritmo utiliza critérios diferentes
• FCFS – First come, first served
• Primeiro a chegar, primeiro a ser servido
• É o algoritmo mais simples
• Nesse algoritmo, o processo que solicita a CPU primeiro é alocado
• Utiliza-se uma fila (FIFO) para sua implementação
• Limitação: tempo de espera médio pode ser longo, dependendo da ordem
de chegada dos processos
• FCFS – First come, first served
• Exemplo
• Uma vez que tanto quanto são menores ou iguais a 1, cada termo
sucessivo tem peso menor que o seu predecessor
• SJF – Shortest Job First (preemptive)
• O algoritmo SJF pode ser tanto preemptivo quanto não preemptivo
• O próximo burst de um processo recém chegado pode ser menor que o
que ainda resta de execução para o processo corrente
• No SJF preemptivo, o processo corrente será interrompido
• No SJF não preemptivo, o processo corrente executará até o final de seu burst
• SJF – Shortest Job First (preemptive)
• Exemplo
• Tempo médio: P1 espera por 6ms (10 – 4), P2 espera por 4ms, P3 espera
por 7ms, então (6 + 4 + 7) = 17 / 3 = 5.66ms
• Tipicamente, possui maior tempo médio de processamento que o SJF,
porém melhor tempo de resposta
• Quantum e o tempo de troca de contexto
• Variação do tempo de processamento com o quantum
• Alocação com Múltiplas Filas
• Fila de processos prontos é particionada em filas separadas:
• primeiro plano - foreground (interativo)
• segundo plano - background (batch)
• Cada fila tem seu próprio algoritmo de escalonamento
• interativo – alocação circular (RR)
• batch – primeiro a chegar, primeiro a ser servido (FCFS)
• Escalonamento deve ser realizado entre as filas.
• Escalonamento de prioridade fixa
• Exemplo: a fila de processos interativos pode ter prioridade absoluta sobre a fila de
processos batch
• possibilidade de starvation
• Fatia de tempo
• Cada fila recebe certa quantia de tempo de CPU que poderia ser então alocada aos
processos dessa fila. Por exemplo:
• 80% para processos interativos em RR
• 20% para processos batch em FCFS
• Alocação com múltiplas filas (exemplo)
• 5 filas, ordenadas por prioridade
• 1 – processos de sistema; 2 – processos interativos; 3 – processos
interativos de edição; 4 - processos batch (lote); 5 – processos dos
estudantes
• Algoritmos de escalonamento
• SJF (shortest job first)
• SJF preemptivo
Resumo do • Escalonamento por prioridade
que vimos • RR (round robin)
• Quantum / tempo de troca de contexto
até agora • Alocação com múltiplas filas
Infraestrutura e Sistemas Computacionais
Aula 03 – Parte 3
• Algoritmos de escalonamento
• SJF (shortest job first)
• SJF preemptivo
• Escalonamento por prioridade
Relembrando • RR (round robin)
o conteúdo do • Quantum / tempo de troca de contexto
vídeo anterior • Alocação com múltiplas filas
• Parte 1
• Conceitos, critérios e algoritmos
• Parte 2
O que você • Algoritmos de escalonamento
vai aprender • Parte 3
nessa aula • Escalonamento de threads e exemplos
• Parte 4
• Dinâmica
• Parte 5
• Dinâmica
• Múltiplas filas com realimentação
• Um processo pode se mover entre as várias filas
• Envelhecimento (aging) pode ser implementado desta forma
• Escalonamento com múltiplas filas e transferências entre as filas é definido
pelos seguintes parâmetros, a saber:
• Número de filas
• Algoritmos de escalonamento para cada fila
• Método usado para determinar quando transferir um processo para uma fila de
prioridade mais alta
• Método usado para determinar quando transferir um processo para uma fila de
prioridade mais baixa
• Método usado para determinar em qual fila um processo deve ser colocado, quando
precisar usar a CPU
• Múltiplas filas com realimentação
• Exemplo
• Três filas
• Q0 – RR com quantum de 8ms
• Q1 – RR com quantum 16ms
• Q2 – FCFS
• Escalonamento
• Um novo job entra na fila Q0 a qual utiliza RR. Quando ele ganha a CPU, job recebe
8ms. Se ele não finalizar em 8ms, é movido para a fila Q1.
• Na fila Q1 o job é de novo servido por RR e recebe 16ms adicionais. Se ele ainda não
completou, é premptado e movido para a fila Q2.
• Na fila Q2, executa até completar
• É necessário que não existam processos nas filas Q0 e Q1
• Múltiplas filas com realimentação
• Escalonamento de Threads
• Distinção entre threads em nível de usuário e em nível de kernel
• Threads em nível de usuário são gerenciadas por uma biblioteca (o kernel não possui
conhecimento sobre elas)
• Threads em nível de kernel são gerenciadas pelo sistema operacional
• Nos modelos muitos-para-um e muitos-para-muitos, a biblioteca de threads
escalona threads em nível de usuário para executar em um lightweight
process (LWP)
• Conhecido como process-contention scope (PCS) – escopo de
contenção do processo - uma vez que a competição do escalomento é
dentro do processo
• Threads em nível de kernel são escalonadas em CPUs
disponíveis
• Conhecido como system-contention scope (SCS) - escopo de
contenção do sistema
• Escalonamento em multiprocessadores
• Escalonamento de CPU é mais complexo quando muitos processadores
estão disponíveis
• Realidade para maioria dos sistemas computacionais atuais
• Processadores homogêneos (iguais) em um multiprocessador
• Multiprocessamento assimétrico
• Somente um processador acessa as estruturas de dados do sistema, aliviando a
necessidade de compartilhamento de dados
• Multiprocessamento simétrico (SMP)
• Cada processador é auto-escaloanado, todos os processos em uma fila de processos
prontos comum ou cada um tem sua fila privada de processos prontos
• Escalonamento em multiprocessadores
• Um processo que executa em um mesmo processador possui um
desempenho bom em função da taxa de acerto na cache
• Os dados já estão disponíveis na cache
• E se um processo ou thread migrar para outro processador?
• Aumento da taxa de falha (princípio de localidade)
• Afinidade de processador
• Processos / threads possuem afinidade com processador em que estão
atualmente executando (soft affinity x hard affinity)
• Soft affinity - flexível, o sistema operacional tentará manter um processo ou thread no
mesmo processador, porém poderá ocorrer migração
• Hard affinity - fixo, o sistema operacional manterá um processo ou thread no mesmo
processador ou em um grupo de processadores
• Escalonamento em multiprocessadores (NUMA)
• Processadores multicore
• Tendência recente de colocar múltiplos processadores em um único chip
• Não é possível fabricar um processador mais eficiente com apenas 1 núcleo
• As aplicações precisam ser implementadas com isso em mente
https://boonsuen.com/process-scheduling-solver
• Exercício 4
• Um algoritmo de escalonamento atribui prioridades proporcionais ao tempo
de espera de um processo. Cada processo inicia com uma prioridade zero
(menor prioridade). O escalonador reavalia as prioridades dos processos a
cada T unidades de tempo e decide pelo próximo processo a ser
escalonado. Qual das afirmações é verdadeira, considerando que não
existem operações de entrada e saída e que todos os processos chegam
juntos no instante zero?
a) Esse algoritmo é equivalente ao FCFS
b) Esse algoritmo é equivalente ao RR
c) Esse algoritmo é equivalente ao SJF
d) Esse algoritmo é equivalente ao SJF preemptivo
• Exercício 4
• Um algoritmo de escalonamento atribui prioridades proporcionais ao tempo
de espera de um processo. Cada processo inicia com uma prioridade zero
(menor prioridade). O escalonador reavalia as prioridades dos processos a
cada T unidades de tempo e decide pelo próximo processo a ser
escalonado. Qual das afirmações é verdadeira, considerando que não
existem operações de entrada e saída e que todos os processos chegam
juntos no instante zero?
a) Esse algoritmo é equivalente ao FCFS
b) Esse algoritmo é equivalente ao RR
c) Esse algoritmo é equivalente ao SJF
d) Esse algoritmo é equivalente ao SJF preemptivo
• Resposta: b
• O algoritmo descrito funciona como RR quando o quantum é igual a T. Após um
processo ser escalonado e executar por T unidades, seu tempo de espera se torna o
menor e ele ganha a vez após cada processo executar por T unidades de tempo.
• Exercício 5
• Considere os seguintes processos, seus tempos de chegada e tempos de
uso de CPU
Processo Tempo de chegada Tempo de CPU
P1 0ms 5ms
P2 1ms 7ms
P3 3ms 4ms
• A ordem na qual os processos irão completar, considerando as políticas
FCFS e RR (com um quantum de 2 unidades) será:
a) FCFS: P1, P2, P3; RR(2): P1, P2, P3
b) FCFS: P1, P3, P2; RR(2): P1, P3, P2
c) FCFS: P1, P2, P3; RR(2): P1, P3, P2
d) FCFS: P1, P3, P2; RR(2): P1, P2, P3
• Exercício 5
• Considere os seguintes processos, seus tempos de chegada e tempos de
uso de CPU
Processo Tempo de chegada Tempo de CPU
P1 0ms 5ms
P2 1ms 7ms
P3 3ms 4ms
• A ordem na qual os processos irão completar, considerando as políticas
FCFS e RR (com um quantum de 2 unidades) será:
a) FCFS: P1, P2, P3; RR(2): P1, P2, P3
b) FCFS: P1, P3, P2; RR(2): P1, P3, P2
c) FCFS: P1, P2, P3; RR(2): P1, P3, P2
d) FCFS: P1, P3, P2; RR(2): P1, P2, P3
• Resposta: c
• Exercício 5
• A ordem na qual os processos irão completar, considerando as políticas FCFS e
RR (com um quantum de 2 unidades) será:
a) FCFS: P1, P2, P3; RR(2): P1, P2, P3
b) FCFS: P1, P3, P2; RR(2): P1, P3, P2
c) FCFS: P1, P2, P3; RR(2): P1, P3, P2
d) FCFS: P1, P3, P2; RR(2): P1, P2, P3
• Resposta: c
• A ordem do algoritmo FCFS é simples de observar, pois é a mesma ordem na qual os
processos chegam (P1, P2 e P3)
• No algoritmo RR, com um quantum de 2 unidades, a ordem atribuída aos processos é a
seguinte
• P1 executa por 2 unidades
• (chega P2) P2 executa por 2 unidades
• P1 executa por 2 unidades
• (chega P3) P3 executa por 2 unidades
• P2 executa por 2 unidades https://boonsuen.com/process-scheduling-solver
• P1 executa por 1 unidade
• P3 executa por 2 unidades
• P2 executa por 2 unidades
• P2 executa por 1 unidade
• Questão 6
• Considere os tempos de chegada e tempos de burst dos processos P0, P1
e P2
Processo Tempo de chegada Tempo de CPU
P0 0ms 9ms
P1 1ms 4ms
P2 2ms 9ms
https://boonsuen.com/process-scheduling-solver
• Exercícios sobre escalonamento
• Tempo de chegada
• Tempo de execução / CPU / burst
Resumo do • Tempo de resposta
que vimos • Starvation
• Tempo de espera
até agora
Infraestrutura e Sistemas Computacionais
Aula 03 – Parte 5
• Exercícios sobre escalonamento
Relembrando
o conteúdo do
vídeo anterior
• Parte 1
• Conceitos, critérios e algoritmos
• Parte 2
O que você • Algoritmos de escalonamento
vai aprender • Parte 3
nessa aula • Escalonamento de threads e exemplos
• Parte 4
• Dinâmica
• Parte 5
• Dinâmica
• Questão 9
• Considere quatro processos, os quais possuem 10ms, 20ms, 30ms e 15ms
de tempo de processamento, respectivamente. Os tempos de chegada são
0ms, 2ms, 6ms e 7ms. Quantas trocas de contexto são necessárias se o
sistema operacional estiver utilizando o algoritmo SJF preemptivo?
a) 1
b) 2
c) 3
d) 4
• Questão 9
• Considere quatro processos, os quais possuem 10ms, 20ms, 30ms e 15ms
de tempo de processamento, respectivamente. Os tempos de chegada são
0ms, 2ms, 6ms e 7ms. Quantas trocas de contexto são necessárias se o
sistema operacional estiver utilizando o algoritmo SJF preemptivo?
a) 1
b) 2
c) 3 https://boonsuen.com/process-scheduling-solver
d) 4
• Resposta: c
• Questão 10
• Um sistema operacional utiliza o algoritmo SJF preemptivo. Considere o
seguinte conjunto de processos com seus tempos de chegada e tempos de
burst de CPU
Processo Tempo de chegada Tempo de CPU
P1 0ms 12ms
P2 2ms 4ms
P3 3ms 6ms
P4 8ms 5ms
a) FCFS
b) SJF
c) SJF preemptivo
d) RR(2)
• Questão 14
• Para os processos listados abaixo, qual dos algoritmos de escalonamento
resultará no menor tempo médio de resposta?
Processo Tempo de chegada Tempo de processamento
A 0ms 3ms
B 1ms 6ms
C 4ms 4ms
D 6ms 2ms
a) FCFS
b) SJF
c) SJF preemptivo
d) RR(2)
• Resposta: c
• Tempo de resposta = tempo de processamento / término – tempo de chegada
• Questão 14
• Para os processos listados abaixo, qual dos algoritmos de escalonamento
resultará no menor tempo médio de resposta?
Processo Tempo de chegada Tempo de processamento
A 0ms 3ms
B 1ms 6ms
C 4ms 4ms
D 6ms 2ms
a) FCFS
b) SJF
c) SJF preemptivo
d) RR(2)
• Resposta: c
https://boonsuen.com/process-scheduling-solver
• Questão 14
• Para os processos listados abaixo, qual dos algoritmos de escalonamento
resultará no menor tempo médio de resposta?
Processo Tempo de chegada Tempo de processamento
A 0ms 3ms
B 1ms 6ms
C 4ms 4ms
D 6ms 2ms
a) FCFS
b) SJF
c) SJF preemptivo
d) RR(2)
• Resposta: c
• Questão 14
• Para os processos listados abaixo, qual dos algoritmos de escalonamento
resultará no menor tempo médio de resposta?
Processo Tempo de chegada Tempo de processamento
A 0ms 3ms
B 1ms 6ms
C 4ms 4ms
D 6ms 2ms
a) FCFS
b) SJF
c) SJF preemptivo
d) RR(2)
• Resposta: c
• Questão 14
• Para os processos listados abaixo, qual dos algoritmos de escalonamento
resultará no menor tempo médio de resposta?
Processo Tempo de chegada Tempo de processamento
A 0ms 3ms
B 1ms 6ms
C 4ms 4ms
D 6ms 2ms
a) FCFS
b) SJF
c) SJF preemptivo
d) RR(2)
• Resposta: c
• Questão 15
• Considere os processos abaixo, com seus tempos de chegada e tempo de
uso de CPU (burst). O algoritmo SJF preemptivo é utilizado.
Processo Tempo de chegada Tempo de burst
P1 0ms 10ms
P2 3ms 6ms
P3 7ms 1ms
P4 8ms 3ms
1. Dois processos jamais podem simultaneamente estar dentro de suas regiões críticas.
2. Nenhuma suposição pode ser feita a respeito de velocidades ou de número de CPUs.
3. Nenhum processo executando fora de sua região crítica pode bloquear qualquer
processo.
4. Nenhum processo deve ser obrigado a esperar eternamente para entrar em sua região
crítica.