Sistemas Distribuídos (Parte 4 - Aplicação Distribuída)

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

Download "Sistemas Distribuídos (Parte 4 - Aplicação Distribuída)"

Transcrição

1 Unidade de Gestão da Educação Presencial - GEDUP Pós-graduação em Redes de Computadores Sistemas Distribuídos (Parte 4 - Aplicação Distribuída) Prof. Ms. Tomás Dias Sant Ana Varginha, 2006

2 Sumário 1. INTRODUÇÃO APLICAÇÃO DISTRIBUÍDA COMPUTAÇÃO DISTRIBUÍDA TÉCNICAS PARA IMPLEMENTAÇÃO DE APLICAÇÕES DISTRIBUÍDAS ARQUITETURA CLIENTE/SERVIDOR O protocolo TCP-IP O endereço IP Portas Sockets Criação de um socket Stream Socket Datagrama Socket Programação Multi-Threading BIBLIOGRAFIA...20

3 1 1. Introdução Até pouco tempo, na construção das aplicações monolíticas que rodam nos mainframes, o projetista tinha pouca ou quase nenhuma preocupação com a arquitetura da aplicação. Com a viabilização da rede e das tecnologias de comunicação e processamento distribuído, determinar a arquitetura de uma aplicação passou a ser uma atividade estratégica na construção de sistemas e inclui decidir sobre o seu particionamento e a localização de suas partes. O crescimento das redes de computadores e meios de comunicação, bem como a heterogeneidade das plataformas de hardware e software impulsionou a investigação científica de aspectos como abertura, transparência, mobilidade do usuário, confiabilidade, interoperabilidade e outros, todos inerentes aos sistemas distribuídos (Tanenbaun, 1996; Coulouris et al., 1994). Em adição, o advento da Internet, em termos de uma grande rede mundial que engloba plataformas de hardware e software bastante heterogêneas, impulsionou ainda mais o desenvolvimento dos sistemas distribuídos, embora nem todos os conceitos essenciais de sistemas distribuídos estejam presentes na Internet. Fornecido o suporte à conexão das máquinas e também o suporte operacional, é relevante investigar os recursos providos pelas linguagens de programação e/ou ambientes de desenvolvimento, em termos da implementação de aplicações distribuídas. Existem várias linguagens que fornecem suporte ao desenvolvimento de aplicações, geralmente através de bibliotecas que contemplam recursos para o estabelecimento de conexões entre computadores, transferência de mensagens, controle dos aspectos envolvidos na comunicação e outros. A heterogeneidade das plataformas de hardware e software é um ponto positivo para o uso de sistemas distribuídos, visto que a integração dos diferentes ambientes operacionais é um dos focos de investigação científica da área. No entanto, ao nível dos desenvolvedores de aplicações (programadores), o desenvolvimento de aplicações que possam ser executadas em diferentes ambientes operacionais é um grande desafio, pois a maioria das linguagens de programação está ligada diretamente a um determinado tipo de sistema operacional.

4 2 2. Aplicação Distribuída Aplicações distribuídas são aquelas em que existem programas que executam simultaneamente em vários computadores interligados em rede. Para que os diferentes programas, que constituem a aplicação distribuída, possam comunicar entre si precisam obedecer a regras, designadas por protocolos. A complexidade da especificação desses protocolos e mesmo a necessidade de reutilização de software fizeram com que esses protocolos fossem estruturados em famílias de protocolos, com uma determinada arquitetura. Uma família de protocolos, também designada por pilha de protocolos, caracteriza-se por uma arquitetura e pelo fato dos seus protocolos serem aprovados por uma mesma entidade. Desde o inicio, os vários fabricantes se lançaram a definir as suas famílias de protocolos: SNA (IBM), DNA (Digital), etc. Mas, cedo se constatou um problema: como executar aplicações distribuídas em ambientes heterogêneos? É naturalmente de todo interesse que estes tipos de aplicações possam ser usados em ambientes heterogêneos, isto é, ambientes onde coexistam computadores de fabricantes diferentes, com sistemas operacionais diferentes. Para que isso seja possível, precisam existir famílias de protocolos normalizadas internacionalmente, independentemente dos fabricantes. Existem duas famílias de protocolos com esse estatuto: a família de protocolos OSI, normalizada conjuntamente pela ISO e pelo CCITT; os protocolos desta família são divulgadas por normas ISO e recomendações do CCITT; a família de protocolos Internet (TCP/IP, descrito no item 3.1.2), normalizada pelo IAB (Internet Activities Board); os protocolos desta família são divulgados como RFC's (Request For Comments). 2.1 Computação Distribuída

5 3 A computação distribuída divide a carga de processamento entre dois ou mais computadores. No entanto, as coisas não são tão simples. Hoje temos que olhar além dos conceitos tradicionais de computação distribuída, partindo do mundo two-tier (i. e. clienteservidor) para um mundo mais complexo, onde aplicações são divididas entre múltiplos processadores e bancos de dados. Ainda mais, estas aplicações precisam manter as suas características de missão crítica tais como tolerância à falhas e recuperação de erros. Para entender a integração de aplicações multitiered (múltiplos pontos), precisamos entender a arquitetura. O particionamento de aplicações é realmente um conceito de arquitetura, onde a tecnologia (por exemplo, objetos distribuídos) é um mero mecanismo para implementação de uma aplicação particionada. Uma decisão fundamental para a construção de um sistema distribuído é a arquitetura base a ser utilizada. Uma vez selecionada a arquitetura base, o projetista precisa decidir onde colocar os processos da aplicação para melhor otimizar os recursos disponíveis e atender os requisitos da aplicação. Há muitas coisas a serem consideradas, incluindo: carga do usuário; carga do processamento; tipo da aplicação; custo de desenvolvimento; manutenção; expectativas de desempenho. Como se cria uma arquitetura? Antes de se optar por uma arquitetura, algumas atividades precisam ser executadas como entender os requisitos em detalhes, criar o projeto da aplicação e considerar todos os itens acima mencionados. Um dos erros mais comuns que os arquitetos cometem é abordar o problema com uma arquitetura pré-definida e tentar fazer o problema se ajustar a ela. Não é uma boa idéia. O mais recomendável é selecionar a arquitetura que melhor se ajuste ao problema em mãos. O primeiro passo é criar uma arquitetura lógica. Uma arquitetura lógica permite o mapeamento de certas funções da aplicação em camadas da arquitetura conceitual, sem comprometimento com uma determinada camada ou tecnologia disponível. Assim como no

6 4 projeto lógico de banco de dados, é recomendável entender os objetivos e metas da arquitetura antes de entrar nos seus detalhes. Agora que se tem uma arquitetura lógica, é hora de concentrar as atenções para o mapeamento do lógico para o físico. Antes é necessário selecionar as tecnologias de apoio como sockets, ferramentas de particionamento de aplicações, ferramentas especializadas de computação distribuída, servidores de banco de dados ou objetos distribuídos. A tecnologia de apoio definirá como os objetos lógicos serão fisicamente implementados.

7 5 3. Técnicas para Implementação de Aplicações Distribuídas Os Sistemas Distribuídos podem ser caracterizados como sendo um conjunto de computadores autônomos, interligados por uma rede de comunicação, e que permitem o compartilhamento dos recursos do sistema, tais como hardware, software e dados. Em adição, o acesso aos recursos oferecidos por um sistema distribuído deve ser transparente aos olhos do usuário, ou seja, independente de sua localização, o usuário deve acessar os serviços da mesma forma, tendo a impressão de que o sistema é o seu computador. Atualmente a maioria dos sistemas distribuídos baseia-se na arquitetura clienteservidor e no uso do protocolo TCP-IP. 3.1 Arquitetura Cliente/Servidor A organização dos sistemas distribuídos deve considerar os aspectos lógicos, tais como estrutura lógica do sistema, relação usuário/sistema, conceito de clientes-servidores e outros; e os aspectos físicos, tais como estrutura física, organização do hardware, elementos básicos e outros. De modo geral, os modelos arquiteturais dos sistemas distribuídos podem ser classificados em clássicos, compostos e avançados. Os modelos arquiteturais clássicos compreendem o modelo de minicomputadores, o modelo estação de trabalho-servidor e modelo de banco de processadores. Atualmente, o modelo clássico baseado em estações de trabalho-servidor, conforme ilustra a Figura 3.1, tem sido o mais difundido por apresentar uma arquitetura simplificada e flexível, que se adapta às necessidades da maioria dos usuários.

8 6 Estações de Trabalho e Computadores Pessoais Rede de Comunicação Roteador (ligação com uma WAN) Servidores de Arquivos Outros Servidores Figura 3.1 Modelo arquitetural estação de trabalho-servidor O modelo estação de trabalho-servidor é caracterizado pela presença de um ou mais servidores e várias estações de trabalho (clientes). O servidor é responsável pelo gerenciamento e disponibilização dos recursos às estações de trabalho que, por sua vez, realizam os pedidos. De modo geral, o processo de comunicação do cliente e servidor envolve um meio de transmissão e um protocolo de comunicação, por exemplo UDP (User Datagram Protocol) ou TCP (Transfer Control Protocol). O TCP é um protocolo baseado em conexão que prove um fluxo de dados confiável entre dois computadores, exemplos: HTTP, FTP, Telnet. E UDP é um protocolo que envia pacotes de dados independentes, chamados datagramas, de um computador para o outro, exemplo: Ping. Utilizando o protocolo TCP, o servidor possui um módulo de software que permanece sempre em execução (listening) para atender às chamadas dos clientes. Uma conexão é criada com o servidor sempre que um cliente solicita algum serviço. Em adição, o servidor é capaz de manter várias conexões com os clientes simultaneamente, conforme ilustra a Figura 3.2. Os pedidos dos clientes chegam ao servidor em um endereço lógico, denominado porta, que identifica o tipo de serviço a ser realizado. Após o recebimento da solicitação, o

9 servidor executa o serviço, "empacota" o resultado e envia de volta ao cliente, utilizando o mesmo endereço lógico. 7 Cliente 1 Servidor Cliente 2 Cliente 3 Figura Esquema genérico de uma conexão cliente-servidor O protocolo TCP-IP Atualmente, a Internet apresenta-se como o mais difundido modelo de comunicação cliente-servidor. Através dela é possível interligar redes do mundo inteiro, utilizando-se para isto um protocolo de comunicação padrão, denominado TCP/IP (Transfer Control Protocol - Internet Protocol), e computadores intermediários, chamados routers ou gateways, que são responsáveis pela troca (comutação) de pacotes entre as redes (Commer, 1991; Thomas, 1997). De modo geral, cada rede possui um endereço IP, utilizado para identificá-la dentre as demais redes da Internet. Em adição, cada placa de rede de um computador possui um endereço único determinado pelo fabricante, que é utilizado para a localização do computador dentro de uma rede. Assim, ao enviar um pacote de um computador a outro via Internet, deve-se acrescentar um endereço lógico, que inclui o endereço da rede e o endereço do computador. Os routers utilizam o processo de ARP (Address Resolution Protocol) para localizar o computador de destino. Este processo consiste em receber o pacote, verificar se o endereço lógico faz parte da lista de endereços de rede que ele possui, enviar um broadcast a todos os computadores da rede e, após a identificação do endereço físico, enviar o pacote ao computador.

10 O endereço IP Conforme citado, o endereço IP é um endereço lógico utilizado para a localização de um computador em uma rede TCP/IP. Basicamente, o endereço IP é um número de 32 bits composto por quatro conjuntos de oito bits (quatro bytes), como por exemplo , que podem ser traduzidos para os conjuntos numéricos (Thomas, 1997). Para facilitar a tarefa de roteamento, os endereços IP são hierárquicos. Desta forma, ao receber um pacote, o router pode identificar se este é ou não para a sua rede. Como exemplo, se uma rede possui o endereço IP , todos os seus computadores devem possuir endereço do tipo x.x. Com o objetivo de facilitar a localização de um servidor (host), o endereço IP é traduzido para um nome, por exemplo "unifenas.br". O processo inverso, ou seja, a tradução do nome para o endereço IP é denominada Hostname Resolution (resolução de nomes). O sistema de roteamento verifica a existência de um nome em tabelas de DNS (Domain Name System) mantidas pelos diversos mecanismos roteadores (routers), através dos endereços IP (Internet Protocol). Caso o servidor seja encontrado e esteja em operação, uma interface é fornecida ao usuário para acesso aos serviços disponíveis Portas Conforme citado, a comunicação pela Internet não é simplesmente a comunicação entre dois computadores, mas sim entre duas aplicações. Para que isto seja possível, a mensagem enviada pela aplicação cliente deve conter uma identificação da aplicação servidora, neste caso, o endereço lógico denominado porta. Em adição, a aplicação cliente deve enviar o número da porta para recebimento da resposta. Todas estas informações são adicionadas ao header do pacote. O endereço lógico deve possuir um número de 16 bits na faixa entre 0 (zero) e 65535, sendo que as portas de número inferior a 1024 (entre 0 e 1023) são reservadas para aplicações padrões, por exemplo HTTP, que utiliza a porta 80; FTP, a porta 21; Telnet, a porta 23; e outras (figura 3.3).

11 9 Figura Esquematização das Portas 3.2 Sockets Sockets são os componentes básicos para comunicação entre processos, prove acesso ao protocolo de transporte de rede. Os dois principais tipos de sockets são: Stream Socket: um stream socket prove uma comunicação bidirecional, confiável, seqüencial e não duplicada. Utiliza o protocolo TCP/IP. Datagram Socket: prove a comunicação bidirecional de dados, o dado é dividido em pacotes, as mensagens podem ser recebidas fora de ordem e ou duplicadas. Ele usa o protocolo UDP. O estabelecimento da conexão é assimétrico, com um processo atuando como cliente e outro como servidor: O servidor estabelece (bind) um socket para um endereço conhecido. Ele bloqueia o socket para um pedido de conexão. O processo pode conectar com o servidor.

12 Criação de um socket O primeiro passo é criar o socket, através da função socket(): s = socket(domínio, tipo, protocolo) onde, Domínio: é especificado por uma das constantes definidas em <sys/socket.h>. Para o UNIX o domínio é AF_UNIX e para a Internet o domínio é AF_INET. Tipo: são suportados três tipos de sockets: SOCK_STREAM para stream sockets, SOCK_DATAGRAM para datagram sockets e SOCK_RAW para Row Sockets.Protocolo: O argumento 0 deve ser usado na maioria dos casos. O sistema seleciona um protocolo que suporta o tipo de requisição. O socket é criado sem um nome, mas deve-se especificar o nome para que a comunicação possa ocorrer entre as aplicações. A função bind() permite o processo especificar um meio de comunicação: bind (s, nome, tamanho_do_nome) S: é o handle do socket. Nome: é uma estrutura que é interpretada por um protocolo. Exemplo: o domínio Internet contém um Internet Address e o número da porta. Tamanho do Nome: é o tamanho da estrutura nome Exemplo Internet biding: int sock; struct sockaddr_in Nome; Nome.sin_family = AF_INET; Nome.sin_addr.s_addr = INADDR_ANY; Nome.sin_port = 0; bind (sock, (struct sockaddr *)&Nome, sizeof(nome)); Solicitação (ouvindo) e Communicating (comunicando) Pedido canal: servidor apenas escuta o pedido. Canal de comunicação: é criado para cada comunicação.

13 11 Figura Representação da comunicação utilizando Strem Socket Stream Socket Lado do Cliente No lado cliente a função connect() inicia uma conexão, e automaticamente seleciona um nome (bind) para o socket: int Sock; struct sockaddr_in Servidor; struct hostent *hp;... Servidor.sin_family= AF_INET; hp= gethostbyname("host name"); memcpy((char*) & Servidor.sin_addr, (char*) hp->h_addr, hp->h_length); Servidor.sin_port= htons(port_number);... connect(sock, (struct sockaddr*) &Servidor, sizeof(servidor)); A função gethostbyname(nome_host) retorna uma estrutura incluíndo o endereço de rede do Host (NOME_HOST). Lado do Servidor Para receber uma conexão cliente, o servidor deve realizar os seguintes passos após o binding (Figura 3.4): 1. Indicar quantas conexões podem ser colocadas em fila (listen()). 2. Aceitar a conexão (accept()). int Sock; struct sockaddr_in Cliente;... listen(s, 5);... Sock = accept(sock, (struct sockaddr *)&Cliente, sizeof(cliente)); Listen(S, 5) S é o endereço do socket para conexão, e o segundo parâmetro especifica o número máximo de conexões que podem ser colocadas em fila. Accept() retorna um novo socket que é conectado ao cliente.

14 Transferência de dados: Há várias funções para enviar e receber dados. A função socket() retorna um descritor de arquivo que pode ser usado com muitas chamadas I/O do UNIX, por exemplo: write(sock, mensagem, sizeof(buf)); read(sock, mensagem, sizeof(buf)); ou, send(sock, mensagem, sizeof(buf), flag); recv(sock, mensagem, sizeof(buf), flag); 12 Fechando um socket: O socket deve ser fechado usando a função close(). Exemplo: close(s). Exemplo Cliente: #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <strings.h> #define DATA "1 2 3 TESTANDO..." main (int argc, char* argv[]) { int sock; struct sockaddr_in server; struct hostent *hp; sock = socket (AF_INET, SOCK_STREAM, 0); if (sock == -1) { perror ("Opening stream socket"); exit (1); hp = gethostbyname(argv[1]); memcpy ((char*)&server.sin_addr, (char*) hp->h_addr, hp->h_length); server.sin_family = AF_INET; server.sin_port = htons(atoi(argv[2])); if (connect(sock, (struct sockaddr *)&server, sizeof server) == -1) { perror("connecting stream socket"); exit(1); if (write(sock, DATA, sizeof DATA) == -1) perror("writing data to stream socket"); close (sock); exit (0);

15 13 Exemplo Servidor: #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <strings.h> #define TRUE 1 main() { int sock, length; struct sockaddr_in server; int msgsock; char buf[1024]; int rval; sock = socket (AF_INET, SOCK_STREAM, 0); if (sock==-1) { perror( "Opening stream socket"); exit(1); server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = 0; if (bind (sock, (struct sockaddr *)&server, sizeof(server)) == -1){ perror("binding stream socket"); exit (1); length = sizeof server; if (getsockname (sock, (struct sockaddr *)&server, &length) == -1){ perror("getting socket name"); exit (1); printf("socket port # %d\n", ntohs(server.sin_port)); /* Start accepting connections */ listen(sock, 5); do { msgsock = accept( sock, (struct sockaddr *) 0, (int*) 0); if (msgsock==-1) perror("accept"); else do { memset( buf, 0, sizeof buf); if (( rval = read( msgsock, buf, 1024)) == -1) perror("reading data stream"); if (rval == 0) printf("ending connection\n"); else printf( "-->%s\n", buf); while (rval!=0); close(msgsock); while (TRUE); exit(0);

16 Datagrama Socket Um datagram socket é criado como um stream socket, alterando apenas o flag que define o tipo do socket. Ele pode usar algumas chamadas para enviar e receber dados como no stream socket, exceto as funções accept() e listen(). As funções sendto() e recvfrom() são muito usadas para transferir dados em um datagram socket: sendto(s, buf, sizeof(buf), flag, &to, sizeof(to)); Envia o conteúdo de buf para o endereço indicado em &to. recvfrom(s, buf, sizeof(buf), flag, &from, sizeof(from)); Recebe o pacote e armazena em buf. Exemplo Cliente: #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <strings.h> #define DATA "Mensagem..." main (int argc, char* argv[]) { int sock; struct sockaddr_in server; struct hostent *hp; char buf[1024]; sock = socket (AF_INET, SOCK_DGRAM, 0); if (sock == -1) { perror ("Opening stream socket"); exit (1); hp = gethostbyname(argv[1]); memcpy ((char*)&server.sin_addr, (char*) hp->h_addr, hp->h_length); server.sin_family = AF_INET; server.sin_port = htons(atoi(argv[2])); if (sendto(sock, DATA, sizeof DATA, 0, (struct sockaddr *)&server, sizeof server) == -1) { perror("enviando dados"); exit(1); if (read(sock, buf, 1024) == - 1) perror("writing data to stream socket"); printf("teste: %s\n", buf); close (sock); exit (0);

17 15 Exemplo Servidor: #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <strings.h> #define TRUE 1 main() { int sock, length; struct sockaddr_in server; struct sockaddr_in cliente; int msgsock; char buf[1024]; int rval; sock = socket (AF_INET, SOCK_DGRAM, 0); if (sock==-1) { perror( "Opening stream socket"); exit(1); server.sin_family = AF_INET; server.sin_addr.s_addr = INADDR_ANY; server.sin_port = 0; if (bind (sock, (struct sockaddr *)&server, sizeof(server)) == -1){ perror("binding stream socket"); exit (1); length = sizeof server; if (getsockname (sock, (struct sockaddr *)&server, &length) == -1){ perror("getting socket name"); exit (1); printf("socket port # %d\n", ntohs(server.sin_port)); do { if (recvfrom (sock, buf, 1024, 0, (struct sockaddr *)&cliente, &length) == -1) { perror ("Lendo pacote"); exit(1); if (sendto (sock, buf, 1024, 0, (struct sockaddr *)&cliente, sizeof cliente) == -1) { perror ("enviando pacote"); exit(0); printf("mensagem %s\n", buf); while (TRUE); exit(0);

18 Programação Multi-Threading No princípio da computação paralela, os termos concorrência e multiprogramação possuíam conceitos completamente distintos e eram aplicados a situações também distintas. Com a evolução do hardware e das técnicas de programação, tais termos passaram a ser complementares e, atualmente, são utilizados em conjunto para se construir técnicas híbridas para a computação paralela. Na programação seqüencial, os processos são executados um após o outro, enquanto que na programação concorrente os processos são executados concorrentemente. A Concorrência implica em mais de um processo iniciado e ainda não terminado, podendo ocorrer tanto em sistemas com um único processador (pseudoparalelismo multiprogramação), como em sistemas com vários processadores (programação paralela). Dentro desta definição, pode-se abstrair dois tipos de paralelismo: Pseudo-Paralelismo (Threads): os processos são executados de forma intercalada em um único processador, de maneira que apenas um está ativo a cada instante. A Figura 2.1 exemplifica este tipo de paralelismo, com a execução de três processos (e1, e2 e e3) em função do tempo. Processos e3 e3 e2 e2 e1 e1 t1 t Tempo Figura 3.1 Pseudo-Paralelismo Paralelismo Real: vários processos são executados no mesmo intervalo de tempo, ou seja, têm-se vários processadores podendo executar os processos simultaneamente (Figura 2.2). Se existem p processos e P processadores sendo executados concorrentemente, e p > P, forma-se uma situação de paralelismo misto.

19 17 Processos e3 e1 e2 Figura 3.2 Paralelismo Real O paralelismo real pode ser dividido em três tipos: paralelismo espacial (paralelismo real), temporal (pipeline) e combinado. t1 t Tempo O paralelismo espacial está relacionado à execução simultânea dos processos. O paralelismo temporal, ou pipeline, implica na execução de eventos sobrepostos no tempo. O processo é dividido em vários subprocessos, sendo cada um executado em um estágio especializado de hardware e software operando concorrentemente com os outros estágios do pipeline [HWA93] [NAV89]. Estágios Figura 3.3 Execução de um Pipeline A Figura 2.3 demonstra o funcionamento de um pipeline de quatro estágios (E1, E2, E3 e E4). Os estágios são organizados seqüencialmente de maneira que o primeiro estágio (E1) executa uma parte do processo P1 e, ao terminar, entrega o resultado para o segundo estágio que dará continuidade ao processamento. A cada unidade de tempo, um novo processo é iniciado, denominados P1, P2, P3..., Pn. Após quatro unidades de tempo, neste exemplo, o fluxo de processos completos torna-se contínuo, sendo que um processo é executado a cada unidade de tempo (paralelismo de eventos sobrepostos). No paralelismo combinado existem vários estágios de pipeline sendo executados em paralelo. E4 E3 E2 E1 P1 P2 P1 P2 P3 P1 P2 P3 P P1 P2 P3 P4 P5... t1 t2 t3 t4 t5... t Tempo

20 18 Multiprogramação baseada em threads A multitarefa é a capacidade de se ter mais de um programa executando aparentemente ao mesmo tempo, podendo acontecer de duas maneiras, dependendo da capacidade de controle de tarefas do sistema operacional. Num primeiro caso, quando o sistema operacional sempre insiste na continuidade de um programa, a multitarefa é dita preemptiva. Por outro lado, quando o sistema operacional opta para que o programa coopere com outros programas, a multitarefa é dita cooperativa. A programação multiple threads estende ainda mais a idéia de multitarefa, fazendo com que dentro de um mesmo programa existam várias tarefas executando ao mesmo tempo. Neste contexto, cada fluxo de controle dentro de um programa é denominado thread. Desta forma, quando um programa possuir mais de uma unidade computacional é denominado multithreading. Um thread pode estar em cinco estados diferentes: Executando (Runnable): o thread está sendo executado. Ativo (Active): o thread está pronto para ser executado. Dormindo (Sleeping): o thread está dormindo, após sua execução. Stopped (Parado): o thread está parado esperando por algum recurso. Zombie (Zumbi): o thread foi finalizado. O exemplo abaixo implementa a aplicação socket (apresentada no capítulo anterior) utilizando multithreading.

21 19 pthread_t Servico;... listen(sock, 5); do { NovoSocket = accept(sock, (struct sockaddr *) 0, (int*) 0); if (NovoSocket==-1) perror("accept"); else { if (pthread_create(&servico, NULL, Servicos, NovoSocket)) printf("erro: Criando Thread\n"); pthread_join(servico, 0); while (1==1); close(sock); void* Servicos(void* Sock) { int TamanhoEnd, N; char Mensagem[1024]; char* Retorno; do { memset(mensagem, 0, sizeof Mensagem); if ((N = read(sock, Mensagem, 1024)) == -1) perror("lendo Dados"); if (N!= 0) printf("servchat>%s", Mensagem); ///Parser Retorno="TESTE"; if (send(sock, Retorno, strlen(retorno)+1, 0) == -1) perror("enviando Dados"); while (N!=0);... Sincronização As técnicas que garantem a comunicação e o acesso a recursos compartilhados são conhecidas como mecanismos de sincronização. A área de dados compartilhados pelos threads é conhecida como região crítica. Os mecanismos de sincronização devem evitar a concorrência nas regiões críticas, permitindo que somente um processo tenha acesso em um determinado instante. Esta idéia de exclusividade de acesso é denominada exclusão mútua. Em sistemas com memória compartilhada existem vários mecanismos para garantir a exclusão mútua, entre eles: mutex, semáforos e monitores. O exemplo abaixo apresenta o programa do produtor/consumidor utilizando threads mutex.

22 20 Pthread_mutex_t ContaMutex; int Contador;... IncrementaCotnador() { pthread_mutex_lock(&contamutex); Contador = Contador+1; pthread_mutex_unlock(&contamutex); int PegaContador() { int Aux; pthread_mutex_lock(&contamutex); Contador = Contador 1; Aux = Contador; pthread_mutex_unlock(&contamutex); return (Aux) 8. Bibliografia (Commer, 1991) Commer, D. E.: INTERNTEWORKING WITH TCP-IP - PRINCIPLES, PROTOCOLS E ARCHITECTURE. v.3, (Coulouris et al., 1994) Coulouris, G., Dollimore, J., Kindberg, T.: DISTRIBUTED SYSTEMS - CONCEPTS AND DESIGN. 2 nd ed., Addison- Wesley Publishing Company, (Huges, 1996) HUGES, Merlin - JAVA, Network Programming, Manning,1996 (Tanenbaun, 1996) (Thomas, 1997) Tanenbaun, A.: DISTRIBUTED OPERATING SYSTEMS. Prentice Hall, Thomas, M. D. et al.: PROGRAMANDO EM JAVA PARA A INTERNET. Editora Makron Books, São Paulo, 1997.

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

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

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

Engenharia Elétrica Eletrônica Slides 20: TCP/IP em Winsocks 2. API do Windows para programar utilizando o protocolo TCP/IP Prof. Jean Marcelo SIMÃO

Engenharia Elétrica Eletrônica Slides 20: TCP/IP em Winsocks 2. API do Windows para programar utilizando o protocolo TCP/IP Prof. Jean Marcelo SIMÃO Engenharia Elétrica Eletrônica Slides 20: TCP/IP em Winsocks 2. API do Windows para programar utilizando o protocolo TCP/IP Prof. Jean Marcelo SIMÃO Engenharia Elétrica Eletrônica Tutorial: Programação

Leia mais

Programação de Sockets em C/C++

Programação de Sockets em C/C++ Programação de Sockets em C/C++ Redes de Comunicação 2011/2012 1 Programação de Sockets em C/C++ 2 TCP 3 UDP Introdução Os sockets são um método de criar conexão entre processos, independente do protocolo.

Leia mais

06/10/2015. Modelo TCP/IP Camada de Transporte DISCIPLINA: TECNOLOGIA DE REDES DE COMPUTADORES. UDP User Datagram Protocol. UDP User Datagram Protocol

06/10/2015. Modelo TCP/IP Camada de Transporte DISCIPLINA: TECNOLOGIA DE REDES DE COMPUTADORES. UDP User Datagram Protocol. UDP User Datagram Protocol Tecnologia em Jogos Digitais Modelo TCP/IP Camada de Transporte DISCIPLINA: TECNOLOGIA DE REDES DE COMPUTADORES O transporte dos dados na INTERNET é realizado por dois protocolos. PROTOCOLOS TCP E UDP

Leia mais

Sistemas Operacionais:

Sistemas Operacionais: Sistemas Operacionais: Sistemas Distribuídos e Programação em Redes de Computadores Dierone Cesar Foltran Junior dcfoltran at yahoo.com Sistemas Distribuídos Sistemas Computacionais Distribuídos Lamport:

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

Programação com Sockets TCP e UDP - Cliente. Gustavo Leitão

Programação com Sockets TCP e UDP - Cliente. Gustavo Leitão Programação com Sockets TCP e UDP - Cliente Gustavo Leitão 5/24/2010 INTRODUÇÃO Objetivo da Aula OBJETIVO DA AULA Apresentar ao aluno conceitos e prática em sockets INTRODUÇÃO O que é um socket? INTRODUÇÃO

Leia mais

Redes. Pablo Rodriguez de Almeida Gross

Redes. Pablo Rodriguez de Almeida Gross Redes Pablo Rodriguez de Almeida Gross Conceitos A seguir serão vistos conceitos básicos relacionados a redes de computadores. O que é uma rede? Uma rede é um conjunto de computadores interligados permitindo

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

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

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

Prof. Marcelo Cunha Parte 5 www.marcelomachado.com

Prof. Marcelo Cunha Parte 5 www.marcelomachado.com Prof. Marcelo Cunha Parte 5 www.marcelomachado.com Criado em 1974 Protocolo mais utilizado em redes locais Protocolo utilizado na Internet Possui arquitetura aberta Qualquer fabricante pode adotar a sua

Leia mais

Camada de Transporte, protocolos TCP e UDP

Camada de Transporte, protocolos TCP e UDP Camada de Transporte, protocolos TCP e UDP Conhecer o conceito da camada de transporte e seus principais protocolos: TCP e UDP. O principal objetivo da camada de transporte é oferecer um serviço confiável,

Leia mais

Redes de Computadores. Arquitetura de Protocolos Profa. Priscila Solís Barreto

Redes de Computadores. Arquitetura de Protocolos Profa. Priscila Solís Barreto Redes de Computadores Arquitetura de Protocolos Profa. Priscila Solís Barreto REDE... Um sistema de comunicações para conectar sistemas finais Sistemas finais? =hosts PCs, estações de trabalho componentes

Leia mais

Relatório do Laboratório 3

Relatório do Laboratório 3 Relatório do Laboratório 3 Diogo Costa e Lucas Magrini Rigo 180188 e 161064 23 de setembro de 2011 Universidade Federal do Rio Grande do Sul INF01154 Redes de Computadores N For: Valter Roesler 1 Introdução

Leia mais

Cliente/Servidor. Programação com Sockets. Graça Bressan. Graça Bressan/LARC 2000 1

Cliente/Servidor. Programação com Sockets. Graça Bressan. Graça Bressan/LARC 2000 1 Cliente/Servidor Programação com Sockets Graça Bressan Graça Bressan/LARC 2000 1 Interface através de Sockets Socket é uma API ( Aplication Program Interface ) para acesso aos serviços do protocolo de

Leia mais

No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano.

No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano. No projeto das primeiras redes de computadores, o hardware foi a principal preocupação e o software ficou em segundo plano. Essa estratégia foi deixada para trás. Atualmente, o software de rede é altamente

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

Evolução na comunicação. Organização de uma viagem aérea. Camadas de Protocolos. Camadas de Funcionalidade da companhia aérea. Por que as Camadas?

Evolução na comunicação. Organização de uma viagem aérea. Camadas de Protocolos. Camadas de Funcionalidade da companhia aérea. Por que as Camadas? s de Computadores Arquitetura e odelos de Referência odelo OSI/ISO odelo TCP/IP Evolução na comunicação Comunicação sempre foi uma necessidade humana, buscando aproximar comunidades distantes Sinais de

Leia mais

Arquitetura e Protocolos de Rede TCP/IP. Modelo Arquitetural

Arquitetura e Protocolos de Rede TCP/IP. Modelo Arquitetural Arquitetura e Protocolos de Rede TCP/IP Modelo Arquitetural Motivação Realidade Atual Ampla adoção das diversas tecnologias de redes de computadores Evolução das tecnologias de comunicação Redução dos

Leia mais

UMA ABORDAGEM SOBRE A INTERFACE DE PROGRAMAÇÃO DE APLICAÇÕES SOCKETS E A IMPLEMENTAÇÃO DE UM SERVIDOR HTTP

UMA ABORDAGEM SOBRE A INTERFACE DE PROGRAMAÇÃO DE APLICAÇÕES SOCKETS E A IMPLEMENTAÇÃO DE UM SERVIDOR HTTP UMA ABORDAGEM SOBRE A INTERFACE DE PROGRAMAÇÃO DE APLICAÇÕES SOCKETS E A IMPLEMENTAÇÃO DE UM SERVIDOR HTTP Alan Jelles Lopes Ibrahim, alan.jelles@hotmail.com Eduardo Machado Real, eduardomreal@uems.br

Leia mais

Redes de Computadores (RCOMP 2014/2015)

Redes de Computadores (RCOMP 2014/2015) Redes de Computadores (RCOMP 2014/2015) Desenvolvimento de aplicações de rede UDP e TCP 1 Protocolo UDP ( User Datagram Protocol ) Tal como o nome indica, trata-se de um serviço de datagramas, ou seja

Leia mais

1 Redes de Computadores - TCP/IP Luiz Arthur

1 Redes de Computadores - TCP/IP Luiz Arthur 1 Redes de Computadores - TCP/IP Luiz Arthur TCP/IP O protocolo TCP/IP atualmente é o protocolo mais usado no mundo. Isso se deve a popularização da Internet, a rede mundial de computadores, já que esse

Leia mais

Redes de Computadores. Protocolo TCP/IP Profa. Priscila Solís Barreto

Redes de Computadores. Protocolo TCP/IP Profa. Priscila Solís Barreto Redes de Computadores Protocolo TCP/IP Profa. Priscila Solís Barreto Internet G G G Introdução Protocolo: Conjunto de regras que determinam como o hardware e o software de uma rede devem interagir para

Leia mais

29-Aug-07. Histórico. Interfaces e Periféricos Redes como interfaces. Abstração da infraestrutura de rede como interface

29-Aug-07. Histórico. Interfaces e Periféricos Redes como interfaces. Abstração da infraestrutura de rede como interface Interfaces e Periféricos Redes como interfaces Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) Histórico Surgimento e popularização das redes criou a necessidade e oportunidade de usá-las como mecanismo

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

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

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Carlos Ferraz cagf@cin.ufpe.br Tópicos da Aula Apresentação do curso Introdução Definição de sistemas distribuídos Exemplo Vantagens e desvantagens Convergência digital Desafios Visão

Leia mais

Arquitetura e Protocolos de Rede TCP/IP. Modelo Arquitetural

Arquitetura e Protocolos de Rede TCP/IP. Modelo Arquitetural Arquitetura e Protocolos de Rede TCP/IP Modelo Arquitetural Agenda Motivação Objetivos Histórico Família de protocolos TCP/IP Modelo de Interconexão Arquitetura em camadas Arquitetura TCP/IP Encapsulamento

Leia mais

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com.br - Aula 2 - MODELO DE REFERÊNCIA TCP (RM TCP) 1. INTRODUÇÃO O modelo de referência TCP, foi muito usado pela rede ARPANET, e atualmente usado pela sua sucessora, a Internet Mundial. A ARPANET é de grande

Leia mais

REDES DE COMPUTADORES

REDES DE COMPUTADORES REDES DE COMPUTADORES Prof. Esp. Fabiano Taguchi http://fabianotaguchi.wordpress.com fabianotaguchi@gmail.com ENLACE X REDE A camada de enlace efetua de forma eficiente e com controle de erros o envio

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

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista ATENÇÃO Esta apresentação foi retirada e adaptada dos seguintes trabalhos: Notas de aula do Prof. Miguel Campista da

Leia mais

Redes de Computadores I

Redes de Computadores I Departamento de Engenharia Electrotécnica e de Computadores Secção de Telecomunicações Redes de Computadores I Introdução à Interface "Socket" do UNIX Licenciatura de Engenharia Informática e de Computadores

Leia mais

Redes de Computadores (PPGI/UFRJ)

Redes de Computadores (PPGI/UFRJ) Redes de Computadores (PPGI/UFRJ) Aula 1: Apresentação do curso e revisão de interface de sockets 03 de março de 2010 1 2 O que é a Internet 3 4 Objetivos e página do curso Objetivos Apresentar a motivação,

Leia mais

Até o final de década de 70, os sistemas operacionais suportavam apenas processos com um único thread;

Até o final de década de 70, os sistemas operacionais suportavam apenas processos com um único thread; CAPÍTULO VI THREADS 6.1 INTRODUÇÃO Até o final de década de 70, os sistemas operacionais suportavam apenas processos com um único thread; O sistema operacional Toth, em 1979, foi o primeiro a implementar

Leia mais

Conceitos Básicos sobre Sistemas Operacionais

Conceitos Básicos sobre Sistemas Operacionais Conceitos Básicos sobre Sistemas Operacionais Ivanovitch Medeiros Dantas da Silva Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação DCA0800 - Algoritmos e

Leia mais

Um Tutorial sobre Sockets Parte I

Um Tutorial sobre Sockets Parte I Um Tutorial sobre Sockets Parte I Por Antonio Marcelo Iniciando As grandes ferramentas utilizadas por especialistas de segurança, hackers e crakers tem como base a linguagem C ANSI ou C ++. Muitos dos

Leia mais

INF01018 Aula Prática 1 Cliente-Servidor e Multicast

INF01018 Aula Prática 1 Cliente-Servidor e Multicast 1 / 30 INF01018 Aula Prática 1 Cliente-Servidor e Multicast Lucas Mello Schnorr, Alexandre Silva Caríssimi {lmschnorr,asc}@inf.ufrgs.br http://www.inf.ufrgs.br/ lmschnorr/ad/ INF01018 Sistemas Operacionais

Leia mais

Rede d s d e d Com o pu p t u ado d r o es Conceitos Básicos M d o e d los o de d Re R de d s:

Rede d s d e d Com o pu p t u ado d r o es Conceitos Básicos M d o e d los o de d Re R de d s: Tecnologia em Redes de Computadores Redes de Computadores Professor: André Sobral e-mail: alsobral@gmail.com Conceitos Básicos Modelos de Redes: O O conceito de camada é utilizado para descrever como ocorre

Leia mais

3. Projeto e implementação de Servidores

3. Projeto e implementação de Servidores 3. Projeto e implementação de Servidores 3.1 Introdução Este capítulo discute questões fundamentais relacionadas ao projeto de software servidor, incluindo acesso com conexão vs. sem conexão a servidores

Leia mais

Sistemas Distribuídos (DCC/UFRJ)

Sistemas Distribuídos (DCC/UFRJ) Sistemas Distribuídos (DCC/UFRJ) Aula 1: 4 de abril de 2016 1 Conceitos básicos sobre sistemas distribuídos 2 Computação distribuída Computação distribuída A computação distribuída envolve o projeto, implementação

Leia mais

Eng.ª Informática. Redes de Computadores. Frequência. 4 de Julho de 2006

Eng.ª Informática. Redes de Computadores. Frequência. 4 de Julho de 2006 Eng.ª Informática Redes de Computadores 4 de Julho de 2006 Leia atentamente as perguntas seguintes e responda de forma breve e precisa. Pode acompanhar a suas respostas com figuras de forma a torná-las

Leia mais

Redes de Computadores II

Redes de Computadores II Redes de Computadores II UDP Prof: Ricardo Luís R. Peres Tem como objetivo prover uma comunicação entre dois processos de uma mesma sessão que estejam rodando em computadores dentro da mesma rede ou não.

Leia mais

INTERNET = ARQUITETURA TCP/IP

INTERNET = ARQUITETURA TCP/IP Arquitetura TCP/IP Arquitetura TCP/IP INTERNET = ARQUITETURA TCP/IP gatewa y internet internet REDE REDE REDE REDE Arquitetura TCP/IP (Resumo) É útil conhecer os dois modelos de rede TCP/IP e OSI. Cada

Leia mais

FACULDADE PITÁGORAS. Prof. Ms. Carlos José Giudice dos Santos cpgcarlos@yahoo.com.br www.oficinadapesquisa.com.br

FACULDADE PITÁGORAS. Prof. Ms. Carlos José Giudice dos Santos cpgcarlos@yahoo.com.br www.oficinadapesquisa.com.br FACULDADE PITÁGORAS DISCIPLINA FUNDAMENTOS DE REDES REDES DE COMPUTADORES Prof. Ms. Carlos José Giudice dos Santos cpgcarlos@yahoo.com.br www.oficinadapesquisa.com.br Material elaborado com base nas apresentações

Leia mais

QUESTÕES PROVA 2 (28 a 44)

QUESTÕES PROVA 2 (28 a 44) QUESTÕES PROVA 2 (28 a 44) 28) A orientação a objetos é uma forma abstrata de pensar um problema utilizando-se conceitos do mundo real e não, apenas, conceitos computacionais. Nessa perspectiva, a adoção

Leia mais

Sockets em Ruby. Curso de Tecnologia em Redes de Computadores Programação para Redes

Sockets em Ruby. Curso de Tecnologia em Redes de Computadores Programação para Redes Sockets em Ruby Curso de Tecnologia em Redes de Computadores Programação para Redes Sockets em Ruby A biblioteca padrão de Ruby oferece um conjunto de classes para a manipulação de sockets. require socket

Leia mais

Redes de Computadores. Prof. André Y. Kusumoto andre_unip@kusumoto.com.br

Redes de Computadores. Prof. André Y. Kusumoto andre_unip@kusumoto.com.br Redes de Computadores Prof. André Y. Kusumoto andre_unip@kusumoto.com.br Open Systems Interconnection Modelo OSI No início da utilização das redes de computadores, as tecnologias utilizadas para a comunicação

Leia mais

TECNOLOGIA WEB INTERNET PROTOCOLOS

TECNOLOGIA WEB INTERNET PROTOCOLOS INTERNET PROTOCOLOS 1 INTERNET Rede mundial de computadores. Também conhecida por Nuvem ou Teia. Uma rede que permite a comunicação de redes distintas entre os computadores conectados. Rede WAN Sistema

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 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

Diagrama lógico da rede da empresa Fácil Credito

Diagrama lógico da rede da empresa Fácil Credito Diagrama lógico da rede da empresa Fácil Credito Tabela de endereçamento da rede IP da rede: Mascara Broadcast 192.168.1.0 255.255.255.192 192.168.1.63 Distribuição de IP S na rede Hosts IP Configuração

Leia mais

Modelo de referência OSI. Modelo TCP/IP e Internet de cinco camadas

Modelo de referência OSI. Modelo TCP/IP e Internet de cinco camadas Modelo de referência OSI. Modelo TCP/IP e Internet de cinco camadas Conhecer os modelo OSI, e TCP/IP de cinco camadas. É importante ter um padrão para a interoperabilidade entre os sistemas para não ficarmos

Leia mais

FACULDADE DE TECNOLOGIA SENAC PELOTAS TÉCNICO EM INFORMÁTICA

FACULDADE DE TECNOLOGIA SENAC PELOTAS TÉCNICO EM INFORMÁTICA FACULDADE DE TECNOLOGIA SENAC PELOTAS TÉCNICO EM INFORMÁTICA Conectividade (Modelo de Camadas) Autor: Patrick Freitas Fures Relatório Técnico apresentado ao Profº. Nataniel Vieira como requisito final

Leia mais

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia O Sistema Operacional que você usa é multitasking? Por multitasking, entende-se a capacidade do SO de ter mais de um processos em execução ao mesmo tempo. É claro que, num dado instante, o número de processos

Leia mais

4 Implementação e Ambiente de Simulação

4 Implementação e Ambiente de Simulação 4 Implementação e Ambiente de Simulação Conforme apresentado no capítulo anterior, o protocolo HIP não estava implementado em nenhum framework do OMNeT++. Estudando os frameworks disponíveis para esse

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

Infra-estrutura de Software

Infra-estrutura de Software Infra-estrutura de Software Apresentação Ciência da Computação Professor: Carlos Ferraz Monitoria: em formação Horários: Quartas e Sextas, 08-10h (D-005) Laboratório: G4, normalmente URL: http://www.cin.ufpe.br/~cagf/if677/2013-1

Leia mais

Um pouco sobre Pacotes e sobre os protocolos de Transporte

Um pouco sobre Pacotes e sobre os protocolos de Transporte Um pouco sobre Pacotes e sobre os protocolos de Transporte O TCP/IP, na verdade, é formado por um grande conjunto de diferentes protocolos e serviços de rede. O nome TCP/IP deriva dos dois protocolos mais

Leia mais

SISTEMAS DISTRIBUIDOS

SISTEMAS DISTRIBUIDOS 1 2 Caracterização de Sistemas Distribuídos: Os sistemas distribuídos estão em toda parte. A Internet permite que usuários de todo o mundo acessem seus serviços onde quer que possam estar. Cada organização

Leia mais

Disciplina de Redes de Computadores Estudo Dirigido para a Prova II Professor Dr Windson Viana de Carvalho

Disciplina de Redes de Computadores Estudo Dirigido para a Prova II Professor Dr Windson Viana de Carvalho Disciplina de Redes de Computadores Estudo Dirigido para a Prova II Professor Dr Windson Viana de Carvalho Obs: Não há necessidade de entregar a lista Questões do livro base (Kurose) Questões Problemas

Leia mais

Aula de Socket. Rafael De Tommaso do Valle

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

Leia mais

Informática I. Aula 22. http://www.ic.uff.br/~bianca/informatica1/ Aula 22-03/07/06 1

Informática I. Aula 22. http://www.ic.uff.br/~bianca/informatica1/ Aula 22-03/07/06 1 Informática I Aula 22 http://www.ic.uff.br/~bianca/informatica1/ Aula 22-03/07/06 1 Critério de Correção do Trabalho 1 Organização: 2,0 O trabalho está bem organizado e tem uma coerência lógica. Termos

Leia mais

Camada de rede. Camada de enlace. Meio Físico

Camada de rede. Camada de enlace. Meio Físico Instituto Federal do Pará - IFPA Ricardo José Cabeça de Souza ricardo.souza@ifpa.edu.br 2010 Redes Básicas S-12 Modelo OSI Camada de Transporte Responsável pela transferência eficiente, confiável e econômica

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Capítulo 1 Gustavo Reis gustavo.reis@ifsudestemg.edu.br - O que é a Internet? - Milhões de elementos de computação interligados: hospedeiros = sistemas finais - Executando aplicações

Leia mais

TCP/IP na plataforma Windows NT

TCP/IP na plataforma Windows NT TCP/IP na plataforma Windows NT 1 Tópicos È TCP/IP para redes heterogêneas È TCP/IP Overview È TCP/IP no Windows NT Server È TCP/IP - Parâmetros de configuração È Instalando Microsoft TCP/IP È Testando

Leia mais

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza

Sistemas Distribuídos Processos I. Prof. MSc. Hugo Souza Sistemas Distribuídos Processos I Prof. MSc. Hugo Souza Até agora vimos a organização como um todo dos SDS, com o mapeamento estrutural e suas devidas características descritas em elementos, regras, conceitos,

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

Programação em Rede Baseada em Java. Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída www.dca.ufrn.

Programação em Rede Baseada em Java. Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída www.dca.ufrn. Programação em Rede Baseada em Java Luiz Affonso Guedes Tópicos em Redes de Computadores Programação Distribuída www.dca.ufrn.br/~affonso/cursos Definiçõs Básicas Uma rede é um conjunto de computadores

Leia mais

Aula 2 Arquitetura de Redes. Prof. Dr. S. Motoyama

Aula 2 Arquitetura de Redes. Prof. Dr. S. Motoyama Aula 2 Arquitetura de Redes Prof. Dr. S. Motoyama 1 Arquitetura em camadas Arquitetura de RC Estruturar em camadas é decompor o problema de construção de uma rede em componentes gerenciáveis. A estruturação

Leia mais

Fernando Albuquerque - fernando@cic.unb.br ADMINISTRAÇÃO TCP/IP. Fernando Albuquerque 061-2733589 fernando@cic.unb.br

Fernando Albuquerque - fernando@cic.unb.br ADMINISTRAÇÃO TCP/IP. Fernando Albuquerque 061-2733589 fernando@cic.unb.br ADMINISTRAÇÃO TCP/IP Fernando Albuquerque 061-2733589 fernando@cic.unb.br Protocolos TCP/IP - Tópicos Introdução IP Endereçamento Roteamento UDP, TCP Telnet, FTP Correio DNS Web Firewalls Protocolos TCP/IP

Leia mais

Sistemas Operacionais Arquitetura e organização de sistemas operacionais: Uma visão estrutural hardware & software. Prof. MSc.

Sistemas Operacionais Arquitetura e organização de sistemas operacionais: Uma visão estrutural hardware & software. Prof. MSc. Sistemas Operacionais Arquitetura e organização de sistemas operacionais: Uma visão estrutural hardware & software Prof. MSc. Hugo Souza Continuando nossas aulas relativas ao Módulo 1, veremos a seguir

Leia mais

Capítulo 8 - Aplicações em Redes

Capítulo 8 - Aplicações em Redes Capítulo 8 - Aplicações em Redes Prof. Othon Marcelo Nunes Batista Mestre em Informática 1 de 31 Roteiro Sistemas Operacionais em Rede Modelo Cliente-Servidor Modelo P2P (Peer-To-Peer) Aplicações e Protocolos

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

Aula-16 Interconexão de Redes IP (Internet Protocol) Prof. Dr. S. Motoyama

Aula-16 Interconexão de Redes IP (Internet Protocol) Prof. Dr. S. Motoyama Aula-16 Interconexão de Redes IP (Internet Protocol) Prof. Dr. S. Motoyama Software de IP nos hosts finais O software de IP consiste principalmente dos seguintes módulos: Camada Aplicação; DNS (Domain

Leia mais

Aula 4. Pilha de Protocolos TCP/IP:

Aula 4. Pilha de Protocolos TCP/IP: Aula 4 Pilha de Protocolos TCP/IP: Comutação: por circuito / por pacotes Pilha de Protocolos TCP/IP; Endereçamento lógico; Encapsulamento; Camada Internet; Roteamento; Protocolo IP; Classes de endereços

Leia mais

REDE DE COMPUTADORES

REDE DE COMPUTADORES SERVIÇO NACIONAL DE APRENDIZAGEM COMERCIAL REDE DE COMPUTADORES camadas do Modelo de Referência ISO/OSI Pilha de Protocolos TCP Prof. Airton Ribeiro de Sousa E-mail: airton.ribeiros@gmail.com 1 Camadas

Leia mais

Infra-estrutura de Software. Apresentação!

Infra-estrutura de Software. Apresentação! Apresentação! Ciência da Computação Professor: Carlos Ferraz Monitoria: em formação Horários: Segundas, 13-15h (D- 005), e Quintas, 15-17h (D- 004) Laboratório: G4, normalmente URL: hsp://www.cin.ufpe.br/~cagf/if677/2012-2

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Soquetes Um soquete é formado por um endereço IP concatenado com um número de porta. Em geral, os soquetes utilizam uma arquitetura cliente-servidor. O servidor espera por pedidos

Leia mais

6.1. TELNET 6.2. FTP 6.3. SNMP 6.4. DSN 6.5. SMTP 6.6. RPC 6.7. NFS

6.1. TELNET 6.2. FTP 6.3. SNMP 6.4. DSN 6.5. SMTP 6.6. RPC 6.7. NFS Arquitetura TCP/IP Por André Luís Santos de Aguiar Visitantes: http://www.siteflow.com/hvb2e/stats.cgi?andrelsatcpip http://www.siteflow.com/hvb2e/stats.cgi?andrelsatcpip Índice 1. HISTÓRICO 2. MODELO

Leia mais

Arquitetura TCP/IP. Filosofia da Internet

Arquitetura TCP/IP. Filosofia da Internet Arquitetura TCP/IP Filosofia da Internet foi projetada p/: ser aberta o bastante p/ permitir a execução em uma grande variedade de equipamentos de resistir a possíveis danos que prejudicassem seu funcionamento

Leia mais

Redes de Computadores. 1 Questões de múltipla escolha. TE090 - Prof. Pedroso. 17 de junho de 2015

Redes de Computadores. 1 Questões de múltipla escolha. TE090 - Prof. Pedroso. 17 de junho de 2015 TE090 - Prof. Pedroso 17 de junho de 2015 1 Questões de múltipla escolha Exercício 1: Suponha que um roteador foi configurado para descobrir rotas utilizando o protocolo RIP (Routing Information Protocol),

Leia mais

Introdução à Programação Sockets

Introdução à Programação Sockets 2002-2015 Volnys Bernal 1 Introdução à Programação Sockets Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2002-2015 Volnys Bernal 2 Agenda Interface

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

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

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

Leia mais

Curso: Redes II (Heterogênea e Convergente)

Curso: Redes II (Heterogênea e Convergente) Curso: Redes II (Heterogênea e Convergente) Tema da Aula: Redes Heterogênea e Convergente Professor Rene - UNIP 1 Redes heterogêneas Redes Heterogêneas Todo ambiente de rede precisa armazenar informações

Leia mais

Modelo Cliente/Servidor e Introdução a Sockets

Modelo Cliente/Servidor e Introdução a Sockets Modelo Cliente/Servidor e Introdução a Sockets MC 833 Programação em s de Computadores Instituto de Computação UNICAMP Juliana Freitag Borin O modelo OSI de 7 camadas Nó origem Nó destino Apresentação

Leia mais

Interconexão de Redes Parte 2. Prof. Dr. S. Motoyama

Interconexão de Redes Parte 2. Prof. Dr. S. Motoyama Interconexão de Redes Parte 2 Prof. Dr. S. Motoyama 1 Software IP nos hosts finais O software IP nos hosts finais consiste principalmente dos seguintes módulos: Camada Aplicação; DNS (Domain name system)

Leia mais

1 TCI/IP... 3 1.1 MODELO TCP/IP... 3 1.1.1 Camada de Aplicação... 4

1 TCI/IP... 3 1.1 MODELO TCP/IP... 3 1.1.1 Camada de Aplicação... 4 TCP/IP Brito INDICE 1 TCI/IP... 3 1.1 MODELO TCP/IP... 3 1.1.1 Camada de Aplicação... 4 1.1.1.1 Camada de Transporte... 4 1.1.1.2 TCP (Transmission Control Protocol)... 4 1.1.1.3 UDP (User Datagram Protocol)...

Leia mais

Programação Concorrente Processos e Threads

Programação Concorrente Processos e Threads Programação Concorrente Processos e Threads Prof. Eduardo Alchieri Processos O conceito mais central em qualquer sistema operacional é o processo Uma abstração de um programa em execução Um programa por

Leia mais

Arquiteturas de Redes Prof. Ricardo J. Pinheiro

Arquiteturas de Redes Prof. Ricardo J. Pinheiro Fundamentos de Redes de Computadores Arquiteturas de Redes Prof. Ricardo J. Pinheiro Resumo Arquiteturas de Redes Organizações de padronização Modelos de referência Modelo OSI Arquitetura IEEE 802 Arquitetura

Leia mais

Arquitetura dos Sistemas Operacionais

Arquitetura dos Sistemas Operacionais Arquitetura dos Sistemas Operacionais Arquitetura de um Sistema Operacional Basicamente dividido em shell é a interface entre o usuário e o sistema operacional é um interpretador de comandos possui embutido

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

2 Modelos de Implementação

2 Modelos de Implementação 2 Modelos de Implementação Os modelos de concorrência definem como uma aplicação atende às requisições concorrentes. Os modelos de sandboxes definem como o ambiente das aplicações são criados. Os modelos

Leia mais

TCP-IP - Introdução. Aula 02. Professor Sérgio Teixeira E-mail: sergio.professor@multicast.com.br Telefone: (27) 9989-1122

TCP-IP - Introdução. Aula 02. Professor Sérgio Teixeira E-mail: sergio.professor@multicast.com.br Telefone: (27) 9989-1122 TCP-IP - Introdução Aula 02 Professor Sérgio Teixeira E-mail: sergio.professor@multicast.com.br Telefone: (27) 9989-1122 História 1969 - Advanced Research Project Agency (ARPA) financia a pesquisa e o

Leia mais