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

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

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

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 Local C. Geyer Instituto de Informática UFRGS disciplina: Sistemas Operacionais II Versão V7.1 data: 2013/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 Conceitos Básicos Conceitos básicos motivação 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 Conceitos Básicos Conceitos básicos (cont.) Características gerais 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 Conceitos Básicos Conceitos básicos (cont.) primitivas mínimas conceituais send(mensagem) 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) Processor receptor espera que ao menos uma mensagem tenha sido enviada Observação Alguns autores diferenciam termos: assíncrono x não bloqueante Programação concorrente (C. Geyer) Troca de Mensagens 14

15 Conceitos básicos (cont.) Conceitos Básicos 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 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 Conceitos Básicos Conceitos básicos (cont.) propriedades dos canais de comunicação outros tipos comunicação direta ou indireta 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 gera elemento e envia ao consumidor por um send consumidor 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 Nomeação Nomeação (cont.) comunicação direta (cont.) exemplo produtor-consumidor diagrama Elemento Produtor Consumidor Programação concorrente (C. Geyer) Troca de Mensagens 25

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

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

28 Nomeação (cont.) Nomeação 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 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 Nomeação Nomeação (cont.) comunicação direta simétrica 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/UFRGS 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 Nomeação Indireta Nomeação indireta conceitos uso de caixas postais onde 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 Nomeação Indireta Nomeação indireta caixas postais de processo para o uso por outros processos 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 Nomeação indireta Nomeação indireta caixas postais de sistema proprietário da caixa postal 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 Exemplo: envio de Ola Mundo do processo 0 ao 1 if (id == 0) { strcpy(mensagem, Ola mundo ); Estática Direta % 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 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 Estática Indireta 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 { objoutput = new ObjectOutputStream(output); objoutput.writeobject( Olá! ); }catch (Exception e){(...)} Programação concorrente (C. Geyer) Troca de Mensagens 46

47 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 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> Exemplo C TCP Sockets #define PORT int server_sock; struct sockaddr_in server_addr; /* * 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

49 Exemplo C TCP Sockets Exemplo com C e TCP sockets (cont.) /* * 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

50 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

51 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

52 Exemplo C TCP Sockets Exemplo em C e TCP sockets (cont.) /* cria socket cliente */ } if ( (sock = socket(af_inet, SOCK_STREAM, 0)) < 0) { exit(-1); /* error handling */ /* 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

53 Exemplo C TCP Sockets Exemplo em C e TCP sockets (cont.) /* receber em C */ /* pode ser cliente ou servidor */ 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

54 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

55 Exemplo de nomeação dinâmica direta Dinâmica Direta PVM biblioteca de programaçao distribuída (paralela) fornecedor único predecessora de MPI modelo PVM nomeação dinâmica pelo sistema 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

56 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 Indireta Estática 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

57 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

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

59 Buferização Buferização e sincronização buffer 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

60 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

61 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

62 Buferização Buferização e sincronização capacidade Limitada O buffer pode ser esgotado 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

63 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

64 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

65 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

66 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

67 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

68 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

69 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

70 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

71 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

72 Outras Questões Outras questões expressão da concorrência em redes 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

73 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

74 Situações de erro (cont.) Situações de erro caso mensagem perdida 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

75 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

76 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

77 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

78 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

79 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

80 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

81 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

82 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

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

84 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

85 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

86 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

87 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

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

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

Informática UFRGS. Cláudio Geyer. Programação concorrente (C. Geyer) Troca de Mensagens 1 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 C. Geyer Local Instituto de Informática disciplina:

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

UNIVERSIDADE. Sistemas Distribuídos

UNIVERSIDADE. Sistemas Distribuídos UNIVERSIDADE Sistemas Distribuídos Ciência da Computação Prof. Jesus José de Oliveira Neto Comunicação Inter-Processos Sockets e Portas Introdução Sistemas distribuídos consistem da comunicação entre processos

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

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor

Comunicação em Sistemas Distribuídos. Conceitos: Paradigma C/S. Conceitos: Paradigma C/S. Paradigma Cliente/Servidor Comunicação em Sistemas Distribuídos Paradigma / Os processos em um SD estão lógica e fisicamente separados. Precisam se comunicar para que possam interagir O desempenho de um SD depende criticamente do

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

Sistemas Distribuídos Comunicação entre Processos em Sistemas Distribuídos: Middleware de comunicação Aula II Prof. Rosemary Silveira F. Melo Comunicação em sistemas distribuídos é um ponto fundamental

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS Modelo cliente e servidor Slide 2 Nielsen C. Damasceno Modelos Cliente - Servidor A principal diferença entre um sistema centralizado e um sistema distribuído está na comunicação

Leia mais

3. Comunicação em Sistemas Distribuídos

3. Comunicação em Sistemas Distribuídos 3. Comunicação em 3.1.Troca de mensagens As mensagens são objetos de dados cuja estrutura e aplicação são definidas pelas próprias aplicações que a usarão. Sendo a troca de mensagens feita através de primitivas

Leia mais

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais

Comunicação Inter-Processos. Prof. Adriano Fiorese. Conceitos Iniciais Comunicação Inter-Processos Conceitos Iniciais 1 Características para Comunicação Inter-Processos. Passagem de Mensagem pode ser suportada por duas operações de comunicação (send e receive). A comunicação

Leia mais

Monitores. Conceito Sistemas Operacionais II

Monitores. Conceito Sistemas Operacionais II Monitores Conceito Sistemas Operacionais II Monitores Autores Daniel Artur Seelig Fábio Lutz Local Universidade Federal do Rio Grande do Sul Instituto de Informática Sistemas Operacionais II Professor

Leia mais

Sistemas Distribuídos 59. Sistemas Distribuídos 61. "Receive não-bloqueante:

Sistemas Distribuídos 59. Sistemas Distribuídos 61. Receive não-bloqueante: 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 Área Compartilhda!

Leia mais

Aula Prática. Comunicação em SOCKTS. Disciplina: INF01151

Aula Prática. Comunicação em SOCKTS. Disciplina: INF01151 Aula Prática Comunicação em SOCKTS Disciplina: INF01151 Prof. Dr. Cláudio Fernando Resin Geyer Monitor: Julio Anjos Agenda 1 - Objetivo Apresentar na prática a comunicação entre processos usando sockets

Leia mais

Arquitetura de Sistemas Operativos

Arquitetura de Sistemas Operativos Arquitetura de Sistemas Operativos Sistemas Operativos 2011/2012 1 Introdução Os sistemas operativos implementam mecanismos que asseguram independência entre processos (i.e., a execução de um processo

Leia mais

Tópicos em Sistemas Distribuídos. Modelos de Comunicação

Tópicos em Sistemas Distribuídos. Modelos de Comunicação Tópicos em Sistemas Distribuídos Modelos de Comunicação Comunicação em SD Comunicação entre processos Sockets UDP/TCP Comunicação em grupo Broadcast Multicast Comunicação entre processos Conceitos básicos

Leia mais

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4

Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Sistemas Distribuídos Capítulos 3 e 4 - Aula 4 Aula passada Threads Threads em SDs Processos Clientes Processos Servidores Aula de hoje Clusters de Servidores Migração de Código Comunicação (Cap. 4) Fundamentos

Leia mais

Sincronização de Processos (5) Troca de Mensagens

Sincronização de Processos (5) Troca de Mensagens Sincronização de Processos (5) Troca de Mensagens Passagem (Troca) de Mensagens Motivação: Semáforos e algoritmos de exclusão mútua são baseados no compartilhamento de variáveis. Isso implica no compartilhamento

Leia mais

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064 Sistemas Distribuídos Professora: Ana Paula Couto DCC 064 Comunicação- Protocolos, Tipos, RPC Capítulo 4 Agenda Protocolos em Camadas Pilhas de Protocolos em Sistemas Distribuídos Tipos de Comunicação

Leia mais

Comunicação em Sistemas Distribuídos

Comunicação em Sistemas Distribuídos Comunicação em Sistemas Distribuídos A diferença mais importante entre os Sistemas Distribuídos e os Sistemas Uniprocessadores é a comunicação inter-processo. Nos uniprocessadores esta comunicação é feita

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Aula 4 Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação - UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação - UFJF Migração de Código Em

Leia mais

Sistemas Distribuídos Comunicação. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos Comunicação. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos Comunicação Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Roteiro da Aula Comunicação entre Processos Protocolos Modelo OSI Modelo Cliente Servidor 3 Comunicação entre

Leia mais

Revisão Ultima aula [1/2]

Revisão Ultima aula [1/2] SOP - TADS Comunicação Interprocessos - 2 IPC Prof. Ricardo José Pfitscher dcc2rjp@joinville.udesc.br Material cedido por: Prof. Rafael Rodrigues Obelheiro Prof. Maurício Aronne Pillon Revisão Ultima aula

Leia mais

Programação com sockets (em Java)

Programação com sockets (em Java) com sockets (em Java) Prof. Dr. Julio Arakaki Depto. Ciência da 1 Comunicação entre processos // aplicações - é um dos mecanismos mais utilizados - Java oferece modos de utilização:. TCP ( Transmission

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 4, Addison-Wesley 2005 From: M. Ben-Ari Principles of Concurrent

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 Mecanismos de Comunicação Voltando ao exemplo da calculadora... Rede local

Leia mais

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com

Sistemas Operacionais Aula 06: Threads. Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Sistemas Operacionais Aula 06: Threads Ezequiel R. Zorzal ezorzal@unifesp.br www.ezequielzorzal.com Objetivos Introduzir o conceito de thread Discutir as APIs das bibliotecas de threads Pthreads, Win32

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Introdução aos modelos de comunicação Programação de Sistemas Modelos de comunicação :1/19 Introdução (1) Os sistemas operativos implementam mecanismos que asseguram independência

Leia mais

Programação de Sistemas

Programação de Sistemas Programação de Sistemas Introdução aos modelos de comunicação Programação de Sistemas Modelos de comunicação :1/19 Introdução (1) Os sistemas operativos implementam mecanismos que asseguram independência

Leia mais

Bibliotecas. Apoio à Programação Distribuída. Socket. Socket. bibliotecas bibliotecas+ferramentas linguagens de programação distribuídas

Bibliotecas. Apoio à Programação Distribuída. Socket. Socket. bibliotecas bibliotecas+ferramentas linguagens de programação distribuídas Apoio à Programação Distribuída bibliotecas bibliotecas+ferramentas linguagens de programação distribuídas flexibilidade de programação disponibilidade da ferramenta facilidade de desenvolvimento e reuso

Leia mais

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br

Sistemas Distribuídos RPC x RMI. Edeyson Andrade Gomes www.edeyson.com.br Sistemas Distribuídos RPC x RMI Edeyson Andrade Gomes www.edeyson.com.br Roteiro da Aula Chamada Remota a Procedimento Definição Passagem de Parâmetros STUBS Semântica de Falhas 2 RPC Chamada Remota a

Leia mais

Sistemas Distribuídos Modelo Cliente-Servidor

Sistemas Distribuídos Modelo Cliente-Servidor Sistemas Distribuídos Modelo Cliente-Servidor Disciplina: Sistemas Distribuídos Prof.: Edmar Roberto Santana de Rezende Faculdade de Engenharia de Computação Centro de Ciências Exatas, Ambientais e de

Leia mais

Java : Comunicação Cliente-Servidor.

Java : Comunicação Cliente-Servidor. Java : Comunicação Cliente-Servidor. Objetivo: Capacitar o aluno a desenvolver uma aplicação servidora para múltiplos clientes. Apresentar as classes Socket e ServerSocket, classes de fluxo de dados, a

Leia mais

REDES DE COMPUTADORES

REDES DE COMPUTADORES REDES DE COMPUTADORES 09/2013 Cap.3 Protocolo TCP e a Camada de Transporte 2 Esclarecimentos Esse material é de apoio para as aulas da disciplina e não substitui a leitura da bibliografia básica. Os professores

Leia mais

Sockets. Bruno Guimarães Lucas Rossini

Sockets. Bruno Guimarães Lucas Rossini Sockets Bruno Guimarães Lucas Rossini Introdução Comunicação entre processos: Memória compartilhada Memória distribuída - Mensagens pela rede Um sistema distribuído é ausente de memória compartilhada,

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

Leia mais

Entendendo como funciona o NAT

Entendendo como funciona o NAT Entendendo como funciona o NAT Vamos inicialmente entender exatamente qual a função do NAT e em que situações ele é indicado. O NAT surgiu como uma alternativa real para o problema de falta de endereços

Leia mais

Considerações no Projeto de Sistemas Cliente/Servidor

Considerações no Projeto de Sistemas Cliente/Servidor Cliente/Servidor Desenvolvimento de Sistemas Graça Bressan Graça Bressan/LARC 2000 1 Desenvolvimento de Sistemas Cliente/Servidor As metodologias clássicas, tradicional ou orientada a objeto, são aplicáveis

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 Comunicação em Sistemas Distribuídos Introdução: Comunicação em Sistemas Distribuídos

Leia mais

Paradigma Cliente/Servidor

Paradigma Cliente/Servidor Paradigma Cliente/Servidor Mário Meireles Teixeira UFMA Departamento de Informática Dezembro, 2012 Comunicação em Sistemas Distribuídos! Os processos em um SD estão lógica e fisicamente separados. Precisam

Leia mais

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010)

SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010) SIMULADOR DE ROTEAMENTO DE PACOTES (V. 3 20/05/2010) OBJETIVO GERAL Este trabalho possui o objetivo de exercitar a lógica de programação dos alunos do Terceiro ano do Curso de BSI e também desenvolver

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS CUP Disk Memoey CUP Memoey Disk Network CUP Memoey Disk Comunicação em Sistemas Distribuídos Sumário Modelo Cliente e Servidor Troca de Mensagens Remote Procedure Call Comunicação

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

ELEMENTOS DE PROTOCOLOS DE TRANSPORTE. Fabricio Sousa

ELEMENTOS DE PROTOCOLOS DE TRANSPORTE. Fabricio Sousa ELEMENTOS DE PROTOCOLOS DE TRANSPORTE Fabricio Sousa Elementos de protocolos de transporte 2 Serviço de transporte implementado por um protocolo de transporte usado entre duas entidades de transporte Em

Leia mais

sockets interprocess communication Taisy Weber

sockets interprocess communication Taisy Weber sockets interprocess communication Taisy Weber Comunicação entre processos Mecanismos Pipes, FIFO (named pipes), semáforos, message queues. Memória compartilhada. Sockets Definição, chamadas de sistemas,

Leia mais

DESCRIÇÃO DO TRABALHO - VERSÃO DE 29/04/2006 15:00.

DESCRIÇÃO DO TRABALHO - VERSÃO DE 29/04/2006 15:00. DESCRIÇÃO DO TRABALHO - VERSÃO DE 29/04/2006 15:00. Descrição Geral do trabalho. O objetivo do trabalho será o desenvolvimento de um programa Cliente/Servidor para o envio e recebimento de arquivos. Os

Leia mais

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET

IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET 1 IMPLEMENTAÇÃO DE SOCKETS E THREADS NO DESENVOLVIMENTO DE SISTEMAS CLIENTE / SERVIDOR: UM ESTUDO EM VB.NET Daniel da Silva Carla E. de Castro Franco Diogo Florenzano Avelino daniel.silva1@ext.mpsa.com

Leia mais

Comunicação entre Processos

Comunicação entre Processos Comunicação entre Processos Comunicação entre Processos - Sistemas Operacionais fornecem mecanismos para comunicação entre processos (IPC), tal como filas de mensagens, semáfaros e memória compartilhada.

Leia mais

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013

Prof. Luiz Fernando Bittencourt MC714. Sistemas Distribuídos 2 semestre, 2013 MC714 Sistemas Distribuídos 2 semestre, 2013 Tipos de comunicação Middleware: serviço intermediário na comunicação de nível de aplicação. Fig. 67 Ex.: correio eletrônico Comunicação é persistente. Middleware

Leia mais

UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE INFORMÁTICA

UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE INFORMÁTICA UNIVERSIDADE ESTADUAL DO OESTE DO PARANÁ CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS COLEGIADO DE INFORMÁTICA Disciplina: Redes de Computadores Ano: 2007 Professor: Luiz Antonio Trabalho 1º Bimestre Cliente/Servidor

Leia mais

Ciência de Computadores Sistemas Distribuídos e Móveis

Ciência de Computadores Sistemas Distribuídos e Móveis Ciência de Computadores Sistemas Distribuídos e Móveis Lista de Exercícios Data: 4 de Novembro de 2013 Questões sobre o capítulo 1, Tanenbaum & van Steen: Fundamentos 1) Explique o significado de transparência,

Leia mais

Processos e Threads (partes I e II)

Processos e Threads (partes I e II) Processos e Threads (partes I e II) 1) O que é um processo? É qualquer aplicação executada no processador. Exe: Bloco de notas, ler um dado de um disco, mostrar um texto na tela. Um processo é um programa

Leia mais

Sistemas de Operação Sockets

Sistemas de Operação Sockets Sistemas de Operação Sockets O que é um socket? Uma interface de comunicação entre processos que podem ou não residir na mesma máquina, mas que não precisam estar relacionados. É usado normalmente para

Leia mais

Programação Concorrente

Programação Concorrente Programação Concorrente Monitores e Troca de Mensagens Monitores Considere que, no projeto da solução do produtor-consumidor com semáforos, os 2 downs tenham sido trocados Se o buffer estiver cheio deadlock

Leia mais

Sistemas Distribuídos. Coulouris Capítulo 4

Sistemas Distribuídos. Coulouris Capítulo 4 Sistemas Distribuídos Coulouris Capítulo 4 Mensagens Para comunicar-se com outros processos, um processo envia uma MENSAGEM para um DESTINO; um outro processo nesse destino recebe a mensagem. As operações

Leia mais

ECD1200 Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO

ECD1200 Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO Equipamento de Consulta de Dados KIT DE DESENVOLVIMENTO Versão do documento: 1.1 1. Introdução...3 2. Documentação...3 2.1. DOCUMENTAÇÃO DE REFERÊNCIA... 3 2.2. DESCRIÇÃO FUNCIONAL... 4 2.2.1. INTERFACE...

Leia mais

E.E.E.P. Dr. Solon Tavares Sistemas Operacionais Prof. Henrique Cordeiro. Programação Concorrente em Linux

E.E.E.P. Dr. Solon Tavares Sistemas Operacionais Prof. Henrique Cordeiro. Programação Concorrente em Linux E.E.E.P. Dr. Solon Tavares Sistemas Operacionais Prof. Henrique Cordeiro Programação Concorrente em Linux O Conceito de Processo no Linux O conceito de processo é fundamental para qualquer sistema operacional

Leia mais

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais

Leia mais

MODELO CLIENTE SERVIDOR

MODELO CLIENTE SERVIDOR SISTEMAS DISTRIBUÍDOS Modelo Cliente Servidor Modelo que estrutura um S.O. como um grupo de processos cooperantes, chamados servidores, que oferecem serviços a processos usuários, denominados clientes;

Leia mais

Comunicação. Parte II

Comunicação. Parte II Comunicação Parte II Carlos Ferraz 2002 Tópicos Comunicação Cliente-Servidor RPC Comunicação de objetos distribuídos Comunicação em Grupo Transações Atômicas Comunicação Stream 2 Comunicação cliente-servidor

Leia mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

Cliente-servidor com Sockets TCP

Cliente-servidor com Sockets TCP Cliente-servidor com Sockets TCP Paulo Sérgio Almeida Grupo de Sistemas Distribuídos Departamento de Informática Universidade do Minho 2007/2008 c 2000 2007 Paulo Sérgio Almeida Cliente-servidor com Sockets

Leia mais

Notas da Aula 6 - Fundamentos de Sistemas Operacionais

Notas da Aula 6 - Fundamentos de Sistemas Operacionais 1. Monitores Notas da Aula 6 - Fundamentos de Sistemas Operacionais Embora os semáforos sejam uma boa solução para o problema da exclusão mútua, sua utilização não é trivial. O programador é obrigado a

Leia mais

Comunicação entre processos (grupos) COMUNICAÇÃO ENTRE PROCESSOS Comunicação de grupo. Comunicação entre processos (grupos)

Comunicação entre processos (grupos) COMUNICAÇÃO ENTRE PROCESSOS Comunicação de grupo. Comunicação entre processos (grupos) Comunicação one-to-one Forma mais simples de comunicação entre processos point-to-point, ou unicast COMUNICAÇÃO ENTRE PROCESSOS Comunicação de grupo Algumas aplicações comunicação entre grupos de processos

Leia mais

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.

Leia mais

Programa de Computador que funciona em Rede

Programa de Computador que funciona em Rede Programa de Computador que funciona em Rede professor Robinson Vida Noronha 1 Paradigma Um programa rodando em rede é como uma loja. 2 Uma loja é composta por Vendedores Vendedores 3 Um loja deve servir

Leia mais

INF1013 MODELAGEM DE SOFTWARE

INF1013 MODELAGEM DE SOFTWARE INF1013 MODELAGEM DE SOFTWARE Departamento de Informática Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 18 Sockets OLadoServidor O Lado Cliente Múltiplos Clientes 1 Programa Capítulo 18 Sockets

Leia mais

Comunicação em Sistemas Distribuídos

Comunicação em Sistemas Distribuídos Comunicação em Sistemas Distribuídos Sockets Aplicações Protocolo de Aplicação FTP, SMTP, HTTP, Telnet, SNMP, etc. sockets TCP, UDP IP Data Link Ethernet, Token Ring, FDDI, etc Física Conjunto de APIs

Leia mais

Aula 30 - Sockets em Java

Aula 30 - Sockets em Java Aula 30 - Sockets em Java Sockets Sockets são estruturas que permitem que funções de software se interconectem. O conceito é o mesmo de um soquete (elétrico, telefônico, etc...), que serve para interconectar

Leia mais

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS

UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS UNIVERSIDADE FEDERAL DE SANTA CATARINA DEPARTAMENTO DE INFORMÁTICA E ESTÁTISTICA GRADUAÇÃO EM CIÊNCIAS DA COMPUTAÇÃO DISCIPLINA: COMUNICAÇÃO DE DADOS PROFESSOR: CARLOS BECKER WESTPHALL Terceiro Trabalho

Leia mais

Sistemas Distribuídos RPC

Sistemas Distribuídos RPC Sistemas Distribuídos RPC Disciplina: Sistemas Distribuídos Prof.: Edmar Roberto Santana de Rezende Faculdade de Engenharia de Computação Centro de Ciências Exatas, Ambientais e de Tecnologias Pontifícia

Leia mais

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Conceitos básicos e serviços do Sistema Operacional Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO Tipos de serviço do S.O. O S.O.

Leia mais

Sincronização. Cooperação entre Processos

Sincronização. Cooperação entre Processos Sincronização Parte II Programação Concorrente Cooperação entre Processos Vários processos executam em conjunto uma ou mais tarefas, nas quais Competem por recursos Indicam uns aos outros a: Ausência/existência

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Gerência de processos Controle e descrição de processos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Representação e controle de processos pelo SO Estrutura

Leia mais

Software de rede e Modelo OSI André Proto UNESP - São José do Rio Preto andre.proto@sjrp.unesp.br O que será abordado Hierarquias de protocolos (camadas) Questões de projeto relacionadas às camadas Serviços

Leia mais

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos

Capítulo 8. Sistemas com Múltiplos Processadores. 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos Capítulo 8 Sistemas com Múltiplos Processadores 8.1 Multiprocessadores 8.2 Multicomputadores 8.3 Sistemas distribuídos 1 Sistemas Multiprocessadores Necessidade contínua de computadores mais rápidos modelo

Leia mais

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5

Princípios de Sistemas Distribuídos. Tecnologias utilizadas em sistemas distribuídos Aula 5 Princípios de Sistemas Distribuídos Tecnologias utilizadas em sistemas distribuídos Aula 5 Conceitos de comunicação entre processos Interprocess Communication (IPC) Sistemas distribuídos são construídos

Leia mais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais

Notas da Aula 15 - Fundamentos de Sistemas Operacionais Notas da Aula 15 - Fundamentos de Sistemas Operacionais 1. Software de Entrada e Saída: Visão Geral Uma das tarefas do Sistema Operacional é simplificar o acesso aos dispositivos de hardware pelos processos

Leia mais

Modelos de Sistemas Distribuídos O Modelo Cliente-Servidor

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

Leia mais

TROCA DE MENSAGENS SOCKETS. Comunicando processos através de SOCKETS. SOCKETS com conexão. SOCKETS sem conexão

TROCA DE MENSAGENS SOCKETS. Comunicando processos através de SOCKETS. SOCKETS com conexão. SOCKETS sem conexão TROCA DE MENSAGENS SOCKETS Comunicando processos através de SOCKETS SOCKETS com conexão SOCKETS sem conexão SOCKETS Princípios dos sockets: 2. Fornecer uma interface geral permitindo a construção de aplicações

Leia mais

ALua. asynchronous communication in Lua

ALua. asynchronous communication in Lua ALua asynchronous communication in Lua o que é modelo de programação troca de mensagens Lua assincronismo modelo de concorrência cada evento tratado até o final estrutura da rede daemons intermediando

Leia mais

Rede de Computadores

Rede de Computadores Escola de Ciências e Tecnologia UFRN Rede de Computadores Prof. Aquiles Burlamaqui Nélio Cacho Luiz Eduardo Eduardo Aranha ECT1103 INFORMÁTICA FUNDAMENTAL Manter o telefone celular sempre desligado/silencioso

Leia mais

Manual do Desenvolvedor Criptografia de Arquivos do WebTA

Manual do Desenvolvedor Criptografia de Arquivos do WebTA Manual do Desenvolvedor Criptografia de Arquivos do WebTA Versão 1.4 Índice 1. Objetivo..3 2. Processo..3 3. API de Criptografia - Biblioteca Java..4 3.1 WEBTACryptoUtil..4 3.1.1 decodekeyfile..4 3.1.2

Leia mais

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira IFPE Disciplina: Sistemas Operacionais Prof. Anderson Luiz Moreira SERVIÇOS OFERECIDOS PELOS SOS 1 Introdução O SO é formado por um conjunto de rotinas (procedimentos) que oferecem serviços aos usuários

Leia mais

Arquitetura de Computadores II

Arquitetura de Computadores II Universidade Federal do Rio de Janeiro Informática DCC/IM Arquitetura de Computadores II Sistemas de Troca de Mensagens O Sistema de Comunicação provê tipicamente os seguintes serviços para as aplicações:

Leia mais

Transporte. Sua função é: Promover uma transferência de dados confiável e econômica entre máquina de origem e máquina de destino.

Transporte. Sua função é: Promover uma transferência de dados confiável e econômica entre máquina de origem e máquina de destino. Redes de Computadores Transporte Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com http://www.bolinhabolinha.com Camada de transporte Sua função é: Promover uma transferência de dados confiável e econômica

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS SISTEMAS OPERACIONAIS Turma de Redes AULA 06 www.eduardosilvestri.com.br silvestri@eduardosilvestri.com.br Estrutura do Sistema Operacional Introdução É bastante complexo a estrutura de um sistema operacional,

Leia mais

CURSO DE ENGENHARIA DE COMPUTAÇÃO Renovação de Reconhecimento pela Portaria n 123 de 09/07/12 DOU de 10/07/12 PLANO DE CURSO

CURSO DE ENGENHARIA DE COMPUTAÇÃO Renovação de Reconhecimento pela Portaria n 123 de 09/07/12 DOU de 10/07/12 PLANO DE CURSO CURSO DE ENGENHARIA DE COMPUTAÇÃO Renovação de Reconhecimento pela Portaria n 123 de 09/07/12 DOU de 10/07/12 Componente Curricular: Sistemas Concorrentes e Distribuídos Código: ENG - 436 Pré-requisito:

Leia mais

Redes de Computadores. 1 Questões de múltipla escolha. TE090 - Prof. Pedroso. 30 de novembro de 2010. Exercício 1: Considere:

Redes de Computadores. 1 Questões de múltipla escolha. TE090 - Prof. Pedroso. 30 de novembro de 2010. Exercício 1: Considere: TE090 - Prof. Pedroso 30 de novembro de 2010 1 Questões de múltipla escolha Exercício 1: Considere: I. O serviço de DNS constitui-se, em última instância, de um conjunto de banco de dados em arquitetura

Leia mais

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 11-1. INTRODUÇÃO TRIGGERS (GATILHOS OU AUTOMATISMOS) Desenvolver uma aplicação para gerenciar os dados significa criar uma aplicação que faça o controle sobre todo ambiente desde a interface, passando

Leia mais

Algoritmos e Programação Estruturada

Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.

Leia mais

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP) Hardware (Nível 0) Organização O AS/400 isola os usuários das características do hardware através de uma arquitetura de camadas. Vários modelos da família AS/400 de computadores de médio porte estão disponíveis,

Leia mais

OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite

OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite Laboratório de Redes. Remote Procedure Call - RPC Pedroso 9 de março de 2006 1 Introdução 2 Conceitos básicos OProtocolo RPC é um dos protocolos de aplicação mais utilizados, pois permite que sejam criadas

Leia mais

Sobre a apresentação (About(

Sobre a apresentação (About( Capítulo 4: Threads 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

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais Aula 6 Estrutura de Sistemas Operacionais Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso

Leia mais

Redes de Computadores. Protocolos de comunicação: TCP, UDP

Redes de Computadores. Protocolos de comunicação: TCP, UDP Redes de Computadores Protocolos de comunicação: TCP, UDP Introdução ao TCP/IP Transmission Control Protocol/ Internet Protocol (TCP/IP) é um conjunto de protocolos de comunicação utilizados para a troca

Leia mais