UMA COMUNICAÇÃO ENTRE PROCESSOS
Por: poentes • 25/11/2016 • Artigo • 1.812 Palavras (8 Páginas) • 321 Visualizações
COMUNICAÇÃO ENTRE PROCESSOS
Ivo Pontes Araújo, e-mail: ivopontes@outlook.com.
Universidade Federal do Tocantins
Palavras-chave: threads, comunicação, TCP, UDP, soquetes e multicast.
Resumo:
Esse artigo apresenta os tipos de comunicação realizados entre processos, com a utilização dos protocolos para envio e recebimento de mensagens, ferramentas de rede e conceitos de sistemas distribuídos. Existem formas de efetuar a comunicação entre processos por meio de APIs (Application Programming Interfaces) que utilizam os protocolos de rede UDP (User Datagram Protocol) e TCP (Transmission Control Protocol), como o MPI (Message Passing Interface). Devido a forma de comunicação, em rede, a troca de mensagens em pares torna-se pouco eficiente já que um host pode se comunicar com vários outros hosts da mesma rede. A comunicação multicast auxilia no envio e recebimento de mensagens a fim conectar dispositivos de uma mesma rede, mas usando o mesmo software distribuído. Além dos recursos citados, existe a rede de sobreposição, onde o desenvolvedor ou administrador de rede consegue criar redes e subredes virtuais que simulam as redes reais. Logo, com configurações similares, é possível testar um sistema ou um software distribuído sem necessitar de vários hosts com hardware.
Introdução
Coulouris, Dollimore, Kindberg e Blair (2013, p. 17) afirmam que o Middleware “é uma camada de software que fornece uma abstração de programação, assim como o mascaramento da heterogeneidade das redes, do hardware, dos sistemas operacionais e das linguagens de programação subjacentes”.
A comunicação entre processos acontece em uma das sub-camadas do middleware, onde mensagens são enviadas e recebidas, validadas e reagrupadas. O middleware é a uma camada de abstração tanto para desenvolvedores quanto para o usuário comum. Ao analisar a comunicação entre processos, o middleware abstrai uma parte da complexidade de problemas de compatibilidade na comunicação e deixa a cargo do software como será implementada a troca de mensagens.
De acordo com Ghosh(2015, p. 20), “Um protocolo é um conjunto de padrões de codificação de dados e especificações de troca de mensagens que os processos remetente e receptor seguem para completar uma tarefa específica.”(tradução nossa). Basicamente dois protocolos são usados na comunicação entre processos o TCP e UDP.
O protocolo UDP envia pacotes chamados de datagramas para um destinatário, e o TCP gera um fluxo de dados que o remetente e destinatário criam uma conexão que sua validade é sempre verificada. Além disso, multicast é responsável pela propagação de mensagens em um grupo de hosts, que torna a comunicação mais eficiente. Ainda, a virtualização de redes será explicada e quais as vantagens de usá-la.
API para Protocolos da Internet
Segundo Ghosh (2015, p. 15), “Um processo é a execução de um programa. O sistema operacional suporta múltiplos processos em um processador [...]”. Para que haja uma comunicação entre processos, é necessário a sincronização entre dois processos, que utilizam métodos send e receive para a troca de mensagens. Ainda, o processo destino utiliza a fila como estrutura de dados local para controle de mensagens e o processo origem utiliza a mesma fila mas de forma remota para controle de envio. Há dois tipos de sincronização de processos: síncronos e assíncronos.
A forma síncrona utiliza o envio da mensagem e o processo origem fica bloqueado até que recebimento dessa mensagem seja feito. Já na forma assíncrona, não há bloqueio após o envio da mensagem, pois existe um buffer que guarda os subprocessos(threads) que permite o receiver processar cada vez que estiver pronto.
Para que haja a troca de mensagens, são necessários os identificadores, que são o IP(Internet Protocol) e a porta, do destinatário e remetente. Essas portas são representadas por números e são usadas para que processos possam enviar mensagens para outros processos. Deve-se verificar a integridade dos pacotes enviados, pois os mesmos podem chegar corrompidos ou nem mesmo chegar.
Os protocolos TCP e UDP utilizam soquetes para efetuar a comunicação entre processos, via endereço de IP e número de porta. Segundo Coulouris, Dollimore, Kindberg e Blair (2013, p. 149), “Cada computador tem 216 números de portas disponíveis para serem usados pelos processos para envio e recepção de mensagens”, como informado antes, o soquete deve saber a porta disponível para efetuar a comunicação, assim como o tipo de protocolo a utilizar entre os dois já citados.
No protocolo UDP, o remetente envia pacotes ao destinatário sem receber uma mensagem de confirmação, que gera um ganho no desempenho do programa ainda que haja a probabilidade que os pacotes não cheguem. Para efetuar comunicação via UDP, o cliente utiliza uma porta livre e não reservada no sistema, já o servidor recebe a mensagem e envia a resposta pelo endereço IP do remetente e a mesma porta vinculada.
...