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

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

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

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

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

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

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

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

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

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

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com

Sistemas Operacionais. Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Estruturas de Sistemas Operacionais Um sistema operacional fornece o ambiente no qual os programas são executados. Internamente,

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

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

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

Leia mais

Sistemas Distribuídos (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

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

Topologia de rede Ligação Ponto-a-Ponto

Topologia de rede Ligação Ponto-a-Ponto TIPOS DE REDE Tipos de Redes Locais (LAN - Local Area Network), Redes Metropolitanas (MAN - Metropolitan Area Network) e Redes Remotas (WAN - Wide Area Network). Redes que ocupam um pequeno espaço geográfico

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

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO

CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO 4 CONCEITOS BÁSICOS DE UM SISTEMA OPERATIVO CONCEITOS BÁSICOS MS-DOS MICROSOFT DISK OPERATION SYSTEM INSTALAÇÃO E CONFIGURAÇÃO DE UM SISTEMA OPERATIVO LIGAÇÕES À INTERNET O que é um sistema operativo?

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

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

Aula 03-04: Modelos de Sistemas Distribuídos

Aula 03-04: Modelos de Sistemas Distribuídos UNIVERSIDADE Computação Aula 03-04: Modelos de Sistemas Distribuídos 2o. Semestre / 2014 Prof. Jesus Principais questões no projeto de um sistema distribuído (SD) Questão de acesso (como sist. será acessado)

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

Redes e Conectividade

Redes e Conectividade Redes e Conectividade Camada de enlace: domínio de colisão e domínio de broadcast, segmentação, modos de switching para encaminhamento de quadros Versão 1.0 Março de 2016 Prof. Jairo jairo@uninove.br professor@jairo.pro.br

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

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

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

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

Conceito de Rede e seus Elementos. Prof. Marciano dos Santos Dionizio

Conceito de Rede e seus Elementos. Prof. Marciano dos Santos Dionizio Conceito de Rede e seus Elementos Prof. Marciano dos Santos Dionizio Conceito de Rede e seus Elementos O conceito de rede segundo Tanenbaum é: um conjunto de módulos processadores capazes de trocar informações

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

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

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1 ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1 Índice 1. Introdução...3 1.1. O que é um Computador?... 3 1.2. Máquinas Multiníveis... 3 2 1. INTRODUÇÃO 1.1 O QUE É UM COMPUTADOR? Para estudarmos como um computador

Leia mais

Exercícios de Revisão Redes de Computadores Edgard Jamhour. Nome dos Alunos

Exercícios de Revisão Redes de Computadores Edgard Jamhour. Nome dos Alunos Exercícios de Revisão Redes de Computadores Edgard Jamhour Nome dos Alunos Cenário 1: Considere a seguinte topologia de rede IPB 210.0.0.1/24 IPA 10.0.0.5/30 220.0.0.1\24 4 5 3 1 IPC 10.0.0.9/30 REDE B

Leia mais

REDES COMPONENTES DE UMA REDE

REDES COMPONENTES DE UMA REDE REDES TIPOS DE REDE LAN (local area network) é uma rede que une os micros de um escritório, prédio, ou mesmo um conjunto de prédios próximos, usando cabos ou ondas de rádio. WAN (wide area network) interliga

Leia mais

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP SMTP "Protocolo de transferência de correio simples (ou em inglês Simple Mail Transfer Protocol ) é o protocolo padrão para envio de e- mails através da

Leia mais

Redes de computadores. Redes para Internet

Redes de computadores. Redes para Internet Redes de computadores Redes para Internet Milhões de elementos de computação interligados: hospedeiros = sistemas finais Executando aplicações distribuídas Enlaces de comunicação fibra, cobre, rádio, satélite

Leia mais

2 Gerenciamento de Log 2.1 Definições básicas

2 Gerenciamento de Log 2.1 Definições básicas 2 Gerenciamento de Log 2.1 Definições básicas Os logs são fontes riquíssimas de informação e são gerados pelos servidores e pelas aplicações conforme eventos significativos acontecem. Em [1], log é definido

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

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

Introdução a Banco de Dados Aula 03. Prof. Silvestri www.eduardosilvestri.com.br

Introdução a Banco de Dados Aula 03. Prof. Silvestri www.eduardosilvestri.com.br Introdução a Banco de Dados Aula 03 Prof. Silvestri www.eduardosilvestri.com.br Arquiteturas de Banco de Dados Arquiteturas de BD - Introdução Atualmente, devem-se considerar alguns aspectos relevantes

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

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

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

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

Redes de Computadores Camada de Aplicação. Prof. MSc. Hugo Souza

Redes de Computadores Camada de Aplicação. Prof. MSc. Hugo Souza Redes de Computadores Camada de Aplicação Prof. MSc. Hugo Souza É a camada que dispõe a programação para as aplicações de rede através dos protocolos de aplicação; Provém a implantação da arquitetura de

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

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores TCP/IP Roteamento Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 4. Roteamento i. Máscara de Rede ii. Sub-Redes iii. Números Binários e Máscara de Sub-Rede iv. O Roteador

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

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos

MÓDULO 7 Modelo OSI. 7.1 Serviços Versus Protocolos MÓDULO 7 Modelo OSI A maioria das redes são organizadas como pilhas ou níveis de camadas, umas sobre as outras, sendo feito com o intuito de reduzir a complexidade do projeto da rede. O objetivo de cada

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

Introdução à Computação: Sistemas de Computação

Introdução à Computação: Sistemas de Computação Introdução à Computação: Sistemas de Computação Beatriz F. M. Souza (bfmartins@inf.ufes.br) http://inf.ufes.br/~bfmartins/ Computer Science Department Federal University of Espírito Santo (Ufes), Vitória,

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

Comunicando através da rede

Comunicando através da rede Comunicando através da rede Fundamentos de Rede Capítulo 2 1 Estrutura de Rede Elementos de comunicação Três elementos comuns de comunicação origem da mensagem o canal destino da mensagem Podemos definir

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

1. O DHCP Dynamic Host Configuration Protocol

1. O DHCP Dynamic Host Configuration Protocol CURSO DE EDUCAÇÃO E FORMAÇÃO TIPO 5 2º ANO TÉCNICO DE INFORMÁTICA/INSTALAÇÃO E GESTÃO DE REDES 2008/2009 INSTALAÇÃO REDES CLIENTE SERVIDOR WINDOWS SERVER 2003 Após a instalação Instalação de serviços de

Leia mais

REDES DE COMPUTADORES - I UNI-ANHANGUERA CENTRO UNIVERSITÁRIO DE GOIÁS CURSO DE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROF.

REDES DE COMPUTADORES - I UNI-ANHANGUERA CENTRO UNIVERSITÁRIO DE GOIÁS CURSO DE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROF. 1 REDES DE COMPUTADORES - I UNI-ANHANGUERA CENTRO UNIVERSITÁRIO DE GOIÁS CURSO DE ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PROF. MARCIO BALIAN E L A B O R A Ç Ã O : M Á R C I O B A L I A N / T I A G O M A

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

Firewall IPTables e Exemplo de Implementação no Ambiente Corporativo.

Firewall IPTables e Exemplo de Implementação no Ambiente Corporativo. Firewall IPTables e Exemplo de Implementação no Ambiente Corporativo. Guilherme de C. Ferrarezi 1, Igor Rafael F. Del Grossi 1, Késsia Rita Marchi 1 1Universidade Paranaense (UNIPAR) Paranavaí PR Brasil

Leia mais

Rede de Computadores

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

Leia mais

Disciplina: Redes de Comunicação. Curso Profissional Técnico de Gestão e Programação de Sistemas Informáticos. Setembro 2013

Disciplina: Redes de Comunicação. Curso Profissional Técnico de Gestão e Programação de Sistemas Informáticos. Setembro 2013 Disciplina: Redes de Comunicação Curso Profissional Técnico de Gestão e Programação de Sistemas Informáticos. João Oliveira Turma: 10º 13ª Setembro 2013 INTRODUÇÃO Este trabalho apresenta os principais

Leia mais

1. Explicando Roteamento um exemplo prático. Através da análise de uns exemplos simples será possível compreender como o roteamento funciona.

1. Explicando Roteamento um exemplo prático. Através da análise de uns exemplos simples será possível compreender como o roteamento funciona. Aula 14 Redes de Computadores 24/10/07 Universidade do Contestado UnC/Mafra Sistemas de Informação Prof. Carlos Guerber ROTEAMENTO EM UMA REDE DE COMPUTADORES A máscara de sub-rede é utilizada para determinar

Leia mais

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com

TRANSMISSÃO DE DADOS Prof. Ricardo Rodrigues Barcelar http://www.ricardobarcelar.com - Aula 3-1. A CAMADA DE REDE (Parte 1) A camada de Rede está relacionada à transferência de pacotes da origem para o destino. No entanto, chegar ao destino pode envolver vários saltos em roteadores intermediários.

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

Módulo de Transmissão e Ativos de Rede Curso Técnico de Informática. Prof. George Silva

Módulo de Transmissão e Ativos de Rede Curso Técnico de Informática. Prof. George Silva Módulo de Transmissão e Ativos de Rede Curso Técnico de Informática Prof. George Silva FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA COMPONENTES ATIVOS DE REDES AULA 04 Objetivo Entender o encapsulamento de dados

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

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

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

Interconexão de Redes. Aula 03 - Roteamento IP. Prof. Esp. Camilo Brotas Ribeiro cribeiro@catolica-es.edu.br

Interconexão de Redes. Aula 03 - Roteamento IP. Prof. Esp. Camilo Brotas Ribeiro cribeiro@catolica-es.edu.br Interconexão de Redes Aula 03 - Roteamento IP Prof. Esp. Camilo Brotas Ribeiro cribeiro@catolica-es.edu.br Revisão Repetidor Transceiver Hub Bridge Switch Roteador Domínio de Colisão Domínio de Broadcast

Leia mais

Capítulo 7 CAMADA DE TRANSPORTE

Capítulo 7 CAMADA DE TRANSPORTE Capítulo 7 CAMADA DE TRANSPORTE INTRODUÇÃO (KUROSE) A Camada de Rede é uma peça central da arquitetura de rede em camadas A sua função é a de fornecer serviços de comunicação diretamente aos 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

Unidade IV GERENCIAMENTO DE SISTEMAS. Prof. Roberto Marcello

Unidade IV GERENCIAMENTO DE SISTEMAS. Prof. Roberto Marcello Unidade IV GERENCIAMENTO DE SISTEMAS DE INFORMAÇÃO Prof. Roberto Marcello SI - Tecnologia da informação SI - Tecnologia da informação Com a evolução tecnológica surgiram vários setores onde se tem informatização,

Leia mais

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 02. Prof. Gabriel Silva

FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 02. Prof. Gabriel Silva FTIN Formação Técnica em Informática Módulo de Administração de Servidores de Rede AULA 02 Prof. Gabriel Silva Temas da Aula de Hoje: Revisão da Aula 1. Redes LAN e WAN. Aprofundamento nos Serviços de

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

Resolução de Problemas de Rede. Disciplina: Suporte Remoto Prof. Etelvira Leite

Resolução de Problemas de Rede. Disciplina: Suporte Remoto Prof. Etelvira Leite Resolução de Problemas de Rede Disciplina: Suporte Remoto Prof. Etelvira Leite Ferramentas para manter o desempenho do sistema Desfragmentador de disco: Consolida arquivos e pastas fragmentados Aumenta

Leia mais

MINISTÉRIO DA EDUCAÇÃO

MINISTÉRIO DA EDUCAÇÃO MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DE SANTA CATARINA CAMPUS SÃO JOSÉ REDES DE COMPUTADORES Laboratório 2 Wireshark

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

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

Arquitetura de Rede de Computadores

Arquitetura de Rede de Computadores Arquitetura de Rede de Prof. Pedro Neto Aracaju Sergipe - 2011 Ementa da Disciplina 2. TCP/IP i. Fundamentos ii. Camada de Aplicação iii. Camada de Transporte iv. Camada de Internet v. Camada de Interface

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

Equipamentos de rede. Repetidores. Repetidores. Prof. Leandro Pykosz Leandro@sulbbs.com.br

Equipamentos de rede. Repetidores. Repetidores. Prof. Leandro Pykosz Leandro@sulbbs.com.br 1 Equipamentos de rede Prof. Leandro Pykosz Leandro@sulbbs.com.br Repetidores É o dispositivo responsável por ampliar o tamanho máximo do cabeamento de rede; Como o nome sugere, ele repete as informações

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

Capítulo 9 - Conjunto de Protocolos TCP/IP e Endereçamento. Associação dos Instrutores NetAcademy - Julho de 2007 - Página

Capítulo 9 - Conjunto de Protocolos TCP/IP e Endereçamento. Associação dos Instrutores NetAcademy - Julho de 2007 - Página Capítulo 9 - Conjunto de Protocolos TCP/IP e Endereçamento IP 1 História e Futuro do TCP/IP O modelo de referência TCP/IP foi desenvolvido pelo Departamento de Defesa dos Estados Unidos (DoD). O DoD exigia

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

Sumário INTRODUÇÃO... 4 PROTOCOLO ARP...5 ARP - ADDRESS RESOLUTION PROTOCOL...5 FUNCIONAMENTO DO PROTOCOLO ARP...5 CACHE ARP... 6

Sumário INTRODUÇÃO... 4 PROTOCOLO ARP...5 ARP - ADDRESS RESOLUTION PROTOCOL...5 FUNCIONAMENTO DO PROTOCOLO ARP...5 CACHE ARP... 6 IESPLAN Instituto de Ensino Superior Planalto Departamento de Ciência da Computação Curso: Ciência da Computação Disciplina: Engenharia de Software Professor: Marcel Augustus O Protocolo ARP Brasília,

Leia mais

2 Ferramentas Utilizadas

2 Ferramentas Utilizadas 2 Ferramentas Utilizadas Esta dissertação utiliza vários outros trabalhos para implementar os mecanismos de adaptação abordados. Essas ferramentas são descritas nas seções seguintes. 2.1 Lua Lua [7, 8]

Leia mais

Banco de Dados Orientado a Objetos

Banco de Dados Orientado a Objetos Banco de Dados Orientado a Objetos MODELAGEM, ANÁLISE, PROJETO e CLASSIFICAÇÃO Interação combinando lógica, através de objetos que contém os dados. Estes divididos conforme seus tipos e métodos (classe),

Leia mais

SISTEMAS OPERACIONAIS

SISTEMAS OPERACIONAIS 1 SISTEMAS OPERACIONAIS Profª Josiane T. Ferri Licenciada em Computação prof.jositf@yahoo.com.br facebook.com/josiferri ESTRUTURA DO SISTEMA OPERACIONAL Embora a definição de níveis de privilégio imponha

Leia mais

Rede de Computadores (REC)

Rede de Computadores (REC) Rede de Computadores (REC) Aula 04 Camada de Aplicação Prof. Jackson Mallmann dcc2jm@joinville.udesc.br Exemplos de requisição via telnet. iniciar / executar / cmd (Windows) telnet endereço telnet 192.168.1.3

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

Permitir a troca de mensagens de texto entre os dois alunos; Permitir que um aluno enviasse para o outro uma cópia de prova;

Permitir a troca de mensagens de texto entre os dois alunos; Permitir que um aluno enviasse para o outro uma cópia de prova; Software Básico 2008.2 Trabalho Prático 1: programação de E/S, uso de sinais Prática de programação voltada a eventos Trabalho individual ou em dupla Data de entrega: 01/10/2008 1 O Objetivo Utilizando

Leia mais

Redes de Computadores e a Internet

Redes de Computadores e a Internet Redes de Computadores e a Internet Magnos Martinello Universidade Federal do Espírito Santo - UFES Departamento de Informática - DI Laboratório de Pesquisas em Redes Multimidia - LPRM 2010 Camada de Aplicação

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

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

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE

APLICAÇÃO REDE APLICAÇÃO APRESENTAÇÃO SESSÃO TRANSPORTE REDE LINK DE DADOS FÍSICA 1/5 PROTOCOLOS DE REDE 1/5 PROTOCOLOS DE O Modelo OSI O OSI é um modelo usado para entender como os protocolos de rede funcionam. Para facilitar a interconexão de sistemas de computadores, a ISO (International Standards Organization)

Leia mais

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia ADDRESS RESOLUTION PROTOCOL Thiago de Almeida Correia São Paulo 2011 1. Visão Geral Em uma rede de computadores local, os hosts se enxergam através de dois endereços, sendo um deles o endereço Internet

Leia mais

DALUA: BIBLIOTECA PARA APLICAÇÕES DISTRIBUÍDAS

DALUA: BIBLIOTECA PARA APLICAÇÕES DISTRIBUÍDAS DALUA: BIBLIOTECA PARA APLICAÇÕES DISTRIBUÍDAS Aluno: Ricardo Gomes Leal Costa Orientadora: Noemi de la Rocque Rodriguez Introdução A biblioteca DALua [1], fruto do projeto anterior, tem por objetivo oferecer

Leia mais