Post on 17-Apr-2015
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
1
Sincronização e Comunicação entre Processos
Em uma situação concorrente é necessário que processos
comuniquem-se entre si. Mecanismos como variáveis compartilhadas na
memória ou troca de mensagens. É necessário que os processos tenham
uma execução sincronizada.
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
2
Aplicações Concorrentes
• Sincronização e comunicação entre processos
Processog ravad o r
Processoleito r
d ado
Sin cron ização
leitura
g ra vaçã o
Bu ffer
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
3
Aplicações Concorrentes
• Os mecanismos de sincronização garantem a comunicação entre processos concorrentes e o acesso ao recurso compartilhado.
• Em qualquer situação onde dois ou mais processos tenham acesso a um mesmo recurso compartilhado devem existir mecanismos de controle.
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
4
Especificação de Concorrência em Programas
• Concorrência em programasProcessop rincip a l
Processop rincip a l
Processo 1 Processo 2 Processo n
PARBEGIN Comando_1; Comando_2; . . Comando_n;PAREND
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
5
Especificação de Concorrência em Programas
X := SQRT (1024) + (35.4 * 0.23) - (302 / 7)
PROGRAM Expressao;
VAR X, Temp1, Temp2, Temp3 : REAL;
BEGIN
PARBEGIN
Temp1 := SQRT (1024);
Temp2 := 35.4 * 0.23;
Temp3 := 302 / 7;
PAREND;
X := Temp1 + Temp2 - Temp3;
WRITELN ('x = ', X);
END.
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
6
Problemas de Compartilhamento de Recursos
PROGRAM Conta_Corrente;
.
.
READ (Arq_Contas, Reg_Cliente);
READLN (Valor_Dep_Ret);
Reg_Cliente.Saldo :=
Reg_Cliente.Saldo + Valor_Dep_Ret;
WRITE (Arq_Contas, Reg_Cliente);
.
.
END.
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
7
Problemas de Compartilhamento Recursos
Processo A Processo B
X := X + 1; X := X - 1;
Processo A Processo B
LOAD x,Ra LOAD x,Rb
ADD 1,Ra SUB 1,Rb
STORE Ra,x STORE Rb,x
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
8
Exclusão Mútua
• Quando dois ou mais processos compartilham um mesmo recurso devem existir mecanismos de controle
• A solução é impedir que dois ou mais processos acessem um mesmo recurso simultaneamente
• Enquanto um processo estiver acessando determinado recurso todos os demais que queiram acessá-lo deverão esperar pelo término da utilização do recurso – Exclusão mútua
• A parte do código do programa onde é feito o acesso ao recurso compartilhado é denominado região crítica
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
9
Exclusão Mútua• Mecanismo que implementam exclusão
mútua utilizam protocolos de acesso a região crítica. Pode ser implementada por soluções de hardware ou de software
BEGIN . . Entra_Regiao_Critica; Regiao_Critica; Sai_Regiao_Critica; . .END.
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
10
Soluções de Hardware
1. Desabilitação de interrupções – o programa desabilita as interrupções antes de entrar em sua região crítica e as reabilita após deixar a região crítica.
BEGIN . Desabilita_Interrupcoes; Regiao_Critica; Habilita_Interrupcoes; .END.
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
11
Soluções de Hardware2. Instrução Test-and-Set – muitos processadores
possuem uma instrução de máquina especial que permite ler uma variável, armazenar seu conteúdo em uma outra área e atribuir um novo valor a mesma variável.
Esta instrução, o test-and-set é executado sem interrupção.
Test-and-Set (X,Y);
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
12
Soluções de Software
1. Sincronização Condicional – É uma situação onde o acesso ao recurso
compartilhado exige a sincronização de processos
vinculados a uma condição de acesso. – O recurso pode não se encontrar pronto para uso
devido a uma condição específica, neste caso o processo que deseja usá-lo permanecerá bloqueado.
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
13
Sincronização Condicional(Problema Produtor/Consumidor)
PROGRAM Produtor_Consumidor_1;
CONST TamBuf = (* Tamanho qualquer *);
TYPE Tipo_Dado = (* Tipo qualquer *);
VAR Buffer : ARRAY [1..TamBuf] OF Tipo_Dado;
Dado : Tipo_Dado;
Cont : 0..TamBuf;
BEGIN
Cont := 0;
PARBEGIN
Produtor;
Consumidor;
PAREND;
END.
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
14
Sincronização Condicional (Problema Produtor/Consumidor)
PROCEDURE Produtor;BEGIN REPEAT Produz_Dado (Dado); WHILE (Cont = TamBuf) DO (* Nao faz nada *); Grava_Buffer (Dado, Cont); UNTIL False;END; PROCEDURE Consumidor;BEGIN REPEAT WHILE (Cont = 0) DO (* Nao faz nada *); Le_Buffer (Dado); Consome_Dado (Dado, Cont); UNTIL False;END;
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
15
Semáforos
Fila de esperad e processos
Processo acessaa reg iã o cr ítica
Processo d eseja en tra rn a reg ião cr ítica
DOW
N (S=
0)
DOW
N (S
>0)
U P (S) - p rocesso sa id a reg ião cr ítica
Libe ra processod a fi la de espe ra
•Um semáforo é uma variável inteira, não negatica que só pode ser manipulada pelas instruções Down e Up
•Up incrementa um ao semáforo e down decrementa 1
•A instrução Down coloca o processo em uma fila de espera
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
16
Monitores
D ecla ração deva riáveis g lo ba is
Proced im entos
Fila de entra da
In icia lizaçãod e va r iáveis
Proc. 1
Proc. 2
Proc. n
Mo
nit
or
•São mecanismo de sincronização de alto nível implementados pelo compilador
•Mantém procedimentos e variáveis encapsulados dentro de um módulo.
•Implementa a exclusão mútua de forma automática entre os procedimentos declarados
•Somente um processo executa o monitor em um determinado momento
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
17
Troca de Mensagens
Processotran sm isso r
Processorecep to r
SEN D REC EIV E
C an a l d e co m u nicação
•É um mecanismo de comunicação e sincronização entre processos
•O sistema operacional possui um subsistema de mensagem que suporta esse mecanismo
•Para que haja a comunicação entre os processos deve existir um canal de comunicação (buffer, link de uma rede de computadores)
•Duas rotinas são necessárias SEND(receptor, mensagem) e RECEIVE(transmissor,mensagem)
•Exige a sincronização na execução das mensagens
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
18
Troca de Mensagens
• Comunicação direta – exige que ao enviar ou receber uma mensagem o processo enderece explicitamente o nome do processo receptor e transmissor
Pro cesso A Pro cesso B
Arq
uit
etu
ra d
e S
iste
mas
Opera
cionais
– M
ach
ado/M
aia
19
Troca de Mensagens
• Comunicação indireta – utiliza uma área compartilhada onde as mensagens podem ser colocados pelo processo transmissor e retiradas pelo receptor (mailbox,port)Pro cesso A Pro cesso B
M a ilb oxo u Po rt