SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
Aula 10 – Comunica¸c˜ao Interprocessos
Norton Trevisan Roman
22 de setembro de 2017
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 1 / 42
Solu¸c˜oes de Exclus˜ao M´utua
Espera Ocupada (Busy Waiting)
Primitivas Sleep/Wakeup
Sem´aforos
Monitores
Troca de Mensagem
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 2 / 42
Monitores
Idealizado por Sir Charles Antony Richard Hoare
(1974) e Per Brinch Hansen (1973), para evitar
erros como a invers˜ao dos downs no mutex
Inicialmente implementados em Concurrent Pascal (ou
PASCAL-FC), de Per Brinch Hansen
Primitiva (unidade b´asica de sincroniza¸c˜ao) de alto
n´ıvel para sincronizar processos:
Conjunto de rotinas, vari´aveis e estruturas de dados
agrupados em um ´unico m´odulo ou pacote
Os processos podem chamar as rotinas em um monitor
quando quiserem
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 3 / 42
Monitores
Dependem da linguagem
de programa¸c˜ao
O compilador ´e quem
implementa a exclus˜ao m´utua
Existente em JAVA, n˜ao em C
Todo recurso compartilhado
entre processos deve estar
implementado dentro do
Monitor
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 4 / 42
Monitores – Execu¸c˜ao
´E feita uma chamada a uma rotina do monitor
Processos n˜ao podem acessar as estruturas internas do
monitor a partir de procedimentos declarados fora dele
Instru¸c˜oes iniciais da rotina (inclu´ıdas pelo
compilador):
Teste para detectar se um outro processo est´a ativo dentro
do monitor
Se positivo, o processo que chamou a rotina ficar´a
bloqueado at´e que o outro processo deixe o monitor
Caso contr´ario, o processo novo executa a rotina no monitor
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 5 / 42
Monitores – Execu¸c˜ao
Somente um processo pode estar ativo em um
monitor em um dado instante
Outros processos ficam bloqueados
Implementado pelo compilador, geralmente por meio
de um mutex
Reduz a possibilidade de erro do programador
Basta o programador transformar as regi˜oes cr´ıticas
em procedimentos de monitores
Como o synchronized de java
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 6 / 42
Monitores
Meio f´acil para conseguir exclus˜ao m´utua
Mas isso n˜ao ´e o bastante
Precisamos tamb´em de um meio de bloquear processos
quando n˜ao puderem prosseguir
Ex: quando o produtor encontra o buffer cheio, deve bloquear
(independentemente de algu´em querer ou n˜ao usar o mesmo buffer)
A solu¸c˜ao se d´a via vari´aveis de condi¸c˜ao (Condition
Variables)
Permitem que threads bloqueiem por conta de alguma condi¸c˜ao n˜ao
satisfeita
Monitores implementam essas vari´aveis e as opera¸c˜oes definidas
sobre elas
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 7 / 42
Monitores – Vari´aveis de Condi¸c˜ao
Opera¸c˜oes B´asicas: WAIT e SIGNAL
wait(condition): bloqueia o processo
Quando um procedimento (em um monitor) descobre que n˜ao pode
continuar, executa um wait em alguma vari´avel condicional
O processo que chamou wait bloqueia (liberando o monitor)
Se houver algum outro processo impedido de entrar no monitor, ele
poder´a ser escalonado agora
Esse outro processo pode acordar o processo adormecido emitindo
um signal para a vari´avel condicional que ele espera
signal(condition): acorda o processo que executou um wait
na vari´avel condition e foi bloqueado
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 8 / 42
Monitores – Vari´aveis de Condi¸c˜ao
Como evitar que dois processos permane¸cam no monitor
ao mesmo tempo?
Precisamos de alguma regra que diga o que
acontece ap´os um signal:
Pode-se exigir que o processo que emitiu o signal saia do
monitor imediatamente → signal ser´a o comando final da
rotina do monitor
Deixar o processo rec´em-acordado rodar, bloqueando o outro
Deixar o processo que emitiu o signal rodar, e ent˜ao somente
permitir que o outro rode ap´os o primeiro ter sa´ıdo do
monitor (adotado pelo Java).
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 9 / 42
Monitores – Vari´aveis de Condi¸c˜ao
Usadas em conjunto com mutexes:
Uma thread trava um mutex
Ao n˜ao conseguir algo de que precisa, espera em
uma vari´avel condicional (via wait)
O wait ´e chamado atomicamente e destrava atomicamente o
mutex que controlava
Outra thread pode ent˜ao continuar, eventualmente
sinalizando a thread bloqueada
No produtor-consumidor, elimina a necessidade dos
sem´aforos empty e full
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 10 / 42
Monitores – Vari´aveis de Condi¸c˜ao
Concurrent Pascal (ou PASCAL-FC)
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 11 / 42
Monitores – Vari´aveis de Condi¸c˜ao
Vari´aveis de condi¸c˜ao n˜ao s˜ao contadores
N˜ao acumulam sinais, como os sem´aforos
Se um sinal ´e enviado sem ningu´em (processo) estar
esperando, o sinal ´e perdido
Assim, um comando WAIT deve vir antes de um comando
SIGNAL
Processos podem verificar se ´e necess´ario fazer um signal,
inspecionando alguma vari´avel em comum
N˜ao ´e problema, se chamadas a WAIT e SIGNAL estiverem dentro
do mesmo monitor
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 12 / 42
Monitores
Diferen¸ca com sleep/wakeup:
Sleep/wakeup falharam porque enquanto um processo
tentava dormir, o outro tentava acord´a-lo
A exclus˜ao m´utua autom´atica dentro do monitor garante
que se um processo rodar, o outro n˜ao estar´a rodando
Vida real: Java, via synchronized
Embora n˜ao tenha vari´aveis condicionais oferece trˆes
procedimentos: wait, notify e notifyall
Equivalem a sleep e wakeup, mas dentro de uma zona livre
de condi¸c˜ao de disputa (bloco synchronized)
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 13 / 42
Monitores – Vari´aveis de Condi¸c˜ao
Produtor/Consumidor em Java (limitado a 1 de cada):
Ao entrar em um m´etodo synchronized, o
objeto “mon” ´e bloqueado
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 14 / 42
Exclus˜ao M´utua em Java
Sem´aforos (classe Semaphore):
http://java.dzone.com/articles/dnp-java-concurrency-%E2%80%93-
part-4
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/
concurrent/Semaphore.html
Monitores (Synchronized):
http://www.guj.com.br/articles/43
http://www.artima.com/insidejvm/ed2/threadsynch.html
Vari´aveis de Condi¸c˜ao:
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/
concurrent/locks/Condition.html
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 15 / 42
Sem´aforos e Monitores – Limita¸c˜oes
Monitores dependem de uma linguagem de
programa¸c˜ao – poucas linguagens suportam
Monitores
Ambos s˜ao boas solu¸c˜oes somente para CPUs com
mem´oria compartilhada (usam a TSL)
N˜ao s˜ao boas solu¸c˜oes para sistema distribu´ıdos, em que
cada processador (ou grupo de processadores) possui sua
pr´opria mem´oria, se comunicando via rede
Nenhuma das solu¸c˜oes provˆe troca de informa¸c˜oes
entre processo que est˜ao em diferentes m´aquinas
Precisamos de algo mais... mensagens!
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 16 / 42
Solu¸c˜oes de Exclus˜ao M´utua
Espera Ocupada (Busy Waiting)
Primitivas Sleep/Wakeup
Sem´aforos
Monitores
Troca de Mensagem
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 17 / 42
Mensagens
Os mecanismos j´a considerados exigem do S.O.
somente a sincroniza¸c˜ao
Asseguram a exclus˜ao m´utua, mas n˜ao garantem um
controle sobre as opera¸c˜oes desempenhadas sobre o recurso
Deixam para o programador a comunica¸c˜ao de mensagens
atrav´es da mem´oria compartilhada
A troca de mensagens ´e um mecanismo mais
elaborado de comunica¸c˜ao e sincroniza¸c˜ao
Exige do S.O. tanto a sincroniza¸c˜ao quanto a comunica¸c˜ao
entre os processos
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 18 / 42
Mensagens
Primitivas:
Envia (Send)
send(destino, &mensagem);
Recebe (Receive)
receive(fonte, &mensagem);
Se n˜ao houver mensagem dispon´ıvel, o receptor
pode:
Bloquear, at´e que haja alguma mensagem
Retornar com mensagem de erro
Implementadas como chamadas ao sistema
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 19 / 42
Mensagens
Sincroniza¸c˜ao entre processos:
Garantida pela restri¸c˜ao de que uma mensagem s´o poder´a
ser recebida depois de ter sido enviada
A transferˆencia de dados de um processo para outro, ap´os
ter sido realizada a sincroniza¸c˜ao, estabelece a comunica¸c˜ao
O fato de um somente poder receber a mensagem ap´os o outro enviar garante a
sincronia entre os processos
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 20 / 42
Mensagens
As primitivas podem ser de dois tipos:
Bloqueantes:
Quando o processo que a executa fica bloqueado at´e que a
opera¸c˜ao seja bem sucedida
Quando ocorrer a entrega efetiva da mensagem ao processo destino,
no caso da emiss˜ao
Quando ocorrer o recebimento da mensagem pelo processo destino,
no caso de recep¸c˜ao.
N˜ao bloqueantes:
Quando o processo que executa a primitiva, continua sua
execu¸c˜ao normal, independentemente da entrega ou do
recebimento efetivo da mensagem pelo processo destino
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 21 / 42
Mensagens
Combina¸c˜ao de Primitivas
Existem quatro maneiras de se combinar as
primitivas de troca de mensagens:
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 22 / 42
Mensagens – Problemas
Perda de Mensagens
Podem ocorrer por falhas na rede, por exemplo
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 23 / 42
Mensagens – Perda de Mensagem
Poss´ıvel solu¸c˜ao:
O receptor, ao receber uma nova mensagem, envia uma
mensagem especial de confirma¸c˜ao (ACK)
Se o emissor n˜ao receber um ACK dentro de um determinado
intervalo de tempo, deve retransmitir a mensagem (la¸co)
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 24 / 42
Mensagens – Perda de Confirma¸c˜ao
O que acontece se a mensagem ´e recebida
corretamente, mas o ACK ´e perdido?
O emissor retransmitir´a a mensagem
O receptor ir´a recebˆe-la duas vezes
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 25 / 42
Mensagens – Perda de Confirma¸c˜ao
Poss´ıvel solu¸c˜ao:
´E essencial que o receptor seja capaz de distinguir uma nova
mensagem de uma retransmiss˜ao
Numerar as mensagens e confirma¸c˜oes:
Se o receptor receber mensagem com o mesmo n´umero que alguma
anterior, sabe que ´e duplicata, ignorando-a
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 26 / 42
Mensagens – Nomes de Processos
Os processos devem ser nomeados de maneira
´unica, para que o nome do processo especificado no
Send ou Receive n˜ao seja amb´ıguo
Ex: processo@m´aquina (normalmente existe uma autoridade
central que nomeia as m´aquinas)
As mensagens s˜ao ent˜ao endere¸cadas aos processos
Quando o n´umero de m´aquinas ´e muito grande:
processo@m´aquina.dom´ınio
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 27 / 42
Mensagens – Produtor/Consumidor
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 28 / 42
Mensagens – Comunica¸c˜ao S´ıncrona
Existem trˆes mecanismos de comunica¸c˜ao s´ıncrona
mais importantes:
Rendez-vous
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 29 / 42
Mensagens – Comunica¸c˜ao S´ıncrona
Existem trˆes mecanismos de comunica¸c˜ao s´ıncrona
mais importantes:
Rendez-vous
Rendez-vous Estendido
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 29 / 42
Mensagens – Comunica¸c˜ao S´ıncrona
Existem trˆes mecanismos de comunica¸c˜ao s´ıncrona
mais importantes:
Rendez-vous
Rendez-vous Estendido
Chamada Remota de Procedimento
Ok, ok
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 29 / 42
Mas Antes... Cultura geral
Randevu: sm (fr rendez-vous) bras. Casa de
tolerˆancia; bordel, lupanar, p**eiro.
Fonte: Michaelis
(http://michaelis.uol.com.br/)
Hmm, esperamos que n˜ao seja nesse sentido
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 30 / 42
Mas Antes... Cultura geral
Randevu: sm (fr rendez-vous) bras. Casa de
tolerˆancia; bordel, lupanar, p**eiro.
Fonte: Michaelis
(http://michaelis.uol.com.br/)
Hmm, esperamos que n˜ao seja nesse sentido
Rendezvous: a place appointed for assembling or
meeting; a meeting at an appointed place and time
Fonte: merriam-webster (http://www.m-w.com/)
UUUUFFFF!
Esse ´e o sentido! (Espero!)
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 30 / 42
Mensagens – Comunica¸c˜ao S´ıncrona
Mecanismo: Rendez-vous
Obtido atrav´es de primitivas Envia e Recebe
bloqueantes colocadas em processos distintos
A execu¸c˜ao destas primitivas em tempos diferentes faz com
que o processo que executar a primitiva antes do outro fique
bloqueado at´e que ocorra a sincroniza¸c˜ao entre os dois
processos, e a consecutiva transferˆencia da mensagem
Em seguida, ambos os processos continuar˜ao seu andamento
em paralelo
Ex.: linguagem CSP
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 31 / 42
Mensagens – Comunica¸c˜ao S´ıncrona
Mecanismo: Rendez-vous
A transferˆencia da mensagem ´e copiada diretamente do emissor ao receptor,
sem uso de buffer intermedi´ario.
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 32 / 42
Mensagens – Comunica¸c˜ao S´ıncrona
Mecanismo: Rendez-vous Estendido
Permite que se execute uma a¸c˜ao ap´os ter recebido
um canal de comunica¸c˜ao, mas antes de deixar o
outro processo continuar
O processo emissor deve esperar que o receptor chegue
na parte do c´odigo desejada
Ex: linguagem ADA
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 33 / 42
Mensagens – Comunica¸c˜ao S´ıncrona
Mecanismo: Rendez-vous Estendido
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 34 / 42
Mensagens – Comunica¸c˜ao S´ıncrona
Mecanismo: Chamada Remota de Procedimento
RPC – Remote Procedure Call
Apresenta uma estrutura de comunica¸c˜ao na qual um
processo pode comandar a execu¸c˜ao de um procedimento
situado em outro processador
Chamadas remotas a rotinas em diferentes m´aquinas
O processo chamador dever´a ficar bloqueado at´e que o
procedimento chamado termine
Tanto a chamada quanto o retorno podem envolver troca de
mensagem, conduzindo parˆametros
Ex: linguagem DP, C (via aplicativo rpcgen)
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 35 / 42
Mensagens – Comunica¸c˜ao S´ıncrona
Mecanismo: Chamada Remota de Procedimento
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 36 / 42
Mensagens – Comunica¸c˜ao S´ıncrona
Vantagem da Chamada Remota de Procedimento
Cliente e servidor n˜ao precisam saber que as mensagens s˜ao
utilizadas
Eles as vˆeem como chamadas de procedimento locais
Java: RMI (Remote Method Invocation)
Permite que um objeto ativo em uma m´aquina virtual Java
possa interagir com objetos de outras m´aquinas virtuais
Java, independentemente de sua localiza¸c˜ao
Outra alternativa: MPI (Message-passing Interface)
Sistemas paralelos
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 37 / 42
Mensagens – Comunica¸c˜ao S´ıncrona
Problemas da Chamada Remota de Procedimento
Dificuldade da passagem de parˆametros por
referˆencia:
Se servidor e cliente possuem diferentes representa¸c˜oes de
informa¸c˜ao, h´a necessidade de convers˜ao
Diferen¸cas de arquitetura:
As m´aquinas podem diferir no armazenamento de palavras
Ex: long do C tem tamanhos diferentes, dependendo se o
S.O. for 32 ou 64 bits
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 38 / 42
Mensagens – Comunica¸c˜ao S´ıncrona
Problemas da Chamada Remota de Procedimento
Falhas semˆanticas:
Ex: o servidor para de funcionar quando executava uma
RPC. O que dizer ao cliente?
Se disser que houve falha e o servidor j´a havia processado a
chamada, o cliente pode pensar que a falha ocorreu antes
desse processamento
Ele pode querer tentar novamente, o que pode n˜ao ser desej´avel (ex:
atualiza¸c˜ao de BD)
Principais abordagens: “no m´ınimo uma vez”, “exatamente
uma vez” e ”no m´aximo uma vez”
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 39 / 42
Mensagens – Comunica¸c˜ao S´ıncrona
Falhas Semˆanticas – Abordagens:
Exatamente uma vez (maybe)
Toda chamada ´e executada exatamente uma vez (n˜ao h´a
retransmiss˜ao de mensagens)
Se o cliente transmite e o servidor cai, ele n˜ao sabe se o
servidor processou o pedido antes de cair
No m´ınimo uma vez (at least once)
O cliente fica retransmitindo o pedido, ap´os timeouts,
at´e que tenha a resposta desejada (ou execute um
m´aximo de retransmiss˜oes)
O cliente n˜ao sabe quantas vezes o procedimento remoto
foi chamado (no servidor) – podem ter sido v´arias
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 40 / 42
Mensagens – Comunica¸c˜ao S´ıncrona
Falhas Semˆanticas – Abordagens:
No m´aximo uma vez (at most once)
O cliente fica retransmitindo o pedido
Possibilita filtragem de poss´ıveis duplicatas e retransmiss˜ao
de respostas sem re-executar as opera¸c˜oes
Se o servidor cair, o cliente saber´a do erro, mas n˜ao saber´a
se a opera¸c˜ao foi executada
Se o servidor n˜ao cair, e o cliente receber o resultado da
chamada, o procedimento ter´a sido chamado exatamente
uma vez
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 41 / 42
Outras Referˆencias
http://docs.oracle.com/javase/tutorial/
networking/overview/networking.html
http://en.wikipedia.org/wiki/Two_
Generals%27_Problem
http://www.firewall.cx/networking-topics/
65-tcp-protocol-analysis/
134-tcp-seq-ack-numbers.html
Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 42 / 42

Mais conteúdo relacionado

Mais procurados

Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1
Cristiano Pires Martins
 
Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)
Jose Silva
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threads
Silvino Neto
 

Mais procurados (20)

(ACH2044) Sistemas Operacionais - Aula 05
(ACH2044) Sistemas Operacionais - Aula 05(ACH2044) Sistemas Operacionais - Aula 05
(ACH2044) Sistemas Operacionais - Aula 05
 
(ACH2044) Sistemas Operacionais - Aula 06
(ACH2044) Sistemas Operacionais - Aula 06(ACH2044) Sistemas Operacionais - Aula 06
(ACH2044) Sistemas Operacionais - Aula 06
 
(ACH2044) Sistemas Operacionais - Aula 12
(ACH2044) Sistemas Operacionais - Aula 12(ACH2044) Sistemas Operacionais - Aula 12
(ACH2044) Sistemas Operacionais - Aula 12
 
(ACH2044) Sistemas Operacionais - Aula 08
(ACH2044) Sistemas Operacionais - Aula 08(ACH2044) Sistemas Operacionais - Aula 08
(ACH2044) Sistemas Operacionais - Aula 08
 
(ACH2044) Sistemas Operacionais - Aula 18
(ACH2044) Sistemas Operacionais - Aula 18(ACH2044) Sistemas Operacionais - Aula 18
(ACH2044) Sistemas Operacionais - Aula 18
 
(ACH2044) Sistemas Operacionais - Aula 20
(ACH2044) Sistemas Operacionais - Aula 20(ACH2044) Sistemas Operacionais - Aula 20
(ACH2044) Sistemas Operacionais - Aula 20
 
(ACH2044) Sistemas Operacionais - Aula 21
(ACH2044) Sistemas Operacionais - Aula 21(ACH2044) Sistemas Operacionais - Aula 21
(ACH2044) Sistemas Operacionais - Aula 21
 
(ACH2044) Sistemas Operacionais - Aula 13
(ACH2044) Sistemas Operacionais - Aula 13(ACH2044) Sistemas Operacionais - Aula 13
(ACH2044) Sistemas Operacionais - Aula 13
 
(ACH2044) Sistemas Operacionais - Aula 17
(ACH2044) Sistemas Operacionais - Aula 17(ACH2044) Sistemas Operacionais - Aula 17
(ACH2044) Sistemas Operacionais - Aula 17
 
Gerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPUGerências de Processos: Escalonamento de CPU
Gerências de Processos: Escalonamento de CPU
 
Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1Aula 02-processos-e-threads-tanenbaum-parte-1
Aula 02-processos-e-threads-tanenbaum-parte-1
 
Gerências de Processos: Sincronização
Gerências de Processos: SincronizaçãoGerências de Processos: Sincronização
Gerências de Processos: Sincronização
 
Sistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e ThreadsSistemas Operativos - Processos e Threads
Sistemas Operativos - Processos e Threads
 
Arquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e ThreadsArquitetura de Computadores: Processos e Threads
Arquitetura de Computadores: Processos e Threads
 
(ACH2044) Sistemas Operacionais - Aula 19
(ACH2044) Sistemas Operacionais - Aula 19(ACH2044) Sistemas Operacionais - Aula 19
(ACH2044) Sistemas Operacionais - Aula 19
 
Processos e threads cap 02 (i unidade)
Processos e threads   cap 02 (i unidade)Processos e threads   cap 02 (i unidade)
Processos e threads cap 02 (i unidade)
 
Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)Sistema Operacional de Tempo Real (vx works)
Sistema Operacional de Tempo Real (vx works)
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threads
 
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...Fundamentos de Sistemas  Operacionais de Tempo Real - Criando seu próprio esc...
Fundamentos de Sistemas Operacionais de Tempo Real - Criando seu próprio esc...
 
Gerência de Processos: Processos
Gerência de Processos: ProcessosGerência de Processos: Processos
Gerência de Processos: Processos
 

Semelhante a (ACH2044) Sistemas Operacionais - Aula 10

Semelhante a (ACH2044) Sistemas Operacionais - Aula 10 (20)

Regiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas OperacionaisRegiões críticas dos Sistemas Operacionais
Regiões críticas dos Sistemas Operacionais
 
Mutex and monitores
Mutex and monitoresMutex and monitores
Mutex and monitores
 
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, DeadlockApresentação Semáforos, monitores, troca de mensagens, Deadlock
Apresentação Semáforos, monitores, troca de mensagens, Deadlock
 
QNX Neutrino RTOS
QNX Neutrino RTOSQNX Neutrino RTOS
QNX Neutrino RTOS
 
Sistema Operacional de Tempo Real(vx works)
Sistema Operacional de Tempo Real(vx works)Sistema Operacional de Tempo Real(vx works)
Sistema Operacional de Tempo Real(vx works)
 
SO-02 Processos
SO-02 ProcessosSO-02 Processos
SO-02 Processos
 
Criando Aplicações Resilientes
Criando Aplicações ResilientesCriando Aplicações Resilientes
Criando Aplicações Resilientes
 
gabarito.pdf
gabarito.pdfgabarito.pdf
gabarito.pdf
 
Processos
ProcessosProcessos
Processos
 
Atps sistemas operacionais
Atps sistemas operacionaisAtps sistemas operacionais
Atps sistemas operacionais
 
Unix - Robert
Unix - RobertUnix - Robert
Unix - Robert
 
Unix - Sistema Operacional
Unix - Sistema OperacionalUnix - Sistema Operacional
Unix - Sistema Operacional
 
Barbeiro Sonolento
Barbeiro SonolentoBarbeiro Sonolento
Barbeiro Sonolento
 
Net - Threads
Net - ThreadsNet - Threads
Net - Threads
 
Pvm
PvmPvm
Pvm
 
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas OperacionaisSistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
Sistemas Operacionais - Aula 2 - Visão Geral de Sistemas Operacionais
 
SO-04 Escalonamento de Processos
SO-04 Escalonamento de ProcessosSO-04 Escalonamento de Processos
SO-04 Escalonamento de Processos
 
S.o aula 1920
S.o aula 1920S.o aula 1920
S.o aula 1920
 
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
Sistemas Operacionais - Aula 02 (Visão geral de sistemas operacionais)
 
Sistema operacional
Sistema operacionalSistema operacional
Sistema operacional
 

Mais de Norton Trevisan Roman

Mais de Norton Trevisan Roman (20)

(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24(ACH2044) Inteligência Artificial - Aula 24
(ACH2044) Inteligência Artificial - Aula 24
 
(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23(ACH2044) Inteligência Artificial - Aula 23
(ACH2044) Inteligência Artificial - Aula 23
 
(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22(ACH2044) Inteligência Artificial - Aula 22
(ACH2044) Inteligência Artificial - Aula 22
 
(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21(ACH2044) Inteligência Artificial - Aula 21
(ACH2044) Inteligência Artificial - Aula 21
 
(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20(ACH2044) Inteligência Artificial - Aula 20
(ACH2044) Inteligência Artificial - Aula 20
 
(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19(ACH2044) Inteligência Artificial - Aula 19
(ACH2044) Inteligência Artificial - Aula 19
 
(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18(ACH2044) Inteligência Artificial - Aula 18
(ACH2044) Inteligência Artificial - Aula 18
 
(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17(ACH2044) Inteligência Artificial - Aula 17
(ACH2044) Inteligência Artificial - Aula 17
 
(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16(ACH2044) Inteligência Artificial - Aula 16
(ACH2044) Inteligência Artificial - Aula 16
 
(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15(ACH2044) Inteligência Artificial - Aula 15
(ACH2044) Inteligência Artificial - Aula 15
 
(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14(ACH2044) Inteligência Artificial - Aula 14
(ACH2044) Inteligência Artificial - Aula 14
 
(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13(ACH2044) Inteligência Artificial - Aula 13
(ACH2044) Inteligência Artificial - Aula 13
 
(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12(ACH2044) Inteligência Artificial - Aula 12
(ACH2044) Inteligência Artificial - Aula 12
 
(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11(ACH2044) Inteligência Artificial - Aula 11
(ACH2044) Inteligência Artificial - Aula 11
 
(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10(ACH2044) Inteligência Artificial - Aula 10
(ACH2044) Inteligência Artificial - Aula 10
 
(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09(ACH2044) Inteligência Artificial - Aula 09
(ACH2044) Inteligência Artificial - Aula 09
 
(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08(ACH2044) Inteligência Artificial - Aula 08
(ACH2044) Inteligência Artificial - Aula 08
 
(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07(ACH2044) Inteligência Artificial - Aula 07
(ACH2044) Inteligência Artificial - Aula 07
 
(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06(ACH2044) Inteligência Artificial - Aula 06
(ACH2044) Inteligência Artificial - Aula 06
 
(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05(ACH2044) Inteligência Artificial - Aula 05
(ACH2044) Inteligência Artificial - Aula 05
 

Último

A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
PatriciaCaetano18
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
azulassessoria9
 
Expansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XVExpansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XV
lenapinto
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
azulassessoria9
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
Autonoma
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
sh5kpmr7w7
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
azulassessoria9
 

Último (20)

Apresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União EuropeiaApresentação | Símbolos e Valores da União Europeia
Apresentação | Símbolos e Valores da União Europeia
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022AULÃO de Língua Portuguesa para o Saepe 2022
AULÃO de Língua Portuguesa para o Saepe 2022
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
ATIVIDADE 3 - DESENVOLVIMENTO E APRENDIZAGEM MOTORA - 52_2024
 
Expansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XVExpansão Marítima- Descobrimentos Portugueses século XV
Expansão Marítima- Descobrimentos Portugueses século XV
 
LENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretaçãoLENDA DA MANDIOCA - leitura e interpretação
LENDA DA MANDIOCA - leitura e interpretação
 
Falando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introdFalando de Física Quântica apresentação introd
Falando de Física Quântica apresentação introd
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
Aula 25 - A america espanhola - colonização, exploraçãp e trabalho (mita e en...
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
INTERTEXTUALIDADE atividade muito boa para
INTERTEXTUALIDADE   atividade muito boa paraINTERTEXTUALIDADE   atividade muito boa para
INTERTEXTUALIDADE atividade muito boa para
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdfatividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
atividade-de-portugues-paronimos-e-homonimos-4º-e-5º-ano-respostas.pdf
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 

(ACH2044) Sistemas Operacionais - Aula 10

  • 1. Aula 10 – Comunica¸c˜ao Interprocessos Norton Trevisan Roman 22 de setembro de 2017 Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 1 / 42
  • 2. Solu¸c˜oes de Exclus˜ao M´utua Espera Ocupada (Busy Waiting) Primitivas Sleep/Wakeup Sem´aforos Monitores Troca de Mensagem Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 2 / 42
  • 3. Monitores Idealizado por Sir Charles Antony Richard Hoare (1974) e Per Brinch Hansen (1973), para evitar erros como a invers˜ao dos downs no mutex Inicialmente implementados em Concurrent Pascal (ou PASCAL-FC), de Per Brinch Hansen Primitiva (unidade b´asica de sincroniza¸c˜ao) de alto n´ıvel para sincronizar processos: Conjunto de rotinas, vari´aveis e estruturas de dados agrupados em um ´unico m´odulo ou pacote Os processos podem chamar as rotinas em um monitor quando quiserem Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 3 / 42
  • 4. Monitores Dependem da linguagem de programa¸c˜ao O compilador ´e quem implementa a exclus˜ao m´utua Existente em JAVA, n˜ao em C Todo recurso compartilhado entre processos deve estar implementado dentro do Monitor Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 4 / 42
  • 5. Monitores – Execu¸c˜ao ´E feita uma chamada a uma rotina do monitor Processos n˜ao podem acessar as estruturas internas do monitor a partir de procedimentos declarados fora dele Instru¸c˜oes iniciais da rotina (inclu´ıdas pelo compilador): Teste para detectar se um outro processo est´a ativo dentro do monitor Se positivo, o processo que chamou a rotina ficar´a bloqueado at´e que o outro processo deixe o monitor Caso contr´ario, o processo novo executa a rotina no monitor Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 5 / 42
  • 6. Monitores – Execu¸c˜ao Somente um processo pode estar ativo em um monitor em um dado instante Outros processos ficam bloqueados Implementado pelo compilador, geralmente por meio de um mutex Reduz a possibilidade de erro do programador Basta o programador transformar as regi˜oes cr´ıticas em procedimentos de monitores Como o synchronized de java Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 6 / 42
  • 7. Monitores Meio f´acil para conseguir exclus˜ao m´utua Mas isso n˜ao ´e o bastante Precisamos tamb´em de um meio de bloquear processos quando n˜ao puderem prosseguir Ex: quando o produtor encontra o buffer cheio, deve bloquear (independentemente de algu´em querer ou n˜ao usar o mesmo buffer) A solu¸c˜ao se d´a via vari´aveis de condi¸c˜ao (Condition Variables) Permitem que threads bloqueiem por conta de alguma condi¸c˜ao n˜ao satisfeita Monitores implementam essas vari´aveis e as opera¸c˜oes definidas sobre elas Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 7 / 42
  • 8. Monitores – Vari´aveis de Condi¸c˜ao Opera¸c˜oes B´asicas: WAIT e SIGNAL wait(condition): bloqueia o processo Quando um procedimento (em um monitor) descobre que n˜ao pode continuar, executa um wait em alguma vari´avel condicional O processo que chamou wait bloqueia (liberando o monitor) Se houver algum outro processo impedido de entrar no monitor, ele poder´a ser escalonado agora Esse outro processo pode acordar o processo adormecido emitindo um signal para a vari´avel condicional que ele espera signal(condition): acorda o processo que executou um wait na vari´avel condition e foi bloqueado Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 8 / 42
  • 9. Monitores – Vari´aveis de Condi¸c˜ao Como evitar que dois processos permane¸cam no monitor ao mesmo tempo? Precisamos de alguma regra que diga o que acontece ap´os um signal: Pode-se exigir que o processo que emitiu o signal saia do monitor imediatamente → signal ser´a o comando final da rotina do monitor Deixar o processo rec´em-acordado rodar, bloqueando o outro Deixar o processo que emitiu o signal rodar, e ent˜ao somente permitir que o outro rode ap´os o primeiro ter sa´ıdo do monitor (adotado pelo Java). Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 9 / 42
  • 10. Monitores – Vari´aveis de Condi¸c˜ao Usadas em conjunto com mutexes: Uma thread trava um mutex Ao n˜ao conseguir algo de que precisa, espera em uma vari´avel condicional (via wait) O wait ´e chamado atomicamente e destrava atomicamente o mutex que controlava Outra thread pode ent˜ao continuar, eventualmente sinalizando a thread bloqueada No produtor-consumidor, elimina a necessidade dos sem´aforos empty e full Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 10 / 42
  • 11. Monitores – Vari´aveis de Condi¸c˜ao Concurrent Pascal (ou PASCAL-FC) Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 11 / 42
  • 12. Monitores – Vari´aveis de Condi¸c˜ao Vari´aveis de condi¸c˜ao n˜ao s˜ao contadores N˜ao acumulam sinais, como os sem´aforos Se um sinal ´e enviado sem ningu´em (processo) estar esperando, o sinal ´e perdido Assim, um comando WAIT deve vir antes de um comando SIGNAL Processos podem verificar se ´e necess´ario fazer um signal, inspecionando alguma vari´avel em comum N˜ao ´e problema, se chamadas a WAIT e SIGNAL estiverem dentro do mesmo monitor Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 12 / 42
  • 13. Monitores Diferen¸ca com sleep/wakeup: Sleep/wakeup falharam porque enquanto um processo tentava dormir, o outro tentava acord´a-lo A exclus˜ao m´utua autom´atica dentro do monitor garante que se um processo rodar, o outro n˜ao estar´a rodando Vida real: Java, via synchronized Embora n˜ao tenha vari´aveis condicionais oferece trˆes procedimentos: wait, notify e notifyall Equivalem a sleep e wakeup, mas dentro de uma zona livre de condi¸c˜ao de disputa (bloco synchronized) Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 13 / 42
  • 14. Monitores – Vari´aveis de Condi¸c˜ao Produtor/Consumidor em Java (limitado a 1 de cada): Ao entrar em um m´etodo synchronized, o objeto “mon” ´e bloqueado Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 14 / 42
  • 15. Exclus˜ao M´utua em Java Sem´aforos (classe Semaphore): http://java.dzone.com/articles/dnp-java-concurrency-%E2%80%93- part-4 http://docs.oracle.com/javase/1.5.0/docs/api/java/util/ concurrent/Semaphore.html Monitores (Synchronized): http://www.guj.com.br/articles/43 http://www.artima.com/insidejvm/ed2/threadsynch.html Vari´aveis de Condi¸c˜ao: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/ concurrent/locks/Condition.html Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 15 / 42
  • 16. Sem´aforos e Monitores – Limita¸c˜oes Monitores dependem de uma linguagem de programa¸c˜ao – poucas linguagens suportam Monitores Ambos s˜ao boas solu¸c˜oes somente para CPUs com mem´oria compartilhada (usam a TSL) N˜ao s˜ao boas solu¸c˜oes para sistema distribu´ıdos, em que cada processador (ou grupo de processadores) possui sua pr´opria mem´oria, se comunicando via rede Nenhuma das solu¸c˜oes provˆe troca de informa¸c˜oes entre processo que est˜ao em diferentes m´aquinas Precisamos de algo mais... mensagens! Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 16 / 42
  • 17. Solu¸c˜oes de Exclus˜ao M´utua Espera Ocupada (Busy Waiting) Primitivas Sleep/Wakeup Sem´aforos Monitores Troca de Mensagem Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 17 / 42
  • 18. Mensagens Os mecanismos j´a considerados exigem do S.O. somente a sincroniza¸c˜ao Asseguram a exclus˜ao m´utua, mas n˜ao garantem um controle sobre as opera¸c˜oes desempenhadas sobre o recurso Deixam para o programador a comunica¸c˜ao de mensagens atrav´es da mem´oria compartilhada A troca de mensagens ´e um mecanismo mais elaborado de comunica¸c˜ao e sincroniza¸c˜ao Exige do S.O. tanto a sincroniza¸c˜ao quanto a comunica¸c˜ao entre os processos Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 18 / 42
  • 19. Mensagens Primitivas: Envia (Send) send(destino, &mensagem); Recebe (Receive) receive(fonte, &mensagem); Se n˜ao houver mensagem dispon´ıvel, o receptor pode: Bloquear, at´e que haja alguma mensagem Retornar com mensagem de erro Implementadas como chamadas ao sistema Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 19 / 42
  • 20. Mensagens Sincroniza¸c˜ao entre processos: Garantida pela restri¸c˜ao de que uma mensagem s´o poder´a ser recebida depois de ter sido enviada A transferˆencia de dados de um processo para outro, ap´os ter sido realizada a sincroniza¸c˜ao, estabelece a comunica¸c˜ao O fato de um somente poder receber a mensagem ap´os o outro enviar garante a sincronia entre os processos Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 20 / 42
  • 21. Mensagens As primitivas podem ser de dois tipos: Bloqueantes: Quando o processo que a executa fica bloqueado at´e que a opera¸c˜ao seja bem sucedida Quando ocorrer a entrega efetiva da mensagem ao processo destino, no caso da emiss˜ao Quando ocorrer o recebimento da mensagem pelo processo destino, no caso de recep¸c˜ao. N˜ao bloqueantes: Quando o processo que executa a primitiva, continua sua execu¸c˜ao normal, independentemente da entrega ou do recebimento efetivo da mensagem pelo processo destino Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 21 / 42
  • 22. Mensagens Combina¸c˜ao de Primitivas Existem quatro maneiras de se combinar as primitivas de troca de mensagens: Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 22 / 42
  • 23. Mensagens – Problemas Perda de Mensagens Podem ocorrer por falhas na rede, por exemplo Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 23 / 42
  • 24. Mensagens – Perda de Mensagem Poss´ıvel solu¸c˜ao: O receptor, ao receber uma nova mensagem, envia uma mensagem especial de confirma¸c˜ao (ACK) Se o emissor n˜ao receber um ACK dentro de um determinado intervalo de tempo, deve retransmitir a mensagem (la¸co) Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 24 / 42
  • 25. Mensagens – Perda de Confirma¸c˜ao O que acontece se a mensagem ´e recebida corretamente, mas o ACK ´e perdido? O emissor retransmitir´a a mensagem O receptor ir´a recebˆe-la duas vezes Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 25 / 42
  • 26. Mensagens – Perda de Confirma¸c˜ao Poss´ıvel solu¸c˜ao: ´E essencial que o receptor seja capaz de distinguir uma nova mensagem de uma retransmiss˜ao Numerar as mensagens e confirma¸c˜oes: Se o receptor receber mensagem com o mesmo n´umero que alguma anterior, sabe que ´e duplicata, ignorando-a Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 26 / 42
  • 27. Mensagens – Nomes de Processos Os processos devem ser nomeados de maneira ´unica, para que o nome do processo especificado no Send ou Receive n˜ao seja amb´ıguo Ex: processo@m´aquina (normalmente existe uma autoridade central que nomeia as m´aquinas) As mensagens s˜ao ent˜ao endere¸cadas aos processos Quando o n´umero de m´aquinas ´e muito grande: processo@m´aquina.dom´ınio Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 27 / 42
  • 28. Mensagens – Produtor/Consumidor Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 28 / 42
  • 29. Mensagens – Comunica¸c˜ao S´ıncrona Existem trˆes mecanismos de comunica¸c˜ao s´ıncrona mais importantes: Rendez-vous Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 29 / 42
  • 30. Mensagens – Comunica¸c˜ao S´ıncrona Existem trˆes mecanismos de comunica¸c˜ao s´ıncrona mais importantes: Rendez-vous Rendez-vous Estendido Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 29 / 42
  • 31. Mensagens – Comunica¸c˜ao S´ıncrona Existem trˆes mecanismos de comunica¸c˜ao s´ıncrona mais importantes: Rendez-vous Rendez-vous Estendido Chamada Remota de Procedimento Ok, ok Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 29 / 42
  • 32. Mas Antes... Cultura geral Randevu: sm (fr rendez-vous) bras. Casa de tolerˆancia; bordel, lupanar, p**eiro. Fonte: Michaelis (http://michaelis.uol.com.br/) Hmm, esperamos que n˜ao seja nesse sentido Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 30 / 42
  • 33. Mas Antes... Cultura geral Randevu: sm (fr rendez-vous) bras. Casa de tolerˆancia; bordel, lupanar, p**eiro. Fonte: Michaelis (http://michaelis.uol.com.br/) Hmm, esperamos que n˜ao seja nesse sentido Rendezvous: a place appointed for assembling or meeting; a meeting at an appointed place and time Fonte: merriam-webster (http://www.m-w.com/) UUUUFFFF! Esse ´e o sentido! (Espero!) Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 30 / 42
  • 34. Mensagens – Comunica¸c˜ao S´ıncrona Mecanismo: Rendez-vous Obtido atrav´es de primitivas Envia e Recebe bloqueantes colocadas em processos distintos A execu¸c˜ao destas primitivas em tempos diferentes faz com que o processo que executar a primitiva antes do outro fique bloqueado at´e que ocorra a sincroniza¸c˜ao entre os dois processos, e a consecutiva transferˆencia da mensagem Em seguida, ambos os processos continuar˜ao seu andamento em paralelo Ex.: linguagem CSP Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 31 / 42
  • 35. Mensagens – Comunica¸c˜ao S´ıncrona Mecanismo: Rendez-vous A transferˆencia da mensagem ´e copiada diretamente do emissor ao receptor, sem uso de buffer intermedi´ario. Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 32 / 42
  • 36. Mensagens – Comunica¸c˜ao S´ıncrona Mecanismo: Rendez-vous Estendido Permite que se execute uma a¸c˜ao ap´os ter recebido um canal de comunica¸c˜ao, mas antes de deixar o outro processo continuar O processo emissor deve esperar que o receptor chegue na parte do c´odigo desejada Ex: linguagem ADA Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 33 / 42
  • 37. Mensagens – Comunica¸c˜ao S´ıncrona Mecanismo: Rendez-vous Estendido Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 34 / 42
  • 38. Mensagens – Comunica¸c˜ao S´ıncrona Mecanismo: Chamada Remota de Procedimento RPC – Remote Procedure Call Apresenta uma estrutura de comunica¸c˜ao na qual um processo pode comandar a execu¸c˜ao de um procedimento situado em outro processador Chamadas remotas a rotinas em diferentes m´aquinas O processo chamador dever´a ficar bloqueado at´e que o procedimento chamado termine Tanto a chamada quanto o retorno podem envolver troca de mensagem, conduzindo parˆametros Ex: linguagem DP, C (via aplicativo rpcgen) Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 35 / 42
  • 39. Mensagens – Comunica¸c˜ao S´ıncrona Mecanismo: Chamada Remota de Procedimento Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 36 / 42
  • 40. Mensagens – Comunica¸c˜ao S´ıncrona Vantagem da Chamada Remota de Procedimento Cliente e servidor n˜ao precisam saber que as mensagens s˜ao utilizadas Eles as vˆeem como chamadas de procedimento locais Java: RMI (Remote Method Invocation) Permite que um objeto ativo em uma m´aquina virtual Java possa interagir com objetos de outras m´aquinas virtuais Java, independentemente de sua localiza¸c˜ao Outra alternativa: MPI (Message-passing Interface) Sistemas paralelos Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 37 / 42
  • 41. Mensagens – Comunica¸c˜ao S´ıncrona Problemas da Chamada Remota de Procedimento Dificuldade da passagem de parˆametros por referˆencia: Se servidor e cliente possuem diferentes representa¸c˜oes de informa¸c˜ao, h´a necessidade de convers˜ao Diferen¸cas de arquitetura: As m´aquinas podem diferir no armazenamento de palavras Ex: long do C tem tamanhos diferentes, dependendo se o S.O. for 32 ou 64 bits Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 38 / 42
  • 42. Mensagens – Comunica¸c˜ao S´ıncrona Problemas da Chamada Remota de Procedimento Falhas semˆanticas: Ex: o servidor para de funcionar quando executava uma RPC. O que dizer ao cliente? Se disser que houve falha e o servidor j´a havia processado a chamada, o cliente pode pensar que a falha ocorreu antes desse processamento Ele pode querer tentar novamente, o que pode n˜ao ser desej´avel (ex: atualiza¸c˜ao de BD) Principais abordagens: “no m´ınimo uma vez”, “exatamente uma vez” e ”no m´aximo uma vez” Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 39 / 42
  • 43. Mensagens – Comunica¸c˜ao S´ıncrona Falhas Semˆanticas – Abordagens: Exatamente uma vez (maybe) Toda chamada ´e executada exatamente uma vez (n˜ao h´a retransmiss˜ao de mensagens) Se o cliente transmite e o servidor cai, ele n˜ao sabe se o servidor processou o pedido antes de cair No m´ınimo uma vez (at least once) O cliente fica retransmitindo o pedido, ap´os timeouts, at´e que tenha a resposta desejada (ou execute um m´aximo de retransmiss˜oes) O cliente n˜ao sabe quantas vezes o procedimento remoto foi chamado (no servidor) – podem ter sido v´arias Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 40 / 42
  • 44. Mensagens – Comunica¸c˜ao S´ıncrona Falhas Semˆanticas – Abordagens: No m´aximo uma vez (at most once) O cliente fica retransmitindo o pedido Possibilita filtragem de poss´ıveis duplicatas e retransmiss˜ao de respostas sem re-executar as opera¸c˜oes Se o servidor cair, o cliente saber´a do erro, mas n˜ao saber´a se a opera¸c˜ao foi executada Se o servidor n˜ao cair, e o cliente receber o resultado da chamada, o procedimento ter´a sido chamado exatamente uma vez Norton Trevisan Roman Aula 10 – Comunica¸c˜ao Interprocessos 22 de setembro de 2017 41 / 42