CSGrid: um Sistema para Integrac ¸ ˜ ao de Aplicac ¸ ˜ oes em Grades Computacionais

August 22, 2017 | Autor: Renato Cerqueira | Categoria: Distributed Computing, Grid Computing, Middleware
Share Embed


Descrição do Produto

CSGrid: um Sistema para Integrac¸a˜ o de Aplicac¸o˜ es em Grades Computacionais∗ Maria Julia de Lima , Taciana Melcop , Renato Cerqueira , Carlos Cassino , Bruno Silvestre , Marcelo Nery , Cristina Ururahy 1

Grupo de Tecnologia em Computac¸a˜ o Gr´afica / Tecgraf Departamento de Inform´atica, PUC-Rio Rua Marquˆes de S˜ao Vicente, 225, 22453-900, Rio de Janeiro, RJ, Brasil [email protected]

Abstract. CSGrid is a system for grids that, in addition to the support for usage and management of distributed computational resources, offers facilities to integrate applications and manage data and users. CSGrid presents to its users, through a web browser, a workspace with all available applications and with the user’s data files organized by project. A user can extend the system adding new applications. CSGrid also provides its users with some collaborative work facilities. Keywords: Grid Computing, Grid Workbenches, Middleware. Resumo. CSGrid e´ um sistema para grades computacionais que, al´em de dar suporte ao uso e gerenciamento de recursos computacionais distribu´ıdos, oferece facilidades para a integrac¸a˜ o de aplicac¸o˜ es e para o gerenciamento de dados e usu´arios. O CSGrid apresenta para seu usu´ario, via um navegador Web, uma a´ rea de trabalho com todas as aplicac¸o˜ es dispon´ıveis e com os arquivos de dados do usu´ario organizados por projeto. Um usu´ario pode estender o ambiente adicionando novas aplicac¸o˜ es. O sistema tamb´em oferece uma s´erie de recursos para trabalho colaborativo entre seus usu´arios. Palavras-chave: Computac¸a˜ o em Grade, Ambientes de Trabalho para Grades, Middleware.

1. Introduc¸a˜ o Uma necessidade cada vez mais comum em diversas organizac¸o˜ es e´ o uso coordenado de recursos em um ambiente computacional distribu´ıdo e heterogˆeneo. A variedade de plataformas e aplicac¸o˜ es al´em da descentralizac¸a˜ o dos dados dos usu´arios dificulta o compartilhamento dos recursos dispon´ıveis nessas organizac¸o˜ es. Um tema que vem ganhando importˆancia nos u´ ltimos tempos e´ o de grade computacional[Foster and Kesselman 1999]. Recursos geograficamente distribu´ıdos e em diferentes dom´ınios administrativos s˜ao interligados com o objetivo de prover um maior poder computacional aos seus usu´arios. O CSGrid e´ um sistema para gerenciamento e integrac¸a˜ o de aplicac¸o˜ es em um ambiente de grade computacional. Aplicac¸o˜ es que executam no cliente utilizam os servic¸os ∗

Este trabalho conta com apoio e financiamento da Petrobras e do Projeto GIGA/RNP.

dispon´ıveis no CSGrid para ter acesso e gerenciar os recursos computacionais distribu´ıdos no ambiente. Um desses servic¸os e´ o de execuc¸a˜ o remota de algoritmos em m´aquinas que est˜ao ligadas ao CSGrid. Algoritmos, no contexto do CSGrid, s˜ao programas execut´aveis implementados em qualquer linguagem que admitem parˆametros de entrada, geram uma sa´ıda e n˜ao possuem nenhum tipo de interac¸a˜ o com o usu´ario durante sua execuc¸a˜ o. Diversas m´aquinas podem ser incorporadas ao ambiente para servir como plataforma de execuc¸a˜ o de algoritmos. Novos algoritmos s˜ao facilmente disponibilizados no ambiente e o processo para execut´a-los passa a ser uma tarefa transparente para o usu´ario. O CSGrid possui um desktop web onde os usu´arios utilizam os recursos computacionais distribu´ıdos como se estivessem trabalhando localmente. Utilizando um navegador, os usu´arios podem criar suas a´ reas de trabalho, monitorar as m´aquinas da grade, instalar algoritmos, executar aplicac¸o˜ es instaladas no desktop, comandar a execuc¸a˜ o remota de algoritmos e acompanhar os processos que est˜ao executando esses algoritmos nas m´aquinas do ambiente. O objetivo do CSGrid e´ oferecer suporte tanto para o cliente como para o servidor. Uma caracter´ıstica importante na arquitetura do CSGrid e´ a interoperabilidade entre um servidor principal do sistema e os servidores executando nas diversas m´aquinas de execuc¸a˜ o de algoritmos. Independente da linguagem de implementac¸a˜ o dos algoritmos e da m´aquina onde esses algoritmos ser˜ao executados, o CSGrid oferece uma interface padr˜ao para execuc¸a˜ o remota e monitorac¸a˜ o das m´aquinas do ambiente. O CSGrid e´ implementado como uma instˆancia do CSBase1 , um framework para gerenciamento de recursos e execuc¸a˜ o de algoritmos em um ambiente computacional distribu´ıdo e heterogˆeneo. O CSBase e´ resultado do desenvolvimento de diferentes projetos de parceria do laborat´orio Tecgraf com a Petrobras. O primeiro desses projetos, o WebSintesi, implementou e disponibilizou um ambiente de integrac¸a˜ o de aplicac¸o˜ es de an´alise e s´ıntese de dados geof´ısicos. No WebSintesi, m´aquinas multi-processadas e clusters s˜ao interligados a um servidor principal que torna transparente para o usu´ario a execuc¸a˜ o remota de programas que necessitam de um alto poder computacional e que manipulam arquivos de dados s´ısmicos na ordem de at´e centenas de gigabytes. Ap´os o primeiro ano de desenvolvimento do WebSintesi, o projeto InfoPAE Dinˆamico foi requisitado para atender aos usu´arios da Petrobras que utilizam aplicac¸o˜ es de acompanhamento de combate a contingˆencias, como por exemplo, programas de an´alise de estabilidade e equil´ıbrio de plataformas de petr´oleo. Para permitir o reuso dos servic¸os j´a implementados para o WebSintesi e para facilitar o desenvolvimento de novos servic¸os e aplicac¸o˜ es particulares a cada um dos projetos WebSintesi e InfoPAE Dinˆamico, o framework CSBase foi criado. Hoje, al´em do WebSintesi, InfoPAE Dinˆamico e CSGrid, outros dois novos sistemas est˜ao utilizando o CSBase em seu desenvolvimento. Cada um desses sistemas possuem aplicac¸o˜ es comuns e outras aplicac¸o˜ es que utilizam servic¸os criados especificamente para cada um deles. A arquitetura flex´ıvel e extens´ıvel do CSBase permite que novos servic¸os sejam desenvolvidos e integrados aos servic¸os j´a existentes, tornando-o uma base comum de desenvolvimento para v´arios sistemas. 1

http://www.tecgraf.puc-rio.br/csbase

O artigo est´a organizado da seguinte forma. A sec¸a˜ o 2. descreve as principais funcionalidades implementadas no CSGrid. A sec¸a˜ o 3. apresenta a arquitetura do sistema, descrevendo seus componentes principais. A sec¸a˜ o 4. finaliza o artigo com uma descric¸a˜ o sucinta dos trabalhos que est˜ao sendo feitos para estender o CSGrid com novas funcionalidades.

2. CSGrid O CSGrid oferece para os usu´arios um conjunto de funcionalidades para disponibilizac¸a˜ o, compartilhamento, gerˆencia e acesso aos recursos distribu´ıdos. 2.1. Controle de Acesso Uma quest˜ao fundamental em ambientes de integrac¸a˜ o de recursos e´ o controle de acesso dos usu´arios. No CSGrid, as a´ reas de disco, os algoritmos e as m´aquinas est˜ao protegidas do acesso de usu´arios n˜ao autorizados e podem ser restritas ao uso de algum conjunto espec´ıfico de usu´arios. O ambiente de administrac¸a˜ o permite cadastrar usu´arios e atribuir permiss˜oes com um n´ıvel de granularidade que define n˜ao somente a funcionalidade como tamb´em o recurso que se deseja proteger. Existem classes de permiss˜oes pr´e-definidas. Algumas dessas classes permitem a definic¸a˜ o de atributos atrav´es de uma interface. Uma classe de permiss˜ao existente no CSGrid e´ a de utilizac¸a˜ o de m´aquinas para execuc¸a˜ o de algoritmos. Essa classe representa o acesso a uma ou mais m´aquinas, onde os nomes das m´aquinas s˜ao os atributos dessa permiss˜ao. Para que um usu´ario possa executar algoritmos na m´aquina Salgueiro, por exemplo, o administrador deve criar uma permiss˜ao dessa classe com o atributo Salgueiro e atribu´ı-la ao usu´ario. 2.2. Gerenciamento de Projetos Os arquivos dos usu´arios s˜ao organizados por projetos. A estrutura de um projeto e´ hier´arquica, isto e´ , o usu´ario pode criar sub-diret´orios para organizar seus arquivos da maneira que desejar. Os usu´arios podem utilizar funcionalidades de importac¸a˜ o e recuperac¸a˜ o de dados para colocar arquivos dentro de seus projetos. O CSGrid gerencia as a´ reas de disco utilizadas para armazenar os projetos criados por cada usu´ario e as a´ reas de arquivos compartilhados por projetos diferentes. A janela principal do CSGrid consiste em um desktop como ilustrado na figura 1. Nesse desktop, apenas um projeto est´a aberto de cada vez. A a´ rea da esquerda do desktop mostra a a´ rvore de um projeto aberto, semelhante a` forma de visualizac¸a˜ o utilizada para sistemas de arquivos. O desktop tamb´em exibe uma vis˜ao em tabela com os detalhes dos arquivos que est˜ao no diret´orio selecionado da a´ rvore. Na a´ rea da direita do desktop est˜ao as aplicac¸o˜ es que podem ser executadas e que atuam sobre o projeto aberto. O CSGrid oferece facilidades que propiciam o trabalho colaborativo. Os donos dos projetos podem dar a outros usu´arios permiss˜ao de leitura e escrita em alguns de seus projetos. Al´em disso, o usu´ario pode publicar arquivos para outros usu´arios que passam a ter acesso a esse arquivo somente para leitura. O desktop possui tamb´em uma a´ rea de troca de mensagens entre usu´arios. Essa mesma a´ rea serve para o sistema enviar notificac¸o˜ es de alguns eventos ocorridos. Exemplos de eventos notificados pelo CSGrid s˜ao publicac¸a˜ o de arquivos, finalizac¸a˜ o de

um processo executando um algoritmo remoto ou a inclus˜ao no ambiente de uma nova m´aquina de execuc¸a˜ o de algoritmos.

´ Figura 1. Desktop de um usuario do CSGrid

2.3. Integrac¸a˜ o de Aplicac¸o˜ es Sendo um ambiente para integrac¸a˜ o de aplicac¸o˜ es, o CSGrid facilita a construc¸a˜ o de aplicac¸o˜ es que fac¸am uso das funcionalidades do sistema e que possam ser incorporadas ao desktop dos usu´arios. Um conjunto de componentes prontos s˜ao disponibilizados junto com o sistema, para que o usu´ario construa suas aplicac¸o˜ es em Java. Um aspecto comum a todas as aplicac¸o˜ es e´ o fato de sua implementac¸a˜ o utilizar o servic¸o de projetos do CSGrid para ler e escrever arquivos no projeto aberto do desktop. A implantac¸a˜ o de novas aplicac¸o˜ es no CSGrid e´ feita por configurac¸a˜ o de arquivos de propriedades do sistema. O desktop do CSGrid, conforme aparece na figura 1, j´a inclui algumas aplicac¸o˜ es pr´einstaladas. As aplicac¸o˜ es s˜ao apresentadas em grupos que classificam o prop´osito geral dessas aplicac¸o˜ es. 2.4. Gerenciamento de Algoritmos O CSGrid permite que novos algoritmos sejam incorporados dinamicamente ao sistema. Um usu´ario com a devida permiss˜ao pode criar e alterar vers˜oes de algoritmos, registrando as informac¸o˜ es necess´arias para sua execuc¸a˜ o. Essas informac¸o˜ es incluem a documentac¸a˜ o, o c´odigo bin´ario, a plataforma (vers˜ao do sistema operacional) em que o bin´ario executa e um configurador que descreve o tipo dos parˆametros de entrada e sa´ıda desse algoritmo. O configurador e´ um arquivo no formato xml que o CSGrid utiliza para, dinamicamente, gerar uma classe de GUI que e´ apresentada para o usu´ario no momento da execuc¸a˜ o do algoritmo selecionado. Utilizando essa interface, o usu´ario pode preencher os valores que s˜ao usados como parˆametros de entrada e de sa´ıda do algoritmo executado. O formato do arquivo xml possui elementos que servem para descrever diferentes tipos pr´e-definidos de parˆametros, como por exemplo, arquivos, inteiro, texto, lista, etc.

2.5. Monitorac¸a˜ o do Ambiente Para que o usu´ario possa selecionar em que m´aquina vai executar um algoritmo, o CSGrid disponibiliza diferentes vis˜oes para monitorac¸a˜ o das m´aquinas do ambiente. Uma vis˜ao tabular com as informac¸o˜ es de uma m´aquina exibe: o estado da m´aquina (dispon´ıvel, inacess´ıvel ou reservado); o percentual de ocupac¸a˜ o do processador (CPU) da m´aquina; o percentual de ocupac¸a˜ o de mem´oria RAM; o percentual de ocupac¸a˜ o de swap; e o nome da plataforma (vers˜ao do sistema operacional) da m´aquina que serve para filtrar quais os algoritmos podem ser executados nessa m´aquina. O usu´ario pode monitorar a ocupac¸a˜ o de CPU e de mem´oria de m´aquinas ou n´os de um cluster usando diversos tipos de gr´aficos como exemplificados na figura 2. Alguns gr´aficos mostram a tendˆencia de ocupac¸a˜ o de CPU e mem´oria da m´aquina, considerando o hist´orico passado. Uma facilidade bastante u´ til e´ a possibilidade de criar grupos de m´aquinas e fazer a monitorac¸a˜ o do grupo, onde os gr´aficos exibem, por exemplo, a distribuic¸a˜ o de ocupac¸a˜ o de CPU entre as m´aquinas que comp˜oem esse grupo.

˜ do estado de uma maquina ´ ˜ de algoritmos Figura 2. Monitorac¸ao de execuc¸ao

2.6. Execuc¸a˜ o Remota de Algoritmos Os algoritmos cadastrados pelos usu´arios podem ser executados em uma das m´aquinas de execuc¸a˜ o de algoritmos que est˜ao conectadas ao servidor principal naquele momento. Para isso, o CSGrid oferece um executor gen´erico de algoritmos que: • exibe as m´aquinas cujas plataformas s˜ao compat´ıveis com o algoritmo selecionado para execuc¸a˜ o, • solicita os informac¸o˜ es de entrada e sa´ıda para o algoritmo usando uma interface GUI criada a partir do arquivo xml que descreve a parametrizac¸a˜ o do algoritmo, • cria um processo para executar o algoritmo na m´aquina selecionada para o usu´ario.

Uma das opc¸o˜ es de execuc¸a˜ o permite que o usu´ario deixe a crit´erio do sistema a selec¸a˜ o autom´atica da m´aquina para execuc¸a˜ o. Atualmente, o CSGrid adota o crit´erio de ocupac¸a˜ o de CPU para escolha autom´atica da m´aquina de execuc¸a˜ o do algoritmo. O usu´ario pode acompanhar o andamento e interromper o processamento dos algoritmos que submeteu para execuc¸a˜ o remota. Quando o processo de execuc¸a˜ o de um algoritmo termina, o CSGrid notifica esse usu´ario e atualiza a a´ rvore do projeto com os novos arquivos criados como resultado da execuc¸a˜ o.

3. Arquitetura A figura 3 exibe uma vis˜ao geral dos principais componentes da arquitetura do CSGrid, apresentados a seguir. Repositório de Dados Área de Projetos

Máquina A Processo Algoritmo (C)

Repositório de Algoritmos

Máquina B

Base de Usuários

Processo Algoritmo (Fortran)

Processo Algoritmo (C++)

NFS N F S

SGA Daemon CORBA

N F S

NFS C O R B A

SSI

SGA Daemon

C O R B A

CORBA

RMI

Desktop Web

Desktop Web

Desktop Web

Figura 3. Arquitetura do CSGrid

3.1. Desktop Web Para que um usu´ario tenha acesso ao sistema, sua estac¸a˜ o de trabalho precisa dispor apenas de um navegador web habilitado a executar o applet Java que implementa o desktop do CSGrid. O c´odigo do desktop e´ transferido para a m´aquina cliente quando o usu´ario acessa a URL do sistema. O desktop incorpora t´ecnicas avanc¸adas de interac¸a˜ o usu´ariosistema, concretizadas a partir do uso do pacote Swing da linguagem Java. O desktop possui um componente que monitora a comunicac¸a˜ o com o servidor principal (SSI). Quando essa comunicac¸a˜ o e´ perdida, o desktop informa ao usu´ario e entra num estado de monitorac¸a˜ o at´e que a comunicac¸a˜ o se reestabelec¸a. Dessa forma, o desktop n˜ao precisa ser reiniciado devido, por exemplo, a uma falha no SSI. Al´em disso, o desktop implementa observadores remotos que mant´em os dados dos usu´arios e dos projetos consistentes entre os desktops que acessam os mesmos dados simultaneamente. 3.2. O Reposit´orio de Dados O reposit´orio de dados e´ uma a´ rea com acesso NFS onde o SSI armazena a base de usu´arios do sistema, os projetos dos usu´arios e o reposit´orio de algoritmos. A base de usu´arios mant´em em arquivos os dados dos usu´arios e suas permiss˜oes. A a´ rea de projetos possui um diret´orio para os projetos de cada usu´ario e mant´em arquivos descritores que guardam informac¸o˜ es sobre os projetos e sobre os pr´oprios arquivos presentes nos projetos.

O reposit´orio de algoritmos e´ uma estrutura hier´arquica em que cada algoritmo e´ representado por um diret´orio. Dentro desse diret´orio est˜ao os subdiret´orios das suas vers˜oes com o arquivo configurador, a documentac¸a˜ o e os bin´arios separados por plataformas. 3.3. Servidor do Sistema Integrador O Servidor do Sistema Integrador (SSI) faz o papel de intermedi´ario entre as requisic¸o˜ es dos desktops, o reposit´orio de dados e as m´aquinas para execuc¸a˜ o dos algoritmos. O SSI est´a desenvolvido em Java e e´ composto por um conjunto de servic¸os que implementam as diversas funcionalidades dispon´ıveis no CSGrid. O servic¸o de administrac¸a˜ o, por exemplo, e´ respons´avel pela manutenc¸a˜ o dos dados relativos aos usu´arios e suas permiss˜oes. Toda a parte de leitura e escrita de arquivos da a´ rea de projetos e´ realizado pelo servic¸o de projetos. Tamb´em existe o servic¸o de gerˆencia de algoritmos, de email, de Http, entre outros. Os servic¸os oferecem acesso atrav´es de uma implementac¸a˜ o de seguranc¸a baseada em proxies [Marques 2002] e permiss˜oes. Cada usu´ario possui um conjunto de permiss˜oes que determinam o que ele pode utilizar nos servic¸os do CSGrid. Quando o usu´ario se autentica no sistema, o servic¸o de login instancia um proxy para cada servic¸o com a informac¸a˜ o do usu´ario e retorna as referˆencias remotas destes proxies para o cliente. As chamadas remotas dos clientes s˜ao repassadas aos servic¸os pelos proxies com a informac¸a˜ o do usu´ario que as solicitou. Dessa maneira, o servic¸o verifica se o usu´ario possui a permiss˜ao necess´aria para realizar um procedimento antes de execut´a-lo. Todos os servic¸os possuem uma interface RMI, Remote Method Invocation. Para ler e escrever arquivos, o desktop estabelece uma comunicac¸a˜ o via socket com o Servidor para fazer a transferˆencia de dados de forma mais eficiente que a adotada pela serializac¸a˜ o de RMI. Al´em disso, o servic¸o de FTP permite que o usu´ario obtenha arquivos de m´aquinas remotas para a a´ rea de projetos como tamb´em envie da a´ rea de projetos para outras m´aquinas. O servic¸o de Http foi criado para que o usu´ario possa fazer download e upload de arquivos para a a´ rea de projeto atrav´es de um navegador Web. Uma grade de computadores pode ser dividida em regi˜oes, com seu pr´oprio SSI. Um SSI central fica respons´avel pelas tarefas de administrac¸a˜ o e pelo reposit´orio principal das informac¸o˜ es administrativas (usu´arios e permiss˜oes). Sob todos os demais aspectos, os servidores locais s˜ao equivalentes funcionalmente ao SSI central. Cada SSI local possui uma r´eplica da base de usu´arios, atualizada automaticamente pelo sistema. A replicac¸a˜ o da base de usu´arios nas diferentes regi˜oes permite a autenticac¸a˜ o de usu´arios que se conectam a um SSI local mesmo quando a conex˜ao com o servidor central n˜ao est´a dispon´ıvel. 3.4. Servidor de Gerˆencia de Algoritmos O Servidor de Gerˆencia de Algoritmos (SGA) e´ um daemon instalado em cada m´aquina de execuc¸a˜ o de algoritmos, que permite o SSI comandar a execuc¸a˜ o de algoritmos, como tamb´em a monitorac¸a˜ o do estado de ocupac¸a˜ o dessas m´aquinas e dos processos disparados a partir do SGA. Toda interac¸a˜ o entre um SGA, implementado em Lua [Ierusalimschy 2003] e C++, e o SSI e´ realizada atrav´es de uma interface CORBA.

Ao ser ativado, o SGA se registra junto ao SSI de sua regi˜ao e fica dispon´ıvel aos clientes que se conectam a tal SSI. Quando um cliente solicita a execuc¸a˜ o de um algoritmo atrav´es do SSI, este passa a monitorar o processo at´e a sua conclus˜ao (sucesso, insucesso ou interrupc¸a˜ o). Os SGAs e os processos dos algoritmos disparados nas m´aquinas de execuc¸a˜ o permanecem ativos mesmo quando a conex˜ao com o SSI e´ interrompida. Quando a conex˜ao e´ reativada, o SGA se registra novamente no SSI. Periodicamente, o SSI solicita aos SGAs informac¸o˜ es sobre o estado de sua m´aquina hospedeira. Essas informac¸o˜ es podem ser exibidas ao usu´ario para que ele escolha aquela onde o algoritmo deve ser executado como tamb´em podem ser utilizadas pelo SSI na selec¸a˜ o autom´atica da m´aquina para a execuc¸a˜ o de um determinado algoritmo.

4. Considerac¸o˜ es Finais O CSGrid foi originado a partir de dois projetos desenvolvidos com a Petrobras e que j´a est˜ao em produc¸a˜ o. V´arios de seus recursos s˜ao comuns a outros sistemas para grades, tais como Globus, Legion, Condor e OurGrid2 . Entretanto, sua origem lhe confere um aspecto de maior usabilidade e integrac¸a˜ o na rotina de trabalho de seus usu´arios. Atualmente, o CSGrid est´a sendo estendido como parte do Projeto GIGA3 , com o objetivo de prover um ambiente para aplicac¸o˜ es da comunidade cient´ıfica que utilizem a rede GIGA da RNP. Nesse contexto, novas funcionalidades est˜ao sendo desenvolvidas e incorporadas ao framework do CSBase, tais como: um servic¸o para acesso e gerenciamento de arquivos, com a finalidade de eliminar a dependˆencia do NFS; aprimoramento do mecanismo de selec¸a˜ o autom´atica de m´aquinas, incluindo m´etricas que levem em considerac¸a˜ o o tempo de transferˆencia de arquivos de entrada e sa´ıda; suporte a` definic¸a˜ o e execuc¸a˜ o de workflows de execuc¸a˜ o de algoritmos; e componentes para renderizac¸a˜ o distribu´ıda de imagens de dados cient´ıficos. O sistema est´a dispon´ıvel em http://www.tecgraf.puc-rio.br/csbase/ csgrid, em sua vers˜ao para plataforma Linux. Vers˜oes para outras plataformas podem ser obtidas contatando os autores.

5. Agradecimentos Gostar´ıamos de agradecer o apoio e financiamento da Petrobras para o desenvolvimento deste projeto. A nova vers˜ao do CSGrid que est´a em desenvolvimento tamb´em conta com o apoio do Projeto GIGA da RNP, com recursos do FUNTTEL e FINEP. Tamb´em agradecemos a` s equipes dos projetos WebSintesi e InfoPAE Dinˆamico, que deram origem ao CSGrid.

Referˆencias Foster, I. and Kesselman, K. (1999). The Grid: Blueprint for a new Computing Structure. Morgan Kaufmann Publishers. Ierusalimschy, R. (2003). Programming in Lua. lua.org. Marques, P. (2002). Building secure java rmi servers. Dr.Dobb’s Journal, 27(11):36–42. 2

http://www.globus.org/, http://legion.virginia.edu/, wisc.edu/condor/, http://www.ourgrid.org/ 3 http://www.giga.org.br

http://www.cs.

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.