O documento discute vários métodos para exclusão mútua entre processos, incluindo desabilitar interrupções, variáveis de impedimento, alternância obrigatória, a solução de Peterson e a instrução TSL. Além disso, aborda semáforos, monitores, troca de mensagens e barreiras para sincronização de processos, bem como técnicas de escalonamento em sistemas em lote e interativos.
2. Exclusão
Mútua
com
Espera
Ociosa
— Desabilitando
Interrupções;
— Variáveis
de
Impedimento;
— Alternância
Obrigatória;
— Solução
de
Peterson;
— A
instrução
TSL;
terça-feira, 13 de março de 12
3. Desabilitando
Interrupções
— É
a
solução
mais
simples:
cada
processo
desabilita
todas
as
interrupções
logo
depois
de
entrar
na
região
crítica
e
reabilita-‐se
imediatamente
antes
de
sair
dela;
— Não
é
interessante
porque
não
é
prudente
dar
aos
processos
dos
usuários
o
poder
de
desligar
interrupções;
— É
uma
técnica
bastante
útil
dentro
do
próprio
SO,
mas
inadequada
como
um
mecanismo
geral
de
exclusão
mútua
para
processos
de
usuário.
terça-feira, 13 de março de 12
4. Variáveis
de
Impedimento
— Solução
de
Software;
— Há
uma
única
variável
compartilhada
entre
os
dois
processos
(lock),
contendo
o
valor
0;
— Se
lock
for
0,
o
processo
altera
essa
variável
para
1
e
entra
na
região;
— Se
lock
já
estiver
com
o
valor
1,
o
processo
simplesmente
aguardará
até
que
ela
se
torne
0;
— Só
que
essa
técnica
apresenta
uma
falha
como
diretório
de
spool.
terça-feira, 13 de março de 12
5. Alternância
Obrigatória
— Contém
uma
variável
inteira,
inicialmente
com
0,
serve
para
controlar
a
vez
de
quem
entra
na
região
crítica
e
verifica
ou
atualiza
a
memória
compartilhada;
— Testar
continuamente
um
variável
até
que
um
valor
apareça
é
chamado
de
espera
ociosa.
Isso
deveria
ser
evitado
(gasta
tempo
de
CPU);
— A
variável
de
impedimento
que
usa
espera
ociosa
é
chamada
de
spin
lock.
terça-feira, 13 de março de 12
6. Alternância Obrigatória
Solução proposta para o problema da região crítica
(a) Processo 0. (b) Processo 1.
33
terça-feira, 13 de março de 12
7. Alternância
Obrigatória
— Alternar
a
vez
não
é
uma
boa
idéia
quando
um
dos
processos
for
muito
mais
lento
que
o
outro;
— Essa
situação
viola
a
condição
3:
o
processo
0
está
sendo
bloqueado
por
um
processo
que
não
está
na
sua
região
crítica.
terça-feira, 13 de março de 12
8. Solução de Peterson
Solução de Peterson para implementar exclusão mútua
35
terça-feira, 13 de março de 12
9. Instrução
TSL
— Requer
um
pequeno
auxílio
do
hardware;
— TSL
(Test
and
Set
Lock):
teste
e
atualize
variável
de
impedimento;
— As
operações
de
leitura
e
armazenamento
de
uma
palavra
são
seguramente
indivisíveis;
— A
CPU
impede
o
acesso
ao
barramento
de
memória.
terça-feira, 13 de março de 12
10. Instrução TSL
Entrando e saindo de uma região crítica usando a
instrução TSL
37
terça-feira, 13 de março de 12
11. Dormir e Acordar
Problema do produtor-consumidor com uma condição de disputa fatal
38
terça-feira, 13 de março de 12
12. Semáforos
O problema do produtor-consumidor usando semáforos
39
terça-feira, 13 de março de 12
13. Mutexes
Implementação de mutex_lock e mutex_unlock
Instrução TSL
40
terça-feira, 13 de março de 12
14. Monitores (1)
Exemplo de um monitor
41
terça-feira, 13 de março de 12
15. Troca de Mensagens
O problema do produtor-consumidor com N mensagens
42
terça-feira, 13 de março de 12
16. Barreiras
— Uso de uma barreira
a) processos se aproximando de uma barreira
b) todos os processos, exceto um, bloqueados
pela barreira
c) último processo chega, todos passam
43
terça-feira, 13 de março de 12
17. Escalonamento
Introdução ao Escalonamento (1)
— 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
44
terça-feira, 13 de março de 12
19. Escalonamento em
Sistemas em Lote (1)
Um exemplo de escalonamento job mais curto primeiro
46
terça-feira, 13 de março de 12
20. Escalonamento em
Sistemas em Lote (2)
Escalonamento em três níveis
47
terça-feira, 13 de março de 12
21. Escalonamento em
Sistemas Interativos (1)
— Escalonamento por alternância circular (round-
robin)
a) lista de processos executáveis
b) lista de processos executáveis depois que B usou todo
o seu quantum
48
terça-feira, 13 de março de 12
25. Escalonamento em
Sistemas de Tempo-Real
Sistema de tempo-real escalonável
• Dados
– m eventos periódicos
– evento i ocorre dentro do período Pi e
requer Ci segundos
• Então a carga poderá ser tratada
somente se m
Ci
∑ P ≤1
i =1 i
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 33
25
terça-feira, 13 de março de 12