um servidor de arquivos para um cluster de … · aspectos mais relevantes sobre os protocolos de...

88
UNIVERSIDADE FEDERAL DE SANTA CATARINA PROGRAMA DE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO Patricia Delia Méa Plentz UM SERVIDOR DE ARQUIVOS PARA UM CLUSTER DE COMPUTADORES Dissertação submetida à Universidade Federal de Santa Catarina como parte dos requisitos para a obtenção do grau de Mestre em Ciênçia da Computação. Prof. Dr. Thadeu Botteri Corso Florianópolis, dezembro de 2001.

Upload: dinhkhanh

Post on 20-Jan-2019

212 views

Category:

Documents


0 download

TRANSCRIPT

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