Escolar Documentos
Profissional Documentos
Cultura Documentos
Sincronização de Processos
1
Sistemas Operacionais - Parte 5
1.Introdução
■ 1.Introdução
sincronização
Produtor Consumidor
dados dados
Buffer
Sincronização de Processos - versão 1.0 3
Sistemas Operacionais - Parte 5
Comando_2
:
Comando_n
PAREND
■ O comando PARBEGIN especifica que a seqüência de comando seja executada
concorrentemente numa ordem imprevisível, através de um subprocesso para
cada comando.
■ O comando PAREND define um ponto de sincronização, onde os
processamento só continuará quando todos os subprocessos já tiverem
terminado sua execução
Processo
Principal
Processo
Principal
PROGRAM Expressao
Var X, Temp1, Temp2, Temp3:REAL;
BEGIN
PARBEGIN
Temp1:=
SQRT(1024); repod
2017-01-26 22:23:10
Temp2:= 25.4 * 0.23; --------------------------------------------
Ponto de sincronização para o exemplo!
Temp3:= 302/7;
PAREND
X:=
Temp1+Temp2+Temp3;
writeln(´X =´,X);
END.
END.
Quando um processo estiver acessando o dado compartilhado dentro de
sua região crítica, nenhum processo poderá entrar em sua região crítica
correspondente
REPEAT Cont:=0;
PARABEGIN
Produz_Dado(
Dado); Produtor;
■ Soluções de Hardware
■ Desabilitação de Interrupções
■ Este mecanismo é inconveniente pois o processo que desabilitou
S=S-1 S=S+1
DOWN (S>0)
Processo
UP Inicialmente
acessa
a região
S=1
crítica
Variáveis globais
Fila de espera
procedimentos
código de inicialização
Estrutura do monitor
Sincronização de Processos - versão 1.0 29
Sistemas Operacionais - Parte 5
Solução de Software
■ Monitores
■ Toda implementação da exclusão mútua nos monitores é realizada
pelo compilador, e não mais pelo programador, como no caso de uso
de semáforos
■ Para isto, basta colocar todas as regiões críticas em forma de
procedimentos no monitor e o compilador se encarregará de
garantir a exclusão mútua desses procedimentos
■ Assim, o desenvolvimento de programas concorrentes fica mais
fácil, e as chances de erros são menores
■ Solução de Software
■ Monitores
• O monitor não pode ser executado como
PROGRAM Exemplo; uma subrotina comum.
MONITOR Região_Crítica;
VAR X: INTEGER; • A comunicação do processo com
PROCEDURE Soma;
o
monitor é feita unicamente através de
BEGIN
X:=X+1;
END;
chamadas a seus procedimentos e dos
PROCEDURE Diminui; parâmetros passados para eles
BEGIN
X:=X-1; • A inicialização da variável compartilhada
END;
BEGIN X com o valor zero só acontecerá uma
x:=0;
PARABEGIN
vez
Região_Critica.Soma; • No momento da primeira ativação do
Região_Crítica.Diminui;
PARAEND; monitor Região_Crítica.
END.
• No exemplo o valor final de X será 0
■ Se não houver nenhum cliente, o barbeiro senta em sua cadeira e cai no sono
disponível