Você está na página 1de 122

Infraestrutura e Sistemas Computacionais

Aula 03 – Prof. Sérgio Johann Filho


• Apresentação dos principais conceitos
relacionados ao escalonamento
(agendamento) de processos
O que você • Conceitos e critérios para o escalonamento
• Algoritmos de escalonamento
vai aprender
• Escalonamento de threads
nessa aula • Exemplos
• Exercícios sobre escalonamento
• 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
• Parte 1
• Conceitos básicos sobre escalonamento
• Critérios utilizados para o escalonamento de
O que você tarefas
• Algoritmos de escalonamento
vai aprender
nessa aula
• Parte 2
• Critérios para escalonamento
• Algoritmos de escalonamento
O que você • Parâmetros para os principais algoritmos
vai aprender
nessa aula
• Parte 3
• Escalonamento de threads
• Escalonamento em multiprocessadores
O que você • Exemplos de Sistemas operacionais
vai aprender • Avaliação de algoritmos

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

• Decisões de escalonamento da CPU ocorrem quando um


processo:
1) Muda do estado executando para esperando (bloqueio)
2) Muda do estado executando para pronto
3) Muda do estado esperando para pronto
4) Termina
• Escalonamento nas condições 1 e 4 é não-preemptivo
• Não preemptivo
• Execução que não pode ser interrompida
• Uma tarefa é executada até o fim
• Preemptivo
• Execução pode ser interrompida (com base em prioridades)
• Uma tarefa é executada até que outra, com maior prioridade, seja selecionada

• Todas as outras alocações são preemptivas


• Despachante
• O despachante (dispatcher) é o módulo que fornece o controle da CPU ao
processo selecionado pelo escalonador da CPU
• Essa função envolve:
• Troca de contexto
• Mudança para o modo usuário
• Desvio para o endereço adequado no programa do usuário, para reiniciar o programa
• Uso da pilha ou estrutura de dados para o armazenamento de estado

• 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

• Supondo que os processos chegam na ordem P1, P2 e P3, o diagrama


resultante para alocação de CPU é:

• Tempo de espera para P1 = 0ms; P2 = 24ms; P3 = 27ms


• Tempo de espera médio: (0 + 24 + 27) / 3 = 17ms
• FCFS – First come, first served

• Supondo que os processos chegam na ordem P2, P3, P1, o diagrama de


alocação é:

• Tempo de espera para P1 = 6ms; P2 = 0ms; P3 = 3ms


• Tempo de espera médio: (6 + 0 + 3) / 3 = 3ms
• Bem melhor que no caso anterior, em função de não ocorrer o efeito
comboio
• Conceitos sobre escalonamento
• Multiprogramação
• Fase de CPU / fase de I/O
Resumo do • Burst de CPU
que vimos • Escalonador da CPU
até agora • Critérios de alocação
• Utilização, throughput, turnaround time, tempo
de espera e tempo de resposta
• Critérios de otimização
• Algoritmos de escalonamento
• FCFS
Infraestrutura e Sistemas Computacionais
Aula 03 – Parte 2
• Conceitos sobre escalonamento
• Multiprogramação
• Fase de CPU / fase de I/O
Relembrando • Burst de CPU
o conteúdo do • Escalonador da CPU
vídeo anterior • Critérios de alocação
• Utilização, throughput, turnaround time,
tempo de espera e tempo de resposta
• Critérios de otimização
• Algoritmos de escalonamento
• FCFS
• 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
• SJF – Shortest Job First
• Menor tarefa primeiro
• É associado a cada processo a duração da sua próxima fase de uso da
CPU
• Quando a CPU estiver disponível, é associado o processo com o menor
tempo de burst
• Uso dessas durações para escalonar o processo com o menor tempo
• SJF é ótimo - permite o menor tempo médio de espera para um dado
conjunto de processos
• A dificuldade é saber o tamanho da próxima requisição de CPU
• SJF – Shortest Job First
• Exemplo

• Usando o escalonamento SJF, pode-se ordenar os processos de acordo


com o seguinte diagrama:

• Tempo de espera para P1 = 3ms; P2 = 16ms; P3 = 9ms e P4 = 0ms


• Tempo de espera médio: (3 + 16 + 9 + 0) / 4 = 7ms
• Comparado ao FCFS (para essas tarefas), o tempo médio seria 10.25ms
• SJF – Shortest Job First
• A maior dificuldade com o algoritmo SJF é saber o tamanho da próxima
requisição de CPU (tarefa)
• Não é possível adivinhar o padrão representado por um conjunto até o
momento da execução (a carga é dinâmica)
• No entanto, pode-se utilizar aproximações do real tamanho do próximo
burst, e com base nessa aproximação, selecionar o processo com o menor
tempo de burst
• Aproximação: utilizar como base a duração do uso na fase anterior, e
calcular média exponenciais
duração real da n-ésima fase de uso da CPU (mais recente)
valor previsto para a próxima fase de uso da CPU
alpha, valor entre 0 e 1
• SJF – Shortest Job First
• Previsão da duração da próxima fase de uso da CPU
• Exemplo de média exponencial
• .
• .
• História recente não é levada em consideração
• .
• .
• Somente a duração da fase de uso da CPU mais recente conta
• Se a fórmula for expandida, temos:

• 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

• Usando o escalonamento SJF preemptivo, pode-se ordenar os processos


de acordo com o seguinte diagrama:
• SJF – Shortest Job First (preemptive)
• Usando o escalonamento SJF preemptivo, pode-se ordenar os processos
de acordo com o seguinte diagrama:

• O processo P1 inicia no tempo 0ms


• P2 chega no tempo 1ms, e possui um tempo de burst (4ms) menor que P1
(7ms) (P1 é preemptado) e P2 é escalonado
• P3 chega no tempo 2ms e P4 no tempo 3ms, ambos possuem um tempo
de burst maior, e portanto não preemptam P2
• Quando P2 termina, P4 é escalonado pois possui um burst menor que P3
• P1 termina sua execução pois possui um burst menor que P3
• Tempo de espera médio:
• Preemptivo: [(10 – 1) + (1 – 1) + (17 – 2) + (5 – 3)] / 4 = 6.5ms
• Não preemptivo: 7.75ms
• Escalonamento por prioridade
• Um número de prioridade (inteiro) é associado com cada processo
• A CPU é alocada para o processo com a maior prioridade (menor inteiro =
maior prioridade)
• Preemptivo
• Não-preemptivo
• Exemplo

• Usando o escalonamento por prioridade (não preemptivo), pode-se ordenar


os processos de acordo com o seguinte diagrama:
• Escalonamento por prioridade
• Problema: starvation (abandono de processo)
• Processos de baixa prioridade podem nunca executar
• Sempre podem chegar processos com prioridade maior

• Solução: aging (envelhecimento)


• Ao passar do tempo, aumentar a prioridade dos processos que ficam em espera no
sistema
• Dessa forma, processos que possuem alta prioridade eventualmente perderão a
mesma, tendo a vez processos que originalmente possuem baixa prioridade
• É feito um rodízio
• Escalonamento RR (round robin) ou Alocação circular
• Cada processo recebe uma pequena unidade de tempo de CPU (quantum)
• Usualmente de 10 a 100ms
• Depois de transcorrido este tempo, o processo é preemptado e adicionado
ao fim da fila de processos prontos
• Se existem n processos na fila de processos prontos e o quantum for q,
então cada processo obtém 1/n do tempo da CPU em blocos de no
máximo q unidades de tempo de uma vez
• Nenhum processo espera mais do que (n-1)*q unidades de tempo.
• Desempenho
• q alto: semelhante a FIFO
• q pequeno: q deve ser maior que o tempo da troca de contexto, senão a sobrecarga é
muito alta
• Perde-se mais tempo com a troca de contexto do que com a execução de processos
• Escalonamento RR (round robin) ou Alocação circular
• Exemplo

• Usando o escalonamento RR (preemptivo) para um q de 4ms, pode-se


ordenar os processos de acordo com o seguinte diagrama:

• 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

• Mais rápido e consome menos energia


• Mais núcleos, mais atividades em paralelo

• Múltiplas threads por core também em crescimento


• Considera o atraso no acesso a memória para progredir em outra thread enquanto os
dados são transferidos
• Aproveitamento da localidade no acesso à memória
• Threads de uma mesma aplicação tendem a acessar os mesmos dados e instruções
• Bloqueio de memória / Múltiplas threads
• Exemplos de escalonamento em diferentes sistemas operacionais
• Escalonamento no Linux
• Classes
• CFS (completely fair scheduler)
• Escalonamento no Windows
• Classes
• Prioridades relativas
• Escalonamento no Solaris
• Classes
• Escalonamento no Linux
• O principal algoritmo de escalonamento do Linux (a partir da versão 2.6 do
kernel) é o CFS (completely fair scheduler)
• É um algoritmo que garante bom desempenho em sistemas SMP, bom tempo de
resposta para aplicações desktop e também servidores
• O escalonamento no Linux é baseado em classes
• Cada classe possui uma prioridade específica
• Para cada classe, é possível utilizar algoritmos de escalonamento distintos
• Isso permite adequar o kernel do linux para diferentes aplicações
• Servidores, desktops, mobile, entre outros
• Escalonamento no Linux
• Duas classes principais são implementadas por padrão
• Classe padrão (CFS)
• Classe realtime
• Na classe CFS, o escalonador atribui a cada tarefa uma proporção do uso
de CPU
• A proporção é baseada em um valor nice, atribuido a cada tarefa
• Os valores variam entre –20 e +19, onde um valor menor indicam alta prioridade
• Valor padrão: 0
• Na classe realtime, o escalonador utiliza políticas FIFO e RR
• FIFO para tarefas não críticas
• RR para tarefas críticas / tempo real
• CFS (completely fair scheduler)
• O algoritmo CFS não utiliza valores de tempo (em ms por exemplo)
• Identifica uma latência alvo - intervalo de tempo onde uma tarefa deve executar pelo
menos uma vez
• Não atribui diretamente prioridades
• Mantém o quanto uma tarefa executou em uma variável que guarda o "tempo de
execução virtual" chamada vruntime
• Esse tempo é associado a um fator de decaimento, dependendo da prioridade
• Tarefas de prioridade normal (nice 0), vruntime é igual ao tempo físico
• Por exemplo, uma tarefa que executa por 200ms, vruntime = 200ms
• Tarefas de prioridade baixa (nice > 0), vruntime é maior que o tempo físico
• Por exemplo, uma tarefa que executa por 200ms, vruntime > 200ms
• Tarefas de prioridade alta (nice < 0), vruntime é menor que o tempo físico
• Por exemplo, uma tarefa que executa por 200ms, vruntime < 200ms
• A próxima tarefa a executar será a tarefa com o menor valor de vruntime
• Escalonamento no Windows
• No Windows, threads são escalonadas com um algoritmo preemptivo,
baseado em prioridades
• O despachante utiliza 32 níveis de prioridade com classes
• Gerência de memória (0)
• Classe variável (1 – 15)
• Classe tempo real (16 – 31)
• São utilizadas filas para cada prioridade. As classes de prioridade são:
• Idle
• Below normal
• Normal
• Above normal
• High
• Realtime
• Escalonamento no Windows
• Processos são tipicamente membros da classe normal
• Processos podem mudar de classe (a não ser os da classe realtime)
• Uma thread com uma determinada prioridade também possui prioridade
relativa às outras dentro da mesma classe
• Idle
• Lowest
• Below normal
• Normal
• Above normal
• Highest
• Time critical
• Escalonamento no Windows
• Quando uma thread é iniciada, executa até ser interrompida
• Se a thread pertence à classe variável (1 - 16), sua prioridade é reduzida
• A prioridade não diminui além da prioridade base (normal)
• Quando um usuário está executando um programa interativo, o sistema
precisa prover desempenho bom
• O sistema diferencia processos em primeiro plano (foreground) e
processos em segundo plano (background)
• Baseia-se na seleção da janela
• Quando um processo é movido para o fundo, sua prioridade diminui
• Escalonamento no Solaris
• O sistema Solaris utiliza escalonamento baseado em prioridades, divididas
em classes
• Time sharing (TS)
• Interactive (IA)
• Real time (RT)
• System (SYS)
• Fair share (FSS)
• Fixed priority (FP)
• Em cada classe são utilizadas diferentes prioridades e diferentes
algoritmos de escalonamento
• O padrão é a classe TS
• Quanto maior a prioridade, menor o time slice
• Escalonamento no Solaris
• Tabela de despacho para a classe TS
• Escalonamento no Solaris – campos
• Priority
• Prioridade, onde um valor maior indica maior prioridade
• Time quantum
• Quantum de tempo associado com cada prioridade
• Time quantum expired
• Nova prioridade de uma thread que utilizou totalmente seu quantum sem bloquear
• Threads desse tipo são consideradas CPU bound
• Return from sleep
• Prioridade de uma thread que está retornando do estado dormindo (sleep)
• Threads desse tipo são consideradas IO bound
• Múltiplas filas com realimentação
• Escalonamento de threads
Resumo do • Escalonamento em multiprocessadores
que vimos • Exemplos de escalonamento em diferentes
sistemas operacionais
até agora • Linux
• Windows
• Solaris
Infraestrutura e Sistemas Computacionais
Aula 03 – Parte 4
• Múltiplas filas com realimentação
• Escalonamento de threads
• Escalonamento em multiprocessadores
Relembrando • Exemplos de escalonamento em
o conteúdo do diferentes sistemas operacionais
vídeo anterior • Linux
• Windows
• Solaris
• 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
• Exercício 1
• Considere 3 processos com uso intensivo de CPU com tempos de burst de
10ms, 20ms e 30ms respectivamente, e com tempos de chegada de 0ms,
2ms e 6ms. Quantas trocas de contexto são necessárias se o algoritmo
SJF (shortest job first) preemptivo for utilizado?
a) 1
b) 2
c) 3
d) 4
• Exercício 1
• Considere 3 processos com uso intensivo de CPU com tempos de burst de
10ms, 20ms e 30ms respectivamente, e com tempos de chegada de 0ms,
2ms e 6ms. Quantas trocas de contexto são necessárias se o algoritmo
SJF (shortest job first) preemptivo for utilizado?
a) 1
https://boonsuen.com/process-scheduling-solver
b) 2
c) 3
d) 4
• Resposta: b
• No tempo 0, apenas o primeiro processo pode executar. No tempo 2, o segundo
processo chega, mas o primeiro possui o menor tempo, portanto ele continua. No
tempo 6, o terceiro processo chega, mas o primeiro possui o menor tempo, portanto
continua. No tempo 10, o primeiro termina e o segundo é escalonado. No tempo 30, o
terceiro processo é escalonado.
• Apenas duas trocas de contexto são necessárias: P1 -> P2 e P2 -> P3
• Exercício 2
• Qual dos seguintes algoritmos de escalonamento podem levar a situação
de starvation?
a) FCFS
b) Round Robin (RR)
c) Shortest Job First (SJF)
d) Nenhum dos anteriores
• Exercício 2
• Qual dos seguintes algoritmos de escalonamento podem levar a situação
de starvation?
a) FCFS
b) Round Robin (RR)
c) Shortest Job First (SJF)
d) Nenhum dos anteriores
• Resposta: c
• O algoritmo SJF pode causar starvation em processos que levam muito tempo para
completar se processos com um tempo curto de execução continuarem chegando ao
sistema
• Exercício 3
• Se o tempo de quantum do algoritmo RR for muito grande, então ele será
equivalente ao algoritmo
a) FCFS
b) SJF
c) SJF preemptivo
d) Nenhum dos anteriores
• Exercício 3
• Se o tempo de quantum do algoritmo RR for muito grande, então ele será
equivalente ao algoritmo
a) FCFS
b) SJF
c) SJF preemptivo
d) Nenhum dos anteriores
• Resposta: a
• Se o tempo de quantum for muito grande, o escalonamento ocorre com base em uma
política FCFS (first come, first served). Não existe rodízio ao se utilizar um
quantum muito grande, o que faz com que um processo execute até acabar.

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

• Para o caso preemptivo do algoritmo SJF, qual o tempo médio de espera


dos três processos?
a) 5ms
b) 4.33ms
c) 6.33ms
d) 7.33ms
• 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

• Para o caso preemptivo do algoritmo SJF, qual o tempo médio de espera


dos três processos? https://boonsuen.com/process-scheduling-solver
a) 5ms
b) 4.33ms
c) 6.33ms
d) 7.33ms
• Resposta: a
• Questão 7
• Quais das afirmações abaixo são verdadeiras?
I. O algoritmo SJF pode causar starvation.
II. Escalonamento preemptivo pode causar starvation.
III. O algoritmo RR é melhor que o FCFS em termos de tempo de resposta.
a) Apenas a I
b) Apenas I e III
c) Apenas II e III
d) I, II e III
• Questão 7
• Quais das afirmações abaixo são verdadeiras?
I. O algoritmo SJF pode causar starvation.
II. Escalonamento preemptivo pode causar starvation.
III. O algoritmo RR é melhor que o FCFS em termos de tempo de resposta.
a) Apenas a I
b) Apenas I e III
c) Apenas II e III
d) I, II e III
• Resposta: d
• I – como no algoritmo SJF um processo que possui um tempo menor de execução pode
preemptar outro com tempo maior, e como processos podem continuamente chegar
(afirmação verdadeira)
• II – preemptivo significa que um processo antes de completar sua execução pode ser
interrompido, ou seja, um processo pode nunca terminar (afirmação verdadeira)
• III – no FCFS, um processo executa até completar, já no RR todos os processos
possuem uma chance de executar, o que melhora o tempo de resposta (afirmação
verdadeira)
• Questão 8
• Um sistema operacional utiliza o algoritmo SJF preemptivo para o
escalonamento de processos. Considere os tempos de chegada e de
execução de acordo com a tabela
Processo Tempo de execução Tempo de chegada
P1 20ms 0ms
P2 25ms 15ms
P3 10ms 30ms
P4 15ms 45ms

• Qual o tempo de espera total para o processo P2?


a) 5ms
b) 15ms
c) 40ms
d) 55ms
• Questão 8
• Um sistema operacional utiliza o algoritmo SJF preemptivo para o
escalonamento de processos. Considere os tempos de chegada e de
execução de acordo com a tabela
Processo Tempo de execução Tempo de chegada
P1 20ms 0ms
P2 25ms 15ms
P3 10ms 30ms
P4 15ms 45ms

• Qual o tempo de espera total para o processo P2?


a) 5ms
b) 15ms
c) 40ms
d) 55ms
• Resposta: b

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

• O tempo médio de espera dos processos é


a) 4.5ms
b) 5ms
c) 5.5ms
d) 6.5ms
• 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

• O tempo médio de espera dos processos é


a) 4.5ms
b) 5ms
c) 5.5ms
d) 6.5ms
• Resposta: c
https://boonsuen.com/process-scheduling-solver
• Questão 11
• Considere o seguinte conjunto de processos, com tempos de chegada e de
CPU de acordo com a tabela abaixo
Processo Tempo de chegada Tempo de CPU
P1 0ms 5ms
P2 1ms 3ms
P3 2ms 3ms
P4 4ms 1ms

• Qual o tempo de resposta médio para os processos, considerando o


algoritmo SJF preemptivo?
a) 5.5ms
b) 5.75ms
c) 6ms
d) 6.25ms
• Questão 11
• Considere o seguinte conjunto de processos, com tempos de chegada e de
CPU de acordo com a tabela abaixo
Processo Tempo de chegada Tempo de CPU
P1 0ms 5ms
P2 1ms 3ms
P3 2ms 3ms
P4 4ms 1ms

• Qual o tempo de resposta médio para os processos, considerando o


algoritmo SJF preemptivo?
a) 5.5ms
b) 5.75ms
c) 6ms
d) 6.25ms
https://boonsuen.com/process-scheduling-solver
• Resposta: a
• Tempo de resposta = tempo de término - tempo de chegada
• Questão 12
• Qual dos algoritmos abaixo é não preemptivo?
a) Round robin
b) FCFS
c) Múltiplas filas
d) Múltiplas filas com realimentação
• Questão 12
• Qual dos algoritmos abaixo é não preemptivo?
a) Round robin
b) FCFS
c) Múltiplas filas
d) Múltiplas filas com realimentação
• Resposta: b
• RR - preempção ocorre quando o quantum expira;
• FCFS – sem preempção (executa até terminar);
• Múltiplas filas - preempção ocorre quando um processo de prioridade mais alta
chega
• Múltiplas filas com realimentação - preempção ocorre quando um processo com
prioridade maior chega ou quando o quantum de uma fila de alta prioridade expira
e torna-se necessário mover o processo para uma fila de menor prioridade
• Questão 13
• Considere um conjunto de n tarefas com tempos de execução r1, r2,
... rn executando em um sistema com um único processador. Qual dos
algoritmos de escalonamento abaixo resultará em uma maior taxa de
execução?
a) Round robin
b) Shortest job first
c) FCFS (FIFO)
d) LIFO
• Questão 13
• Considere um conjunto de n tarefas com tempos de execução r1, r2,
... rn executando em um sistema com um único processador. Qual dos
algoritmos de escalonamento abaixo resultará em uma maior taxa de
execução?
a) Round robin
b) Shortest job first
c) FCFS (FIFO)
d) LIFO
• Resposta: b
• Taxa de execução: número total de processos executado por unidade de tempo
(soma do tempo de espera com o tempo burst);
• O algoritmo SJF seleciona o processo com menor tempo de execução
• Assim, os processos com os menores tempos são executados primeiro, o que
maximiza o uso de CPU. Isso permite que o máximo de tarefas sejam completadas.
• 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)
• 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

• O tempo médio de resposta é:


a) 8.25ms
b) 10.25ms
c) 6.35ms
d) 4.25ms
• 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

• O tempo médio de resposta é:


a) 8.25ms
b) 10.25ms
c) 6.35ms
d) 4.25ms
• Resposta: a
https://boonsuen.com/process-scheduling-solver
• Exercícios sobre escalonamento
• Algoritmos
• Tempo de chegada
Resumo do • Tempo de processamento / CPU / burst
que vimos • Tempo de resposta
• Taxa de execução (tarefas / tempo)
até agora
Infraestrutura e Sistemas Computacionais
Aula 03
Infraestrutura e Sistemas Computacionais
Aula 03 – Prof. Sérgio Johann Filho
• Checkpoint (primeira questão)
• Fonte: ENADE 2021 - Ciência da Computação, Questão 09

• Quando um computador é multiprogramado, ele geralmente tem múltiplos


processos ou threads que competem pela CPU ao mesmo tempo. Essa situação
ocorre sempre que dois ou mais processos estão simultaneamente no estado
pronto. Se somente uma CPU se encontrar disponível, deverá ser feita uma
escolha de qual processo executar em seguida. A parte do sistema operacional
que faz a escolha é chamada de escalonador, e o algoritmo que ele usa é o
algoritmo de escalonamento. TANENBAUM, A. S. Sistemas Operacionais
Modernos. 3. ed., São Paulo: Pearson, 2010 (adaptado).

• Considerando que em ambientes diferentes são necessários algoritmos


diferentes de escalonamento, garantindo assim que seja maximizado o uso de
seus recursos, assinale a opção que apresenta um algoritmo de escalonamento
seguido do tipo de ambiente no qual deva ser implementado.
• Checkpoint (primeira questão)
• Fonte: ENADE 2021 - Ciência da Computação, Questão 09

• Considerando que em ambientes diferentes são necessários algoritmos


diferentes de escalonamento, garantindo assim que seja maximizado o uso de
seus recursos, assinale a opção que apresenta um algoritmo de escalonamento
seguido do tipo de ambiente no qual deva ser implementado.
a) Primeiro a chegar, último a sair (first in, last out - FILO); propício para sistemas
de tempo real.
b) Escalonamento por taxas monotônicas (rate monotonic scheduling - RMS);
propício para sistemas em lote.
c) Tarefa mais curta primeiro; propício para sistemas interativos.
d) Escalonamento por chave circular (round-robin); propício para sistemas de
tempo real.
e) Escalonamento por prioridades; propício para sistemas interativos.
• Checkpoint (primeira questão)
• Fonte: ENADE 2021 - Ciência da Computação, Questão 09

• Considerando que em ambientes diferentes são necessários algoritmos


diferentes de escalonamento, garantindo assim que seja maximizado o uso de
seus recursos, assinale a opção que apresenta um algoritmo de escalonamento
seguido do tipo de ambiente no qual deva ser implementado.
a) Primeiro a chegar, último a sair (first in, last out - FILO); propício para sistemas
de tempo real.
b) Escalonamento por taxas monotônicas (rate monotonic scheduling - RMS);
propício para sistemas em lote.
c) Tarefa mais curta primeiro; propício para sistemas interativos.
d) Escalonamento por chave circular (round-robin); propício para sistemas de
tempo real.
e) Escalonamento por prioridades; propício para sistemas interativos.
• Checkpoint (segunda questão)
• Fonte: ENADE 2021 - Ciência da Computação, Questão 17

• Durante parte do tempo, um processo está ocupado realizando computações


internas e outras coisas que não levam a condições de corrida. No entanto, às
vezes, um processo tem de acessar uma memória compartilhada ou arquivos, ou
realizar outras tarefas críticas que podem levar a corridas. Essa parte do
programa onde a memória compartilhada é acessada é chamada de região crítica
ou seção crítica. Se conseguíssemos arranjar as coisas de maneira que dois
processos jamais estivessem em suas regiões críticas ao mesmo tempo,
poderíamos evitar as corridas. Embora essa exigência evite as condições de
corrida, ela não é suficiente para garantir que processos em paralelo cooperem de
modo correto e eficiente usando dados compartilhados. Precisamos que quatro
condições se mantenham para chegar a uma boa solução.
• Checkpoint (segunda questão)
• Fonte: ENADE 2021 - Ciência da Computação, Questão 17

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.

Em um sentido abstrato, o comportamento que queremos é mostrado na figura a seguir.


• Checkpoint (segunda questão)
• Fonte: ENADE 2021 - Ciência da Computação, Questão 17
• Checkpoint (segunda questão)
• Fonte: ENADE 2021 - Ciência da Computação, Questão 17

Considerando o texto e a figura apresentados, avalie as asserções a seguir e a relação


proposta entre elas.
I. Em algumas situações, a exclusão mútua pode ser obtida por meio da desabilitação da
interrupção controlada pelo Sistema Operacional, não sendo permitido que o seu
controle seja feito pelo usuário.
PORQUE
II. A desabilitação da interrupção é uma técnica que pode impedir que o processador que
está executando um processo em sua região crítica seja interrompido para executar
outro código, sendo mais eficiente em sistemas de multiprocessadores devido a
quantidade de processos concorrentes.
A respeito dessas asserções, assinale a opção correta.
• Checkpoint (segunda questão)
• Fonte: ENADE 2021 - Ciência da Computação, Questão 17

a) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I.


b) As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa
correta da I.
c) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
d) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
e) As asserções I e II são proposições falsas.
• Checkpoint (segunda questão)
• Fonte: ENADE 2021 - Ciência da Computação, Questão 17

a) As asserções I e II são proposições verdadeiras, e a II é uma justificativa correta da I.


b) As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa
correta da I.
c) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
d) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
e) As asserções I e II são proposições falsas.

Você também pode gostar