Você está na página 1de 26

1

Sincronizao de Processos (1)


(Aula 13)
2
2
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Condies de Corrida
Condies de corrida so situaes onde dois ou mais
processos acessam dados compartilhados e o resultado
final depende da ordem em que os processos so
executados (o que, em ltima instncia, ditado pelo
mecanismo de escalonamento do S.O.). Torna a
depurao difcil.
Condies de corrida so evitadas atravs da introduo
de mecanismos de excluso mtua. A excluso mtua
garante que somente um processo estar usando os
dados compartilhados num dado momento.
A parte do programa (trecho de cdigo) que em que os
dados compartilhados so acessados denominada de
regio (ou seo) crtica.
3
3
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Exemplo 1
P1 invoca echo() e interrompido imediatamente aps a concluso
da funo input(). Suponha que x tenha sido o caractere digitado,
que agora est armazenado na varivel in.
P2 despachado e tambm invoca echo(). Suponha que y seja
digitado (in recebe y), sendo ento exibido no dispositivo de sada.
P1 retoma a posse do processador. O caractere exibido no o que
foi digitado (x), pois ele foi sobreposto por y na execuo do
processo P2. Concluso: o caractere y exibido duas vezes.
Essncia do problema: o compartilhamento da varivel global in.
Procedure echo();
var out, in: character;
begin
input (in, keyboard);
out := in;
output (out, display)
end.
4
4
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Exemplo 2 (1)
Diretrio de spooler com n
entradas, cada uma capaz de
armazenar um nome de
arquivo.
Servidor de impresso verifica
se existem arquivos a serem
impressos. Caso afirmativo, ele
os imprime e remove os
nomes do diretrio.
Variveis compartilhadas: out,
que aponta para o prximo
arquivo a ser impresso; e in,
que aponta para a prxima
entrada livre no diretrio.
5
5
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Exemplo 2 (2)
P
A
eP
B
decidem colocar um arquivo no spool de
impresso quase ao mesmo tempo.
P
A
l in, armazena o seu valor (7) na varivel local next-
free-slot e interrompido.
P
B
escalonado, l in e coloca o nome do seu arquivo no
slot 7, atualizando in para 8.
P
A
retorna e escreve o nome do seu arquivo na entrada 7
(valor de next-free-slot), apagando o nome colocado por
P
B
. A varivel next-free-slot passa a valer 8.
O servidor no notar nada de errado (o diretrio est
consistente) e P
B
nunca realizar qualquer sada.
6
6
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Concorrncia
Dificuldades:
Compartilhamento de recursos globais.
Gerncia de alocao de recursos.
Localizao de erros de programao (depurao de
programas).
Ao necessria:
Proteger os dados compartilhados (variveis, arquivos
e outros recursos globais).
Promover o acesso ordenado (controle de acesso) aos
recursos compartilhados sincronizao de
processos.
7
7
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Interao de Processos (1)
Processos sem conhecimento uns dos outros:
No so especificamente projetados para trabalharem
juntos.
Os resultados de um processo so independentes
das aes dos outros.
Tipo de relacionamento: Competio
O S.O. precisa resolver a disputa por recursos existe uma
interao indireta.
Potenciais problemas:
Acesso no controlado R.C. (controle de excluso mtua).
Deadlock: (P
1
,R
2
) e (P
2
,R
1
),ambos precisam de (R
1
,R
2
).
Starvation: alternncia entre P
1
e P
3
em detrimento de P
2
.
8
8
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Interao de Processos (2)
Cooperao via compartilhamento
Processos podem usar e alterar dados
compartilhados mas esto cientes de que outros
processos podem acessar esses dados.
Preocupao com a integridade dos dados
compartilhados (coerncia dos dados), alm dos
problemas de controle de excluso mtua, deadlock e
starvation.
Os resultados de um processo podem depender de
informaes obtidas por outros.
9
9
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Interao de Processos (3)
Cooperao por comunicao
Processos participam de um esforo comum na
realizao de uma tarefa.
A comunicao prov uma maneira de sincronizar ou
coordenar as vrias atividades.
Primitivas para o envio e recebimento de mensagens
so providas como parte de uma linguagem de
programao ou pelo kernel do sistema operacional.
10
10
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Interao de Processos (4)
Cooperao por comunicao (cont.)
Como nada compartilhado pelos processos no
existem condies de corrida. Assim, existncia de um
mecanismo de excluso mtua no um requisito de
controle.
Pode ocorrer deadlock:
Cada processo esperando por uma mensagem de um outro
processo.
Pode ocorrer starvation:
Dois processos enviando repetitivamente mensagens um para
o outro e um terceiro bloqueado, esperando por uma
mensagem de um deles.
11
11
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Abordagens para Excluso Mtua
Requisitos para uma boa soluo:
A apenas um processo permitido estar dentro de sua
R.C. num dado instante.
Nenhum processo que executa fora de sua regio
crtica pode bloquear outro processo (ex: processo
pra fora da sua R.C.).
Nenhuma suposio pode ser feita sobre as
velocidades relativas dos processos ou sobre o nmero
de CPUs no sistema.
Nenhum processo pode ter que esperar eternamente
para entrar em sua R.C. ou l ficar eternamente.
12
12
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Tipos de Solues
Solues de Hardware
Inibio de interrupes
Instruo TSL (apresenta busy wait)
Solues de software com busy wait
Varivel de bloqueio
Alternncia estrita
Algoritmo de Decker
Algoritmo de Peterson
Solues de software com bloqueio
Sleep / Wakeup, Semforos, Monitores
13
13
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Inibio de Interrupes
Usa um par de instrues do tipo DI / EI.
DI = disable interrupt EI = enable interrupt
O processo desativa todas as interrupes
imediatamente antes de entrar na sua R.C.,
reativando-as imediatamente depois de sair dela.
Com as interrupes desativadas, nenhum
processo que est na sua R.C. pode ser
interrompido, o que garante o acesso exclusivo
aos dados compartilhados.
14
14
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Exemplo
Problema do produtor-consumidor (varivel N
indica quantos itens ainda podemser colocados
no buffer).
Pr odut or Consumi dor
DI DI
LDA N LDA N
DCR A I NC A
STA N STA N
EI EI
15
15
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Problemas da Soluo DI/EI
desaconselhvel dar aos processos de usurio
o poder de desabilitar interrupes.
No funciona com vrios processadores.
Inibir interrupes por um longo perodo de
tempo pode ter conseqncias danosas. Por
exemplo, perde-se a sincronizao com os
dispositivos perifricos.
OBS: inibir interrupes pelo tempo de algumas
poucas instrues pode ser conveniente para o kernel
(p.ex., para atualizar uma estrutura de controle).
16
16
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
A Instruo TSL (1)
TSL = Test and Set Lock
Soluo de hardware para o problema da
excluso mtua em ambiente com vrios
processadores.
O processador que executa a TSL bloqueia o
barramento de memria, impedindo que outras CPUs
acessem a MP at que a instruo tenha terminado.
A instruo TSL faz o seguinte:
L o contedo de um endereo de memria (varivel
compartilhada lock, usada para proteger a R.C.)
para um registrador e armazena um valor diferente
de zero (normalmente 1) nesse endereo.
17
17
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
A Instruo TSL (2)
Se lock = 0 R.C. livre;
Se lock = 1 R.C. ocupada.
(Lock iniciada com o valor 0).
A instruo TSL executada de forma atmica.
As operaes de leitura e armazenamento da varivel
lock so garantidamente indivisveis, sem interrupo.
Nenhuma outra CPU pode acessar lock enquanto a
instruo no tiver terminado.
18
18
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
A Instruo TSL (3)
boolean testset (int lock)
{
if (lock == 0) {
lock = 1;
return true;
}
else {
return false;
}
}
19
19
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
A Instruo TSL (4)
20
20
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
A Instruo TSL (5)
21
21
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Tipos de Solues
Solues de Hardware
Inibio de interrupes
Instruo TSL (apresenta busy wait)
Solues de software com busy wait
Varivel de bloqueio
Alternncia estrita
Algoritmo de Decker
Algoritmo de Peterson
Solues de software com bloqueio
Sleep / Wakeup, Semforos, Monitores
22
22
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Solues com Busy Wait
Busy wait = espera ativa ou espera ocupada.
Basicamente o que essas solues fazem :
Quando um processo quer entrar na sua R.C. ele verifica se a
entrada permitida. Se no for, ele espera em um lao
(improdutivo) at que o acesso seja liberado.
Ex: While (vez == OUTRO) do {nothing};
Conseqncia: desperdcio de tempo de CPU.
Problema da inverso de prioridade:
Processo LowPriority est na sua R.C. e interrompido. Processo
HighPriority selecionado mas entra em espera ativa. Nesta
situao, o processo LowPriority nunca vai ter a chance de sair da
sua R.C.
23
23
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
1a. Tentativa - Varivel de Bloqueio
Varivel de bloqueio, compartilhada, indica se a
R.C. est ou no em uso.
turn = 0 R.C. livre turn = 1 R.C. em uso
Tentativa para n processos:
var turn: 0..1
turn := 0
Process P
i
:
...
while turn = 1 do {nothing};
turn := 1;
< critical section >
turn := 0;
...
24
24
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Problemas da 1a. Tentativa
A proposta no correta pois os processos
podem concluir simultaneamente que a R.C.
est livre, isto , os dois processos podem
testar o valor de turn antes que essa varivel
seja feita igual a true por um deles.
25
25
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
2a. Tentativa Alternncia Estrita
Varivel global indica de quem a vez na hora
de entrar na R.C.
Tentativa para 2 processos:
var turn: 0..1;
P0:
.
.
while turn 0 do {nothing};
< critical section >
turn := 1;
.
P1:
.
.
while turn 1 do {nothing};
< critical section >
turn := 0;
.
26
26
http://www.inf.ufes.br/~zegonc/so.htm
Sistemas Operacionais 2007/2 Prof. J os Gonalves LPRM/DI/UFES
Problemas da 2a. Tentativa
O algoritmo garante a excluso mtua, mas
obriga a alternncia na execuo das R.C.
No possvel a um mesmo processo entrar duas
vezes consecutivamente na sua R.C.
Logo, a velocidade de entrada na R.C. ditada pelo
processo mais lento.
Se um processo falhar ou terminar, o outro no
poder mais entrar na sua R.C., ficando
bloqueado permanentemente.

Você também pode gostar