Clusters Java: Implementação e Avaliação
Autores
2273 |
135,563
|
|
2274 |
135,563
|
Informações:
Publicações do PESC
Nesta tese, propomos um novo ambiente de execução distribuída que denominamos cJava para executar transparentemente aplicações Java em clusters. Especificamente, clava esconde a distribuição física das memórias dos nós do cluster, substituindo-a pela abstração de uma única memória compaitilhada distribuída. Para isso, cJava é capaz de distribuir as threads que compõem a aplicação Java pelas máquinas do cluster de maneira transparente ao programador. Nossa implementação de cJava requereu extensões significativas na máquina virtual Java original para fornecer a abstração proposta. Primeiro, um gerente de objetos distribuídos foi incorporado ao subsistema gerente de memória para criar um espaço global de objetos. Segundo, os acessos sincronizados ao espaço global de objetos foram estendidos para utilizar as primitivas lock() e unlock() fornecidas pelo sistema de memória compartilhada distribuída que cJava suporta. Terceiro, o subsistema de threads foi estendido para suportar criação remota e monitores globais. Finalmente, um subsistema responsável pela sinalização remota foi incorporado à máquina virtual Java. A principal propriedade de cJava é não requerer qualquer modificação da especificação da linguagem Java. Ainda mais importante é que os resultados experimentais de desempenho de cJava demonstram que a estratégia que esta tese defende para se construir clusters Java não somente é viável como também é altamente promissora.
In this thesis, we propose a new distributed run-time environment, which we called cJava, for executing transparently multithread Java applications in clusters. Specifically, cJava is able to hide the physical memory distribution of the cluster's nodes by replacing it with the abstraction of a single distributed shared-memory. To this end, cJava distributes the threads of a Java application over the cluster's nodes in a transparent way to the programmer. Our implementation of cJava required significant extensions to the original Java virtual machine (JVM) to support the abstraction we proposed. First, a distributed object manager was incorporated to the memory management subsystem for creating the global object space. Second, synchronized accesses to the global object space were extended so that they could use the lock() and unlock() primitives the cJava's distributed shared memory system supports. Third, cJava extends the thread subsystem to support remote creation and global monitors. Last, a subsystem for remote signaling was added to the original JVM. The main property of cJava is that it does not require any modification to the Java Language specification. Most importantly, our experimental results of cJava's performance demonstrate that the strategy this thesis defends for building Java clusters is not only feasible but also highly promising.