Informática UFRGS. Cláudio Geyer. Programação concorrente (C. Geyer) Troca de Mensagens 1

Tamanho: px
Começar a partir da página:

Download "Informática UFRGS. Cláudio Geyer. Programação concorrente (C. Geyer) Troca de Mensagens 1"

Transcrição

1 Troca de Mensagens Curso de Programação Concorrente Notas de aula Cláudio Geyer. Programação concorrente (C. Geyer) Troca de Mensagens 1

2 Autores Autores C. Geyer Local Instituto de Informática disciplina: Sistemas Operacionais II Versão V7 data: 2011/2 Programação concorrente (C. Geyer) Troca de Mensagens 2

3 Súmula Súmula conceitos básicos troca de mensagens, características, mensagem, primitivas, argumentos canal: conceito, propriedades, criação nomeação direta, direta simétrica e assimétrica, indireta identificação de processos buferização situações de erro Programação concorrente (C. Geyer) Troca de Mensagens 3

4 Bibliografia Bibliografia Andrews, G. Concurrent Programming - Principles and Practice. The Benjamin/Cummings, Redwood, Cap. 7: conceitos básicos, comunicação assíncrona, exemplos Cap. 8: comunicação síncrona Cap. 9: RPC e rendezvous Andrews, G. Foundations of Multithreaded, Parallel, and Distributed. Addison-Wesley, Cap. 7: conceitos e estudos de casos Cap. 8: RPC e rendezvous Cap. 9: exemplos de programas Programação concorrente (C. Geyer) Troca de Mensagens 4

5 Bibliografia Bibliografia Silberschatz, A. and Galvin, P. Operating Systems Concepts. (Fith edition), Reading, MA, Addison-Wesley, Usado na preparação inicial desses slides (seção 4.6 da 4a edição, 1994) Também as novas edições e livro SO + Java Tanenbaum, A.S. Modern Operating Systems. Englewood Clifss, NJ, Prentice-Hall, Também as novas edições Programação concorrente (C. Geyer) Troca de Mensagens 5

6 Biblografia Bibliografia relacionada Lynch, N. Distributed Algorithms. Morgan Kaufmann Publishers, Inc., San Francisco, CA, Barbosa, V. C. An Introduction to Distributed Algorithms. MIT Press, Raynal, M. Distributed algorithms and protocols. Wiley, Chichester, TEL, G. Introduction to Distributed Algorithms Programação concorrente (C. Geyer) Troca de Mensagens 6

7 Conceitos Básicos Conceitos básicos definição: modelo de comunicação para processos que não compartilham variáveis modelo de comunicação onde dados privados de um processo são enviados (comunicados, copiados) a outro processo através de mecanismos (primitivas) especiais Programação concorrente (C. Geyer) Troca de Mensagens 7

8 Informática Conceitos básicos motivação Conceitos Básicos modelo de processos, como o Unix, onde não há compartilhamento de variáveis, inclusive sobre memória fisicamente compartilhada (mesma máquina) processos executando em máquinas distintas, sem memória fisicamente compartilhada redes de computadores: processos em 2 estações diferentes Manter um só modelo para memória compartilhada e redes outros nomes IPC: interprocess communication alguns autores incluem também nesse nome a comunicação por variáveis compartilhadas Programação concorrente (C. Geyer) Troca de Mensagens 8

9 Informática Conceitos básicos (cont.) Características gerais Conceitos Básicos comunicação e sincronização na mesmas primitivas diferentes sintaxes e semânticas pode ser usado conjuntamente com variáveis compartilhadas O uso de redes e computadores com processadores multicore deve intensificar o uso de modelo combinado Desempenho Variáveis compartilhadas têm melhor desempenho em memória fisicamente compartilhada TM tem melhor desempenho em redes Programação concorrente (C. Geyer) Troca de Mensagens 9

10 Informática Conceitos básicos (cont.) primitivas mínimas conceituais send(mensagem) Conceitos Básicos processo A envia dados contidos em mensagem a outro processo receive(mensagem) processo B recebe dados contidos em mensagem somente um processo recebe a mensagem variações serão apresentadas nos próximos slides send mensagem receive A B Programação concorrente (C. Geyer) Troca de Mensagens 10

11 Conceitos Básicos Conceitos básicos (cont.) Identificação do parceiro (nomeação) Forma e semântica usual Send exige a identificação do destino (processo) Receive não exige a identificação do emissor Pode receber de qualquer processo Mais um argumento: send(destino, mensagem) receive(origem, mensagem) ou receive(any, mensagem) Programação concorrente (C. Geyer) Troca de Mensagens 11

12 Conceitos Básicos Conceitos básicos (cont.) tamanho da mensagem fixo implementação da primitiva é mais simples programação mais complexa quando as mensagens da aplicação tem tamanho variável variável eventualmente, o programador precisa explicitar o tamanho de cada mensagem No send e no receive => mais um parâmetro Pode provocar tamanhos distintos entre o send e o receive Erros? Semântica? Programação concorrente (C. Geyer) Troca de Mensagens 12

13 Conceitos Básicos Conceitos básicos (cont.) tipo da mensagem vetor de bytes vetor de outros tipos Inteiro, real,... tipada e estruturada lista de parâmetros objeto Programação concorrente (C. Geyer) Troca de Mensagens 13

14 Conceitos Básicos Conceitos básicos (cont.) Sincronização Questão básica: primitivas send/receive bloqueiam? Quando? Semântica usual Send assíncrono (ou não bloqueante) Processo emissor não espera a execução do receive Receive síncrono (ou bloqueante) Observação Processor receptor espera que ao menos uma mensagem tenha sido enviada Alguns autores diferenciam termos: assíncrono x não bloqueante Programação concorrente (C. Geyer) Troca de Mensagens 14

15 Informática Conceitos básicos (cont.) Sincronização A semântica acima exige o uso de um buffer na implementação Buffer contém mensagens enviadas e não recebidas Send funciona como um append de produtor Produtor adiciona mensagem no buffer Bloqueia se buffer cheio? A verificar adiante Receive funciona como um get de consumidor Consumidor retira mensagem do buffer Bloqueia se buffer vazio Em caso de acesso concorrente ao buffer Conceitos Básicos Implementação deve mantê-lo em estado consistente Programação concorrente (C. Geyer) Troca de Mensagens 15

16 Conceitos Básicos Conceitos básicos (cont.) Sincronização A semântica acima permite o uso de send/receive para resolver problemas de sinalização Wait: -> receive(any, sinal) Signal: -> send(procdormindo, sinal) Questão: O sinal é perdido se procdormindo ainda não executou o wait? Programação concorrente (C. Geyer) Troca de Mensagens 16

17 Conceitos Básicos Conceitos básicos (cont.) As bibliotecas reais apresentam inúmeras variações e combinações sobre as opções acima Algumas serão apresentadas nos próximos slides Programação concorrente (C. Geyer) Troca de Mensagens 17

18 Conceitos Básicos Conceitos básicos (cont.) canal de comunicação também chamado de ligação (link) suporte abstrato (lógico, de programação) pelo qual as mensagens são transferidas de um processo a outro nem sempre visível (explícito) no programa diversas semânticas e sintaxes Em função de variantes como as apresentadas nos slides anteriores: sincronização, Programação concorrente (C. Geyer) Troca de Mensagens 18

19 Conceitos Básicos Conceitos básicos (cont.) (outras) propriedades dos canais de comunicação como o canal é estabelecido (criado)? quantos processos (2 ou mais) podem estar associados a um canal? quantos canais distintos podem existir entre 2 processos? Ver mais adiante x sincronização qual é a capacidade em mensagens (ou bytes) de um canal? Programação concorrente (C. Geyer) Troca de Mensagens 19

20 Conceitos Básicos Conceitos básicos (cont.) (outras) propriedades dos canais de comunicação tamanho das mensagens: fixo, variável, limite canal unidirecional ou bidirecional? mensagens somente em um sentido ou nos dois? se um canal está associado a somente 2 processos: unidirecional: somente um processo pode enviar e o outro somente receber Programação concorrente (C. Geyer) Troca de Mensagens 20

21 Informática Conceitos básicos (cont.) propriedades dos canais de comunicação outros tipos comunicação direta ou indireta Conceitos Básicos comunicação simétrica ou assimétrica buferização automática ou explícita envio por cópia ou por referência Obs.: Diversas propriedades serão analisadas nos próximos slides Programação concorrente (C. Geyer) Troca de Mensagens 21

22 Nomeação Nomeação conceito como os processos se designam durante a comunicação comunicação direta cada processo deve explicitar a identificação do outro processo send(p, mensagem) processo envia mensagem ao processo P receive(q, mensagem) processo recebe mensagem enviada por Q somente de Q! Programação concorrente (C. Geyer) Troca de Mensagens 22

23 Nomeação Nomeação comunicação direta Modelo simples o canal é estabelecido automaticamente entre os dois processos basta que eles se conheçam um canal liga somente dois processos entre dois processos existe somente 1 canal bidirecional Programação concorrente (C. Geyer) Troca de Mensagens 23

24 Nomeação Nomeação (cont.) comunicação direta (cont.) exemplo produtor-consumidor produtor consumidor gera elemento e envia ao consumidor por um send recebe elemento por um receive e o consome observações variáveis elemento distintas nos dois processos Programação concorrente (C. Geyer) Troca de Mensagens 24

25 Informática Nomeação (cont.) comunicação direta (cont.) exemplo produtor-consumidor diagrama Nomeação Elemento Produtor Consumidor Programação concorrente (C. Geyer) Troca de Mensagens 25

26 Informática Nomeação (cont.) comunicação direta (cont.) exemplo produtor-consumidor Código produtor process produtor {}{ repeat... produz(elemento);... send(consumidor, elemento);... until false; }; Nomeação Programação concorrente (C. Geyer) Troca de Mensagens 26

27 Informática Nomeação (cont.) comunicação direta (cont.) exemplo produtor-consumidor código consumidor process consumidor {}{ repeat... receive(produtor, elemento);... consome(elemento);... until false; }; Nomeação Programação concorrente (C. Geyer) Troca de Mensagens 27

28 Informática Nomeação (cont.) comunicação direta (cont.) exemplo produtor-consumidor Diversas questões de sincronização surgem nesse exemplo Como na solução com buffer compartilhado A) se produtor mais rápido que consumidor? B) se consumidor mais rápido que produtor? Send/receive com semântica assíncrona send assícrono e receive bloqueante -> como solução em memória compartilhada Outras semânticas serão tratadas adiante em buferização Nomeação Programação concorrente (C. Geyer) Troca de Mensagens 28

29 Nomeação Nomeação (cont.) comunicação direta (cont.) exemplo produtor-consumidor Um caso usual de sincronização Consumidor eventualmente bloqueia em receive se mais rápido Não há mensagens (ou buffer vazio) Produtor eventualmente recebe exceção ou bloqueia após enviar muitas mensagens quando mais rápido Buffer cheio Programação concorrente (C. Geyer) Troca de Mensagens 29

30 Informática Nomeação (cont.) comunicação direta simétrica Nomeação tanto emissor quanto o receptor devem conhecer (ou explicitar) o parceiro comunicação direta assimétrica somente o emissor conhece o receptor receptor não nomeia o emissor recebe de qualquer outro processo emissor usualmente se usa a constante any ou null receive(any, mensagem) Se número infinito ou não-determinado de processos Programador deve gerenciar a atribuição de nomes Programação concorrente (C. Geyer) Troca de Mensagens 30

31 Nomeação Nomeação (cont.) tipos de identificação (nomes) de processos estática usualmente strings definidos pelo programador e passados ao sistema de troca de mensagens (implementação) durante a criação do processo exemplo: kernel HetNOS; mw proposto em projeto de pesquisa do II/ seqüência de inteiros atribuída pelo sistema no início da execução exemplo: MPI (na opção de criação estática) Programação concorrente (C. Geyer) Troca de Mensagens 31

32 Nomeação Nomeação (cont.) tipos de identificação de processos dinâmica identificadores criados pelo sistema no momento da criação de cada processo exemplos: Unix (fork), PVM, linguagens orientadas a objetos Programação concorrente (C. Geyer) Troca de Mensagens 32

33 Informática Nomeação indireta conceitos uso de caixas postais onde Nomeação Indireta processos emissores colocam suas mensagens processos receptores retiram suas mensagens Usualmente uma caixa postal pode ser compartilhada por vários processos emissores e receptores em alguns casos, somente um processo compartilha em recepção motivo: dificuldade de implementação exemplo: canais da linguagem SR Programação concorrente (C. Geyer) Troca de Mensagens 33

34 Nomeação Indireta Nomeação indireta conceitos primitivas send(c, mensagem) receive(c, mensagem) onde C é o nome da caixa postal Em geral não é possível usar any em receive Programação concorrente (C. Geyer) Troca de Mensagens 34

35 Nomeação Indireta Nomeação indireta caixas postais de processo um processo é responsável pela criação da caixa postal caixa postal pertence ao processo ela é destruída automaticamente quando o processo é destruído exige eventualmente um aviso aos outros processos às vezes somente ele pode receber pela caixa Programação concorrente (C. Geyer) Troca de Mensagens 35

36 Informática Nomeação indireta caixas postais de processo para o uso por outros processos Nomeação Indireta o identificador da caixa postal deve ser enviado aos outros processos usualmente por troca de mensagens como desbloquear a primeira troca? o processo proprietário cria o processo receptor e nesse momento passa a caixa como argumento da primitiva de criação fork(caixa_postal_1,...) através de primitivas especiais Programação concorrente (C. Geyer) Troca de Mensagens 36

37 Nomeção Indireta Nomeação indireta caixas postais de processo (cont.) criação de caixas postais de processo diversos modos por exemplo: por variáveis de tipo predefinido exemplo: os channel em SR (linguagem do Andrews) Programação concorrente (C. Geyer) Troca de Mensagens 37

38 Nomeação indireta Nomeação indireta caixas postais de sistema pertence ao sistema e não a um processo sistema oferece primitivas para criação de caixas postais envio e recepção de mensagens destruição de caixas postais Programação concorrente (C. Geyer) Troca de Mensagens 38

39 Informática Nomeação indireta caixas postais de sistema proprietário da caixa postal Nomeação indireta inicialmente o processo que solicitou a criação eventualmente existem primitivas para alteração de privilégios como troca de proprietário quem pode enviar ou receber destruição automática em caso de nenhum processo solicitar a destruição similar a um coletor de lixo (garbage collector) ou por timeout Programação concorrente (C. Geyer) Troca de Mensagens 39

40 Estática Direta Exemplo de nomeação estática, direta MPI ambiente de programação paralela padrão definido por várias instituições: universidades, órgãos governamentais, empresas várias implementações: universidades, empresas modelo MPI, versão 1 código único executado em conjunto de n cpus criação de processos: implícita mapeamento usual: 1 processo por cpu nomes de processos: 0, 1, 2, 3, ; dados automaticamente Programação concorrente (C. Geyer) Troca de Mensagens 40

41 Estática Direta Exemplo: envio de Ola Mundo do processo 0 ao 1 int id, tam; char message[12]; % 3 chamadas a primitivas de controle de MPI % inicialização % nome (id) desse processo % quantidade de processos nessa execução MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &id); MPI_Comm_size(MPI_COMM_WORLD, &tam); Programação concorrente (C. Geyer) Troca de Mensagens 41

42 Estática Direta Exemplo: envio de Ola Mundo do processo 0 ao 1 if (id == 0) { strcpy(mensagem, Ola mundo ); % p0: envia 12 caracteres em mensagem ao processo 1 MPI_Send($mensagem, 12, MPI_CHAR, 1, 100, MPI_COMM_WORLD); } else { % p1 (não 0) : recebe 12 caracteres em mensagem do p0 MPI_Recv($mensagem, 12, MPI_CHAR, 0, 100, MPI_COMM_WORLD, $status); }; Programação concorrente (C. Geyer) Troca de Mensagens 42

43 Estática Indireta Exemplo de nomeação estática, indireta sockets TCP biblioteca de comunicação com protocolo TCP/IP usualmente encontrada nos sistemas desktops, servidores,, como Unix, Linux, Windows, Bibliotecas para a maioria das linguagens C, C++, C#, Java, Programação concorrente (C. Geyer) Troca de Mensagens 43

44 Informática Exemplo de nomeação estática, indireta modelo cliente/servidor cliente requisita conexão ao servidor cliente conhece servidor: IP e porta (processo) servidor aceita conexão Estática Indireta cliente (ou servidor) envia mensagem ao servidor (ou cliente) pela conexão nomeação em dois níveis estático, explícito: estabelecimento da conexão (IP, porta) dinâmico, implícito: no send/receive (uso da conexão) Exemplo biblioteca para linguagem C de TCP é usualmente visto em aula prática Programação concorrente (C. Geyer) Troca de Mensagens 44

45 Estática Indireta Exemplo de nomeação estática, indireta: Java sockets TCP SERVIDOR (...) ServerSocket s = new ServerSocket(8189); while (true){ } Socket conexao = s.accept(); /* Disparar uma thread que faça algo, passando conexão como parâmetro */ (...) CLIENTE (...)Socket s; try{ s =new Socket( poncho,8189); }catch(exception e) {}{ /*Erro*/ System.exit(0); Programação concorrente (C. Geyer) Troca de Mensagens 45 } /* Socket conectado */

46 RECEBER (...)InputStream input; try { input = s.getinputstream(); } catch (IOException e) {(...)} ObjectInputStream objinput; try { objinput = new ObjectInputStream(input); String line = (String) objinput.readobject( ); }catch (Exception e){(...)} ENVIAR (...) OutputStream output; try { output = s.getoutputstream(); } catch (IOException e) {(...)} ObjectOutputStream objoutput; try { Estática Indireta objoutput = new ObjectOutputStream(output); objoutput.writeobject( Olá! ); }catch (Exception e){(...)} Programação concorrente (C. Geyer) Troca de Mensagens 46

47 CG1 Informática Exemplo C Sockets TCP Exemplo com Sockets TCP em C Programa Modelo cliente / servidor Servidor Sem funções definidas (código) Somente cria socket e espera pedido de conexão Cliente Cria socket e pede conexão Exemplos genéricos de send e receive Programação concorrente (C. Geyer) Troca de Mensagens 47

48 Slide 47 CG1 todo o exemplo foi alterado Claudio Geyer; 3/9/2008

49 Informática Exemplo com C e TCP sockets Código em C: /* server */ #include <stdlib.h> #include <stdio.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <string.h> #define PORT int server_sock; struct sockaddr_in server_addr; Exemplo C TCP Sockets /* * create the socket file descriptor */ if (( server_sock = socket(pf_inet, SOCK_STREAM, IPPROTO_TCP)) < 0 ) { exit(-1); /* exit with error, would print a descrition */ } Programação concorrente (C. Geyer) Troca de Mensagens 48

50 Informática Exemplo com C e TCP sockets (cont.) Exemplo C TCP Sockets /* * assign an address to server socket */ bzero(&server_addr, sizeof(server_addr)); /* initialize with 0's */ server_addr.sin_family = AF_INET; /* internet address family */ server_addr.sin_addr.s_addr = htonl(inaddr_any); /* any local ip */ server_addr.sin_port = htons(port); /* fixed local port */ /* liga o socket com o endereço */ if ( bind(server_sock, (struct sockaddr*) &server_addr,sizeof(server_addr)) < 0 ) { exit(-1); /* exit with error */ } /* * start to listen for incoming connections, with a pending * queue of size 5 */ if ( listen(server_socket, 5) < 0 ) { exit(-1); /* exit with error */ } Programação concorrente (C. Geyer) Troca de Mensagens 49

51 Exemplo C TCP Sockets Exemplo em C e TCP sockets (cont.) /* loop accepting connections and delegating them to separate threads */ while (1) { int sock; struct sockaddr_in client_addr; /* address of the remote-side */ if ( (sock = accept(server_socket, &client_addr, sizeof(client_addr))) < 0 ) { exit(-1); /* do some error handling */ } else { /* do something with the newly accepted connection, e.g.launch a thread to handle it */ /*... */ } } Programação concorrente (C. Geyer) Troca de Mensagens 50

52 Exemplo C TCP Sockets Exemplo em C e TCP sockets (cont.) /* cliente em C */ #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #define PORT int sock; struct sockaddr_in serv_addr; struct hostent *server; Programação concorrente (C. Geyer) Troca de Mensagens 51

53 CG2 Informática Exemplo em C e TCP sockets (cont.) /* cria socket cliente */ if ( (sock = socket(af_inet, SOCK_STREAM, 0)) < 0) { exit(-1); /* error handling */ } Exemplo C TCP Sockets /* DNS lookup of server's name*/ if ((server = gethostbyname("poncho") ) == NULL) { exit(-1); /* error handling */ } /* convert the result to the address format expected by connect */ bzero((char *) &serv_addr, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; bcopy((char *)server->h_addr, (char *)&serv_addr.sin_addr.s_addr, server->h_length); serv_addr.sin_port = htons(port); Programação concorrente (C. Geyer) Troca de Mensagens 52

54 Slide 52 CG2 faltando o connect! Claudio Geyer; 3/9/2008

55 Informática Exemplo em C e TCP sockets (cont.) /* receber em C */ /* pode ser cliente ou servidor */ Exemplo C TCP Sockets int MAXMSG = 1024; int BUFSIZE = MAXMSG+1; char buff[bufsize]; /* should be big enough to hold the largest message */ bzero(buff, BUFSIZE); int n; char* p = buff; for (int remaining = MAXMSG; remaining <0; remaining-=n) { n = read(sock, p, remaining); /* canal, buffer, tamanho */ if ( n <= 0 ) { /* EOF or error */ break; } else p+=n; /* update buffer pointer */ } printf("%s", buff); Programação concorrente (C. Geyer) Troca de Mensagens 53

56 Exemplo C TCP Sockets Exemplo em C e TCP sockets (cont.) /* enviar em C */ char* msg = "Olá!"; char* buff = msg; for (int remaining=strlen(msg); remaing 0;) { n = write(sock, buff, remaining); /* canal, buffer, tamanho */ if ( n < 0 ) { /* error */ } else { buff +=n ; /* add offset to the buffer pointer */ remaining -= n; } } close(sock); Programação concorrente (C. Geyer) Troca de Mensagens 54

57 Informática Exemplo de nomeação dinâmica direta PVM biblioteca de programaçao distribuída (paralela) fornecedor único predecessora de MPI modelo PVM nomeação dinâmica pelo sistema Dinâmica Direta modelo de ID de processos Unix estendido a redes spawn primitiva para criação de processos em rede retorna ID do filho ao processo pai send: indica ID do processo receptor receive: pode indicar ID do emissor ou any Programação concorrente (C. Geyer) Troca de Mensagens 55

58 Indireta Estática Exemplo de nomeação estática indireta SR em livro linguagem criada por G. Andrews usada no livro [Andrews, 1991] modelo canais declarados por programa semântica global: automaticamente conhecidos por todos os processos SR real não oferece semântica global ponteiros devem ser passados entre máquinas abstratas (criação em nível de programa) Programação concorrente (C. Geyer) Troca de Mensagens 56

59 Indireta Estática Exemplo de nomeação estática indireta Modelo (SR: cont.) processos declarados estaticamente process P1 var begin end endprocess Programação concorrente (C. Geyer) Troca de Mensagens 57

60 Indireta Estática Exemplo código: channel canalexemplo (string D); // canal global; cada mens.: 1 // string process emissor:: string A = Ola mundo ; send canalexemplo (A); end process; process receptor:: string B; receive canalexemplo (B); end process; // informação a enviar // envia A pelo canal // área para receber // recebe em B pelo canal Programação concorrente (C. Geyer) Troca de Mensagens 58

61 Informática Buferização e sincronização buffer Buferização local onde são colocadas mensagens enviadas e (ainda) não recebidas similar a uma fila de espera pode existir tanto na máquina do emissor quanto do receptor Usualmente transparentes ao programador Criados pela implementação das rotinas send/receive, canais e caixas postais Em redes: implementação de protocolos de comunicação TCP, UDP,... Lembrando que há várias camadas Programação concorrente (C. Geyer) Troca de Mensagens 59

62 Buferização Buferização e sincronização capacidade Zero (sem buffer): maior eficiência pois não há cópia local dos dados (em memória) caso o processo emissor (em nível de aplicação) seja liberado durante a transmissão (pela rede), deve-se evitar a alteração da área de dados no emissor isto poderia ser feito pela própria aplicação usada em casos especiais Programação concorrente (C. Geyer) Troca de Mensagens 60

63 Buferização Buferização e sincronização capacidade limitada opção frequente capacidade máxima de n mensagens ou bytes enquanto o buffer está com espaço livre, a primitiva de envio coloca (copia) a mensagem no buffer e, após, libera o processo emissor a cópia da mensagem em memória tem custo em mensagens curtas é rápido Programação concorrente (C. Geyer) Troca de Mensagens 61

64 Informática Buferização e sincronização capacidade Limitada O buffer pode ser esgotado Buferização Usualmente quando o emissor (ou emissores) são muito mais rápidos que o receptor quando o buffer esgota: alternativas retorno de erro alguma mensagem é perdida bloqueio do emissor até a recepção liberar posições no buffer Programação concorrente (C. Geyer) Troca de Mensagens 62

65 Buferização Buferização e sincronização capacidade ilimitada teoricamente não existe na prática n pode ser muito superior aos casos produzidos pela aplicação programador codifica como se fosse infinita, sem verificar exceções Programação concorrente (C. Geyer) Troca de Mensagens 63

66 Buferização Buferização e sincronização comunicação síncrona send espera que processo receptor (em nível da aplicação) execute o receive transferência completa em nível de aplicação pode não exigir buffer (ou de tamanho 1) preferida por alguns autores exemplo: modelo CSP do Hoare; linguagem Occam importantes efeitos semânticos e nas técnicas de programação programação mais segura Programação concorrente (C. Geyer) Troca de Mensagens 64

67 Buferização Buferização e sincronização considerações ( técnicas de programação ) Na comunicação dita assíncrona emissor (nível do programa usuário) não sabe se a mensagem foi recebida (receive executado) se necessário envio pelo receptor (nível do programa usuário), após recepção, de um aviso de recepção (ACK) protocolo de comunicação se torna parecido ao síncrono capacidade limitada (ou ilimitada pelo programador) pelo buffer Programação concorrente (C. Geyer) Troca de Mensagens 65

68 Buferização Buferização e sincronização considerações ( técnicas de programação ) capacidade limitada programador deve prever o caso de buffer esgotado e contorná-lo conforme diferentes efeitos da primitiva em uso (erro, bloqueio,...) Programação concorrente (C. Geyer) Troca de Mensagens 66

69 Buferização Buferização e sincronização casos especiais comunicação assíncrona não bloqueante emissor (aplicação) nunca é bloqueado é liberado logo após algum procedimento inicial do send caso ele seja muito rápido, em caso de buffer esgotado (por exemplo, capacidade zero), mensagens podem ser perdidas em caso de capacidade zero: mensagem não precisa ser buferizada (copiada): maior eficiência programador deve verificar (contornar) as exceções Programação concorrente (C. Geyer) Troca de Mensagens 67

70 Buferização Buferização e sincronização casos especiais expressão comunicação assíncrona bloqueante (Tanenbaum) quando o emissor é bloqueado até que a mensagem seja copiada da área da aplicação (usuário) ao buffer (sistema) similar à semântica de um printf frequentemente é a semântica de TM Programação concorrente (C. Geyer) Troca de Mensagens 68

71 Ordenação Ordenação das mensagens entre 2 pontos 1 processo emissor e 1 processo receptor garantia de ordem única se mensagem m1 foi enviada antes de m2, m1 será recebida antes de m2 Programação concorrente (C. Geyer) Troca de Mensagens 69

72 Confiabilidade Confiabilidade do canal (protocolo) garante (ou não) não perda de mensagem não duplicação de mensagem não alteração do conteúdo Programação concorrente (C. Geyer) Troca de Mensagens 70

73 Sincronização especial Caso especial de TM síncrona Rendezvous bidirecional (em cada troca de mensagem) proposta na linguagem Ada existente na linguagem SR (Andrews 91) bloqueio do emissor até recepção (implícita) de resposta vinda do receptor obs.: o receive não é feito por procedure como no RPC (mais adiante) mas por um comando receive o receive pode estar em qualquer ponto do código (usual) receive seguido de um bloco de código até o return (bidirecional) call receive {...; return } Programação concorrente (C. Geyer) Troca de Mensagens 71

74 Informática Outras questões expressão da concorrência em redes Outras Questões nem sempre existem primitivas de criação de tarefas remotas sincronização fork, create_thread,... sempre locais ID s tem validade local Usuário deve disparar os diferentes processos (programas) construções como mutex, semáforos,... usualmente são locais não podem ser usados entre processos distribuídos mas não necessários se processos são monothread Programação concorrente (C. Geyer) Troca de Mensagens 72

75 Informática Situações de erro Situações de erro em sistemas distribuídos diferentes erros podem ocorrer por exemplo somente a máquina receptora (sistema) bloqueia-se erro (ou pane total) na rede física de comunicação Por exemplo, ruptura de cabo erro momentâneo (transiente) no sinal caso término de processo se processo receptor emissor pode enviar mensagens até esgotar buffer emissor pode ficar bloqueado (comunicação síncrona) se processo emissor receptor pode ficar bloqueado eternamente Programação concorrente (C. Geyer) Troca de Mensagens 73

76 Informática Situações de erro (cont.) caso mensagem perdida Situações de erro alternativa A: sistema detecta erro e reenvia a mensagem implica overhead alternativa B: programador (processo emissor) deve detectar e reenviar a mensagem implica programação mais complexa alternativa C: sistema detecta e avisa processo emissor, que deve providenciar uma solução (reenvio se necessário) detecção usualmente por temporização sistema deve enviar aviso de recepção após certo tempo (timeout) Programação concorrente (C. Geyer) Troca de Mensagens 74

77 TM X VC Troca de mensagens X variáveis compartilhadas motivações para TM eficiência memória compartilhada redes programação segura programação simples (intuitiva) modelo único sincronização Programação concorrente (C. Geyer) Troca de Mensagens 75

78 Resumo Resumo Conceito Primitivas send/receive Argumentos Parceiro e mensagem Tamanho da mensagem Tipo da mensagem Sincronização básica Send assíncrono e receive síncrono (ou bloqueante) Similar ao problema do produtor/consumidor Exige buffer na implementação Programação concorrente (C. Geyer) Troca de Mensagens 76

79 Resumo Resumo Canal e propriedades Nomeação Direta: simétrica e assimétrica Indireta Nomes estáticos x dinâmicos Caixa postal de programa (processo) e de sistema Programação concorrente (C. Geyer) Troca de Mensagens 77

80 Resumo Resumo Bufferização Capacidades Opções quando esgotado TM síncrona TM assíncrona não bloqueante Exemplos de tipos de primitivas: MPI, sockets TCP, PVM, SR Casos de erros TM x variáveis compartilhadas Programação concorrente (C. Geyer) Troca de Mensagens 78

81 Revisao Revisão Conceito? Motivações (3)? Uso combinado VC + TM? Primitivas básicas? Comparação básica entre VC (ou memória compartilhada) e TM? Desempenho Facilidade, simplicidade de programação TM x sincronização? Programação concorrente (C. Geyer) Troca de Mensagens 79

82 Revisão Revisão send: semântica e argumentos sincronização receive: semântica e argumentos sincronização conceito de canal propriedades de canais Programação concorrente (C. Geyer) Troca de Mensagens 80

83 Revisão Revisão tamanho da mensagem nomeação conceito direta direta assimétrica indireta estática x dinâmica conceitos vantagens problema na dinâmica: conhecimento dos nomes solução comum Programação concorrente (C. Geyer) Troca de Mensagens 81

84 Revisão Revisão produtor - consumidor com TM exclusão mútua canal buffer cheio buffer vazio caixa postal conceito diferenças entre do programa e do sistema problema de referência entre criador e usuários solução comum? Programação concorrente (C. Geyer) Troca de Mensagens 82

85 Revisão Revisão Exemplo MPI Tipo nomeação Valores dos nomes Programação concorrente (C. Geyer) Troca de Mensagens 83

86 Revisão Revisão comunicação síncrona send receive vantagem? comunicação assíncrona (bloqueante) comunicação (assíncrona) não bloqueante qual o risco? como transformar a assíncrona em síncrona? Programação concorrente (C. Geyer) Troca de Mensagens 84

87 Revisão Revisão buffer de tamanho zero efeitos vantagem buffer limitado alternativas de semânticas tratamento de erros se processo (máquina) receptor falha? se processo emissor falha? se buffer esgota? Programação concorrente (C. Geyer) Troca de Mensagens 85

88 Revisão Revisão TM assíncrona bloqueante e não bloqueante TM síncrona garantias ordenação outras? Programação concorrente (C. Geyer) Troca de Mensagens 86

89 Revisão Revisão tipos de dados da mensagem? TM X VC? eficiência redes memória compartilhada simplicidade das APIs programação segura algoritmos mais simples e intuitivos Programação concorrente (C. Geyer) Troca de Mensagens 87

90

Curso de Programação Concorrente. Notas de aula

Curso de Programação Concorrente. Notas de aula Curso de Programação Concorrente Notas de aula Cláudio Geyer. Programação concorrente (C. Geyer) Troca de Mensagens 1 Autores Autores Local C. Geyer Instituto de Informática disciplina: Sistemas Operacionais

Leia mais

Troca de Mensagens Curso de Programação Concorrente Notas de aula Cláudio Geyer.

Troca de Mensagens Curso de Programação Concorrente Notas de aula Cláudio Geyer. Troca de Mensagens Curso de Programação Concorrente Notas de aula Cláudio Geyer. Programação concorrente (C. Geyer) Troca de Mensagens 1 Autores Autores Local C. Geyer Instituto de Informática UFRGS disciplina:

Leia mais

Sistemas Distribuídos Aula 2

Sistemas Distribuídos Aula 2 Sistemas Distribuídos Aula 2 Aula passada Logísitica Regras do jogo Definição e características Exemplos Aula de hoje Processos IPC Características Ex. sinais, pipes, sockets Objetivos Processos O que

Leia mais

Programação concorrente (processos e threads)

Programação concorrente (processos e threads) Programação concorrente (processos e threads) Programação concorrente Por que precisamos dela? Para utilizar o processador completamente Paralelismo entre CPU e dispositivos de I/O Para modelar o paralelismo

Leia mais

Comunicação entre Processos

Comunicação entre Processos Comunicação entre Processos Troca de Mensagens send (destino, msg) receive (origem, mensagem) questões semântica de operações especificação de origem e destino formato de mensagem envio síncrono e assíncrono

Leia mais

Arquitetura de Computadores Sistemas Operacionais II

Arquitetura de Computadores Sistemas Operacionais II Definição de Processo Arquitetura de Computadores Sistemas Operacionais II Processo é o mesmo de Programa? Programa Estrutura estática Instruções + Dados Processo Entidade Ativa Instância de um Programa

Leia mais

Sistemas Operacionais Distribuídos e de Redes

Sistemas Operacionais Distribuídos e de Redes Contextualização Sistemas Operacionais Distribuídos e de Redes Comunicação Interprocessos Aula 04 Aula 04 Aplicação, serviços RMI e RPC Protocolo - (requisição-resposta) marshalling e representaçao externa

Leia mais

Curso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg.

Curso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg. Sistemas Operacionais Professor Cláudio Geyer Instituto de - Sistemas Operacionais II (C. Geyer) Sincronização 1 Sistemas Operacionais Professor Cláudio Geyer Instituto de - Pg. 1 1 Tópicos ensinados no

Leia mais

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP 2004-2016 Volnys Bernal 1 2004-2016 Volnys Bernal 2 Resumo das Chamadas TCP Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP Resumo das Chamadas TCP

Leia mais

Cliente TCP. Programação sockets. Agenda. Cliente TCP. Chamadas sockets para TCP. Chamada socket() Chamada socket()

Cliente TCP. Programação sockets. Agenda. Cliente TCP. Chamadas sockets para TCP. Chamada socket() Chamada socket() 2002-2009 Volnys Bernal 1 2002-2009 Volnys Bernal 2 Agenda Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Resumo das chamadas sockets para TCP Chamada close() 2002-2009 Volnys Bernal

Leia mais

Difusão e Coleta em uma rede. Algoritmos Distribuídos Andrews (C. Geyer) Difusão e Coleta: Probe/Echo 1

Difusão e Coleta em uma rede. Algoritmos Distribuídos Andrews (C. Geyer) Difusão e Coleta: Probe/Echo 1 Algoritmos de Probe/Echo Difusão e Coleta em uma rede Algoritmos Distribuídos Andrews (C. Geyer) Difusão e Coleta: Probe/Echo 1 Autor Autor 1ª versão: Ricardo Castro Mattia Revisões: C. Geyer Local Instituto

Leia mais

Programação de Sistemas em Tempo Real

Programação de Sistemas em Tempo Real BCC722 Programação de Sistemas em Tempo Real Processos Prof. Charles Garrocho O conceito de processo Um S.O. executa uma variedade de programas Sistemas de tempo compartilhado: programas Processo: um programa

Leia mais

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP 2004-2013 Volnys Bernal 1 2004-2013 Volnys Bernal 2 Resumo das Chamadas TCP Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys 2004-2013 Volnys Bernal 3 2004-2013 Volnys Bernal 4 Resumo

Leia mais

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP 2004-2013 Volnys Bernal 1 2004-2013 Volnys Bernal 2 Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys 2004-2013 Volnys Bernal 3 2004-2013 Volnys Bernal 4 Lado Cliente Lado Servidor sd1

Leia mais

Sockets - Conceitos Básicos. COMUNICAÇÃO ENTRE PROCESSOS Sockets. Conceitos Básicos. Tipos de Sockets

Sockets - Conceitos Básicos. COMUNICAÇÃO ENTRE PROCESSOS Sockets. Conceitos Básicos. Tipos de Sockets Sockets - Conceitos Básicos COMUNICAÇÃO ENTRE PROCESSOS Sockets! Sockets são uma forma de IPC (InterProcess Communication ) fornecida pela 4.3 BSD que fornecem comunicação entre processos residentes em

Leia mais

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Resumo das chamadas UDP. Resumo de Chamadas UDP.

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Resumo das chamadas UDP. Resumo de Chamadas UDP. 2002-2015 Volnys Bernal 1 2002-2015 Volnys Bernal 2 Agenda Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP Resumo das chamadas sockets para UDP Uso

Leia mais

Sistemas Operacionais II

Sistemas Operacionais II Introdução Instituto de Informátic ca - UFRGS Sistemas Operacionais II Comunicação e sincronização por troca de mensagens Aula 0 Em ambientes de memória distribuída a comunicação e a sincronização entre

Leia mais

Servidor TCP Volnys Borges Bernal Depto de Engenharia de Sistemas Eletrônicos Escola Politécnica da USP

Servidor TCP Volnys Borges Bernal Depto de Engenharia de Sistemas Eletrônicos Escola Politécnica da USP 2004-2019 Volnys Bernal 1 Servidor TCP Volnys Borges Bernal Depto de Engenharia de Sistemas Eletrônicos Escola Politécnica da USP 2004-2019 Volnys Bernal 2 Resumo das Chamadas TCP 2004-2019 Volnys Bernal

Leia mais

Sistemas Operacionais I Parte V Operações nos Processos. Roteiro. Prof. Gregorio Perez Introdução. Operações nos Processo

Sistemas Operacionais I Parte V Operações nos Processos. Roteiro. Prof. Gregorio Perez Introdução. Operações nos Processo Sistemas Operacionais I Parte V Roteiro Introdução Operações nos Processo Término Processos Cooperativos Comunicação entre Processos Questões Prof. Gregorio Perez gregorio@uninove.br 2007 2007 Sistem as

Leia mais

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP.

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP. 2002-2013 Volnys Bernal 1 2002-2013 Volnys Bernal 2 Agenda Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Resumo de Chamadas UDP Chamada Chamada Chamada 2002-2013 Volnys Bernal 3

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 6: Monitores, Troca de Mensagens e Deadlock Diego Passos Última Aulas Mecanismos de Exclusão Mútua Operações atômicas. Protocolos de controle de acesso. Spin-locks.

Leia mais

Aula de Socket. Rafael De Tommaso do Valle

Aula de Socket. Rafael De Tommaso do Valle Aula de Socket Rafael De Tommaso do Valle 20 de agosto de 2009 Socket O que é um socket? É uma interface com qual processos em diferentes hosts se comunicam através da rede; Também chamado de interface

Leia mais

Aula 04. Capítulo 3 Gerência de Processos. 3.1 Conceito de Processo. 3.2 Escalonamento de Processos. 3.3 Opera ões sobre Processos

Aula 04. Capítulo 3 Gerência de Processos. 3.1 Conceito de Processo. 3.2 Escalonamento de Processos. 3.3 Opera ões sobre Processos Aula 04 Capítulo 3 Gerência de Processos 3.1 Conceito de Processo 3.2 Escalonamento de Processos 3.3 Opera ões sobre Processos 3.4 Comunica ão entre Processos 3.1 Conceito de Processo Um sistema operacional

Leia mais

Servidor UDP Volnys Borges Bernal Departamento de Sistemas Eletrônicos Escola Politécnica da USP

Servidor UDP Volnys Borges Bernal Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 1 Servidor UDP Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 2 Resumo das Chamadas UDP 2004-2017

Leia mais

Capítulo 3: Processos

Capítulo 3: Processos Capítulo 3: Processos Sobre a apresentação (About( the slides) Os slides e figuras dessa apresentação foram criados por Silberschatz, Galvin e Gagne em 2005. Esse apresentação foi modificada por Cristiaino

Leia mais

Servidor UDP. Programação Sockets Volnys Bernal. Servidor UDP Resumo das Chamadas UDP. Resumo de Chamadas UDP. Resumo de Chamadas UDP

Servidor UDP. Programação Sockets Volnys Bernal. Servidor UDP Resumo das Chamadas UDP. Resumo de Chamadas UDP. Resumo de Chamadas UDP 2004-2015 Volnys Bernal 1 2004-2015 Volnys Bernal 2 Resumo das Chamadas UDP Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2015 Volnys Bernal

Leia mais

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 10. Operações nos processos. Processos cooperativos, comunicação entre processos.

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 10. Operações nos processos. Processos cooperativos, comunicação entre processos. INTRODUÇÃO AOS SISTEMAS OPERACIONAIS outubro/2013 SEMANA 10 Operações nos processos. Processos cooperativos, comunicação entre processos. 1 - Introdução Um processo, ao longo da sua vida, passa por diferentes

Leia mais

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP.

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP. 2002-2004 Volnys Bernal 1 2002-2004 Volnys Bernal 2 Agenda Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Resumo de Chamadas UDP Chamada connect() Chamada send() Chamada sendto()

Leia mais

camada de transporte SOCKET TCP UDP

camada de transporte SOCKET TCP UDP Sockets O que são sockets? O acesso aos serviços da camada de transporte pode ser feito por primitivas de transporte, essas primitivas são denominadas SOCKET. Por essas primitivas é possível acessar vários

Leia mais

Sumário. Introdução ao TCP/IP e à Internet API Sockets para comunicação via redes Exemplos

Sumário. Introdução ao TCP/IP e à Internet API Sockets para comunicação via redes Exemplos Sumário Introdução ao TCP/IP e à Internet API Sockets para comunicação via redes Exemplos A Internet: Endereços Cada computador ligado à Internet tem um endereço único que o distingue dos restantes (endereço

Leia mais

Vamos fazer um pequeno experimento

Vamos fazer um pequeno experimento 1 Vamos fazer um pequeno experimento Dividam-se em dois grupos: Mestre Escravo Projeto de Sistemas Distribuídos Comunicação entre Processos Prof. Msc. Marcelo Iury de Sousa Oliveira marceloiury@gmail.com

Leia mais

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1 Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1 Autor Autor Local Cláudio Geyer Instituto de Informática disciplinas: POD e PDP Versão v4 2010-1 Programação com Objetos Distribuídos

Leia mais

Comunicação. Carlos A. G. Ferraz 25/6/2003. Sistemas Distribuídos 1. Tópicos. Camadas. Transmissão de dados. Marshalling/Unmarshalling.

Comunicação. Carlos A. G. Ferraz 25/6/2003. Sistemas Distribuídos 1. Tópicos. Camadas. Transmissão de dados. Marshalling/Unmarshalling. Tópicos Comunicação Carlos Ferraz cagf@cin.ufpe.br Elementos básicos de comunicação Transmissão de dados Endereçamento Sincronismo Enfileiramento (Bufferização) Confiabilidade Portas e sockets UDP RPC:

Leia mais

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação SISTEMAS OPERACIONAIS Aula 7 Regiane Kawasaki kawasaki@ufpa.br Slides adaptados da Profa. Sarita Mazzini Bruschi

Leia mais

Problemas relacionados a exclusão mútua

Problemas relacionados a exclusão mútua Problemas relacionados a exclusão mútua Deadlock: um conjunto de processos fica bloqueado, cada um a espera de um recurso que o outro detém. Starvation: alguns processos são repetidamente preteridos, enquanto

Leia mais

Comunicação entre processos COMUNICAÇÃO ENTRE PROCESSOS. Comunicação entre processos - troca de mensagens

Comunicação entre processos COMUNICAÇÃO ENTRE PROCESSOS. Comunicação entre processos - troca de mensagens Comunicação entre processos Memória Compartilhada: os processo compartilham variáveis e trocam informações através do uso dessas variáveis compartilhadas COMUNICAÇÃO ENTRE PROCESSOS P1 Sem Memória Compartilhada:

Leia mais

Sockets: Sumário. Resumo das Propriedades de UDP e de TCP

Sockets: Sumário. Resumo das Propriedades de UDP e de TCP Sockets: Sumário Sockets TCP Modêlo. API de Java. API da biblioteca C. Avaliação Crítica de Sockets. 1 Resumo das Propriedades de UDP e de TCP Propriedade UDP TCP Abstracção Mens. Stream Baseado em Conexão

Leia mais

COMUNICAÇÃO ENTRE PROCESSOS

COMUNICAÇÃO ENTRE PROCESSOS Comunicação entre processos Memória Compartilhada: os processo compartilham variáveis e trocam informações através do uso dessas variáveis compartilhadas COMUNICAÇÃO ENTRE PROCESSOS P1 Sem Memória Compartilhada:

Leia mais

Programação com Sockets. Redes de Computadores I 2007/2008

Programação com Sockets. Redes de Computadores I 2007/2008 Programação com Sockets Redes de Computadores I 2007/2008 Arquitectura das Aplicações Cliente-Servidor Peer-to-Peer (P2P) Híbrido Peer-to-Peer e Cliente-Servidor 09-11-2007 Universidade do Minho 1 Comunicação

Leia mais

Universidade Federal do RGS Instituto de Informática Departamento de Informática Aplicada

Universidade Federal do RGS Instituto de Informática Departamento de Informática Aplicada Universidade Federal do RGS Instituto de Informática Departamento de Informática Aplicada Disciplina: INF01151 - Sistemas Operacionais II N Turma: A, 2 Sem/2008 Prof. Cláudio Geyer CURSOS : Ciência da

Leia mais

Concorrência em Processos

Concorrência em Processos Concorrência em Processos Anderson L. S. Moreira anderson.moreira@recife.ifpe.edu.br http://dase.ifpe.edu.br/~alsm Baseado nas aulas do professor Alberto Costa Neto da UFS 1 O que fazer com essa apresentação

Leia mais

Sockets. André Restivo. April 29, Faculdade de Engenharia da Universidade do Porto. André Restivo (FEUP) Sockets April 29, / 27

Sockets. André Restivo. April 29, Faculdade de Engenharia da Universidade do Porto. André Restivo (FEUP) Sockets April 29, / 27 Sockets André Restivo Faculdade de Engenharia da Universidade do Porto April 29, 2013 André Restivo (FEUP) Sockets April 29, 2013 1 / 27 Sumário 1 Introdução 2 Cliente/Servidor 3 API C++ 4 André Restivo

Leia mais

Comunicação entre Processos

Comunicação entre Processos Comunicação entre Processos Prof. Leonardo Barreto Campos http://sites.google.com/sitew/leonardobcampos 1/29 Sumário Introdução Comunicação entre Processos: Soquetes Comunicação por datagrama UDP Comunicação

Leia mais

Programação distribuída e paralela (C. Geyer) RPC 1

Programação distribuída e paralela (C. Geyer) RPC 1 Programação distribuída e paralela (C. Geyer) RPC 1 Autores C. Geyer Local II-UFRGS Versão v6 2008-2 Disciplinas SOII Programação distribuída e paralela (C. Geyer) RPC 2 Bibliografia base original dos

Leia mais

Problema do Produtor -Consumidor. Solução por semáforos

Problema do Produtor -Consumidor. Solução por semáforos Problema do Produtor -Consumidor Solução por semáforos Autoria Autores alunos da disciplina SO II Local Instituto de Informática UFRGS Versão v7 agosto de 2008 por C. Geyer Visão geral do assunto...2 Conceito...3

Leia mais

Capítulo II Modelos de Programação Distribuída

Capítulo II Modelos de Programação Distribuída Capítulo II Modelos de Programação Distribuída From: Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 3, Addison-Wesley 2001 From: M. Ben-Ari Principles of Concurrent

Leia mais

Sistemas Distribuídos Aula 10

Sistemas Distribuídos Aula 10 Sistemas Distribuídos Aula 10 Aula passada Arquitetura P2P Bittorrent Distributed Hash Table (DHT) Aula de hoje Modelo computação distribuída RPC Marshalling e stubs Semântica operacional RMI Computação

Leia mais

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula Tópicos Conceito de processo Escalonamento de processos Operações sobre

Leia mais

Remote Procedure Call. Programação distribuída e paralela (C. Geyer) RPC 1

Remote Procedure Call. Programação distribuída e paralela (C. Geyer) RPC 1 Remote Procedure Call Programação distribuída e paralela (C. Geyer) RPC 1 Autoria Autores C. Geyer Local II-UFRGS Versão V11.4 2014-2 Disciplinas SOII Programação distribuída e paralela (C. Geyer) RPC

Leia mais

Sistemas Operacionais - Básico e Avançado - Prof. Celso Maciel da Costa Mestrado em Informática - PUCRS

Sistemas Operacionais - Básico e Avançado - Prof. Celso Maciel da Costa Mestrado em Informática - PUCRS Sistemas Operacionais - Básico e Avançado - Prof. Celso Maciel da Costa Mestrado em Informática - PUCRS Processo Usuário Processo Usuário SO IPC em um mesmo sistema 2 Processo Usuário Processo usuário

Leia mais

Sistemas Distribuídos Aula 3

Sistemas Distribuídos Aula 3 Sistemas Distribuídos Aula 3 Aula passada Processos IPC Características Ex. sinais, pipes, sockets Aula de hoje Threads Kernel level User level Escalonamento Motivação: Servidor Web Considere Servidor

Leia mais

Comunicação entre Processos

Comunicação entre Processos Comunicação entre Processos Prof. Dr. André Carvalho andre@icomp.ufam.edu.br Agenda n Comunicação entre Processos n Características dos mecanismos de comunicação Comunicação direta ou indireta, sincronismos,

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Faculdades SENAC Análise e Desenvolvimento de Sistemas 1 de agosto de 2009 Orientação a Objetos Encapsulamento: Parte interna (privada) dos objetos Implementação: métodos Estado: atributos, variáveis,

Leia mais

LABORATÓRIO SISTEMAS OPERACIONAIS

LABORATÓRIO SISTEMAS OPERACIONAIS FACULDADE: CENTRO UNIVERSITÁRIO DE BRASÍLIA UniCEUB CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: SISTEMAS OPERACIONAIS CARGA HORÁRIA: 75 H. A. ANO/SEMESTRE: 2016/02 PROFESSOR: EDUARDO FERREIRA DOS SANTOS HORÁRIOS:

Leia mais

Comunicação entre Processos por Troca de Mensagens. Prof. Celso maciel da Costa

Comunicação entre Processos por Troca de Mensagens. Prof. Celso maciel da Costa Comunicação entre Processos por Troca de Mensagens Prof. Celso maciel da Costa Troca de Mensagens Com memória compartilhada: os processo compartilham variáveis e trocam informações através do uso de variáveis

Leia mais

LABORATÓRIO SISTEMAS DE TEMPO REAL

LABORATÓRIO SISTEMAS DE TEMPO REAL FACULDADE: CENTRO UNIVERSITÁRIO DE BRASÍLIA UniCEUB CURSO: ENGENHARIA DE COMPUTAÇÃO DISCIPLINA: SISTEMAS DE TEMPO REAL E TOLERANTES À FALHA CARGA HORÁRIA: 75 H. A. ANO/SEMESTRE: 2016/01 PROFESSOR: EDUARDO

Leia mais

Capítulo II Modelos de Programação Distribuída

Capítulo II Modelos de Programação Distribuída Capítulo II Modelos de Programação Distribuída Exemplos de linguagens com comunicação por mensagens, Ada OCCAM Linda From: M. Ben-Ari Principles of Concurrent and Distributed Programming Prentice Hall

Leia mais

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens Roteiro... Conceitos de SD, vantagens e desvantagens Infra-estrutura de um SD Considerações de projeto Sistemas Distribuídos Aula 4 Karine de Pinho Peralta Modelos de Comunicação - comunicação entre processos

Leia mais

Utilização das classes Java para comunicação TCP/IP e UDP/IP

Utilização das classes Java para comunicação TCP/IP e UDP/IP Utilização das classes Java para comunicação TCP/IP e UDP/IP Programação com Objetos Distribuídos (C. Geyer) Java Sockets 1 Autor Autores Local Cláudio Geyer Maurício Lima Pilla Instituto de Informática

Leia mais

TAREFAS COMUNICAÇÃO ENTRE TAREFAS AULA 08 Sistemas Operacionais Gil Eduardo de Andrade

TAREFAS COMUNICAÇÃO ENTRE TAREFAS AULA 08 Sistemas Operacionais Gil Eduardo de Andrade TAREFAS COMUNICAÇÃO ENTRE TAREFAS AULA 08 Sistemas Operacionais Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro do Prof. Dr. Carlos Alberto Maziero, disponível no link: http://dainf.ct.utfpr.edu.br/~maziero

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais I Índice 2 Processos... 1 2.2.5 Semáforos... 1 2.2.6 Monitores... 2 2.2.7 Passagem de Mensagens... 5 2 Processos 2.2.5 Semáforos Para resolver este problema, Dijkstra propôs em 1965

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Comunicação e Coordenação Clientes e Servidores março de 2015 Comunicação entre Processos Distribuídos troca de mensagens exige coordenação receive?!?...... send............ Coordenação passos para execução

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com 1. Que são sistemas abertos? É um sistema que oferece serviços de acordo com

Leia mais

Programação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP)

Programação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP) II - UFRGS Programação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP) Valter Roesler Universidade Federal do Rio Grande do Sul (UFRGS) Instituto de Informática

Leia mais

OO Engenharia Eletrônica

OO Engenharia Eletrônica OO Engenharia Eletrônica - Programação em C/C++ Slides 18: Introdução à programação multi-thread. Thread: linha de execução de um processo. Multi-thread: execução de múltiplas threads em um processo. Prof.

Leia mais

Comunicação entre Processos

Comunicação entre Processos Comunicação entre Processos Comunicação memória compartilhada troca de mensagens base de comunicação em sistemas distribuídos Mensagens básicas send (destino, msg) receive (origem, mensagem) questões semântica

Leia mais

Curso Sistemas Operacionais Distribuídos

Curso Sistemas Operacionais Distribuídos Autor 1ª versão Cristiano A. Costa Local II - UFRGS Revisões V6 2008-2 C. Geyer Curso de Sistemas Operacionais Distribuídos O Modelo Cliente Servidor 1 Curso de Sistemas Operacionais Distribuídos O Modelo

Leia mais

Sistemas de Entrada e Saída

Sistemas de Entrada e Saída Sistemas de Entrada e Saída Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2016 1 / 31 Sumário 1 Interrupções 2 Camadas de Software de E/S 2 / 31 Interrupções

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Thaís Vasconcelos Batista UFRN DIMAp http://www.dimap.ufrn.br/~thais thais@ufrnet.br Programa do Curso INTRODUÇÃO Conceitos Básicos Sistemas em Rede X Sistemas Distribuídos Necessidade

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS CUP Disk Memoey CUP Memoey Disk Network CUP Memoey Disk Introdução aos Sistemas Distribuídos 1 Sumário Evolução Problema/Contexto O que é um Sistema Distribuído? Vantagens e Desvantagens

Leia mais

Protocolo Request-Reply

Protocolo Request-Reply n n n n Protocolo Request-Reply Modelo de Objeto Remoto Semânticas de Invocação Remota Arquitetura de Invocação Remota Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR Introdução Características de

Leia mais

Soquetes TCP. Jean Ribeiro Damasceno. Escola de Engenharia Universidade Federal Fluminense (UFF) Rua Passo da Pátria, 156 Niterói RJ Brasil

Soquetes TCP. Jean Ribeiro Damasceno. Escola de Engenharia Universidade Federal Fluminense (UFF) Rua Passo da Pátria, 156 Niterói RJ Brasil Soquetes TCP Jean Ribeiro Damasceno Escola de Engenharia (UFF) Rua Passo da Pátria, 156 Niterói RJ Brasil jeanrdmg@yahoo.com.br Função socket(): Cria um novo ponto final de comunicação int socket ( int

Leia mais

Leandro Soares de Sousa (DSc.) Página: Aula 05 - desenvolvimento com sockets

Leandro Soares de Sousa (DSc.)   Página:   Aula 05 - desenvolvimento com sockets Tópicos Especiais Leandro Soares de Sousa (DSc.) e-mail: lsousa@id.uff.br Página: http://www.ic.uff.br/~lsousa Aula 05 - desenvolvimento com sockets Mais e mais ferramentas! 2 Aplicações distribuídas:

Leia mais

Introdução à Programação com Sockets. Fernando Jorge Silveira Filho Daniel Sadoc Menasché

Introdução à Programação com Sockets. Fernando Jorge Silveira Filho Daniel Sadoc Menasché Introdução à Programação com Sockets Fernando Jorge Silveira Filho fernando@land.ufrj.br Daniel Sadoc Menasché sadoc@land.ufrj.br Visão Geral Objetivos: Realizar comunicação entre processos. Entender como

Leia mais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017. ALUNO Prof. Bosco

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017. ALUNO Prof. Bosco INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO Prof. Bosco 1. Sockets - Indicar (Verdade/Falso): (a) (Verdade/Falso) Sockets são abstrações utilizadas nos protocolos de comunicação

Leia mais

Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela

Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela Aula 6: Comunicação entre processos Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela (-- motivação --) Processos em execução no sistema operacional podem ser: Independentes:

Leia mais

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão Unidade 5 Camada de Transporte e Aplicação Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 5.1 Protocolo UDP 5.2 Protocolo TCP 5.3 Principias Protocolos de Aplicação 5.3.1 SMTP

Leia mais

Programação Concorrente e Paralela

Programação Concorrente e Paralela Comunicação por Troca de Mensagens 2016 Troca de Mensagens forma básica de comunicação em ambientes de memória distribuída outras camadas podem ser construídas sobre trocas de mensagens básicas mas também

Leia mais

Volnys Bernal 1. Trabalho Chat UDP. PSI 2653 Meios Eletrônicos Interativos I

Volnys Bernal 1. Trabalho Chat UDP. PSI 2653 Meios Eletrônicos Interativos I 2007-2017 Volnys Bernal 1 Trabalho PSI 2653 Meios Eletrônicos Interativos I 2007-2017 Volnys Bernal 2 Objetivo: Desenvolvimento de um programa chat UDP (cliente e servidor) Grupo Cada grupo deve escolher

Leia mais

GERENCIAMENTO DE PROCESSOS E MEMÓRIA

GERENCIAMENTO DE PROCESSOS E MEMÓRIA GERENCIAMENTO DE PROCESSOS E MEMÓRIA GRUPO ELAINE P. S. ALVES RAFAEL T. ROLDÃO VINICIUS A. ZANQUINI SAMUEL DISCIPLINA: SISTEMAS OPERACIONAIS 2º QUAD/2010 PROFº MARCELO NASCIMENTO MOTIVAÇÃO 1. Sistema de

Leia mais

Sincronização e Comunicação entre Processos

Sincronização e Comunicação entre Processos Sincronização e Comunicação entre Processos Monitores/Semáforos Semáforos Mecanismos de sincronização nãoestruturados; Exige do desenvolvedor bastante cuidado, pois qualquer engano pode levar a problemas.

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Programação Concorrente Introdução Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Introdução Programa Seqüencial Representado por apenas um processo Existe apenas

Leia mais

Comunicação. capítulo

Comunicação. capítulo Comunicação capítulo 4 Camadas de protocolos: Modelo OSI Camadas de protocolos: Mensagem Protocolos de baixo nível Estas camadas implementam as funções básicas que envolvem uma rede de computadores: Física:

Leia mais

Conceito Básicos de Programação com Objetos Distribuídos. Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1

Conceito Básicos de Programação com Objetos Distribuídos. Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1 Conceito Básicos de Programação com Objetos Distribuídos Programação com Objetos Distribuídos (C. Geyer) Conceitos de POD 1 Autoria Autor C. Geyer Local Instituto de Informática UFRGS disciplina : Programação

Leia mais

Protótipo tipo de um sistema de arquivos para ambiente distribuído

Protótipo tipo de um sistema de arquivos para ambiente distribuído Universidade Regional de Blumenau Bacharelado em Ciências da Computação Protótipo tipo de um sistema de arquivos para ambiente distribuído do Acadêmica: Catia Silene Possamai Orientador: Antonio Carlos

Leia mais

Programação de Aplicações em. Rede usando Sockets

Programação de Aplicações em. Rede usando Sockets Programação de Aplicações em Objetivos: Rede usando Sockets Conhecer a API Sockets, que permite a programas de aplicação comunicar-se através da Internet Aplicações e Protocolo de Aplicação Aplicação:

Leia mais

Comunicação entre processos. Sistema centralizado

Comunicação entre processos. Sistema centralizado Sistemas Distribuídos Comunicação entre processos Sistema centralizado Comunicação entre processos Arquivo Memória compartilhada Sinal Fila de mensagem SO gerencia comunicação 2 Sistema distribuído Idéia

Leia mais

Comunicação entre processos

Comunicação entre processos Comunicação entre processos Fernando Afonso Santos UNIFEI Campus Itabira Processos Processos e Programas Um programa é uma entidade estática Fornece as instruções necessárias para realizar tarefas Não

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Universidade Federal do ABC Turma: Ciência da Computação Prof. Dr. Francisco Isidro Massetto Introdução: Sockets Para estabelecer a Comunicação Interprocesso nos Sistemas Distribuídos,

Leia mais

Por Fernando Koyanagi

Por Fernando Koyanagi Por Fernando Koyanagi Recursos usados 18 jumpers fêmea x fêmea Módulo de 16 relés com optoacoplador Raspberry Pi 3 Rede interna (TCP/IP) Intenção dessa aula 1. Iniciar automação com Raspberry Pi PI 2.

Leia mais

Sistemas de Operação (2018/2019) Ficha 6

Sistemas de Operação (2018/2019) Ficha 6 Sistemas de Operação (2018/2019) Ficha 6 Q1. Considere o seguinte programa que implementa uma pipe entre processos pai e filho. Compile o exemplo e execute-o. Leia o código com atenção e compreenda-o.

Leia mais

User Datagram Protocol

User Datagram Protocol User Datagram Protocol UDP: Protocolo utiliza para distinguir para qual usuário ou aplicativo deve ser encaminhado um datagrama destinado a uma máquina que esteja executando mais de um processo. Problemas:

Leia mais

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto?

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto? LabSO Gerência de AULA 3 Flávia Maristela (flavia@flaviamaristela.com) Romildo Martins (romildo@romildo.net) Porque eu preciso entender este assunto? Para entender como um computador consegue executar

Leia mais

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA ENGENHARIA DE COMPUTAÇÃO

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA ENGENHARIA DE COMPUTAÇÃO UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA ENGENHARIA DE COMPUTAÇÃO ALAN FERNANDO COELHO GARCIA EDUARDO GUILHERME CORDEIRO MECÂNISMO DE

Leia mais

Processos. Conceitos Básicos

Processos. Conceitos Básicos Processos Conceitos Básicos Processo (1) Abstração usada pelo S.O. para designar a execução de um programa. É caracterizado por uma thread de execução, um estado corrente e um conjunto associado de recursos

Leia mais

Programação com Sockets

Programação com Sockets Programação com LP4 Ciência da Computação 1 Comunicação entre processos Nível mais baixo É um tipo particular de modelo de programação em redes utilizado em várias linguagens como: C, C++ e Java São estruturas

Leia mais

Message Passing Interface - MPI

Message Passing Interface - MPI Message Passing Interface - Pedro de Botelho Marcos Maio/2008 1 Sumário Introdução; Conceitos básicos; Comunicação; Principais rotinas; Compilando e executando códigos ; Exemplos; Referências; 2 Introdução

Leia mais

Chapter 4: Threads. Operating System Concepts 8th Edition

Chapter 4: Threads. Operating System Concepts 8th Edition Chapter 4: Threads Sobre a apresentação (About the slides) Os slides e figuras dessa apresentação foram criados por Silberschatz, Galvin e Gagne em 2009. Esse apresentação foi modificada por Cristiano

Leia mais