Troca de Mensagens Curso de Programação Concorrente Notas de aula Cláudio Geyer.
|
|
- Airton Caminha Sampaio
- 8 Há anos
- Visualizações:
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 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 maisInformá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 maisProgramaçã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 maisUNIVERSIDADE. 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 maisRemote 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 maisComunicaçã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 maisComunicaçã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 maisSistemas 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 maisSISTEMAS 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 mais3. 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 maisComunicaçã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 maisMonitores. 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 maisSistemas 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 maisAula 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 maisArquitetura 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 maisTó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 maisSistemas 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 maisSincronizaçã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 maisSistemas 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 maisComunicaçã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 maisSistemas 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 maisSistemas 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 maisRevisã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 maisProgramaçã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 maisCapí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 maisSistemas 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 maisSistemas 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 maisProgramaçã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 maisProgramaçã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 maisBibliotecas. 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 maisSistemas 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 maisSistemas 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 maisJava : 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 maisREDES 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 maisSockets. 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 mais1.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 maisEntendendo 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 maisConsideraçõ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 maisSistemas 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 maisParadigma 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 maisSIMULADOR 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 maisSISTEMAS 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 maisOrientaçã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 maisELEMENTOS 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 maissockets 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 maisDESCRIÇÃ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 maisIMPLEMENTAÇÃ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 maisComunicaçã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 maisProf. 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 maisUNIVERSIDADE 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 maisCiê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 maisProcessos 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 maisSistemas 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 maisProgramaçã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 maisSistemas 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 maisECD1200 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 maisE.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 maisUNIVERSIDADE 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 maisMODELO 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 maisComunicaçã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 maisLP 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 maisCliente-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 maisNotas 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 maisComunicaçã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 maisProgramaçã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 maisPrograma 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 maisINF1013 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 maisComunicaçã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 maisAula 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 maisUNIVERSIDADE 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 maisSistemas 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 maisProf. 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 maisSincronizaçã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 maisSistemas 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 maisSoftware 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 maisCapí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 maisPrincí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 maisNotas 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 maisModelos 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 maisTROCA 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 maisALua. 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 maisRede 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 maisManual 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 maisIFPE. 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 maisArquitetura 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 maisTransporte. 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 maisSISTEMAS 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 maisCURSO 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 maisRedes 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 maisBANCO 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 maisAlgoritmos 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 maisHardware (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 maisOProtocolo 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 maisSobre 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 maisSistemas 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 maisRedes 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