• Nenhum resultado encontrado

4.3 Outras técnicas utilizadas

4.3.5 Outras pesquisas relacionadas

Coady, Kiczales e Feeley(2000), apresentam uma solução que utiliza o conceito de

Aspect-Oriented Approach com o intuito de simplificar o código do sistema operacional. No experimento descrito no trabalho foram re-implementados os módulos para tratamento de page-faults e requisições de leitura ao sistema de arquivos, utilizando uma linguagem hipotética denominada AspectC35. O protótipo desenvolvido simplificou o código de tratamento de page-faults e criou um contexto que facilitou a compreensão dos algoritmos e estruturas de dados que implementam o sistema de gerenciamento de memória virtual e de prefetching de arquivos do sistema FreeBSD.

O projeto Choices (CAMPBELL, HINE e RUSSO,1992) descreve um modelo de

sistema, orientado a objetos, que incorpora a noção de configuração de sistemas operacionais para permitir sua adequação a diferentes configurações de hardware e software. O kernel é composto por uma coleção de objetos dinâmicos e suporta: uma interface de aplicação baseada em objetos local e distribuída, herança e polimorfismo. Os recursos do sistema, mecanismos e políticas são representados como objetos que pertencem a uma hierarquia de classes. Subsistemas são projetados como framework de classes. As pesquisas baseadas nesse projeto têm possibilitado contribuições significativas em áreas como sistemas de arquivos adaptativos e migração rápida de processos. Uma proposta de construção do sistema, utilizando uma estrutura de micronúcleo, originou o sistema Micro Choices, com características como o suporte para a carga dinâmica de código nativo e para Java byte codes e como o suporte das aplicações multimídia.

Projetos de sistemas de arquivos distribuídos (ANDERSON et al.,1996; KISTLER e SATYANARAYANAN,1992)têm demonstrado sucesso para suportar os acessos a dados com

uma forma transparente de localização. O projeto WebOS (VAHDAT et al.,1997)tem por

meta disponibilizar recursos de computação distribuídos por meio da web. O núcleo deste sistema está baseado no WebFS, sistema de arquivos global capaz de disponibilizar acesso seguro aos dados.

Questões de autoconfiguração e adaptação para situações de flutuação de disponibilidade de serviços são abordadas por Kon (2000)e Neefe (1996).Por exemplo, o

projeto 2K(KON,2000)para ambientes heterogêneos e distribuídos inclui um novo modelo de gerenciamento de dependências em sistemas distribuídos. Possui um ORB (Object Request Broker) reflexivo que possibilita políticas dinâmicas de segurança e monitoramento. Também tem um modelo para suportar ambientes de usuários e gerência de recursos em sistemas heterogêneos, além de um protocolo orientado para aplicações multimídia em wide-area e uma infra-estrutura para reserva e configuração de serviços multimídia.

Recentes avanços na tecnologia de componentes permitem a construção de sistemas complexos através de sua composição. Contudo, ainda é difícil desenvolver sistemas eficientes, confiáveis e dinamicamente configuráveis, visto que os componentes freqüentemente são desenvolvidos por equipes diferentes, que utilizam metodologias

diferentes, o que naturalmente conduz a falhas inesperadas, comprometendo a confiabilidade do produto final.

Segundo Friedrich(2001), software baseado em componentes tem sido usado cada vez mais como meio de construção de sistemas de software a partir da montagem de blocos prontos. Composes é uma abordagem que pretende melhorar o processo de construção de software confiável para sistemas embutidos. O objetivo principal do projeto é aplicar o conceito de componentes no ambiente da computação embutida, especialmente no que diz respeito ao suporte operacional.

Na mesma linha da componentização, Stets, Hunt e Scott (1999) apresentam um projeto denominado COP (Component-based Operating system Proxy), o qual ataca a questão do formato monolítico e procedural das APIs de um sistema operacional. Segundo os autores, o formato atual das APIs é muito rígido, uma vez que não pode ser modificado sem comprometer as aplicações já desenvolvidas (legadas). Por exemplo:

“A especificação UINX 98 (endossada pela IBM, Sun e NCR) lista 21 chamadas reservadas para suporte a código legado. Muitas destas já foram superadas por novas e mais poderosas chamadas (ex. função de gerenciamento de sinais, signal(), foi substituída por uma mais poderosa sigaction() ). A principal API da família Microsoft denominada Win32, contem cerca de 50 chamadas cujo objetivo é manter compatibilidade com a versão Windows 3.1 . Embora elas componham uma fração relativamente pequena do numero total de funções disponíveis, este fato contribui para o aumento na complexidade de implementação dos serviços bem como no aumento de

overhead de tempo de execução (run-time)”Stets, Hunt e Scott(1999).

Esta rigidez resulta em um aumento na complexidade da interface e do código que implementa as funções, com conseqüentes efeitos tanto em termos de performance como de facilidade de manutenção dos sistemas.

Na área de reflexão computacional, o trabalho de Kon(2000),relata a construção de um módulo reflexivo para suportar configuração automática de sistemas distribuídos baseados em componentes. O argumento do autor é que os sistemas atuais, particularmente aqueles baseados em componentes, não possuem suporte adequado para representar as dependências entre componentes, dificultando operações tais como: configuração automática, reconfiguração dinâmica, tolerância a falhas e adaptação.

O projeto Tapestry (ZHAO e KUBIATOWICZ,2001) explora mecanismos e políticas

para sistemas paralelos. Mecanismos semelhantes aos incorporados no sistema Choices foram projetados para permitir a reconfiguração de componentes do sistema operacional.

Assim é possível suportar novas arquiteturas paralelas e aplicações. A substituição de políticas do sistema operacional (escalonamento de tarefas, gerência de mensagens ou gerência de arquivos), possibilita o estudo dos efeitos que elas produzem em um framework consistente.

Na área de controle de recursos há o projeto Rialto(JONES,REGEHR e SAROIU,2001),

cujo mecanismo de escalonamento permite estabelecer garantias de qualidade de serviço de CPU no Windows 2000. O projeto Eclipse (BRUNO et al.,1998) também possui um

mecanismo de escalonamento com qualidade de serviço. Esse é um sistema baseado em

Plan9 (DORWARD et al.,1996). A proposta Nemesis (STEVEN,1999) é caracterizada por apresentar uma arquitetura de sistema verticalmente estruturada, com garantias de qualidade dos serviços controlados pelas aplicações. O projeto Scout (HARTMAN et al.,1994)introduz técnicas de gerenciamento do consumo de recursos, através da metáfora

de caminhos (paths) sobre a qual o sistema está baseado. Além disso, a capacidade de auto-configuração no nível das redes locais também tem sido pesquisada (RODEHEFFER e SCHROEDER,1991).

Há algumas propostas de solução para problemas de mobilidade entre arquiteturas heterogêneas. Um enfoque supõe a utilização de um interpretador transparente, como o sistema Aglets (LANGE e OSHIMA,1997), que utiliza a JVM. Um segundo enfoque é

baseado em código nativo especial do sistema operacional (STEENSGAARD e JUL,1995).

Ele permite a migração em certos pontos de sincronização, denominados paradas de ônibus (bus stops). No entanto, ambas as soluções são limitadas por serem específicas para uma única linguagem. Barak e La’adan (1998) investigam a questão da migração de

processos para fins de balanceamento de carga em clusters Unix. Nesse estudo, por razões óbvias, os processos somente podem migrar entre máquinas homogêneas.

Certamente há outros projetos que poderiam ser relacionados. No entanto, em função do caráter dinâmico do processo, a cada momento surgem novas propostas, o que torna a tarefa de estudá-las e classificá-las virtualmente impossível. Contudo, as pesquisas relacionadas servem para caracterizar o esforço que vem sendo realizado na área tendo em vista atender as necessidades de aplicações para espaços inteligentes (direta ou indiretamente).