Você está na página 1de 15

1

ASPCTOS DE PADRES DE HARDWARE E SOFTWARE DE SISTEMAS DISTRIBUDOS ATUAIS


Autor: Cleyton Pereira dos Santos 1

Resumo: Este artigo faz conhecer os aspectos dos padres de construo de sistemas distribudos do ponto de vista do hardware e do software. Demonstra na atualidade qual a importncia deste tipo de sistema, onde estes tm sido empregados e quais as solues esses modelos de computao distribuda provem, tendo em vista a mudana do mundo fragmentado para um mundo globalizado e a sua transformao para uma aldeia global.

Palavras Chave: Sistemas Distribudos, Objetos Distribudos.

1. INTRODUO As organizaes esto usando as mais variadas tecnologias de computao e comunicao para desenvolver e divulgar seus produtos e servios, o que est acontecendo um desenvolvimento substancial da rea de tecnologia da informao, haja vista as vantagens trazidas, tais como: facilidade de armazenamento e recuperao da informao, racionalizao de rotinas, velocidade de respostas, planejamento e controle, segurana, reduo de custos, entre outras. No mesmo vis, considerando a evoluo da computao pessoal, nas residncias de pessoas comuns difcil encontrar hoje em dia um computador sem acesso internet. Deste modo possvel visualizar, numa anlise da conjuntura atual, que est havendo uma evoluo das tecnologias de informao tanto corporativa quanto domstica. Desse modo, com o surgimento da internet, a qual permite a conexo entre redes corporativas e residncias, o que tem se configurado em toda sociedade de fato o que McLuhan (1977, p. 58) formula sobre o mundo de hoje: "A nova interdependncia eletrnica recria o mundo imagem de uma aldeia global. Essa evoluo tanto dos computadores, quanto das interconexes de rede entre eles, s foi possvel devido aos sistemas distribudos, os quais combinam hardware e software de alto padro. Um sistema distribudo pode ser entendido como o resultado da integrao de
1

Tc. Adm. De Empresas; Bacharel em Sistemas de Informao; Ps-Graduado em

Desenvolvimento de Sistemas para Internet.

sistemas computacionais autnomos combinados de forma a atingir um objetivo comum (COULOURIS, 2005). Basicamente os sistemas distribudos foram concebidos tendo como objetivo compartilhar recursos de computadores autnomos distantes um do outro, conectados atravs de uma rede e um middleware de distribuio, funcionando de modo transparente para o usurio, como um todo nico, integrado de facilidade computacional. 2. HARDWARE DOS SISTEMAS DISTRIBUDOS Os sistemas distribudos geralmente so dispostos em camadas como mostra a Figura 01, esses sistemas demandam recursos de hardware; o software por sua vez determina a amplitude a qual o sistema distribudo alcana e tambm esconde a confuso e a natureza heterognea do hardware subjacente fornecendo uma mquina virtual em que as aplicaes podem facilmente serem executadas (TANENBAUM, 2002).

Fonte: (BARRETO, 2004)

Figura 01: Sistema Distribudo em Camadas Arquiteturas de hardware para sistemas distribudos foram surgindo ao longo do tempo, causado, tambm, como resultado dos aprimoramentos das tecnologias de processamento de ambientes computacionais distribudos. O hardware de sistemas distribudos pode ser organizado de diversas maneiras, especialmente nos aspectos de conexo e comunicao, entre os componentes e no tipo de acesso memria. Dentre as arquiteturas usadas em sistemas distribudos, o paralelismo a escolha ideal, isto devido ao fato do paralelismo oferecer uma das formas de obter um tempo de resposta melhor em sistemas de um nico processador, alm de haver uma reduo no custo final ao ser utilizado sistemas de processamento paralelo. Segundo a taxonomia de Flynn (1995), a qual leva em considerao o fluxo de instruo e o fluxo de dados, as mquinas podem ser: SISD (Single instruction stream, single data stream) Um nico fluxo de

instrues e um nico fluxo de dados; SIMD (Single instruction stream, multiple data stream) Um nico fluxo de instrues e mltiplo fluxo de dados; MIMD (Multiple instruction stream, multiple data stream) Mltiplo fluxo de instrues e mltiplo fluxo de dados. Para Tanenbaum (1995), as mquinas MIMD podem ser divididas nos chamados multiprocessadores e multicomputadores. O hardware quanto conexo, tanto para multiprocessadores como para multicomputadores pode ser do tipo barramento (bus) e chaveamento (switch). Quanto comunicao o hardware pode ser fortemente acoplado (tightly coupled) e fracamente acoplado (loosely coupled). A Figura 02 ilustra os arranjos de hardware possveis para sistemas distribudos quanto utilizao da memria.

Fonte: (BARRETO, 2004)

Figura 02 Utilizao da Memria em Hardware de Sistemas Distribudos 3. ASPECTOS DE SOFTWARE DOS SISTEMAS DISTRIBUDOS Tanembaum (2002) faz uma abordagem sobre o software dos sistemas distribudos onde possvel verificar que o hardware constitui um elemento importante para sistemas distribudos, mas o software o fator determinante da amplitude alcanada pelos sistemas distribudos atuais. Os softwares de sistemas distribudos so muito parecidos com os sistemas operacionais tradicionais. Primeiro eles agem como gerentes de recurso para hardware subjacente, permitindo mltiplos usurios e aplicaes compartilharem recursos como a CPU, memria, dispositivos perifricos, a rede e dados de todos os tipos.

Segundo, e possivelmente o mais importante, que os sistemas distribudos tentam esconder a complexidade e a natureza heterognea do hardware subjacente pelo provimento de uma mquina virtual na qual as aplicaes podem ser facilmente executadas. Para entender a natureza dos sistemas distribudos preciso olhar para os sistemas operacionais em relao aos computadores distribudos. Sistemas Operacionais para computadores distribudos podem ser divididos dentro de duas categorias: sistemas fortemente acoplados e sistemas fracamente acoplados. Nos sistemas fortemente acoplados, os sistemas operacionais essencialmente tentam manter uma viso global simples dos recursos gerenciados. Os sistemas fracamente acoplados podem ser pensados como uma coleo de computadores, cada um rodando o seu prprio sistema operacional. Contudo, estes sistemas operacionais trabalham para fazer seus prprios servios e recursos disponveis. Esta distino entre sistemas fortemente acoplados e fracamente acoplados relacionada classificao de hardware dada no tpico anterior. Um sistema operacional fortemente acoplado geralmente referenciado como um sistema operacional distribudo (DOS Distributed Operating System), e usado para gerenciar multiprocessadores e multicomputadores homogneos. Como sistemas operacionais monoprocessados tradicionais, o principal objetivo dos sistemas operacionais distribudos, como j apresentado, o de esconder a confuso de gerenciamento do hardware subjacente de tal forma que possa ser compartilhado por processos mltiplos (TANENBAUM, 2002). Os sistemas operacionais de rede fracamente acoplados (NOS Network Operating System) so usados em sistemas de multicomputadores heterogneos. Embora controlar o hardware subjacente seja algo importante para o NOS, a distino dos sistemas operacionais tradicionais vem do fato de que os servios locais so disponibilizados aos clientes remotos. Para ser realmente um sistema distribudo, devem ser acrescentados melhoramentos aos servios de rede do sistema operacional, tal qual uma manuteno melhor para a transparncia da distribuio. Estes realces conduzem ao que conhecido como middleware, e situa-se no corao dos sistemas distribudos modernos. (TANENBAUM, 2002, p. 22). No Quadro 02 mostrado um resumo dos sistemas operacionais em relao a sistemas distribudos. Sistema DOS NOS Descrio SO fortemente acoplado para multiprocessadores e multicomputadores homogneos SO fracamente acoplado para multicomputadores Objetivo Principal Esconde e gerencia recursos de hardware Oferece servio local

Middleware

(LAN e WAN) para clientes remotos Camada adicional no topo do NOS, implementado Fornea a transparncia para servios de finalidade geral da distribuio

Quadro 02: Sistemas Operacionais em Relao a Sistemas Distribudos 4. SISTEMAS OPERACIONAIS MONOPROCESSADOS Os sistemas operacionais tm sido construdos tradicionalmente para gerenciar computadores como uma nica CPU. O principal objetivo destes sistemas permitir a usurios e aplicaes um caminho fcil de compartilhar recursos como a CPU, a memria principal, discos e dispositivos perifricos. Compartilhar recursos significa que diferentes aplicaes podem fazer uso de algum hardware isolado de alguma forma. Para uma aplicao aparece como recursos prprios, e podem estar sendo executas diversas aplicaes em algum sistema a qualquer hora, cada um com seu prprio conjunto de recursos. Neste aspecto, dito ao sistema operacional para implementar uma mquina virtual, oferecendo facilidade multitarefa para as aplicaes. mostrado na Figura 03 como fica o esquema de funcionamento de um sistema monoprocessado (TANENBAUM, 2002, p. 23).

Fonte: (BARRETO, 2004) Figura 03: Aplicaes separadas do sistema operacional atravs de um micro kernel 5. SISTEMAS OPERACIONAIS MULTIPROCESSADOS Uma extenso importante, mas freqentemente no to bvia aos sistemas operacionais monoprocessados o suporte a mltiplos processadores que tm o acesso a uma memria compartilhada. Conceitualmente a extenso simples, na qual todas as estruturas de dados necessitadas pelo sistema operacional para controlar o hardware, incluindo as CPUs mltiplas, esto colocadas na memria compartilhada. A principal diferena que estes dados so agora acessveis por processadores mltiplos, de modo que tenham que ser protegidos contra o acesso concorrente para garantir consistncia.

Contudo, muitos sistemas operacionais, especialmente aqueles para PCs e workstations, no podem manipular a CPU facilmente. O motivo que esses sistemas operacionais tm sido projetados como programas monolticos para serem executados somente com um thread de controle simples. Adaptar tais sistemas operacionais para multiprocessadores significa geralmente re-projetar e re-implementar o kernel inteiro. Os sistemas operacionais modernos so projetados a princpio para poderem manipular mltiplos processadores. A idia que toda a comunicao seja feita pela manipulao de dados em posies de memria compartilhadas, e que esses dados sejam protegidos de acesso concorrente (TANENBAUM, 2002, p. 25). 6. SISTEMAS OPERACIONAIS MULTICOMPUTADORES Sistemas operacionais para multicomputadores tm estrutura e complexidade totalmente diferente em comparao com os sistemas operacionais multiprocessados. Em um sistema multicomputador, vrios processadores, com memrias privadas conhecidos como ns, so conectados atravs de um hardware especializado que envia mensagens entre eles, em alta velocidade (TANENBAUM, 2002). A figura 04 mostra um esquema de um sistema operacional multicomputador distribudo.

Fonte: (TANENBAUM, 2002) Figura 04: Estrutura Geral de um Sistema Operacional Multicomputador 7. SISTEMAS DE MEMRIA COMPARTILHADA DISTRIBUDA Nos multiprocessadores (memria compartilhada), duas ou mais CPUs compartilham uma memria principal comum. Qualquer processo ou processador pode ler ou escrever qualquer palavra na memria compartilhada simplesmente movendo os dados para o local determinado. Ao contrrio, nos multicomputadores (memria distribuda), cada CPU tem sua prpria memria privada, sendo que a comunicao entre as mquinas realizada por troca de

mensagens via rede (TANENBAUM, 1995). Por causa das caractersticas apresentadas no pargrafo anterior houve uma pesquisa considervel em emulao de memria compartilhada em multicomputadores. O objetivo era fornecer uma mquina de memria virtual compartilhada, funcionando em um multicomputador, para que as aplicaes possam ser escritas usando o modelo compartilhado de memria mesmo que esta no seja atual. O sistema operacional do multicomputador representa um papel crucial aqui (TANENBAUM, 2002). A Figura abaixo mostra a arquitetura de um sistema de memria compartilhada distruibuda.

Fonte: (NAVAUX, 2004) Figura 05: Estrutura Geral de um Sistema de Memria Compartilhada Distribuda 8. SISTEMAS OPERACIONAIS DE REDE um tipo de sistema operacional caracterizado por conter facilidades de comunicao, permitindo a interao entre as vrias mquinas e seus sistemas. Estes sistemas operacionais so usados para fazer a conexo entre computadores heterogneos e geograficamente distantes, permitindo um compartilhamento implcito de recursos. Um exemplo de como o esquema de funcionamento de um sistema operacional de rede mostrado na Figura 06. 9. MIDDLEWARE O middleware consiste em uma camada adicional a existente no sistema operacional, esta camada utilizada para esconder a heterogeneidade do hardware adjacente com caractersticas de escalabilidade, independncia e transparncia em relao a sistemas operacionais. Um objetivo importante esconder a heterogeneidade das plataformas subjacentes das aplicaes. Ento, muitos sistemas middleware oferecem uma coleo mais ou

menos completa de servios que desencorajam o uso de qualquer outra coisa a no ser suas interfaces para seus servios (TANENBAUM, 2002). Na Figura 07 representado um exemplo de aplicao distribuda utilizando middleware.

Fonte: TANENBAUM Figura 06 Esquema de funcionamento de um SO de Rede

Fonte: (TANENBAUM, 2002) Figura 07: Estrutura Geral de um Sistema Distribudo como Middleware 10. COMUNICAO Os sistemas distribudos foram concebidos de tal forma que toda a comunicao que existe entre as partes do sistema baseada na troca de mensagens. Quando o processo A deseja se comunicar com o processo B, ele primeiro constri uma mensagem em seu prprio espao de endereamento, depois este processo executa uma chamada de sistema, que faz com que o sistema operacional busque a mensagem e envie para o processo B atravs da rede. Existem aspectos que devem ser levados em considerao quando se trata de redes de computadores, so eles: Nomeao e resoluo de nomes: havendo dois processos, cada um em um local diferente, como eles podem localizar um ao outro para se comunicar?

Estratgia de roteamento: como so tratadas as mensagens que so envidas pela rede? Estratgia de pacotes: os pacotes so enviados individualmente ou so enviados como uma seqncia? Estratgias de conexo: como dois processos enviam uma cadeia de mensagens? Disputa: como resolver a questo da demanda por recursos? 11. NOMEAO E RESOLUO DE NOMES Para haver a comunicao entre dois processos que esto em ns remotos diferentes necessrio que cada um possa fazer referncia ao outro, um meio utilizado para resolver este problema usar a nomeao de ambos os processos nos ns no formato <nome do host.identificador>, onde nome do host o nome que identifica exclusivamente um computador (n na rede) e o identificador pode ser um id de processo ou um nmero qualquer exclusivo naquele host. Nomes como financeiro, recepcao" e contabil" so exemplos de nomes de host. O DNS (Domain Name System) ou sistema de nome de domnio usado para resoluo de nomes de hosts, os nomes tm sua estrutura organizada em partes de endereo que vo do mais especfico para o mais geral, com pontos separando os campos, o DNS pega um nmero (endereo) e converte para o seu respectivo nome associado a esse nmero. Por exemplo bogus.empresax.com, este endereo refere-se ao host bogus da Empresa X associado ao nmero 200.101.12.42. 12. ESTRATGIAS DE ROTEAMENTO A comunicao realizada atravs da troca de mensagens viabilizada por um caminho fsico configura uma situao na qual, s existir uma rota para troca de mensagens entre dois processos residentes em um computador A, e o outro em um computador B. Se entre A e B existirem vrios caminhos fsicos, ento haver vrias opes de roteamento, nesse caso passa a existir a necessidade de uma tabela de roteamento, indicando os caminhos alternativos que podem ser utilizados para enviar uma mensagem para outros sites. Os esquemas de roteamento mais comumente utilizados so trs: o roteamento fixo, o roteamento virtual e o roteamento dinmico: Roteamento fixo: especificado com antecedncia em A e B um caminho que em situaes normais no muda. O caminho especificado geralmente o mais curto; Roteamento virtual: um caminho fica especificado em A e B enquanto durar uma sesso;

10

Roteamento dinmico: um caminho entre dois pontos A e B escolhido apenas quando uma mensagem enviada. Para fazer o roteamento comum o uso de roteadores, os quais podem ser baseados em software de roteamento ou dispositivos de hardware dedicado. 13. CHAMADA DE PROCEDIMENTO REMOTO (RPC Remote Procedure Call) Segundo a Webopedia (2004), uma Chamada de Procedimento Remoto (RPC Remote Procedure Call) um tipo de protocolo, que um programa usa para requisitar um servio de um programa situado num outro computador em uma rede sem ter que compreender os detalhes da rede. O RPC usa o modelo client/server. O programa de requisio um cliente e o programa fornecedor de recurso o servidor. Como uma chamada regular ou local de procedimento, uma RPC uma operao sincronizada que requer o programa de requisio para ser suspenso at que os resultados do procedimento remoto sejam retornados. Entretanto, o uso dos processos mais leves ou das linhas que compartilham do mesmo espao de endereo permite que RPCs mltiplos sejam executados simultaneamente. Existem diversos modelos e implementaes de RPC. Um modelo e implementao popular so os ambientes de computao distribuda (DCE - Distributed Computing Environment) da Fundao Software Aberto. O instituto de engenheiros eletro-eletrnicos (IEEE - Institute of Electrical and Electronics Engineers) define a RPC na ISO Remote Procedure Call Specification, ISO/IEC CD 11578 N6561, ISO/IEC, Novembro1991. A RPC abrange a camada de transporte e a camada de aplicao no modelo OSI (OSI Open Systems Interconnection) de uma rede de comunicao. A RPC torna mais fcil desenvolver uma aplicao que inclua mltiplos programas distribudos em uma rede (BOWMAN, 2004). Considerando todos os aspectos anteriores a RPC foi desenvolvida para permitir a execuo de um componente de uma aplicao em pontos diferentes de uma rede. Um conjunto de recursos fica em um componente de recurso (servidor), quando um servio requisitado uma RPC emitida pelo componente de processo (cliente), o qual tem acesso transparente ao componente de recurso. Outro aspecto que a RPC trata o de ajudar no projeto e compresso de interaes em ambientes clientes/servidor, isso colabora para construo de sistemas distribudos mais apurados (PIRES, 2004). A RPC s possvel em virtude da passagem de parmetros, os quais podem ser: chamada por valor (call-by-value), chamada por referncia (call-by-reference), chamada por

11

cpia e restaurao (call-by-copy/restore). A funo dessas chamadas viabilizar a comunicao entre componente de recurso e componente de processo. Normalmente em implementaes RPC, usada a chamada por valor ou por cpia e restaurao. A RPC procura tornar a chamada remota o mais parecido possvel com uma chamada local, por esse motivo usada a estrutura de clientes e servidores stubs (VARGAS, 2004). A Figura 08 mostra uma chamada de procedimento remoto.

Fonte: (VARGAS, 2004) Figura 08: Exemplo de uma Chamada Remota O resultado final de toda comunicao mostrada na figura a converso da chamada local de um cliente a um stub cliente em uma chamada ao procedimento servidor sem que o cliente ou o servidor perceba os passos intermedirios. Via de regra os stubs so gerados automaticamente por um compilador (VARGAS, 2000). 14. INVOCAO REMOTA DE OBJETOS (ROI Remote Object Invocation) A invocao remota de objetos essencialmente uma implementao orientada a objeto do modelo RPC. Em um ambiente distribudo, os processos podem necessitar alcanar recursos de sistema que residem em ns remotos. A fim de fazer isso, uma aplicao teria que criar um processo em cada n que contm o recurso til e desdobrar um comunicador para interagir com esses processos. Todo o processo de tentar alcanar um recurso remoto gera uma sobrecarga de mensagens, esta sobrecarga pode ser eliminada atravs de uma RPC ou em um contexto orientado a objeto, atravs de uma invocao remota de objetos (ROI

12

Remote Object Invocation). Estes mecanismos escondem uma comunicao interprocesso atrs dos mtodos de invocao ordinrios, de tal forma que os processos possam alcanar de modo transparente recursos remotos (FRHLICH, 2004). A Figura 09 mostra os elementos e o cenrio de uma invocao remota de objeto.

Fonte: (FRHLICH, 2004) Figura 09: Cenrio de uma invocao remota de objeto O objeto que est sendo manipulado remotamente representado no domnio do processo do cliente por um proxy e mediado em seu prprio domnio por um agente. Quando uma operao invocada no proxy do objeto os argumentos fornecidos so organizados em uma mensagem de pedido e so emitidos ao agente do objeto. Esta mensagem dirigida a uma porta ROI conhecida no n em que o objeto reside (que designada pelo campo do host de seu identificador). Esta porta escutada pelo agente usando um software confidencial, impedindo invases. Quando o agente recebe um pedido, desembala os argumentos e executa uma invocao local do mtodo. O processo inteiro repetido ento no sentido oposto, produzindo uma mensagem de resposta que carrega argumentos de retorno eventuais de volta ao processo do cliente (FRHLICH, 2004). Uma invocao de um objeto em um ambiente remoto representada na Figura 10. O nmero de threads criadas efetivamente pelo sistema para escutar a porta ROI controlado pelo ROI_threads configurvel, com zero indicando que os threads so criados dinamicamente a cada invocao. O nmero de threads criadas efetivamente pelo sistema para escutar a porta ROI controlado pelo ROI_threads configurvel, com zero indicando que os threads so criados dinamicamente a cada invocao. A colocao da porta ROI e os agentes ROI, entretanto, variam de acordo com a arquitetura resultante. Na configurao da aplicao embutida, estas entidades pertencem a um nico processo de aplicao, e, na configurao, pertencem a um processo separado do usurio ROI.

13

Fonte: (FRHLICH, 2004) Figura 10: Uma invocao remota de objeto em um ambiente remoto

15. CONSIDERAES FINAIS A tecnologia de sistemas distribudos fora desenvolvida com o objetivo de conectar usurios a recursos, e isto em mquinas remotamente distantes, assim, estes sistemas promovem o compartilhamento de dados, aplicaes e dispositivos. Com toda a complexidade envolvida

14

no funcionamento dos sistemas distribudos, estes so construdos de forma a esconder essa complexidade de quem o utiliza, disponibilizando tudo de modo mais transparente possvel para o usurio. Para oferecer ao utilizador todos os recursos compartilhados, e de modo transparente, os sistemas distribudos precisam ser construdos levando em considerao muitos elementos constituitivos, como sincronizao de processos, estratgias de roteamento, nomeao, Tolerncia a falhas, etc. Diante do exposto surge ento o middlware, o qual compreende todos os aspectos de hardware e software, para formar um programa que gerencia e faz funcionar os sistemas distribudos. Finalmente, fica evidenciada a importncia dos aspectos de hardware e software envolvidos na construo da tecnologia de sistemas distribudos. O hardware, que oferece uma plataforma fsica de execuo e o software que esconde a natureza heterognea desse hardware subjacente, gerencia, faz funcionar e disponibiliza o ambiente computacional para ser utilizado.

16. REFERNCIAS

TANENBAUM, Andrew S.; STEEN, Maarten Van. Distributed Systems principles and paradigms. PrentIce Hall, 2002.

15

MCLUHAN, Marshall. A Galxia de Gutenberg. 2. ed. So Paulo: Companhia Editora Nacional, 1977. COULOURIS, George; DOLLIMORE, Jean; KINDBERG, Tim A. Distributed Systems Concepts and Design. Wisley, 2005.

Você também pode gostar