![Page 1: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/1.jpg)
1
Sincronização e Comunicação entre Processos
– Introdução– Aplicações Concorrentes– Especificação de Concorrência em Programas – Problemas de Compartilhamento de Recursos– Exclusão Mútua– Sincronização Condicional– Semáforos– Monitores
![Page 2: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/2.jpg)
2
Introdução
• Partes diferentes do código do programa podem executar concorrentemente
• Aplicação concorrente tem como base a execução cooperativa de múltiplos processos ou threads, que trabalham em uma mesma tarefa na busca de um resultado comum
• Vantagem melhor desempenho
• Compartilhamento de recursos pode ocasionar problemas
![Page 3: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/3.jpg)
3
Aplicações Concorrentes
Processogravador
Processoleitor
dado
Sincronização
leitura
gravação
Buffer
Os mecanismos que garantem a comunicação entre processos concorrentes e o acesso a recursos compartilhados são chamados mecanismos de sincronização
![Page 4: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/4.jpg)
4
Especificação de Concorrência em Programas
Primeira notação para especificar concorrência em um programa foram os comandos FORK e JOIN.PROGRAM A; PROGRAM B;
. .
. .
FORK B; .
. .
JOIN B; .
. END.
.
END.
![Page 5: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/5.jpg)
5
Especificação de Concorrência em Programas
Processoprincipal
Processoprincipal
Processo 1 Processo 2 Processo n
PARBEGIN Comando_1; Comando_2; . . Comando_n;PAREND
PARBEGIN início da concorrência
PAREND ponto de sincronização
PARBEGIN COBEGIN
PAREND COEND
![Page 6: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/6.jpg)
6
Especificação de Concorrência em Programas
Expressão a ser calculadaX := SQRT (1024) + (35.4 * 0.23) - (302 / 7)
PROGRAM Expressao;VAR X, Temp1, Temp2, Temp3 : REAL;
BEGINPARBEGIN
Temp1 := SQRT (1024);Temp2 := 35.4 * 0.23;Temp3 := 302 / 7;
PAREND;X := Temp1 + Temp2 - Temp3;WRITELN ('x = ', X);
END.
Comandos executados concorrentemente
![Page 7: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/7.jpg)
7
Prob. de Compartilhamento de Recursos
• Para a compreensão de como a sincronização entre processos concorrentes é fundamental para a confiabilidade dos sistemas multiprogramáveis, são apresentados alguns problemas de compartilhamento de recursos.– Compartilhamento de arquivo em disco;– Compartilhamento de variável na memória.
![Page 8: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/8.jpg)
8
Prob. de Compartilhamento de Recursos
Problema 1: Compartilhamento de um arquivo em disco
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.
![Page 9: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/9.jpg)
9
Prob. de Compartilhamento de Recursos
• O processo do primeiro funcionário (Caixa 1) lê o registro do cliente e soma ao campo Saldo o valor do lançamento de débito. Antes de gravar o novo saldo no arquivo, o processo do segundo funcionário (Caixa 2) lê o registro do mesmo cliente, que está sendo atualizado, para realizar outro lançamento, desta vez de crédito. Independentemente de qual dos processos atualize primeiro o saldo no arquivo, o dado gravado estará inconsistente.
![Page 10: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/10.jpg)
10
Prob. de Compartilhamento de Recursos
Processo A Processo BX := X + 1; X := X - 1;
Processo A Processo BLOAD X,Ra LOAD X,Rb
ADD 1,Ra SUB 1,Rb
STORE Ra,X STORE Rb,X
Problema 2: Compartilhamento de uma variável por dois processos
![Page 11: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/11.jpg)
11
Prob. de Compartilhamento de Recursos
• Considere que o processo A carregue o valor de X no registrador Ra, some 1 e, no momento em que vai armazenar o valor de X, seja interrompido. Nesse instante, o processo B inicia sua execução, carrega o valor de X em Rbe subtraia 1. Desta vez, o processo B éinterrompido e o processo A volta a ser processado, atribuindo o valor 3 à variável X e concluindo sua execução. Finalmente, o processo B retorna a execução, atribui o valor 1 a X, e sobrepõe o valor anteriormente gravado pelo processo A.
![Page 12: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/12.jpg)
12
Exclusão Mútua
• A solução mais simples para evitar os problemas de compartilhamento apresentados éimpedir dois ou mais processos acessem um mesmo recurso simultaneamente.
• Para isso, enquanto um processo estiver acessando determinado recurso, todos os demais processo que queiram acessá-lo deverão esperar pelo término da utilização do recurso.
• Essa idéia de exclusividade de acesso échamada EXCLUSÃO MÚTUA.
![Page 13: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/13.jpg)
13
Exclusão Mútua
• A exclusão mútua deve afetar os processos concorrentes somente quando um deles estiver fazendo acesso ao recurso compartilhado.
• A parte do código do programa onde éfeito o acesso ao recurso compartilhado édenominada região crítica.
• Os mecanismos que implementam a exclusão mútua utilizam protocolos de acesso à região crítica.
![Page 14: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/14.jpg)
14
Exclusão Mútua
BEGIN..Entra_Regiao_Critica; Regiao_Critica;Sai_Regiao_Critica;..
END.
Protocolo de Entrada
Protocolo de Saída
![Page 15: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/15.jpg)
15
Exclusão Mútua
• Como é possível, então, observar, para garantir a implementação da exclusão mútua os processos envolvidos devem fazer acesso aos recursos de forma sincronizada.
• Existem 2 situações indesejadas.– Espera indefinida (Starvation) – é a situação
em que um processo nunca consegue executar sua região crítica e, consequentemente, acessar o recurso compartilhado.
![Page 16: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/16.jpg)
16
Exclusão Mútua
– Dependendo da escolha do sistema operacional pode ocorrer este problema.
• Exemplos: escolha aleatória, prioridades– No primeiro como a escolha é randômica;– No segundo valores de prioridade -20 a +19
– Solução – recurso simples e a criação de filas de pedidos de alocação para cada recurso, usando FIFO (First-In/First-Out).
![Page 17: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/17.jpg)
17
Exclusão Mútua
– Outra situação indesejada na implementação da exclusão mútua é aquela em que um processo fora da sua região crítica impede que outros processos entre nas suas próprias regiões críticas.
– No caso de esta situação ocorrer, um recurso estaria livre, porém alocado a um processo.
• Diversas soluções foram propostas para garantir a exclusão mútua de processos concorrentes.
![Page 18: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/18.jpg)
18
Exclusão Mútua
• Soluções de Hardware– Desabilitação de interrupções
• Processo mais simples• Reabilita as interrupções após deixar a região
crítica• Como a mudança de contexto de processos só
pode ser realizada através de interrupções, o processo que as desabilitou terá acesso garantido.
• Limitações o processo pode não reabilitar as interrupções, em sistemas com múltiplos processadores (tempo para todos receberem a informação)
![Page 19: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/19.jpg)
19
Exclusão Mútua
BEGIN..Desabilita_Interrupcoes;Regiao_Critica;Habilita_Interrupcoes;..
END.
![Page 20: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/20.jpg)
20
Exclusão Mútua
• Soluções de Hardware– 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 à mesma variável.
• Sua característica e ser executada sem interrupção (indivisível).
• Dessa forma, é garantido que dois processos não manipulem uma variável compartilhada ao mesmo tempo.
![Page 21: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/21.jpg)
21
Exclusão Mútua
• Soluções de Hardware• A instrução test-and-set possui o formato a seguir,
e quando executada o valor lógico da variável Y écopiado para X, sendo atribuído à variável Y o valor lógico verdadeiro.
Test-and-Set (X,Y);• O uso de uma instrução especial de máquina
oferece algumas vantagens, como a simplicidade de implementação. Já a principal desvantagem é a possibilidade da espera indefinida, pois a seleção do processo para acesso ao recurso é arbitrária.
![Page 22: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/22.jpg)
22
Exclusão Mútua
• Soluções de Software– Primeiro algoritmo– Segundo algoritmo– Terceiro algoritmo– Quarto algoritmo– Algoritmo de Dekker– Algoritmo de Peterson
![Page 23: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/23.jpg)
23
Exclusão Mútua
• Problema – Espera ocupada– Na espera ocupada, toda vez que um processo não
consegue entrar em sua região critica, por já existir outro processo acessando o recurso, o processo permanece em looping, testando uma condição atéque lhe seja permitido o acesso.
– Desta forma, o processo em looping consome tempo do processador.
• A solução para o problema e colocar o estado em espera.
![Page 24: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/24.jpg)
24
Sincronização Condicional
• É uma situação onde o acesso ao recurso compartilhado exige a sincronização de processos vinculada a uma condição de acesso.
• Um recurso pode não se encontrar pronto para uso devido a uma condição específica.
• Exemplo leitura (consumidor) e gravação (produtor) em um mesmo buffer.
• Ainda temos o problema da espera ocupada.
![Page 25: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/25.jpg)
25
Semáforos
• Mecanismo de sincronização que permite implementar de forma simples, a exclusão mútua e sincronização condicional entre processos.
• Um semáforo é uma variável inteira, não-negativa, que só pode ser manipulada por duas instruções que são indivisíveis.– UP ou V – incrementa uma unidade ao valor do
semáforo.– Down ou P - decrementa uma unidade ao valor do
semáforo.
![Page 26: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/26.jpg)
26
Semáforos
• A maioria das linguagens de programação disponibiliza rotinas para o uso de semáforos
• Os semáforos podem ser binários (apenas valores 0 e 1) ou contadores (qualquer valor)
• Exclusão Mútua Utilizando Semáforos– Semáforo = 1 nenhum processo está utilizando o
recurso– Semáforo = 0 recurso está em uso– Quando o recurso é liberado, o sistema seleciona um
processo na fila de espera associada ao recurso
![Page 27: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/27.jpg)
27
Semáforos
Fila de esperade processos
Processo acessaa região crítica
Processo deseja entrarna região crítica
DOW
N (S=0)DOW
N (S>0)
UP (S) - processo saida região crítica
Libera processoda fila de espera
![Page 28: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/28.jpg)
28
Semáforos
• Sincronização Condicional Utilizando Semáforos– Um exemplo desse tipo de sincronização ocorre
quando um processo solicita uma operação de E/S.– O pedido faz com que o processo execute uma
instrução DOWN no semáforo associado ao evento e fique no estado de espera, até que a operação seja completada.
– Quando a operação termina, a rotina de tratamento da interrupção executa um UP no semáforo, liberando o processo do estado de espera.
![Page 29: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/29.jpg)
29
Semáforos
• Problema dos Filósofos– Exemplo clássico de sincronização de processos.– Nesse problema, há uma mesa com cinco pratos e
cinco garfos, onde os filósofos podem sentar, comer e pensar. Toda vez que um filósofo pára de pensar e desejar comer, é necessário que ele utilize dois garfos, posicionados à sua direita e à sua esquerda.
– Possíveis soluções:• apenas 4 filósofos podem sentar à mesa ao mesmo tempo.• um filósofo só pega um garfo se o outro estiver disponível.• filósofo ímpar pega garfo à esquerda e depois à direita,
filósofo par pega garfo à direita e depois à esquerda.
![Page 30: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/30.jpg)
30
Semáforos
• Problema do Barbeiro– Outro exemplo clássico de sincronização de
processos. Neste problema, um barbeiro recebe clientes para cortar o cabelo.
– Na barbearia há uma cadeira de barbeiro e apenas cinco cadeiras para clientes esperarem.
– Quanto um cliente chega, caso o barbeiro esteja trabalhando, ele senta se houver cadeira vazia ou vai embora se todas as cadeiras estiverem ocupadas.
– No caso de o barbeiro não ter nenhum cliente para atender, ele senda na cadeira e dorme até que um novo cliente apareça.
![Page 31: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/31.jpg)
31
Monitores
• São mecanismos de sincronização de alto nível que tornam mais simples o desenvolvimento de aplicações concorrentes.– Monitores - mecanismos de sincronização
estruturados e implementados pelo compilador.
– Semáforos - mecanismos de sincronização não-estruturados e implementados pelo desenvolvedor
![Page 32: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/32.jpg)
32
Monitores
• O monitor é formado por procedimentos e variáveis encapsulados dentro de um módulo.
• Um monitor é definido especificando-se um nome, declarando-se variáveis locais, procedimentos e um código de inicialização.
• Um processo faz chamada a um dos procedimentos do monitor, caso outro processo já o esteja executando, o processo aguarda a sua vez na fila de entrada.
![Page 33: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/33.jpg)
33
Monitores
Estrutura do monitor
Declaração devariáveis globais
Procedimentos
Fila de entrada
Inicializaçãode variáveis
Proc. 1
Proc. 2
Proc. nM
onito
r
![Page 34: Sincronização e Comunicação entre Processos · • A parte do código do programa onde é ... e quando executada o valor lógico da variável Y é ... –Quando a operação termina,](https://reader030.vdocuments.com.br/reader030/viewer/2022021808/5bf36a2e09d3f2de488c000f/html5/thumbnails/34.jpg)
34
Monitores
Estrutura do monitor com varáveis de condição
Declaração devariáveis globais
Procedimentos
Fila de entrada
Inicializaçãode variáveis
Proc. 1
Proc. 2
Proc. n
Mon
itor
Filas de espera
Condição C1
Condição C2
Condição Cn