escalonador - Gustavo Wagner

Propaganda
Sistemas Operacionais
IESP - FATEC-PB
Professor: Gustavo Wagner
[email protected]
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
1
Capítulo 2
Processos e Threads
2.1 Processos
2.2 Threads
2.3 Comunicação interprocesso
2.4 Problemas clássicos de IPC
2.5 Escalonamento
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
2
Escalonamento
• Em computadores multiprogramados há vários
processos concorrendo pela CPU ao mesmo
tempo;
• Se houver apenas uma CPU, deverá ser escolhido
um processo para executar primeiro;
• No SO, a parte que faz isso é o escalonador;
• O algoritmo usado é o algoritmo de
escalonamento;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
3
Introdução
• No início, com sistemas em lote, sendo a
entrada cartões gravados em fita magnética,
o algoritmo era: execute o próximo job na
fita;
• Um algoritmo de escalonamento inteligente
e eficiente é o que se busca;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
4
Introdução
• Com o advento de computadores pessoais, a
estória mudou em dois aspectos;
• Primeiro:
– normalmente em PCs existe apenas um
processo ativo: editor de texto, por exemplo;
• Segundo:
– as cpus ficaram tão rápidas que atualmente a
lentidão vem por parte do usuário;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
5
Introdução
• Como conseqüência, em PCs simples, o
escalonamento não é tão “importante”;
• Já em servidores e estações de trabalho de
alto desempenho em rede, a situação muda;
• Por exemplo, qual deve executar primeiro:
– Processo que atualiza a tela depois do usuário
fechar uma janela;
– Processo que envia mensagens eletrônicas;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
6
Introdução
• Além de escolher qual processo executar, o
escalonador tem que fazer bom uso da CPU;
• Alternar processos é muito caro!
– Passa-se do modo usuário para modo núcleo;
– Salva-se o estado atual do processo: contexto;
– Em alguns sistemas, mapa de memória deve ser
salvo;
– Um novo processo precisa ser escolhido;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
7
Introdução
– A MMU precisa carregar o mapa de bits do
novo processo;
– O novo processo precisa ser iniciado;
– Além disso, a memória cache precisa ser
invalidada;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
8
Comportamento do processo
• O sucesso de escalonamento depende da
seguinte propriedade observada nos
processos:
– Processos têm surtos de computação(Uso de
CPU) e/ou requisições de E/S;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
9
Escalonamento
•
Surtos de uso da CPU alternam-se com
períodos de espera por E/S
a) um processo orientado à CPU
b) um processo orientado à E/S
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
10
Comportamento do processo
• Quanto mais rápidas as CPUs, mais os
processos serão orientados à E/S;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
11
Quando escalonar?
• Primeiro, quando se cria um novo processo,
é necessário tomar a decisão de execução do
pai ou filho;
• Segundo, no término de um processo é
necessário escolher outro processo;
• Terceiro, quando um processo bloqueia para
E/S, é necessário escolher outro processo
para executar;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
12
Quando escalonar
• Quarto, quando ocorre uma interrupção de
E/S; O processo que estava esperando a E/S
vai para pronto e pode ser escalonado;
• Decisões do escalonador pode ocorrer a
cada interrupção do relógio;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
13
Quando escalonar?
• Preemptivo:
– tempo fixado de execução;
• Não-preemptivo:
– o processo só para de executar se houver E/S ou
finalizou;
• Se não houver relógio disponível, o
escalonamento não-preemptivo será a única
opção;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
14
Categorias de algoritmos
• Diferentes áreas de aplicações têm objetivos
diferentes;
• Por isso temos diferentes categorias de
algoritmos;
– Lote:
• não há usuário impaciente esperando resultado; Os
algoritmos são não-preemptivos ou preemptivos
com tempo longo;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
15
Categorias de algoritmos
– Interativo:
• algoritmos preemptivos; Se um programa falhar, é
só escolher outro;
– Tempo real:
• curiosamente, preempção é desnecessária; cada
processo faz seu trabalho e abandona a CPU;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
16
Categorias de algoritmos
• Exemplos:
– Preemptivos: linux, windows xp;
– Não-preemptivos: DOS, Windows 3.1;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
17
Objetivos dos algoritmos de
escalonamento
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
18
Escalonamento em lote –
Primeiro a chegar, primeiro a ser
servido – Fila
• Um job executa até concluir sua computação ou
que seja bloqueado;
• Jobs que chegam para executar esperarão numa
fila;
• Caso de desvantagem:
– um processo orientado à cpu precisa executar por 1s, a
cada vez;
– Outros processos orientados à E/S precisam realizar
1000 leituras de disco;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
19
Job mais curto primeiro
Um exemplo de escalonamento job mais curto primeiro
(4a + 3b + 2c + d)/4
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
20
Job mais curto primeiro
• Todos os jobs já devem estar prontos;
• Contra exemplo (quando nem todos os jobs
estão disponíveis):
– 5 processos: A(2), B(4), C(1), D(1), E(1)
– Tempos de chegada: 0, 0, 3, 3, 3
– Usando Job mais curto primeiro, teríamos: A,
B, C, D, E = 4,6
– Se executarmos na ordem B, C, D, E, A = 4,4
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
21
Próximo de menor tempo
restante
• Versão preemptiva do “Job mais curto
primeiro”;
• Se um processo chegar, e seu tempo de
execução for menor do que o tempo restante
do processo atual, ele será escolhido;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
22
Escalonamento em 3 níveis
Escalonamento em três níveis
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
23
Escalonamento em
Sistemas Interativos Round Robin
•
Escalonamento por alternância circular (roundrobin)
a) lista de processos executáveis
b) lista de processos executáveis depois que B usou todo
o seu quantum
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
24
Round robin
• Mudança de contexto é caro;
• Se mudar de contexto dura 1ms, e quantum
for 4ms, 20% do tempo de CPU é mudando
contexto! 
• Se o quantum for muito grande, ex.: 100ms,
e tiver 10 usuários teclando <enter>, o
último talvez tenha que esperar 1s!
• Um quantum razoável está entre 20 a 50ms;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
25
Escalonamento por prioridade
Um algoritmo de escalonamento com quatro classes
de prioridade
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
26
Escalonamento por prioridades
• O escalonador pode levar em consideração
quanto do quantum o processo utilizou;
• Por exemplo, se o quando for de 50ms, e o
processo só usou 1ms, o escalonador deve
aumentar a prioridade deste em relação a
outro processo que usou todo o quantum;
• Fórmula: 1/f, onde f é a fração do quantum
que o processo usou;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
27
Próximo processo mais curto
• Em sistemas em lote, funciona bem;
• Mas como fazer isso em sistemas
interativos? Ou seja, como saber quem é o
job mais curto nesse momento?
– Calcular com base em execuções passadas, e
fazer o cálculo do tempo estimado;
– aT0 + (1-a)T1;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
28
Escalonamento por loteria
• Cada processo é munido de um bilhete;
• George Orwell:
– “Todos os processos são iguais, mas alguns são mais iguais que os
outros”;
– Versão Stanley Kubrick: “Todos os humanos à partir de agora são, verdes,
não existe mais branco e preto. Mas há verdes claros e verdes escuros!” 
• Processos mais importantes podem receber mais bilhetes;
• Um novo processo que recebe bilhete tem a mesma chance que um
antigo;
• Esse algoritmo é altamente responsivo;
• Os processos cooperativos podem trocar bilhetes: ex.: Cliente-Servidor
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
29
Escalonamento por fração justa
• Se um usuário tiver 4 processos a executar,
e outro tiver 1 único processo para
executar?
• Provavelmente o primeiro usuário usará
80% da CPU e o outro apenas 20%;
• Escalonamento por fração justa divide
igualitariamente a CPU entre os usuários;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
30
Escalonamento em Sistemas
de Tempo Real
• Algoritmos de escalonamento de tempo real
podem ser estáticos ou dinâmicos;
• Estático:
– escalona-se antes do sistema ser executado;
tem-se informação precisa antes da execução;
• Dinâmico:
– escalona-se durante a execução do sistema;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
31
Política X Mecanismo
• Fizemos suposições até agora que os processos pertencem
a usuários diferentes;
• Mas existem vários processos que são do mesmo usuário,
como pai e filhos;
• Algoritmos são parametrizáveis, mas os parâmetros podem
ser passados pelos processos dos usuários;
• Mecanismo:
– algoritmo de escalonamento; está normalmente no núcleo;
• Política:
– pode ser implementada por algum processo de usuário;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
32
Escalonamento de Threads
• Em nível do usuário, quem escalona é o sistema
supervisor;
• Ele é quem entende qual o melhor momento e qual
thread deve escalonar;
• O escalonador do SO só escalona o processo das
threads, não as próprias threads;
• O algoritmo usado pelo sistema supervisor pode
ser qualquer um dos vistos anteriormente;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
33
Escalonamento de Threads
• Já em modo núcleo, o escalonador escalona cada
thread especificamente;
• Escalonar uma thread de núcleo é bem mais lento
que escalonar uma thread de usuário: precisa
invalidar memória, cache, etc;
• Mudar de uma thread A.1 para A.2 é mais rápido
que mudar de A.1 para B.1;
• Isso pode ser levado em consideração na hora de
escalonar;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
34
Download