comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf ·...
TRANSCRIPT
![Page 1: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/1.jpg)
EEL770 – Sistemas Operacionais
Comunicação entre processos
Pedro Cruz
![Page 2: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/2.jpg)
Aviso
• Os problemas e as soluções que veremos nessa aula servem para:
– Processos
– Threads
– Agentes em um sistema distribuído
2
![Page 3: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/3.jpg)
Interação entre processos
• Comunicação entre processos (interprocess communication – IPC)
– Troca de dados
– Consistência
– Sincronização
3
![Page 4: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/4.jpg)
Interação em threads no mesmo processo
• Troca de dados
– Trivial
• Área de memória compartilhada serve de canal
• Consistência
– Que nem em processos
• Sincronização
– Que nem em processos
4
![Page 5: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/5.jpg)
Comunicação trivial
• Operacional fornece área compartilhada de memória
– Processos escrevem e leem a área
– Processos podem sobrescrever mensagens de outros
• Acidentalmente
• Exemplo:
– Processos escrevem em memória arquivos para impressão
• Fila
– Processo de impressão verifica a memória periodicamente
– Escalonador alterna a execução dos processos
5
![Page 6: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/6.jpg)
Exclusão mútua e sincronização
• Exclusão mútua
– Queremos garantir que um recurso seja acessado apenas por um processo de cada vez
• Sincronização
– Queremos garantir que processos sigam uma determinada ordem de processamento
6
![Page 7: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/7.jpg)
Condição de corrida
• “Condição de concorrência”
– Saída dos processos depende de uma sequência de eventos
• Pode haver erros
• Depurar programas assim é muito difícil
7
![Page 8: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/8.jpg)
Chaveamento entre processos
• Escalonador
– Decide qual processo vai ser executado no processador
• É ativado por um relógio
– Relógio gera interrupção
– Operacional é chamado para tratar interrupção
– Operacional põe escalonador no controle
– Escalonador chaveia entre processos
8
![Page 9: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/9.jpg)
Regiões críticas
• Sequência de instruções de um mesmo processo
– Memória compartilhada é acessada
– Memória compartilhada está inconsistente
9
![Page 10: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/10.jpg)
Regiões críticas - exemplo
• Cliente realiza saque no caixa eletrônico
– Verificação de saldo
– Entrega do dinheiro
– Débito da conta corrente
10
![Page 11: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/11.jpg)
Regiões críticas
• Caixa A retira dinheiro
– Verifica saldo
– Entrega dinheiro
– Debita da conta corrente
• Caixa B retira dinheiro
– Verifica saldo
– Entrega dinheiro
– Debita da conta corrente
11
A AAB B B
t
A
A verifica saldo
B verifica saldo
Entrega dinheiro
Debita da contaA entrega dinheiro
Debita da conta
![Page 12: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/12.jpg)
Exclusão mútua
• Garantia de acesso único a regiões compartilhadas
– Dois processos nunca estão em regiões críticas simultaneamente
– Apenas regiões críticas causam bloqueio de outros processos
– Um processo sempre sai de sua região crítica
– Quantidade e desempenho de CPU’s não deve importar
12
A AAB B BA
A entra na
região crítica
B tenta entrar
na região crítica
e é bloqueado
A sai da
região crítica
B
B entra e sai
de sua região
crítica
t
![Page 13: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/13.jpg)
Garantia de exclusão mútua
• Espera ocupada
• Dormir e acordar
13
![Page 14: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/14.jpg)
Espera ocupada
• Um processo entra em sua região crítica
– Nenhum outro processo entra em região crítica até que o primeiro saia
– Outro processo que precise entrar em região crítica realiza uma espera ocupada
• Suspende todas as suas operações para testar variável que indica se pode ou não entrar na região crítica
while(!allowed){}
critical_op(); //Realiza operação na região crítica
Qual o problema?14
![Page 15: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/15.jpg)
Opções com espera ocupada
• Desabilitar interrupções
• Variáveis do tipo trava
• Variáveis do tipo “vez”
• Solução de Peterson
• Instrução Testar e Configurar Trava
– Test and Set Lock – TSL
• Instrução XCHG
15
![Page 16: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/16.jpg)
Desabilitar interrupções
• Processo em região crítica não é interrompido
– Nem pelo operacional (!!!)
– Escalonador não é acordado
• Vantagem
– Garante que não vai haver interrupções
• Nem do escalonador
• Desvantagem
– Processo mal-intencionado pode se aproveitar
• O operacional pode usar isso em operações internas
16
![Page 17: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/17.jpg)
Variáveis do tipo “trava”
• Variável compartilhada
– Processo quer entrar em região crítica -> testa variável
• Se 1, existe outro processo em região crítica
– Processo entra em espera ocupada
• Se 0, não existe outro processo em região crítica
– Processo configura trava para 1
– Processo executa a região crítica
– Processo configura a trava para 0
Qual o problema?
17
![Page 18: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/18.jpg)
Problema da operação não-atômica
• Ler -> escrever não é uma operação atômica
– Se processo realiza uma leitura e é interrompido antes de fazer uma escrita, temos um problema
18
![Page 19: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/19.jpg)
Variáveis do tipo “vez”
• Variável “vez” é compartilhada entre processos
– Cada processo passa a vez após terminar sua região crítica
#define N_PROC 0
#define NEXT 1
while(true){
while(turn!=N_PROC){}
critical_op();
turn = NEXT;
non_critical_op();
}
Qual o problema?19
![Page 20: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/20.jpg)
Variável do tipo “vez” – problema
• Processos devem sempre entrar em suas regiões críticas de forma alternada
– Processo fica bloqueado até que todos os outros entrem e saiam de suas regiões críticas
20
![Page 21: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/21.jpg)
Solução de Peterson
• Duas funções são chamadas por processos
– Uma para pedir para entrar na região crítica
• Aguarda se não for possível entrar na região crítica
– Outra para liberar os outros processos
21
![Page 22: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/22.jpg)
Solução de Peterson para dois processos
int turn;
bool interested[2];
void enter_region(int p_id, other_id){
interested[p_id] = True;
turn = p_id;
while(turn == p_id &&
interested[other_id]==True){}
}
void leave_region(int p_id){
interested[p_id] = False;
}22
![Page 23: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/23.jpg)
Solução de Peterson para mais processos
• Processos se registram em uma “fila”
• Processos que estão na fila ficam bloqueados
• Processos que não estão na fila não ficam bloqueados
23
![Page 24: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/24.jpg)
Instrução TSL
• Verifica trava e configura trava em operação atômica
• Instrução bloqueia acesso de outros processadores ou núcleos ao barramento
– Ambiente com múltiplos processadores
24
![Page 25: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/25.jpg)
Instrução TSL – uso
enter_region:
MOV REGISTER, #1 | coloca 1 no registrador
TSL REGISTER,LOCK | copia lock para register e | coloca lock em 1;
CMP REGISTER,#0 | testa se lock valia 0;
JNE enter_region | repete, se lock não valia 0;
RET | retorna, com autorização;
leave_region:
MOVE LOCK,#0 | configura lock para 0;
RET | retorna;25
![Page 26: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/26.jpg)
Instruções TSL e XCHG
• Seria possível obter o mesmo efeito utilizando apenas a instrução XCHG?
– Se sim, como?
– Se não, qual a diferença?
– Se “mais ou menos”, o que é possível simular e o que não?
26
![Page 27: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/27.jpg)
Dormir e acordar
• Espera ocupada é ruim
– Se processo com prioridade baixa entra em região crítica
• Bloqueiam outros
• Demora a ser chamado
– Demora a sair da região crítica
• Seria melhor se processos pudessem cooperar
– Ceder tempo de CPU para outro processo liberar logo recursos
• Implementado na forma de chamadas de sistema
– Sleep
– Wakeup
27
![Page 28: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/28.jpg)
Dormir e acordar
• Sleep
– Bloqueia o processo e aguarda evento
• Evento é uma chamada de wake up
• Wake up
– Desbloqueia um processo que realizou chamada sleep
• Se processo não estava dormindo, chamada é perdida
28
![Page 29: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/29.jpg)
Produtores e consumidores
• Processo produtor escreve num buffer de tamanho finito
– Se buffer está cheio -> sleep
– Se não -> produz
• Insere item no buffer
• Incrementa variável de tamanho do buffer
• Se buffer estava vazio -> acorda consumidor (wakeup)
• Processo consumidor apaga os dados do buffer
– Se buffer está vazio -> sleep
– Se não -> consome
• Remove item do buffer
• Decrementa variável de tamanho do buffer
• Se buffer estava cheio -> acorda produtor (wakeup)29
![Page 30: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/30.jpg)
Produtores e consumidores
• Condição de corrida possível:
– Consumidor verifica buffer vazio (vai chamar sleep)
– ESCALONADOR!
– Produtor produz primeiro item do buffer
• Emite wakeup
– ESCALONADOR!
– Consumidor realiza chamada sleep
– ESCALONADOR!
– Produtor produz até encher o buffer
• Sleep
– Ambos os processos estão dormindo
• Um aguardando sinal do outro30
![Page 31: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/31.jpg)
Semáforos
• Variável “compartilhada” diz quantos recursos estão disponíveis
– Operação de verificar variável, alterar variável e dormir são atômicas
• Implementadas como chamadas de sistema
– Up
– Down
31
![Page 32: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/32.jpg)
Up e Down
• Up
– Verifica variável
• Se possível, incrementa e segue para execução
– Envia sinal de wake
• Se não, dorme e aguarda sinal
• Down
– Verifica variável
• Se possível, decrementa e segue para execução
– Envia sinal de wake
• Se não, dorme e aguarda sinal
Ocorrem de forma atômica!
32
![Page 33: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/33.jpg)
Consumidor e produtor com semáforo
• Produtor executa up
– Se puder, produz
– Se não, dorme e aguarda wakeup
• Consumidor executa down
– Se puder, consome
– Se não, dorme e aguarda wakeup
33
![Page 34: Comunicação entre processos - gta.ufrj.brcruz/courses/eel770/slides/5_comunicacao.pdf · •Operacional fornece área compartilhada de memória –Processos escrevem e ... Exclusão](https://reader036.vdocuments.net/reader036/viewer/2022081401/5c13da2709d3f26c7c8d6492/html5/thumbnails/34.jpg)
EEL770 – Sistemas Operacionais
Comunicação entre processos
Pedro Cruz