Você está na página 1de 29

Escalonamento de CPU

Pablo Tibúrcio
sites.google.com/site/pablotiburcio pablotiburcio@gmail.com

1
Escalonamento de CPU
 Função:
 É maximizar a utilização da CPU via multiprogramação.

 Multiprogramação:
 Quando um processo tem de esperar (p.ex operação I/O), o
SO retira-lhe a CPU, dando-a a outro processo.

2
Sequência alternada de intermitências
de CPU e I/O
 Alternando processos entre ciclos de CPU e ciclos de
I/O

3
Escalonamento de CPU
 Histograma da duração do ciclo de CPU

4
Escalonador de CPU
 Seleciona um, dentre os processos da memória prontos
para executar, e aloca a CPU para ele;
 As decisões de escalonamento ocorrem quando o
processo passa:
 1. Do estado em execução para o estado de espera
 2. Do estado em execução para o estado pronto
 3. Do estado em espera para o estado pronto
 4. Ou quando ele termina
 Escalonamento não-preemptivo nos casos 1 e 4;
 É preemptivo nos demais casos

5
Escalonador de CPU
 1. Do estado em execução para o estado de espera
 2. Do estado em execução para o estado pronto
 3. Do estado em espera para o estado pronto
 4. Ou quando ele termina

novo aceito saída terminado


interrupção

em execução
pronto

escolha do escalonador espera por I/O ou evento


conclusão de I/O ou evento
em espera

6
Dispatcher
 É o módulo que passa o controle ao processo
selecionado pelo escalonador, o que envolve:
 A troca de contexto
 A troca para o modo de usuário
 A retomada da execução do ponto onde houve a última
parada

 A latência de dispatch é o tempo para interromper um


processo e iniciar a execução de um outro;

7
Critérios de escalonamento
 Utilização da CPU
 Throughput – número de processos que completam suas
execuções por unidade de tempo
 Tempo de retorno – quantidade de tempo para executar um
processo
 Tempo de espera – quantidade de tempo aguardando na fila de
prontos
 Tempo de resposta – tempo entre uma requisição e a primeira
resposta

 É desejável maximizar a utilização da CPU e throughput e


minimizar os demais tempos!!

8
Escalonamento FCFS - first-come, first-served
 O algoritmo mais simples: processos são selecionados
ou servidos pela ordem de chegada à ‘fila de prontos’.

 Supondo que os processos chegaram na ordem: P1, P2, P3

 Tempos de espera: P1 = 0; P2 = 24; P3 = 27


 TME: (0 + 24 + 27)/3 = 17

9
Escalonamento FCFS – 1º chega, 1º servido
 Se os processos chegarem na ordem: P2, P3, P1

 Tempos de espera P1 = 6; P2 = 0; P3 = 3
 TME: (6 + 0 + 3)/3 = 3

 Muito melhor que o caso anterior.


 Convoy effect: processo curto antes de processo longo

10
Escalonamento FCFS - first-come, first-served
 Conclusões:

 O tempo médio de espera é, por vezes, bastante elevado, mas


isto depende muito da duração e frequência dos bursts.

 O algoritmo FCFS não é preemptivo. Não é adequado para


sistemas interativos (time sharing) ou de tempo real.

 Batch Systems – Pode ser Adequado

11
Escalonamento - Shortest-Job-First (SJF)
 Seleciona o processo que vai usar a CPU por menos
tempo. Pode ser:
 Não-preemptivo
 Preemptivo ou Shortest-Remaining-Time-First (SRTF).

 SJF é ótimo – produz o menor tempo de espera médio

 O problema é determinar por quanto tempo um


processo vai usar a CPU na próxima execução!!

12
Escalonamento - Shortest-Job-First (SJF)
 SJF não-preemptivo:  SJF preemptivo

 TME: (0 + 6 + 3 + 7)/4 = 4  TME: (9 + 1 + 0 +2)/4 = 3

13
Determinação da duração do próximo CPU Burst
 Apenas uma estimativa é possível

 Utilize-se uma média baseado na duração de CPU bursts


anteriores;

 Abordagem simplista: média simples de todas as durações


passadas

14
Escalonamento por prioridades
 Um número inteiro revela a prioridade do processo

 A CPU é alocada ao processo de maior prioridade


(números menores, prioridades maiores)

 Pode ser preemptivo ou não-preemptivo

 Problema: starvation, processos de baixa prioridade


nunca executam!!
 Solução: envelhecimento, a prioridade é aumentada com o
tempo

15
Escalonamento por prioridades

16
Critérios de prioridade
 Fatores internos:
 limites de tempo
 requisitos de memória
 nº de arquivos abertos
 duração média dos bursts de i/o
 duração média dos bursts de CPU

 Factores externos:
 importância do processo
 preço pago pela utilização
 proprietário do processo

17
Escalonamento Round-Robin
 Cada processo recebe um quantum de tempo de CPU
(10-100 milissegundos).
 Ao final do tempo, ele volta para o final da fila de prontos

 Este algoritmo foi concebido para sistemas de time-


sharing.

18
Escalonamento Round-Robin
 Exemplo:
 quantum=20ms

 TME: maior que o SJF, mas com melhor tempo de resposta

19
Escalonamento Round-Robin
 Tamanho do quantum X troca de contexto:

20
Escalonamento por múltiplas filas
 A fila de prontos é particionada em outras filas.
Ex.:
 Fila de processos interativos (foreground)
 Fila de processo batch (background)

 Cada fila tem o seu próprio algoritmo de escalonamento


 foreground – RR
 background – FCFS

21
Escalonamento por múltiplas filas
 O escalonamento precisa ser feito entre as filas
 Escalonamento com prioridade fixa (serve a fila background
quando não há mais processos na foreground). Possibilidade de
starvation

 Fatia de tempo – cada fila possui certa fatia do tempo de CPU,


que pode ser usado para escalonar os seus processos
 80% do tempo para a fila foreground com RR
 20% pra a fila background com FCFS

22
Escalonamento por múltiplas filas

23
Escalonamento por múltiplas filas com
realimentação
 Um processo move-se pelas várias filas (aging)

 É definido pelos seguintes parâmetros:


 O número de filas
 O algoritmos de escalonamento para cada fila
 O método usado para decidir quando promover um processo
 O método usado para decidir quando rebaixar um processo
 O método usado para determinar em que fila um processo
entrará quando precisar de serviço

24
Escalonamento por múltiplas filas com
realimentação
 Exemplo:
 Três filas:
 Q0 – quantum de 8 milissegundos,
 Q1 –quantum de 16 milissegundos,
 Q2 – FCFS

 Escalonamento:
 Um novo processo entra na fila Q0 com FCFS. Quando ele
ganha a CPU, recebe 8 milissegundos. Se não encerrar neste
tempo, é movido para Q1
 Na fila Q1 com FCFS, ele recebe 16 milissegundos. Se não
encerrar neste tempo, é interrompido e movido para Q2

25
Escalonamento com múltiplos
processadores
 Mais complexo devido às múltiplas CPUs

 Processadores idênticos: uma fila de processos por


processador, ou uma única fila

 Multiprocessamento simétrico (SMP) – cada processador


faz seu próprio escalonamento

 Multiprocessamento assimétrico – apenas um


processador acessa as estruturas de dados do sistema. O
escalonamento é sua atribuição
26
Escalonamento de tempo real
 Sistemas de tempo real crítico – precisa encerrar uma
tarefa num determinado período de tempo

 Sistemas de tempo real não-crítico –processos de tempo-


real possuem prioridades mais altas que os demais

27
Escalonamento de threads
 Escalonamento local – feito localmente em relação à
aplicação

 Escalonamento global – feito pelo kernel


 – Escalonamento de threads em Java

28
Avaliação de algoritmos
 Algumas opções:
 Modelagem determinista
 Modelagem por filas
 Simulação
 Implementação

29