sincronização e comunicação entre processos · • a parte do código do programa onde é ... e...
TRANSCRIPT
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
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
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
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.
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
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
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.
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.
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.
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
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.
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.
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.
14
Exclusão Mútua
BEGIN..Entra_Regiao_Critica; Regiao_Critica;Sai_Regiao_Critica;..
END.
Protocolo de Entrada
Protocolo de Saída
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.
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).
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.
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)
19
Exclusão Mútua
BEGIN..Desabilita_Interrupcoes;Regiao_Critica;Habilita_Interrupcoes;..
END.
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.
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.
22
Exclusão Mútua
• Soluções de Software– Primeiro algoritmo– Segundo algoritmo– Terceiro algoritmo– Quarto algoritmo– Algoritmo de Dekker– Algoritmo de Peterson
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.
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.
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.
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
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
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.
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.
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.
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
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.
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
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