UM SERVIDOR DE ARQUIVOS PARA UM CLUSTER DE … · aspectos mais relevantes sobre os protocolos de...
Transcript of UM SERVIDOR DE ARQUIVOS PARA UM CLUSTER DE … · aspectos mais relevantes sobre os protocolos de...
UNIVERSIDADE FEDERAL DE SANTA CATARINAPROGRAMA DE PS-GRADUAO EM CINCIA DA COMPUTAO
Patricia Delia Ma Plentz
UM SERVIDOR DE ARQUIVOS PARA
UM CLUSTER DE COMPUTADORES
Dissertao submetida Universidade Federal de Santa Catarina como parte dos requisitos para a obteno do grau de Mestre em Cinia da Computao.
Prof. Dr. Thadeu Botteri Corso
Florianpolis, dezembro de 2001.
UM SERVIDOR BE ARQUIVOS PARA
UM CLUSTER DE COMPUTADORES
Patricia Della Ma Plentz
Esta Dissertao foi julgada adequada para a obteno do ttulo de Mestre em Cincia da Computao rea de Concentrao Sistemas de Computao e aprovada em sua forma final pelo Programa de Ps-Graduao em Cincia da Computao.
Prof. Fernando A. O. Gauthier, Dr.
(Coordenador)
(SrProf. Thadeu Botteri Corso, Dr.
(Orientador)
Banca Examinadora
Prof. Rmulo Silva de Oliveira, Dr
lis Fernando Friedrich, Dr.
Sumrio
RESUMO...................................................... ......................................................................IX
ABSTRACT............... ......................................................................................................... X
1. INTRODUO........................................ .......................................................................1
1.1 Motivaes.................................................................. ,............................................1
1.2 Objetivos....................................................................................................................1
1.3 Organizao do Texto............................. ............................................................. 2
2. SISTEMAS OPERACIONAIS....................... ................ ............................................ 3
2.1 Aspectos Gerais.......................................................................................................3
2.1.1 Chamadas de sistema......................................................................................4
2.1.2 Processos........................................................................................................5
2.1.3 Arquivos................................................................ ......................................... 5
2.1.4 Programas de Sistema....................................................................................6
2.2 Modos de Operao............................................................ ....................................6
2.3 Estruturas............................................................................................................... 7
2.3.1 Sistemas Monolticos............................................ ......................................... 7
2.3.2 Sistemas em Camadas.....................................................................................8
2.3.3 Sistemas Cliente-Servidor.............................................................................10
2.4 Sistema de Arquivos................................................... ......................................... 10
2.4.1 Implementao de Arquivos..........................................................................11
2.4.2 Estrutura Interna do Arquivo.......................................................... ............ 11
2.4.3 Diretrios......................................................................................................12
2.5 UNIX.......................................................................................................................... 12
2.5.1 Aspectos Gerais.................................................... ....................................... 12
2.5.2 Processos......................................................................................................14
2.5.3 Sistema de Arquivos......................................................................................15
2.5.4 Chamadas de Sistema.......................................... ........................................ 16
2.6 Linux.........................................................................................................................19
2.6.1 Introduo.............. .............................................. ....................................... 19
2.6.2 Sistema de Arquivos...................................................................... ............... 19
3. PROTOCOLOS DE COMUNICAO........................ ....................................... 21
3.1 Redes de Computadores.......................................... ........................................ 21
3.1.1 Redes Locais......................................................................................... ....... 21
3.1.2 Redes Metropolitanas...................................................................................24
3.1.3 Redes Geograficamente Distribudas...........................................................25
3.2 Arquitetura TCP/IP.........................................................................................26
3.3 TCP (TransmissionControlProtocol) ........................................................... 27
3.3.2 Estabelecendo uma conexo................................. ....................................... 29
3.3.3 Encerrando uma conexo..................................... ....................................... 30
3.4 UDP (JJserDatagramProtocol)......................................................................30
3.5 Sockets....................................................................... ....................................... 32
3.6 Servidores Concorrentes...............................................................................36
4. SISTEMAS COMPUTACIONAIS COM MEMRIA DISTRIBUDA............ 37
4.1 Multicomputadores.................. ...................................................................... 37
4.1.1 Classificao.................................................................................................37
4.1.2 Redes de Interconexo..................................................................................38
4.1.3 Ambiente Multicomputador Crux.................................................................42
4.2 Cluster de Computadores...................................................................... ....... 43
4.2.1 Viso Geral...................................................................................................43
4.2.2 Sistema Operacional em Clusters................................ ................................ 44
4.2.3 Mecanismos de Comunicao em Clusters................... .............................. 45
4.2.4 Projetos de Clusters......................................................................................49
4.2.5 Tabela Comparativa.....................................................................................53
5. SERVIDOR DE ARQUIVOS........................................ ,....................................... 54
5.1 Cluster Alvo.....................................................................................................54
5.2 Modelo Operacional...................................................................................... 55
5.2.1 Interface do Sistema..................................................................................... 56
5.2.2 Interface da Rede de Trabalho............................. ....................................... 57
5.3 Detalhes de Implementao...........................................................................59
5.3.1 Comunicao Cliente-Servidor............................. ....................................... 60
iv
V
5.3.2 Estrutura da mensagem................................................................................60
5.3.3 Processos Clientes........................................................................................63
5.3.4 Servidor de Arquivos....................................................................................64
5.4 E x e m p lo ............................................................................................................................................ 65
6. CONCLUSO................................................................ ......................................74
6.1 C o n tr ib u i e s . ....................... .......................................................................................................74
6.2 P e r s p e c t iv a s F u t u r a s .................................................................. ............................................75
7. REFERNCIAS BIBLIOGRFICAS....................... .........................................76
Lista de Figuras
Figura 2.1 - Chamada de Sistema................................................................................... 4
Figura 2.3 - Sistema monoltico........................................... .......................................... 8
Figura 2.4 - Estrutura do sistema operacional THE........................................................ 9
Figura 2.5 - Modelo cliente-servidor............................................................................ 10
Figura 2.7 - Chamadas mais comuns que tratam da gerncia de processos no Unix. ... 17
Figura 2.8 - Chamadas mais comuns que tratam da manipulao de arquivos e
diretrios no Unix.......................................... ............................................................... 18
Figura 3 .1 - Topologia em Estrela................................................................................ 22
Figura 3.2 - Topologia em Anel.................................................................................... 23
Figura 3.3 - Topologia em Barra...................................................................................24
Figura 3.4 - Arquitetura da rede metropolitana.............................................................25
Figura 3.5 - Organizao da arquitetura TCP/IP................... ....................................... 26
Figura 3.6 - O segmento TCP...............................................,....................................... 28
Figura 3.7 - Handshake de Trs Vias............................................................................29
Figura 3.8 - Handshake de Trs Vias utilizado para encerrar conexes....................... 30
Figura 3.10- Servidor concorrente com sockets TCP/IP.............................................. 36
Figura 4.1 - Grelha........................................................................................................ 39
Figura 4.2 - Hipercubo.................................................................................................. 39
Figura 4.3 - Torus..........................................................................................................40
Figura 4.4 - Barramento....................................................................................... ........ 40
Figura 4.5 - Rede mega 8 x 8 ........................................... ......................................... 41
Figura 4-6 - Crossbar 4 x 4 .................................................... ....................................... 41
Figura 4.7 - Arquitetura do multicomputador Crux...................................................... 42
Figura 4.8 - Estrutura genrica de um cluster...................... ,....................................... 44
Figura 5.1 - Arquitetura genrica do cluster alvo......................................................... 54
Figura5.2 - Servidor de Arquivos..................................................................................56
Figura 5.3 - Operador Send. ................................................ ,....................................... 57
Figura 5.4 - Operador Receive...................................................................................... 58
Figura 5.6 - Formato da mensagem......................................,....................................... 61
vi
Figura 5.7 - Estrutura da mensagem definida na linguagem C..................................... 61
Figura 5.8 - Mensagem correspondente chamada de sistema open............................62
Figura 5.9 - Chamada de sistema open definida na linguagem C................................. 62
Figura 5.10 - Mensagem de retomo definida na linguagem C......................................63
Figura 5.11- Algoritmo genrico das funes da biblioteca libcsa..............................64
Figura 5.12 - Algoritmo genrico do servidor de arquivos............ .............................. 65
Figura 5 .13- Cdigo do processo cliente......................................................................66
Figura 5.15 - Cdigo da funo inicializa cliente............... ........................................ 68
Figura 5.17 - Cdigo da funo inicializaservidor..................................................... 72
vii
Lista de Tabelas
Tabela 4.1 - Principais caractersticas dos projetos.
ix
Resumo
O objetivo deste trabalho o de propor um servidor de arquivos para um
cluster de computadores derivado do multicomputador Crux [COR99], Este cluster
oferece um ambiente para a execuo de programas paralelos organizados como redes
de processos comunicantes. A arquitetura do cluster composta de um determinado
nmero de ns de trabalho e um n de controle. Os ns de trabalho so interligados por
uma rede de interconexo dinmica reconfigurvel conforme a demanda dos programas
paralelos. Esse servidor implementado com processos regulares do sistema
operacional Linux, executando em um nico n de trabalho. Processos clientes,
executando em outros ns de trabalho, comunicam-se com o processo servidor de
arquivos pela troca de mensagens atravs da rede de interconexo dinmica.
X
The objective of this work is to propose a file server for a cluster of
computers derived from the multicomputer Crux [COR99]. This cluster offers an
environment for the execution of parallel programs organized as networks of
comunicating processes. The cluster architecture is formed by a definite number of
work nodes and one control node. Work nodes are linked through a dynamic
interconnection network reconfigured by the demand of parallel programs. This server
is implemented as regular processes of the operating system Linux, executing in one
work node. Clients processes, executing in others work nodes, exchange messages with
the file server through the network of dynamic interconnectipn.
1. Introduo
Este captulo objetiva identificar as motivaes e objetivos gerais deste
trabalho, bem como apresentar a organizao do texto. No tpico 1.1 so apresentadas
as motivaes, no tpico 1.2 so descritos os objetivos e no tpico 1.3 apresentada a
organizao do texto.
1.1 Motivaes
Clusters de computadores apresentam-se, cada vez mais, como uma
alternativa atraente de ambiente para processamento paralelo. Um cluster formado por
um conjunto de computadores pessoais ou estaes de trabalho interligados por uma
rede, montados com componentes comerciais. Tecnologias de redes de interconexo
como Fast Ethernet [COM98] e Myrinet [MYR01], assim pomo pacotes de software
para ambientes paralelos e distribudos como PYM [PVM01] e MPI [RIBOl] colaboram
na explorao do potencial de paralelismo dos clusters de computadores.
A montagem de um cluster de computadores derivado do multicomputador
Crux [COR99] objeto de projetos correntes no ambiente do Laboratrio de
Computao Paralela e Distribuda (LaCPaD) do Curso de Ps-Graduao em Cincia
da Computao (CPGCC) da Universidade Federal de Santa Catarina (UFSC).
A operao do cluster depende da implementao de mecanismos de
comunicao especficos do multicomputador Crux que esto sendo adaptados para o
cluster e pressupe a existncia de um servidor de arquivos centralizado.
1.2 Objetivos
O objetivo principal deste trabalho se refere ao projeto e implementao de
um servidor de arquivos para um cluster derivado do multicomputador Crux,
implementado com processos regulares do Linux, seguindo o modelo cliente-servidor.
De um lado, um processo cliente faz uma solicitao de servio ao sistema
de arquivos; a solicitao colocada em uma mensagem e enviada ao processo servidor.
De outro lado, o processo servidor recebe mensagens com requisies caractersticas de
um sistema de arquivos como open, read, write e dose; faz o processamento dessa
requisio e retoma o resultado ao processo cliente que fez a solicitao.
1.3 Organizao do Texto
O capitulo 2 apresenta os principais conceitos relacionados aos sistemas
operacionais, e descreve os sistemas operacionais Unix e Linux. O captulo 3 mostra os
aspectos mais relevantes sobre os protocolos de comunicao para redes de
computadores, enfatizando o protocolo TCP/1P. O captulo 4 introduz os
multicomputadores e os clusters de computadores. O captulo 5 apresenta o servidor de
arquivos, objeto deste trabalho, para o cluster alvo derivado do multicomputador Crux,
descrevendo a estrutura criada e os detalhes da implementao. O captulo 6 mostra as
contribuies deste trabalho e projetos futuros.
3
2. Sistemas Operacionais
Este captulo introduz os principais conceitos relacionados aos sistemas
operacionais. No tpico 2.1 so apresentados os aspectos gerais dos sistemas
operacionais, como os conceitos de processos, arquivos, chamadas de sistema e
programas de sistema. No tpico 2.2 so descritos os dois modos de operao
normalmente implementados pelos processadores. No tpico 2.3 so apresentadas as
principais estruturas de sistemas operacionais. No tpico 2.4 so mostrados os
principais aspectos relacionados aos sistemas de arquivos. Nos tpicos 2.5 e 2.6 so
descritos os sistemas operacionais Unix e Linux, respectivamente.
2.1 Aspectos Gerais
O sistema operacional de um computador a parte de software que estende
os recursos de hardware da mquina, tornando a utilizao do equipamento mais fcil,
mais eficiente e mais confivel [OLIOO], Ele formado por um grupo de procedimentos
que prestam servios aos usurios do sistema e suas aplicaes, assim como a outras
rotinas do prprio sistema. As principais funes desse conjunto de rotinas so:
Tratamento de interrupes;
Criao e eliminao de processos;
Escalonamento e controle dos processos;
Sincronizao e comunicao entre processos;
Gerncia de memria;
Gerncia de entrada/sada;
Gerncia de arquivos;
Contabilizao e segurana.
A interface entre o sistema operacional e os programas de usurio definida
pelo conjunto de instrues estendidas fornecidas pelo sistema. Tais instrues,
conhecidas como chamadas de sistema, manipulam os objetos gerenciados pelo sistema
4
operacional. A seguir so introduzidos os conceitos de chamadas de sistema, processos,
arquivos e programas de sistema.
2.1.1 Chamadas de sistema
Cada sistema operacional tem seu prprio conjunto de chamadas de
sistema. Os programas de usurio solicitam servios do sistema operacional atravs da
execuo de chamadas de sistema. Para cada um desses servios existe uma chamada de
sistema relacionada [MAC97], A figura 2.1 ilustra este contexto.
Chamada de w SistemaAplicao w< sistema
WM ----------- Operacional
w < ----------- Hardware
Fig. 2 .1 - Chamada de Sistema.
O processamento das solicitaes de servios dos programas de usurio
realizado de acordo com os argumentos da chamada de sistema, e a resposta retomada
aplicao.
No decorrer da execuo de um programa de usurio podem ocorrer
eventos que desviam a execuo do processador para rotinas que tratam esses eventos.
Esse desvio, conhecido como mecanismo de interrupo, faz com que o programa de
usurio em execuo seja interrompido e uma rotina espefica, chamada tratador de
interrupo, seja executada. O tratador de interrupo executa as aes necessrias para
tratar esse evento. Aps a execuo desta rotina, o processamento retoma, do ponto em
que parou, ao programa de usurio. Para que isso seja possvel, o processador ao
identificar uma interrupo, armazena na pilha de execuo, os registradores internos do
processador.
5
2.1.2 Processos
Um processo basicamente um programa em execuo, incluindo os
valores correntes de todos os registradores do hardware e das variveis manipuladas por
ele no curso de sua execuo.
Para implementar o modelo de processo, o sistema operacional deve manter
uma tabela, chamada tabela de processos, com uma entrada por processo. Cada entrada
inclui informaes sobre o estado do processo, sobre sua prioridade, sobre a memria
alocada, sobre os valores de seu ponteiro de instrues e ponteiro de pilha, sobre o
estado de seus arquivos abertos, entre outras.
2.1.3 Arquivos
Arquivos so constitudos de informaes que se relacionam entre si,
podendo representar programas ou dados. Os arquivos so administrados pelo sistema
operacional para tomar fcil o acesso dos usurios ao seu contedo. A parte do sistema
responsvel por essa gerncia denominada sistema de arquivos.
Uma das principais funes do sistema operacional esconder as
particularidades dos dispositivos de entrada/sada, e apresentar ao programador um
modelo abstrato com arquivos independentes dos dispositivos onde esto
implementados.
Os arquivos so identificados atravs de um nome, o qual formado por um
conjunto de caracteres de tamanho varivel. As regras variam de um sistema de
arquivos para outro. Alguns, por exemplo, limitam o tamanho mximo do nome do
arquivo e fazem a diferenciao entre caracteres alfabticos maisculos e minsculos no
nome do arquivo. Em alguns sistemas operacionais, a identificao do nome do arquivo
dividido em duas partes separadas por um ponto. A parte seguinte ao ponto
denominada extenso do arquivo e indica alguma caracterstica do arquivo.
O sistema operacional suporta diversas operaes sobre arquivos. As
principais operaes so [OLIOO]:
Criao do arquivo;
Destruio do arquivo;
6
Leitura do contedo;
Alterao do contedo;
Escrita de novos dados;
Execuo do programa contido no arquivo;
Alterao do nome do arquivo.
2.1.4 Programas de Sistema
Os programas de sistema realizam tarefas bsicas para a utilizao do
sistema. So executados fora do ncleo do sistema operacional e utilizam as mesmas
chamadas de sistema disponveis aos programas de usurio [OLIOO],
O interpretador de comandos o mais importante programa de sistema. Ele
ativado pelo sistema operacional sempre que um usurio inicia sua sesso de trabalho.
Sua tarefa receber comandos do usurio e processa-los. Normalmente, a execuo do
comando exige uma ou mais chamadas de sistema.
Os utilitrios para manipulao de arquivos so um exemplo de programa
de sistema. Eles listam, imprimem, copiam e alteram o nome de arquivos, entre outras
funes. A utilizao desses programas de sistema tambm comum para a obteno de
informaes a respeito do sistema, tal como data, hora ou quais usurios esto
utilizando o computador em um dado momento.
2.2 Modos de Operao
A utilizao indevida de algumas instrues causa srios problemas
integridade do sistema. Estas instrues no podem, portanto, ser colocadas diretamente
disposio das aplicaes. Operaes de entrada/sada so exemplos deste tipo de
instruo.
As instrues no-privilegiadas so as que no oferecem perigo ao sistema,
enquanto que aquelas que tem o poder de comprometer o sistema so chamadas de
instrues privilegiadas.
7
O mecanismo de modos de operao implementado pelo processador para
que aplicaes possam executar instrues privilegiadas. comum o uso de dois modos
de operao implementados pelo processador: modo usurio e modo supervisor. No
modo usurio apenas as instrues no-privilegiadas podem ser executadas; no modo
supervisor todas as instrues do processador podem ser executadas.
Uma forma de controlar o acesso s instrues privilegiadas permitir que
somente o sistema operacional tenha acesso elas. Assim, o sistema operacional
executa com o processador no modo supervisor e os programas de usurio executam em
modo usurio. O sistema operacional, antes de entregar o processador aos processos de
usurio, muda para o modo usurio. Assim, os processos de usurios executam apenas
as instrues no-privilegiadas.
2.3 Estruturas
Existem diversas maneiras de estruturar um sistema operacional, sendo as
mais conhecidas a estrutura monoltica, a estrutura em camadas e a estrutura cliente-
servidor. Estas estruturas so apresentadas a seguir.
2.3.1 Sistemas Monolticos
Em sistemas monolticos o sistema operacional organizado como um
conjunto de procedimentos, cada um dos quais podendo interagir com os demais sempre
que necessrio. Neste tipo de sistema no existe uma estruturao visvel, como mostra
a figura 2.3
)> Procedimentos
Fig. 2.3 - Sistema monoltico.
Cada procedimento do sistema deve ter uma interface bem definida em
termos de argumentos e resultados [TAN92], Quando este modelo for usado na
construo do programa objeto relativo ao sistema operacional, os procedimentos
individuais so compilados e ligados, formando um nico arquivo objeto.
Restries relacionadas visibilidade dos procedimentos no so
implementadas. Desta maneira, cada procedimento visvel a todos os outros. Nesse
tipo de sistema, as chamadas de sistemas so requisitadas atravs da colocao de
argumentos em lugares bem determinados, como registradores ou pilhas, seguindo-se
uma instruo para alterar o modo de acesso do modo usurio para o modo supervisor.
Analisando os argumentos o sistema operacional define qual chamada de sistema deve
ser executada. Para sua execuo, a chamada de sistema pode acionar os procedimentos
do sistema operacional necessrios ao servio solicitado. Aps a concluso da execuo
da chamada de sistema, o controle retoma ao programa do usurio.
2.3.2 Sistemas em Camadas
Nos sistema em camadas o sistema operacional dividido em camadas de
software sobrepostas. Essas camadas possuem funes que podem ser utilizados por
9
outras camadas. Funes de uma camada podem fazer referncia funes da camada
imediatamente inferior ou de camadas inferiores.
O primeiro sistema a fazer uso desta abordagem foi o sistema THE
[TAN92] que utilizava seis camadas. A figura 2.4 apresenta a estrutura do sistema
operacional THE. A camada 0 (camada inferior) permite a multiprogramao do
processador, realizando a sua alocao e chaveamento entre processos quando ocorrem
interrupes, ou quando o quantum do tempo expira. A camada 1 realiza a alocao de
espaos para processos na memria e em um disco de 512 K endereos, que armazenava
partes de processos para as quais no havia espao na memria principal. A camada 2
realiza as comunicaes entre cada processo e o console de operao. A camada 3
realiza a administrao dos dispositivos de entrada/sada, movendo informaes de/para
tais dispositivos. A camada 4 armazena os programas de usurio e na camada 5 (camada
superior) est o operador do sistema.
5 Operador
4 Programas de usurio
3 Gerncia dos dispositivos de entrada/sada
2 Comunicao processo-operador
1 Gerncia da memria
0 Alocao do processador
Fig. 2.4 - Estrutura do sistema operacional THE.
Posteriormente, os sistemas MULTICS [TAN92] e VMS [MAC97] tambm
implementaram o conceito de camadas.
A estruturao em camadas apresenta algumas vantagens, como por
exemplo, a possibilidade de isolar as funes do sistema operacional, o que facilita a sua
alterao e depurao, e tambm, protege as camadas mais internas na medida que cria
uma hierarquia de nveis [MAC97],
10
2.3.3 Sistemas Cliente-Servidor
Neste modelo, a maioria das funes tradicionais dos sistemas operacionais
so implementadas como processos de usurio. O ncleo do sistema fica responsvel
pela gerncia de processos e pela comunicao entre processos clientes e processos
servidores. Um processo cliente e aquele que solicita algum servio ao sistema e o
processo servidor aquele que executa este servio. Um processo cliente solicita um
servio enviando uma requisio ao processo servidor, o qual realiza o trabalho
solicitado e envia a resposta ao processo cliente. A figura 2.5 ilustra este modelo.
}Modo usurio
l Modo I supervisor
Dividindo o sistema operacional em vrios servidores, cada um tratando um
aspecto do sistema, tais como o sistema de arquivos e o gerente de memria, possvel
tomar cada parte do sistema menor e mais fcil de implementar.
O modelo cliente-servidor possibilita que os servidores executem em modo
usurio e o ncleo do sistema operacional execute em modo supervisor. Assim, se
ocorrer um erro em um servidor, o sistema no ficar totalmente comprometido. Apenas
o servidor que sofreu o problema ficar parado.Esta estrutura tambm permite melhor
manuteno porque as funes do sistema operacional podem ser isoladas em processos
servidores pequenos e dedicados a servios especficos.
2.4 Sistema de Arquivos
Um sistema de arquivos o conjunto de mtodos e estruturas de dados que
um sistema operacional utiliza para administrar arquivos em um disco magntico.
Processocliente
Processocliente
Processoservidor
ncleo
Fig. 2.5 - Modelo cliente-servidor.
11
2.4.1 Implementao de Arquivos
A cada arquivo no sistema operacional est associado um descritor de
arquivo. Este descritor um registro que mantm informaes sobre o arquivo, tais
como: nome, tamanho, local no disco onde o contedo do arquivo foi colocado, data e
hora do ltimo acesso, data e hora da ltima alterao, identificao do usurio que
criou o arquivo e a lista de usurios que podem acessar o arquivo e respectivos direitos
de acesso. O descritor de arquivos fica armazenado em disco, usualmente na mesma
partio onde se encontra o contedo do arquivo [OLIOO],
Na maioria dos sistemas operacionais, um processo de usurio que queira
utilizar um arquivo deve primeiramente solicitar a abertura deste arquivo. Isto acontece
atravs das chamadas de sistema e serve para o sistema de arquivos localizar o arquivo
no disco e carregar o descritor deste arquivo para a memria.
O sistema de arquivos mantm ento na memria uma cpia dos descritores
dos arquivos abertos. Quando o arquivo fechado, o sistema de arquivos atualiza o
descritor do disco, caso ele esteja desatualizado em relao cpia na memria.
2.4.2 Estrutura Interna do Arquivo
A estrutura interna de uma arquivo corresponde ao modo como os seus
dados esto armazenados. Vrias formas podem ser usadas para estruturar um arquivo.
Uma forma de estruturar os arquivos atravs de uma seqncia no-
estruturada de bytes, na qual o sistema operacional v o arquivo como uma seqncia de
bytes, sem que nenhuma estrutura lgica seja estabelecida para os dados. A aplicao
fica responsvel pelo controle de acesso aos arquivos. A vantagem deste mtodo est na
flexibilidade para criar diferentes estruturas de dados.
Outra forma de estruturao definir os arquivos como uma seqncia de
registros de tamanho fixo, onde cada registro possui uma estrutura interna caracterstica.
Desta maneira, uma operao de leitura retoma um registro e uma operao de escrita
grava um registro.
Uma terceira forma de organizao coloca os arquivos como uma rvore de
registros. Os registros tem tamanhos variados e cada registro contm um campo chave
em uma posio fixa. A ordenao da rvore acontece pelo campo chave, permitindo
uma busca rpida de determinada chave [TAN92],
2.4.3 Diretrios
Diretrios so conjuntos de referncias arquivos [OLIOO], Um diretrio
uma estrutura de dados que contm entradas associadas aos arquivos como seu nome,
localizao fsica e organizao. Quando um arquivo aberto, o sistema operacional
busca, a partir do nome, os demais atributos do arquivo (armazenados diretamente no
diretrio ou em uma estrutura de dados apontada pelo diretrio), colocando tais
informaes em uma tabela na memria. Todas as referncias subseqentes ao arquivo
usam as informaes da memria principal.
2.5 Unix
Este tpico apresenta o sistema operacional Unix. Primeiramente, no
subtpico 2.5.1 so introduzidos os aspectos gerais, no subtpico 2.5.2 so mostrados os
conceitos fundamentais, e por fim, no subtpico 2.5.3 so apresentadas as chamadas de
sistema.
2.5.1 Aspectos Gerais
O Unix um sistema operacional multitarefa e multi-usurio interativo de
tempo compartilhado. Ele gerencia o hardware do computador alocando recursos,
escalonando tarefas, processando requisies de usurios e executando funes
administrativas e de manuteno para o sistema.
Atualmente, o sistema operacional Unix um importante padro que
influenciou o projeto de muitos sistemas operacionais modernos e apresenta os
seguintes recursos e capacidades:
Centenas de programas utilitrios para executar uma grande variedade
de funes como criao, edio, e manipulao de arquivos e textos,
13
processamento de comandos e tarefas, comunicao com outros
usurios, manuteno do sistema e desenvolvimento de programas;
O interpretador de comandos (shell), que funciona como uma interface
com o usurio, uma ferramenta flexvel que habilita usurios a
executar o seu trabalho ao mesmo tempo que prov uma estrutura que
separa e protege usurios e seus ambientes uns dos outros e do sistema
operacional;
Sistema de arquivos e sistema de entrada/sada simplificado, onde cada
arquivo, comando, programa e dispositivo de entrada/sada tratado
pelo sistema operacional como um arquivo que contm cadeias de
caracteres;
Unix foi projetado para ser portvel de forma que ele possa ser
implementado facilmente em vrias plataformas computacionais.
Um sistema Unix pode ser visualizado como uma espcie de pirmide. No
nvel mais baixo est o hardware, envolvendo o processador, memria, dispositivos de
entrada/sada, alm de outros dispositivos. No nvel seguinte est o sistema operacional
Unix, controlando o hardware e fornecendo as chamadas de sistema para que todos os
programas tenham acesso aos servios do sistema. No prximo nvel da pirmide
encontra-se a biblioteca de procedimentos-padro, com um procedimento para cada
chamada de sistema. Ento, para executar um comando de leitura, um programa na
linguagem de programao C chama o procedimento read da biblioteca. No nvel
seguinte esto os programas utilitrios-padro. Nele se incluem o processador de
comandos (shell), os compiladores, os editores, os programas para processamento de
texto, e os utilitrios para manipulao de arquivos. Alguns so especificados na
recomendao POSIX 1003.2, e alguns so diferentes para as vrias verses do Unix.
No ltimo nvel esto os usurios que utilizam os programas citados anteriormente. A
figura 2.6 apresenta estes nveis citados acima.
14
I Usurios I
(utilizam o shell, editores, etc.) !
Programas utilitrios-padro 1(shell, editores, compiladores, etc.) 1
I Biblioteca de procedimentos-padro I
(open, close, read, write, fork, etc.) I
Sistema operacional Unix (gerncia de processos, gerncia de memria, sistema
de arquivo, sistema de entrada/sada, etc.)Hardware
(memria, processador, discos, terminais, etc.)
Fig. 2.6 - Nveis de um sistema Unix.
Os comandos do Unix so processados pelo shell, que faz parte dos
programas utilitrios-padro. O shell responsvel por interpretar os comandos do
usurio, convertendo-os em chamadas do sistema operacional.
2.5.2 Processos
No Unix os processos so elementos ativos no sistema porque alteram o seu
estado durante a execuo de um programa [OLIOO], Cada processo executa um nico
programa, e tem uma nica linha de controle, isto , tem apenas um ponteiro de
instrues.
Cada processo criado possui um nmero associado a ele chamado de
process id (pid). Este nmero distingue o processo de todos os outros processos criados
e que ainda no terminaram sua execuo. Assim, cada processo possui um pid nico.
Quando um processo cria outro, ele chamado de processo pai e o processo criado
chamado processo filho. No Unix, um processo pai cria um processo filho fazendo
cpia de si mesmo. Com exceo do pid, estes processos (pai e filho) so idnticos. Para
executar um novo programa, o processo criado sobrepe o cdigo e os dados do
programa herdado do processo pai pelo cdigo e os dados do novo programa e ento
inicia sua execuo. Um processo pai pode ter vrios processos filho e um processo
filho tem um nico processo pai.
Um processo pai pode suspender sua prpria execuo. Por exemplo, o
shell normalmente executa um programa criando um processo filho e esperando que
este filho termine sua execuo para liberar o caracter de prompt para o usurio.
O nico processo no Unix que no tem pai o processo 0, o qual criado
durante a inicializao do sistema. O ancestral de todos os outros processos no sistema
o processo 1. Ele criado pelo processo 0 e chamado de ini. Os processos so
escalonados de acordo com uma prioridade, que definida e ajustada dinamicamente
pelo ncleo do Unix.
Processos conhecidos como daemon so processos especiais, que
respondem por tarefas especiais no sistema, como por exemplo, gerncia de filas de
impresso e escalonamento de processos batch.
2.5.3 Sistema de Arquivos
Os conceitos bsicos no Unix relacionados ao sistema de arquivos so
superbloco, n-i, bloco de dados, bloco de diretrios e bloco de indireo. O superbloco
contm as informaes sobre o sistema de arquivos como um todo, como por exemplo,
seu tamanho. Um n-i contm as informaes sobre um determinado arquivo, exceto
seu nome. O nome est armazenado no diretrio, junto com o nmero do n-i. Uma
entrada de diretrio formada pelo nome e pelo nmero do n-i que representa o
arquivo. O n-i contm o nmero de diversos blocos de dados usados para armazenar as
informaes do arquivo. H espao somente para uns poucos blocos de dados no n-i, e,
caso um nmero maior seja necessrio, mais espao para ponteiros ser alocado
dinamicamente. Estes blocos alocados dinamicamente so blocos de indireo que,
como o nome indica, contm endereos para outros blocos de dados.
O Unix suporta diversas operaes sobre arquivos, tais como: criao,
destruio, leitura do contedo, alterao do contedo, troca do nome do arquivo,
execuo do programa contido no arquivo.
No Unix, os arquivos podem ser agrupados em diretrios, por convenincia
de seus usurios. Os diretrios so armazenados como se fossem arquivos, e, de uma
forma geral, podem ser tratados como arquivos [TAN92]. O sistema de arquivos assume
uma forma hierrquica na medida em que os diretrios podem conter subdiretrios.
16
Uma forma de se especificar nomes de arquivos em Unix atravs do
chamado caminho absoluto, no qual informado como chegar ao arquivo a partir do
diretrio raiz. Porm, nomes absolutos so muito grandes e por vezes inconveniente.
Assim, o caminho relativo uma outra maneira de especificar nomes de arquivos. O
Unix permite que seus usurios designem o diretrio no qual esto trabalhando como
diretrio de trabalho ou diretrio atual. Todos os nomes de caminhos so interpretados
em relao ao diretrio atual. Por exemplo, se o diretrio atual for usr/ast, ento, o
arquivo cujo caminho absoluto usr/ast/abcd pode ser referenciado apenas por abcd.
2.5.4 Chamadas de Sistema
Os programas solicitam servios ao sistema operacional atravs das
chamadas de sistema. Elas so semelhantes subrotinas. Entretanto, enquanto as
subrotinas so procedimentos normais de um programa, as hamadas de sistema ativam
o sistema operacional. Atravs de argumentos, o programa informa exatamente o que
necessita. O retomo da chamada de sistema faz com que a execuo do programa seja
retomada partir da instruo que segue chamada [OLIOO],
Quando ocorre algum erro na execuo das chamadas de sistema, o Unix
utiliza a varivel global ermo para indicar o tipo de erro que ocorreu. Esta varivel
recebe ento um valor positivo que informa o tipo de erro e a chamada de sistema
retoma em geral o valor -1. No arquivo errno.h esto as constantes que so associadas a
esses valores positivos.
A seguir, apresentada uma seleo das chamadas de sistema mais
representativas do POS1X (Portable Operating System Interface).
17
Chamadas de Sistema para gerncia de processos
Gerncia de Processo Descrio
pid = fork() Cria um processo filho
s = waitpid (pid, &status, opts) Espera at que um filho termine
exit (status) Termina e execuo e retoma um cdigo de estado
s = execve (name, argv, emp) Substitui a imagem de memria de um processo
Fig. 2.7 - Chamadas mais comuns que tratam da gerncia de processos no Unix.
O fork a chamada de sistema que cria um novo processo no Unix
exatamente igual ao processo original, incluindo descritores de arquivos, registradores e
tudo mais.
A chamada waitpid faz com que um processo pai espere o trmino da
execuo de um processo filho. Essa chamada possui trs argumentos, sendo que o
primeiro argumento permite que o processo pai espere por um processo filho especfico.
No caso desse argumento ser -1, o processo pai espera pelo primeiro dos filhos que
terminar. O segundo argumento informa o endereo de uma varivel que receber o
cdigo do estado de sada do filho e o ltimo argumento informa se o processo pai
retoma sua execuo ou fica bloqueado, caso nenhum filho tenha ainda terminado sua
execuo.
A chamada de sistema exit invocada por cada um dos processos ao
trmino de sua execuo e possui apenas um argumento, que o estado de sada desse
processo.
A chamada de sistema execve substitui a imagem do processo atual pelo
novo arquivo de programa e este novo programa normalmente inicia na funo main.
execve tem trs argumentos, o nome do arquivo a ser executado, um ponteiro para o
vetor de argumentos e um ponteiro para o vetor de ambiente;
18
Chamadas de Sistema para arquivos e diretrios
Arquivos e Diretrios Descrio
fd = open (file, flags, mode) Abre um arquivo para leitura e/ou escrita
s = close (fd) Fecha um arquivo aberto
n = read (fd, buffer, nbytes) L dados de um arquivo e os coloca em um buffer
n = write (fd, buffer, nbytes) Escreve os dados de um buffer em um arquivo
pos = Iseek (fd, offset, whence) Move o ponteiro do arquivo para qualquer posio
s = mkdir (name, mode) Cria um novo diretrio
s = rmdir (name) Remove um diretrio vazio
Fig. 2.8 - Chamadas mais comuns que tratam da manipulao de arquivos e diretriosno Unix.
A chamada de sistema open abre (mas tambm pode criar) um arquivo. Os
argumentos necessrios para esta chamada de sistema so o nome do arquivo, flags
(nesse argumento vrias opes podem ser especificadas) e modo de acesso.
A chamada de sistema close fecha um arquivo. Como argumento necessita
apenas do descritor de arquivo.
A chamada de sistema read l um bloco de bytes de um arquivo. Possui trs
argumentos: descritor de arquivo, endereo origem do bloco e tamanho do bloco (em
bytes).
A chamada de sistema write escreve um bloco de bytes em um arquivo. O
segundo argumento informa o endereo do bloco destino e os demais argumentos so
idnticos aos da chamada de sistema read.
A chamada de sistema Iseek permite que programas acessem qualquer parte
do arquivo. O primeiro argumento especifica o descritor de arquivo, o segundo a
posio do arquivo e o terceiro argumento informa se a posio relativa ao incio do
arquivo, posio corrente ou ao final do arquivo. O retomo desta chamada a posio
absoluta no arquivo aps a mudana do ponteiro.
As chamadas de sistema mkdir e rmdir so usadas para criar e destruir
diretrios, respectivamente.
19
2.6 Linux
Neste tpico so abordados os principais conceitos relacionados ao sistema
operacional Linux. No sbtpico 2.6.1 feita uma breve introduo e no subtpico 2.6.2
so apresentados os conceitos que envolvem o sistema de arquivos do Linux.i
2.6.1 Introduo
O Linux um sistema operacional pertencente famlia Unix e segue as
especificaes PQSIX. Ele foi projetado inicialmente para computadores PCs baseados
em processadores 386, mas hoje roda em vrios tipos de mquinas diferentes como
Sparcs da Sun, Amiga e Power PCs. Mas, ao contrrio do Unix, o Linux possui o
cdigo fonte aberto. Tal caracterstica permite que qualquer pessoa veja como o sistema
funciona, corrija alguma problema ou faa alguma sugesto sobre sua melhoria, e esse
um dos motivos de seu rpido crescimento, do aumento da compatibilidade de
perifricos e de sua estabilidade.
Existem variados tipos de distribuies do Linux, sendo que por
distribuies entende-se o conjunto formado pelo sistema operacional bsico e pelo
conjunto de aplicativos e suas configuraes. Exemplos de distribuies so Red Hat,
Debian, Mandrake e Slackware.
Juntamente com a possibilidade de escolha entre as diversas distribuies,
existem tambm as opes de interfaces grficas, tomando esse sistema operacional
ainda mais atrativo. Exemplos de interfaces grficas so o KDE e GNOME.
2.6.2 Sistema de Arquivos
A organizao do sistema de arquivos do Linux em forma de uma rvore
hierarquizada. Assim, cada arquivo, diretrio e dispositivo de entrada/sada
representado por um n da rvore.
O Linux suporta diferentes sistemas de arquivos, possibilitando a existncia
simultnea, em disco, dele e outros sistemas operacionais. Neste sentido, o conceito de
parties e pontos de montagem so importantes. Um disco fsico pode ser dividido em
vrios discos lgicos, e para cada disco lgico pode ser associado um sistema de
20
arquivos. Esses discos lgicos so chamados de parties. Os pontos de montagem so
os diretrios. No Linux, o diretrio / definido como o ponto de montagem inicial e a
partir dele possvel criar novos diretrios, bem como definir outros sistemas de
arquivos [OLIOO],
O sistema de arquivos do Linux o ext.2 (Second Extended File System),
sendo que o bloco a estrutura bsica desse sistema. O bloo pode conter informaes
referentes ao sistema de arquivos como um todo, ou conter dados.
21
3. Protocolos de Comunicao
O objetivo principal deste captulo introduzir os protocolos de
comunicao para redes de computadores. Inicialmente, no tpico 3.1 apresentado o
conceito de redes de computadores e sua classificao. No tpico 3.2 feita uma breve
introduo arquitetura TCP/IP. No tpico 3.3 mostrado o protocolo TCP
{Transmission Control Protocol) e a seguir, no tpico 3.4, apresentado o protocolo
UDP (User Datagram Protocol). O tpico 3.5 descreve o conceito de sockets para a
arquitetura TCP/IP e o tpico 3.6 introduz o conceito de servidores concorrentes.
3.1 Redes de Computadores
As redes de computadores so constitudas de mdulos processadores,
interligados por um sistema de comunicao, sendo capazes de trocar informaes e
compartilhar recursos. Um mdulo processador pode ser qualquer dispositivo que se
comunique por troca de mensagens atravs do sistema de comunicao, como por
exemplo, um terminal, uma impressora ou um computador.
O sistema de comunicao formado por um arranjo topolgico que
interliga os mdulos processadores por meio de enlaces fsicos e de um conjunto de
regras para organizar a comunicao (protocolos).
A seguir apresentada a classificao das redes de computadores que se
subdividem em redes locais, redes metropolitanas e redes geograficamente distribudas
[SOA95].
3.1.1 Redes Locais
Redes Locais (LANs - Local Area Networks) so redes privadas contidas
normalmente em um prdio, que tem alguns quilmetros de extenso. As redes locais
foram definidas e utilizadas inicialmente nos ambientes de institutos de pesquisa e
universidades. Elas surgiram para viabilizar a troca e o compartilhamento de
22
informaes e dispositivos perifricos preservando a independncia das vrias estaes
dp processamento. Atualmente so amplamente usadas para interligar computadores
pessoais e estaes de trabalho em escritrios, universidades e instalaes industriais.
As redes locais tradicionais operam em velocidades que podem variar de 10
a 100 Mbps, tem um baixo retardo e cometem pouqussimos erros [TAN97], So
apresentadas a seguir as topologias mais utilizadas nestas redes.
Topologia em Estrela
Na topologia em estrela um n central interliga os demais ns. Todas as
mensagens devem passar pelo n central, o qual age como um centro de controle da
rede (figura 3.1).
Fig. 3 .1 - Topologia em Estrela.
Em algumas redes com topologia em estrela, o n central tem como nica
funo o gerenciamento das comunicaes. Em outras, o n central tem tanto a funo
de gerenciamento de comunicaes como facilidades de processamento de dados. O n
central chamado de comutador ou switch quando sua funo o chaveamento (ou
comutao) entre as estaes que desejam se comunicar.
23
Topologia em Anel
Em uma rede em anel, as estaes so conectadas atravs de um caminho
fechado. O anel consiste em uma srie de repetidores ligados por um meio fsico, e cada
estao ligada esses repetidores (figura 3.2). As estaes, portanto, no so
interligadas diretamente ao anel [SOA95].
A transmisso e recepo de dados em uma rede em anel pode acontecer em
ambas as direes. No entanto, as configuraes mais usuais so unidirecionais,
simplificando o projeto dos repetidores e tomando menos sofisticados os protocolos de
comunicao que asseguram a entrega da mensagem ao destino corretamente. Os
repetidores so geralmente projetados para transmitir e receber dados simultaneamente,
diminuindo o retardo de transmisso.
Quando um n envia uma mensagem, ela entra no anel e, dependendo do
protocolo empregado, circula at que seja retirada pelo n destino ou at retomar ao n
de origem. No primeiro caso, o repetidor deve usar um retardo suficiente para o
recebimento e armazenamento dos bits de endereamento de destino da mensagem,
quando ento poder decidir se esta deve ou no permanecer no anel. No outro caso, a
24
rede pode atuar com um retardo de um bit por repetidor, porque a medida que os bits de
uma mensagem vo chegando eles vo sendo despachados.
Topologia em Barra
Na topologia em barra todas as estaes se ligam ao mesmo meio de
transmisso (figura 3.3). Nas redes em barra cada n conectado barra pode Ouvir todas
as informaes transmitidas.
Fig. 3.3 - Topologia em Barra.
Os mecanismos de controle de acesso barra podem ser do tipo centralizado
ou descentralizado. No controle centralizado, o direito de acesso determinado por uma
estao especfica da rede. No controle descentralizado, a responsabilidade de acesso
distribuda entre todos os ns.
O meio de transmisso, nmero de ns conectados, controle de acesso e tipo
de trfego so fatores que determinam o desempenho de um sistema em barra. A
interconexo de hubs pode ser uma forma de expanso da rede .
3.1.2 Redes Metropolitanas
Uma rede metropolitana (MAN - Metropolitan Area Network) uma verso
ampliada de uma LAN porque ambas utilizam tecnologias semelhantes. Uma MAN
pode ser privada ou pblica e pode abranger um grupo de escritrios vizinhos ou uma
cidade inteira [TAN97],
25
As redes metropolitanas so tratadas como uma categoria especial porque
elas tem um padro especial, o IEEE 802.6, que define dois barramentos aos quais todos
os computadores so conectados (figura 3.4).
Fig. 3.4 - Arquitetura da rede metropolitana.
Cada barramento tem um dispositivo que inicia a atividade de transmisso.
O trfego que se destina a um computador localizado direita do emissor utiliza o
barramento superior, e o trfego esquerda do emissor utiliza o barramento inferior
[TAN97],
3.1.3 Redes Geograficamente Distribudas
Redes Geograficamente Distribudas (Wide Area Networks - WANs)
abrangem uma ampla rea geogrfica, com freqncia um pas ou continente. Como o
custo de comunicao bastante elevado (circuitos para satlites e enlaces de
microondas), tais redes so normalmente gerenciadas por grandes operadoras (pblicas
ou privadas).
Tendo em vista as consideraes em relao ao custo, neste tipo de rede so
usados arranjos topolgicos especficos e diferentes daqueles utilizados em redes locais
para a interligao dos diversos mdulos processadores. Caminhos alternativos para a
interligao dos diversos mdulos processadores devem ser fornecidos, por questes de
confiabilidade.
26
3.2 Arquitetura TCP/tP
O termo arquitetura TCP/IP utilizado como designao comum para uma
famlia de protocolos de comunicao de dados, sendo que o Transmission Control
Protocol (TCP) e o Internet Protocol (IP) so apenas dois deles. O IP responsvel pelo
encaminhamento de pacotes de dados pelas diversas sub-redes desde a origem at seu
destino. O TCP tem por funo o transporte ponto-a-ponto confivel de mensagens de
dados entre dois sistemas. O IP um protocolo do tipo datagrama, operando, portanto,
no modo no orientado conexo, enquanto o TCP um protocolo de transporte
orientado conexo. Os protocolos TCP/IP podem, em conjunto, oferecer um servio
confivel. Para uso em redes de alta qualidade, onde a confiabilidade no assume
grande importncia, foi definido o protocolo UDP (User Datagram Protocol) que opera
no modo no orientado conexo e possui funcionalidades bem mais simples que o
TCP.
A arquitetura TCP/IP organizada em camadas como mostra a figura 3.5.
Aplicao
Transporte
Rede
Interface de Rede
Fig. 3.5 - Organizao da arquitetura TCP/IP.
Os protocolos na camada de interface de rede provem meios para que os
dados sejam transmitidos a outros computadores na mesma rede fsica. As principais
funes desta camada so: encapsulamento de datagramas IP em frames para
transmisso e a traduo de endereos IP em endereos fsicos de rede.
A camada de rede responsvel pela transferncia de dados atravs da rede,
desde a mquina de origem at a mquina de destino. Esta camada define o protocolo
ff, o qual no orientado conexo e no confivel.
27
A funo bsica da camada de transporte permitir a comunicao ponto-a-
ponto entre aplicaes [SOA95], Dois protocolos so definidos nesta camada, o TCP e o
UDP, que so detalhados nos prximos tpicos.
A camada de aplicao descreve as tecnologias usadas para fornecer
servios especializados para os usurios finais e administra os detalhes de uma
aplicao em particular [TEI96], As aplicaes interagem com o nvel de transporte
para enviar e receber dados.
3.3 TCP (Transmission Control Protocol)
O TCP fornece um servio confivel de transferncia de dados e opera no
modo orientado conexo. Ele foi projetado para funcionar com base em um servio de
rede sem conexo e sem confirmao. Desta maneira, ele se responsabiliza pela
recuperao de dados corrompidos, perdidos, duplicados ou entregues fora de ordem.
O servio TCP obtido quando tanto o transmissor quanto o receptor criam
pontos terminais, denominados sockets. Um socket local pode participar de vrias
conexes diferentes com sockets remotos e para isso utiliza o conceito de porta, onde
cada processo que est sendo atendido pelo TCP em um dado momento identificado
por uma porta diferente. Processos servidores que so muito usados como, por exemplo,
FTP e Telnet, so associados a portas fixas, as quais so chamadas de portas conhecidas
(well-known ports).
As conexes no TCP so ponto-a-ponto e transportam fluxos de dados em
ambas as direes caracterizando a transmisso fll-duplex. O TCP compatvel com
os processos de multicast e difuso.
Os dados trocados pelas entidades TCP transmissoras e receptoras esto na
forma de segmentos. Um segmento consiste em um cabealho fixo de 20 bytes (mais
uma parte opcional), seguido de zero ou mais bytes de dados [TAN95], O software TCP
define o tamanho destes segmentos e ainda se um segmento vai acumular dados de
vrias escritas ou dividir os dados de uma nica escrita em vrios segmentos. Quando
um segmento transmitido, a entidade TCP coloca uma cpia deste segmento em uma
fila de retransmisso e aciona um temporizador. Se a entidade transmissora TCP recebe
28
a confirmao da chegada dos dados, o segmento retirado da fila. Se o temporizador
expirar antes da chegada da confirmao de recebimento dos dados, o segmento
retransmitido. A figura 3.6 mostra o formato do segmento TCP.
29
3.3.2 Estabelecendo uma conexo
O protocolo de estabelecimento de conexo usado no TCP chamado de
handshake de trs vias (three-way handshake). Quando um processo TCP deseja
comunicar-se com outro processo TCP, uma seqncia de mensagens trocada entre os
processos. As mensagens trocadas identificam a conexo com nmeros de seqncia
baseados em relgios, que so utilizados para evitar que o estabelecimento de conexes
invlidas seja provocado pela duplicao de mensagens com pedido de abertura de
conexo [SOA95].
ser identificado porque ele possui um conjunto de bits SYN (sincronizao) que
informam um nmero de seqncia inicial. A segunda mensagem possui ambos os
conjuntos de bits SYN, do processo que iniciou o estabelecimento da conexo, e ACK
(confirmao) que contm um nmero de seqncia inicial do processo receptor,
indicando a confirmao de recebimento do primeiro segmento SYN. A mensagem final
do handshake uma confirmao utilizada para informar ao processo receptor que
ambos os lados concordam em que uma conexo foi estabelecida.
Conforme ilustra a figura 3.7, o primeiro segmento de um handshake pode
Mensagem da redeEnvia SYN
Recebe SYN
Envia ACK
Recebe SYN + ACK.
Envia ACK + 1Recebe ACK + 1
Fig. 3.7 - Handshake de Trs Vias.
30
3.3.3 Encerrando uma conexo
A operao close pode ser usada para encerrar uma comunicao entre dois
processos que utilizam o TCP. O TCP usa, internamente, um handshake de trs vias
modificado para encerrar as conexes [COM97], Para isso o processo TCP transmissor
completa a transmisso dos dados restantes, espera que o processo receptor os confirme
e, em seguida envia um segmento com o conjunto de bits FIN, que indicam o
encerramento da conexo, conforme mostra a figura 3.8. O processo receptor confirma
o recebimento do segmento FIN enviando ao processo transmissor um segmento ACK,
e em seguida envia o seu segmento FIN. Ento, o processo transmissor envia um
segmento ACK confirmando que recebeu o segmento FIN do processo receptor.
Mensagem da rede
Fig. 3.8 - Handshake de Trs Vias utilizado para encerrar conexes.
3.4 UDP (User Datagram Protoco)
O UDP fornece um servio mnimo de transporte em redes que usam o
protocolo IP, permitindo que as aplicaes tenham acesso direto aos servios da camada
de rede. O UDP opera no modo sem conexo e fomece um servio de transporte de
dados no-confivel. O fato de ser no orientado conexo significa que uma
mensagem pode ser enviada a qualquer momento, sem qualquer tipo de aviso,
negociao ou preparao com a mquina destino. esperado que a mquina destino
31
esteja preparada para receber e processar as mensagens, as quais so tambm chamadas
de datagramas. O fato do protocolo no ser confivel significa que :
No existe nenhuma garantia de que os datagramas sejam entregues no
destino.
No existe registro dos datagramas enviados.
Os datagramas podem chegar fora de ordem.
Os datagramas podem chegar duplicados.
No existe controle de fluxo.
No existe controle de congestionamento na rede.
Esta falta de confiabilidade toma necessria a programao, dentro do
programa de aplicao, de confirmaes de recebimento dos dados por parte do
processo receptor, timeouts e retransmisses.
O UDP se toma ideal quando no necessrio controle de fluxo nem
manuteno das seqncias de mensagens enviadas. Muitas aplicaes cliente-servidor
que tem uma solicitao e uma resposta utilizam o UDP, como por exemplo: Network
File System (NFS), Simple Network Management Protocol (SNMP) e Domain Name
System (DNS).
O servio prestado pelo UDP acrescenta dois servios que a camada IP no
disponibiliza:
A capacidade de distinguir um entre os vrios processos que estejam
usando os servios da camada de rede IP, numa mesma mquina.
A capacidade de verificao da exatido dos dados recebidos.
Assim como no TCP, o mecanismo que permite distinguir um entre
mltiplos destinos independentes dentro de uma mesma mquina implementado
atravs do conceito de portas.
O mecanismo que permite verificar se os dados chegaram ao destino
intactos implementado atravs do campo checksum no cabealho da mensagem UDP.
Um segmento UDP consiste em um cabealho de 8 bytes seguido dos dados,
como mostra a figura 3.9.
32
I I I I I 1 I 1 I I... 1 I 1 I I_1 I I I 1,1.Source port Destination port
UDP length UDP checksum
Fig. 3.9 - O segmento UDP.
3.5 Sockets
Sockets constituem uma interface de programao de aplicaes (API), e
no Unix foram implementados como um conjunto de chamadas de sistema para
comunicao entre computadores na arquitetura TCP/IP. A seguir so apresentadas as
principais chamadas de sistema relacionadas criao e manipulao de sockets no
sistema operacional Unix.
Criao de um socket
A chamada de sistema socket cria os sockets solicitados. So necessrios
trs argumentos inteiros e retomado um resultado inteiro. Sua forma a seguinte:
resultado = socket (pf, tipo, protocolo);
O argumento p f especifica a famlia de protocolos a ser usada com o socket
Os principais so AF_INET (para protocolo IPv4), AFINET6 (para protocolo IPv6) e
AF LOCAL (para protocolos Unix Domain). O argumento tipo especifica o tipo de
comunicao a ser usada. Entre os tipo possveis esto o servio de transmisso
confivel (SOCKJSTREAM) e o servio de transmisso de datagrama sem conexo
(SOCKDGRAM), assim como um tipo bruto (SOCK RAW) que permite que
programas privilegiados acessem protocolos de nvel inferior ou interfaces de redes. O
argumento protocolo geralmente setado para zero, exceto para sockets raw. Quando
executada com sucesso, a chamada de sistema socket retoma um valor inteiro, no-
negativo, chamado descritor do socket [COM98], Seno, o valor de retomo -1.
33
Fechamento de um socket
Quando um processo acaba de utilizar um socket, ele invoca a chamada de
sistema close que tem a seguinte forma:
close (sockfd);
O argumento sockfd especifica o descritor de socket a ser fechado.
Internamente, uma chamada close decrementa a contagem de um socket e o destri se a
contagem chegar a zero [COM98], Quando executada com sucesso, a chamada de
sistema close retoma zero, seno retoma -1 [STE97],
Especificao de um endereo local
Uma vez criado um socket, possvel associar um endereo (TCP, UDP ou
IP) a ele atravs da chamada de sistema bind que tem o seguinte formato:
bind (socket, localaddr, addrlen);
O argumento socket o descritor do socket a ser vinculado. O argumento
localaddr um endereo de memria para a estrutura que especifica o endereo local ao
qual o socket deve ser vinculado e o argumento addrlen um inteiro que especifica o
comprimento do endereo medido em bytes. Quando executada com sucesso, a
chamada de sistema bind retoma zero, seno retoma -1 [STE97],
Vinculao de sockets a endereos destinos
Um socket criado no estado desconectado, isto , ele no est associado a
nenhum endereo destino. A chamada de sistema connect vincula um destino
permanente a um socket, colocando-o para o estado conectado. O formato desta
chamada de sistema o seguinte:
connect (socket, destaddr, addrlen);
O argumento socket o descritor do socket a ser conectado. O argumento
destaddr um endereo de memria para uma estrutura de socket que indica o
endereo de destino ao qual o socket deve ser vinculado. O argumento addrlen indica o
tamanho, em bytes, da estrutura de endereo de socket. Quando executada com sucesso,
34
a chamada de sistema connect retoma zero, seno retoma -1 [STE97].
Envio de dados atravs de um socket
Existem cinco chamadas de sistema possveis de serem usadas para
transmitir dados: send, sendto, sendmsg, write e writev. Send, write e wriev funcionam
somente com sockets conectados porque no permitem que o processo solicitante
especifique um endereo de destino. A chamada de sistema send tem a seguinte forma:
send socket, message, length, flags);
O argumento socket especifica o socket a ser usado, o argumento message
fomece o endereo dos dados a serem enviados e o argumento length especifica o
nmero de bytes a serem enviados. O argumento flags controla a transmisso,
permitindo, por exemplo, que o solicitante determine que a mensagem seja enviada sem
usar as tabelas de roteamento locais. Quando executada com sucesso, a chamada de
sistema send retoma o nmero de bytes transmitidos, seno retoma -1.
Recebimento de dados atravs de um socket
Assim como para o envio, existem cinco chamadas de sistemas que podem
ser utilizadas para recebimento de dados: read, readv, recv, recvfrom,e recvmsg.
Os processos usam a chamada de sistema recv para receber dados de um
socket conectado. Sua forma a seguinte:
recv (socket, buffer, length, flags);
O argumento socket especifica um descritor de socket do qual os dados
devem ser recebidos. O argumento buffer especifica o endereo da memria na qual a
mensagem deve ser colocada e o argumento length especifica o comprimento da rea de
buffer. O argumento flags permite que o processo solicitante controle a recepo dos
dados [COM98], Quando executada com sucesso, a chamada de sistema recv retoma o
nmero de bytes recebidos, seno retoma -1.
35
Especificao de um comprimento de fila para um servidor
A chamada de sistema listen usada por processos servidores para preparar
um socket para conexes de entrada. Um processo servidor chama listen para informar
ao sistema operacional que o software do protocolo deve enfileirar as vrias solicitaes
simultneas que chegam ao socket. O formato desta chamada de sistema o seguinte:
listen (socket, qlength);
O argumento socket especifica o descritor de socket a ser usado por um
servidor. O argumento qlength especifica o comprimento da fila de solicitao para
aquele socket. Se a fila estiver cheia quando uma solicitao chegar, o sistema
operacional recusa a conexo e descarta a solicitao. Esta chamada de sistema usada
apenas por sockets que selecionaram um servio de entrega confivel. Quando
executada com sucesso, listen retoma zero; seno retoma -1 [STE97],
Aceitando conexes
A chamada de sistema accept utilizada por processos servidores que
desejam aguardar uma conexo. Uma chamada accept permanece bloqueada at que
uma solicitao de conexo chegue. Seu formato o seguinte:
newsock = accept (socket, addr, addrlen);
O argumento socket especifica o descritor de socket a ser usado. O
argumento addr um ponteiro para um endereo de memria para uma estrutura do tipo
sockaddr e o argumento addrlen um ponteiro para um inteiro. Quando uma solicitao
chega, o sistema preenche o argumento addr com o endereo do cliente que fez a
solicitao e retoma um novo descritor de socket ao solicitante. O socket original
permanece aberto e o processo servidor pode continuar recebendo solicitaes. Quando
executada com sucesso, a chamada de sistema accept retoma um novo descritor de
socket, seno retoma -1.
36
3.6 Servidores Concorrentes
Servidores concorrentes com sockets TCP/IP [STE98] constituem uma
tcnica muito utilizada na criao de processos servidores. Nesta tcnica, o servidor fica
a espera de novas conexes atravs do socket listenfd, como mostra a figura 3.10 (a).
Quando uma requisio de conexo chega ao servidor, ela imediatamente aceita pelo
ncleo do sistema operacional e um novo socket, connfd, criado, como mostra a figura
3.10 (b). Em seguida, o processo servidor executa um fork criando um processo servidor
filho para atender esta requisio, conforme ilustra a figura 3.10 (c). Ambos os sockets,
listenfd e connfd, so compartilhados entre os processos pai e filho. A figura 3.10 (d)
apresenta o estado final dos sockets, onde o processo servidor pai fecha o socket connfd
e continua esperando requisies de conexes no socket listenfd e o processo servidor
filho fecha o socket listenfd e atende a requisio pelo socket connfd.
cotmect () requisio
< .......................conexo
1 listenfd connect () | ^conexo^ ' listenfd
connfd
(a) (b)
Clienteconexo
Servidor Pai listenfd
37
4. Sistemas Computacionais com Memria Distribuda
Neste captulo, so apresentados os multicomputadores e os clusters de
computadores. No tpico 4.1 so apresentados os principais conceitos relacionados aos
multicomputadores e no tpico 4.2 so introduzidos os clusters de computadores.
4.1 Multicomputadores
No subtpico 4.1.1 exposta uma classificao de arquiteturas de
computadores para posicionar os multicomputadores nesse contexto, no subtpico 4.1.2
so descritas as redes de interconexo para multicomputadores e no subtpico 4.1.3
apresentado o ambiente multicomputador Crux.
4.1.1 Classificao
Do ponto de vista da arquitetura de computadores, possvel situar os
multicomputadores atravs da classificao de Flynn (1972), a qual se baseia sobre duas
caractersticas: o nmero de fluxos de intrues e o nmero de fluxos de dados. A
classificao est dividida em quatro classes, a saber:
SISD (Single Instruction Stream - Single Data Stream): existe um nico
fluxo de instrues que opera sobre um nico fluxo de dados. Nesta classe
esto includas as mquinas seqenciais convencionais, onde existe somente
uma unidade de controle que decodifica seqencialmente as instrues, que
por sua vez manipulam um conjunto de dados.
SIMD {Single Instruction Stream - Multiple Data Stream): existe um nico
fluxo de instrues que opera sobre mltiplos fluxos de dados. Este modelo
adequado para aplicaes envolvendo clculos matriciais intensivos.
38
MISD (Multiple Instruction Stream - Single Data Stream): existem
mltiplos fluxos de dados autnomos de instrues que operam sobre um
fluxo de dados nico. Nenhum computador conhecido segue esse esquema,
sendo portanto, um esquema terico.
MIMD ( Multiple Instruction Stream - Multiple Data Stream): existem
mltiplos fluxos autnomos de instrues que operam sobre mltiplos
fluxos de dados. Os computadores paralelos de uso geral se enquadram
nesta classe.
De forma complementar, um segundo nvel de classificao pode ainda ser
feito, apresentando os computadores da arquitetura MIMD divididos em dois grupos:
aqueles que possuem memria compartilhada, chamados de multiprocessadores, e
aqueles que no possuem memria compartilhada, chamados de multicomputadores.
Multiprocessadores: existe um nico espao de endereamento virtual que
compartilhado por todos os processadores. Todas as mquinas
compartilham a mesma memria.
Multicomputadores: cada mquina tem sua memria privativa. A interao
se d atravs de troca de mensagens pela rede de interconexo.
4.1.2 Redes de interconexo
Redes de interconexo so constitudas de entidades de hardware (canais de
comunicao) e software (controle do estabelecimento dos canais) que so projetadas
para facilitar a comunicao entre processos e processadores [MER96],
A topologia de uma rede de interconexo pode ser esttica ou dinmica. Em
uma rede esttica os elementos so conectados por meio de ligaes ponto-a-ponto
fixas, que no mudam durante a execuo do programa. Uma rede dinmica formada
por canais chaveados que so configurados dinamicamente, conforme a demanda do
programa em execuo.
39
Redes Estticas
Multicomputadores com redes de interconexo estticas apresentam canais
ligando direta e estaticamente os ns sem a possibilidade de reconfigurao [MER96],
A comunicao entre dois ns que no estejam ligados diretamente se d por intermdio
de outros ns.
Vrias estruturas de redes estticas so utilizadas em multicomputadores e a
seguir so mostradas algumas delas.
A grelha quadrada consiste de uma coleo de ns conectados como mostra
a figura 4.1. caracterizada por ns interiores com quatro vizinhos. Diversos
processadores matriciais, como o Illiac IV [COR99], utilizam esse tipo de rede.
Fig. 4.1 - Grelha.
O hipercubo constitui uma rede de interconexo esttica de dimenso k,
tendo 2k ns interconectados de forma que cada n ligado a k ns vizinhos. A figura
4.2 mostra o formato de uma rede hipercbica de dimenso trs.
Fig. 4.2 - Hipercubo.
40
O torus uma variante da grelha, obtida pela interligao dos ns externos
das mesmas linhas e colunas, conforme mostra a figura 4.3. O grau dos ns do torus
constante.
Fig. 4.3 - Torus.
Redes Dinmicas
As redes dinmicas apresentam estrutura reconfigurvel conforme a
demanda do programa em execuo e so mais utilizadas em aplicaes de propsito
geral onde os padres de comunicao so imprevisveis. Topologias desse tipo de rede
so classificadas em barramentos, redes multiestgio e crossbor.
O barramento formado por um conjunto de fios e conectores que
estabelecem um meio de comunicao comum a todos os elementos por ele conectados,
conforme a figura 4.4. Possui baixo custo e limitao na sua capacidade de
transferncia, acarretando a degradao de desempenho do sistema quando
sobrecarregado.
Borrcmerto
Cands Fsicos
Fig. 4.4 - Barramento.
41
Redes multiestgio so constitudas de vrios circuitos de chaveamento
eletrnico em cada estgio. Os circuitos de chaveamento eletrnico so configurados
dinamicamente e permitem o estabelecimento de um caminho direto entre qualquer par
entrada-sada. Vrios estgios aumentam o tempo para conectar dois ns, o que se toma
significativo em redes de muitos estgios. Um exemplo de rede multiestgio a rede
mega como mostra a figura 4.5.
Fig. 4.5 - Rede mega 8x8.
Um crossbar uma rede de interconexo que possui um ponto de
cruzamento para uma entrada e uma sada como mostra a figura 4.6. Apenas um ponto
de contato precisa ser fechado para estabelecer a conexo de qualquer par de ns.
Entradas
S a d a s
Fig. 4.6 - Crossbar 4x4.
42
4.1.3 Ambiente Multicomputador Crux
O multicomputador Crux visa disponibilizar um ambiente para execuo de
programas paralelos expressos como redes de processos comunicantes. A seguir
apresentada a arquitetura desse ambiente multicomputador.
Arquitetura
O multicomputador constitui-se por um conjunto de ns de trabalho, os
quais possuem processadores com memria privativa e vrios canais fsicos. Esses ns
executam os processos das redes de processos comunicantes. Existe tambm uma rede
de trabalho, uma rede de controle e um n de controle que so explicados a seguir.
A rede de trabalho (um crossbar) faz o transporte de mensagens entre dois
pares de ns de trabalho quaisquer. Esse transporte efetuado atravs de canais fsicos
diretos.
O n de controle, atravs de um processo especfico, configura a rede de
trabalho conforme a demanda do programa paralelo em execuo nos demais ns e
responsvel tambm pela atribuio/liberao de ns de trabalho.
A rede de controle, como o prprio nome indica, transporta mensagens de
controle entre os ns de trabalho e o n de controle. A figura 4.7 apresenta a arquitetura
do multicomputador Crux.
rede de trabalho (crossbar)
Canal de configurao
Canal de comunicao
e controle
N de trabalho
N de trabalho Canais de
comunicao
rede de controle
Fig. 4.7 - Arquitetura do multicomputador Crux.
43
4.2 Cluster de Computadores
No subtpico 4.2.1 apresentada uma viso geral sobre o assunto, no
subtpico 4.2.2 so mostrados os mecanismos de comunicao em clusters e no
subtpico 4.2.3 so descritos projetos que envolvem a montagem e utilizao de
clusters.
4.2.1 Viso Geral
Clusters de computadores vem ganhando crescente destaque como ambiente
para processamento paralelo. Basicamente, um cluster uma coleo de computadores
pessoais ou estaes de trabalho conectados por uma rede, montados com componentes
comerciais [RIB01].
As principais alternativas para processamento paralelo de alto desempenho
oferecida at recentemente eram os multiprocessadores e os multicomputadores. Essas
mquinas apresentam preos muito elevados altas taxas de obsolescncia, agravadas
pelo rpido desaparecimento do mercado de modelos e fabricantes. O expressivo
aumento da confiabilidade e do desempenho de computadores pessoais, estaes de
trabalho e componentes de redes de computadores viabilizou o uso de clusters como
uma alternativa de baixo custo para processamento paralelo em aplicaes que exigem
muitos recursos computacionais.
A programao paralela em um cluster pode se apoiar em sistemas
operacionais como o Linux e pacotes de programao paralela Como PVM (Parallel
Virtual Machin) [PVM01] ouMPI (Message Passing Interface) [MPIOl],
A organizao fsica de um cluster normalmente composta pelos
computadores interligados por hubs ou switches, como mostra a figura 4.8.
44
Fig. 4.8 - Estrutura genrica de um cluster.
4.2.2 Sistema Operacional em Clusters
De modo geral, o sistema operacional de um cluster possui objetivos
similares aos de uma estao de trabalho [FEROl], Estes objetivos so os de escalonar
os mltiplos processos dos usurios num conjunto nico de componentes de hardware
(gerenciamento de recursos, tendo como nfase os mltiplos processadores e
memrias), e os de prover abstraes para o software de alto nvel. As abstraes
incluem a proteo de acesso do usurio a componentes crticos, processos e
mecanismos de comunicao.
Existem diversas caractersticas desejveis em um sistema operacional de
clusters, tais como:
Transparncia: O usurio deve ter a viso de uma nica mquina, ao
invs de diversas mquinas interconectadas;
Estabilidade: O ambiente de execuo deve ser robusto porque as
aplicaes executadas nos clusters, pela sua complexidade, costumam ser
de longa durao.
Desempenho: O desempenho muitas vezes um critrio essencial para
um sistema operacional de cluster, pois os clusters so construdos para a
obteno de alto desempenho.
45
Escalabilidade: Um cluster deve ter a capacidade de ser aumentado pela
incluso de novos ns para aumentar o desempenho global.
A forma de se obter as caractersticas descritas anteriormente o
aproveitamento de um sistema operacional convencional estendido por uma camada de
software. Essa camada deve oferecer servios capazes de satisfazer as principais
necessidades da programao paralela.
4.2.3 Mecanismos de Comunicao em Clusters
A comunicao um fator fundamental no desempenho dos clusters. A
combinao de diferentes tecnologias de hardware e software nessa rea determinam o
desempenho global do cluster. A seguir, feita uma abordagem das principais
tecnologias de hardware e de software para comunicao de clusters.
Tecnologias de Hardware
Como tecnologias de hardware utilizada em clusters, pode-se citar:
HiPPi
O HiPPI (High Performance Parallel Interface) [TAN97] fornece grande
largura de banda para transferncias de dados. Essa tecnologia foi projetada com a
inteno de fornecer um meio de comunicao entre mquinas com grandes exigncias
de E/S, como os supercomputadores. O projeto desta tecnologia inclui a utilizao de
comutadores crossbar, permitindo a construo de redes locais de alta velocidade.
HiPPi seriais vem tomando-se populares com o uso de fibra tica, porm
ainda so caras.
46
SCI
A tecnologia SCI {Scalable Coherent Interconnect) tem por objetivo prover
um mecanismo de alto desempenho que suporte com coerncia o acesso memria
compartilhada atravs de um grande nmero de mquinas.
Em SCI, a transferncia de dados d-se por comunicao implicita atravs
de acessos remotos memria. Cada n pode mapear para seu prprio espao de
endereamento segmentos remotos de memria pertencentes a qualquer outro n,
atuando como se tais segmentos fossem locais. A comunicao real levada a efeito de
forma transparente pelo hardware SCI por exemplo, placas de rede , que se
responsabiliza pelas leituras e escritas em segmentos remotos [CIA99].
Myrinet
Myrinet uma tecnologia de rede de alta velocidade que fundamenta-se na
comunicao por troca de mensagens. Foi desenvolvida para se tomar uma tecnologia
de interconexo de baixo custo baseada em chaveamento e comunicao por pacotes,
principalmente para a interconexo de clusters de computadores de diferentes tipos.
As caractersticas que distinguem a Myrinet das demais tecnologias so:
portas e interfaces full-duplex alcanando 1.28 Gbps para cada link; controle de fluxo,
de erro, e monitoramento contnuo dos links; baixa latncia, switches crossbar com
monitoramento para aplicaes de alta disponibilidade; suporte a qualquer configurao
de topologia; interfaces das estaes possuem programa de controle para interagir
diretamente com os processos para realizar comunicao com baixa latncia [MYROl],
Fast Ethernet
A Ethernet a tecnologia mais utilizada em redes locais, tendo sido
especificada pela norma IEEE 802.3. Uma rede Ethernet permite normalmente
velocidades de at 10 Mbps na transmisso dos pacotes. O Fast Ethernet a migrao
47
desta tecnologia para a velocidade para 100 Mbps. As demais caractersticas do padro
Ethernet, tais como o formato do frame, a quantidade de dados que um frame pode
conter e o mecanismo de controle de acesso ao meio so mantidas [COM98],
Tcnicas de Software
Em clusters de computadores, que so arquiteturas com memria
distribuda, a troca de mensagens a forma natural de comunicao entre processos. A
seguir so mostrados as principais tcnicas de software para comunicao em clusters.
Mensagens Ativas
Mensagens ativas [CIA99] constituem uma forma derivada do modelo
clssico de envio e recebimento de mensagens. O objetivo desse mecanismo reduzir o
overhead da comunicao sobre o desempenho das aplicaes.
Cada mensagem que chega no processo destino ativa uma funo criada
pelo programador. Essa funo atua como um fluxo de execuo que imediatamente
processa a mensagem e informa ao fluxo de execuo principal sobre a sua chegada.
Isto elimina a necessidade de grande quantidade de armazenamento temporrio para
mensagens, aumentando consideravelmente a velocidade nas comunicaes.
Atualmente muitos sistemas exploram mecanismos de comunicao
baseados no modelo de mensagens ativas [CIA99],
Chamada de Procedimento Remoto
Chamadas de procedimentos remotos constituem um padro bastante
difundido de comunicao em sistemas distribudos cliente-servidor. Essa tecnologia
prov uma estrutura para o projeto de aplicaes cliente-servidor onde os servios
remotos so visualizados como procedimentos. Tais servios so requisitados pelos
clientes atravs da chamada de procedimentos do servidor pm parmetros adequados.
48
O servio chamado pode tambm retomar um resultado. Esta semntica vista pelos
programadores como muito similar a programao seqencial [DIE01],
PVM
PVM (.Parallel Virtual Machin) fornece uma interface de programao
para controle de processos e troca de mensagens. O objetivo do PVM fornecer um
ambiente de programao paralela e distribuda, onde os programas so executados em
mquinas heterogneas interligadas. O PVM foi inicialmente implementado em
mquinas Unix usando o protocolo TCP/IP. Atualmente existem verses para diversos
outros sistemas, garantindo larga portabilidade.
O PVM utiliza o conceito de mquina paralela virtual. Esta mquina virtual
formada por um conjunto de mquinas fsicas interligadas, usadas pelos usurios
como uma mquina paralela para execuo de programas paralelos. Os processos de um
programa paralelo se comunicam por troca de mensagens [PVMOl].
MPi
MPI (Message Passing Interface) inclui a definio de interfaces de um
conjunto de rotinas para comunicao por troca de mensagens. O MPI prope uma
padronizao para a interface de troca de mensagens para mquinas paralelas com
memria distribuda, a fim de aumentar a portabilidade dos programas entre as
diferentes mquinas.
O ncleo do MPI formado por rotinas de envio e recepo de mensagens
entre processos. O MPI define ainda vrias outras rotinas, entre as quais se destacam