Sistemas Operacionais
Prof.: Filipe T. Marques
[email protected]
UNIPÊ
Transparências também adaptadas pelo
professor: Gustavo Wagner
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;
• 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
• Processos têm surtos de computação e
requisições de E/S;
• Interrupção de tempo
– Evita que o processo rede por um tempo muito
grande
– O escalonador é posto para rodar e decide qual
processo executará
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 tempos 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: estranhamente, preempção é
desnecessária; cada processo faz seu trabalho e
abandona a CPU;
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
16
Requisitos
• Justiça
– Garantir que todos os processos terão chances
iguais de uso do processador
• Eficiência
– Manter o processador ocupado 100% do tempo
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
17
Requisitos
• Tempo de resposta
– Minimizar o tempo de resposta para os usuários
interativos
• Turnaround
– Minimizar o tempo que os usuários batch devem
esperar pela saída
• Throughput
– Maximizar o número de jobs processados na
unidade de tempo
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
18
Introdução ao Escalonamento (2)
Objetivos do algoritmo de escalonamento
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
19
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 cheguem 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
20
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
21
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
22
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
23
Escalonamento em 3 níveis
Escalonamento em três níveis
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
24
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
25
Round robin
• Mudança de contexto é caro;
• Se mudar de contexto durasse 1ms, e
quantum fosse 4ms, 20% do tempo de CPU
seria 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
26
Escalonamento por prioridade
Um algoritmo de escalonamento com quatro classes
de prioridade
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
27
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;
• Como evitar que um processo de alta prioridade
rode indefinidamente?
Pearson Education
Sistemas Operacionais Modernos – 2ª Edição
28
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
29
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”;
• 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
30
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
31
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
32
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
33
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
34
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
35
Download

escalonador