A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sincronização e Comunicação entre Processos

Apresentações semelhantes


Apresentação em tema: "Sincronização e Comunicação entre Processos"— Transcrição da apresentação:

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.

2 Aplicações Concorrentes
Sincronização e comunicação entre processos

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.

4 Especificação de Concorrência em Programas

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.

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.

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

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

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.

10 Soluções de Hardware 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.

11 Soluções de Hardware 2. 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);

12 Soluções de Software 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.

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. 

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; WHILE (Cont = 0) DO (* Nao faz nada *); Le_Buffer (Dado); Consome_Dado (Dado, Cont);

15 Semáforos 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

16 Monitores 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

17 Troca de Mensagens É 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

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

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)


Carregar ppt "Sincronização e Comunicação entre Processos"

Apresentações semelhantes


Anúncios Google