Quais são as principais vantagens proporcionadas por um sistema operacional em um sistema computacional?

Inferno x JavaOS

Loureiro, Gabriela G.G.1; Gabriel, Carla T.2
1
2

Introdução

Os sistemas de computadores atuais são fortemente caracterizados por ambientes heterogêneos, distribuídos em diferentes plataformas de hardware e diferentes ambientes de software. A cada dia surgem inúmer os novos dispositivos de rede, caracterizados por hardware limitado e software altamente específico, contribuindo ainda mais para a diversidade dos ambientes computacionais. Em conseqüência disso, a administraç&atild e;o de tais sistemas torna-se cada dia mais complexa e trabalhosa.

Em acréscimo, as aplicações disponíveis no mercado hoje são em sua maioria específicas e amarradas a uma determinada plataforma. Ou seja, o código fonte de uma aplicação deve ser gerado par a cada uma das plataformas que esta pretenda atender, seja Microsoft Windows, OS/2 ou Solaris. Isso significa, para os desenvolvedores de software, re-escrever e re-compilar uma considerável quantidade de código.

Ainda nessa linha, em um ambiente de rede heterogêneo, administrar a instalação e a atualização de software entre as diversas plataformas existentes constitui um problema cada vez mais crítico. Poucas fer ramentas destinadas à administração de sistemas oferecem níveis de compatibilidade e transparência de serviços esperados.

Por outro lado, vários trabalhos estão sendo realizados no intuito de encontrar soluções para os problemas citados. Nesse contexto, encontramos a solução proposta pela Lucent Technologies � o sistema ope racional InfernoTM, e a proposta da SUN � o JavaOSTM. Este trabalho irá apresentar as principais características, vantagens e desvantagens destes dois sistemas operacionais.

Dispositivos de Rede

Dispositivos de rede (network devices) se caracterizam por suas sérias limitações quanto aos recursos de hardware e software. Estes elementos de rede são altamente dinâmicos e têm funções altamente especializadas.

Devido à simplicidade de seu funcionamento, estes dispositivos são fáceis de serem instalados, administrados e utilizados. De fato, a instalação de um dispositivo de rede pode ser simples como conect&a acute;-lo à rede e ligá-lo à tomada.

Os novos dispositivos de rede encontrados no mercado não se limitam a um conjunto estático de programas armazenados em uma memória embutida. Pelo contrário, eles oferecem a possibilidade de, automaticamente, carregar e rodar novos programas que estejam disponíveis na rede.

Os tipos mais comuns de dispositivos de redes são:

    • Dispositivos embutidos;
    • Telefones inteligentes;
    • Personal Digital Assistants
    • (PDAs);
    • Personal Information Managers
    • (PIMs);
    • Computadores para Intranet e Internet.

No contexto de administração de sistemas, onde se profileram dispositivos de rede como os citados, surgem algumas questões:

  1. Como permitir que dispositivos de rede, com recursos limitados, rodem eficientemente aplicações dos usuários?
  2. Como facilitar a gerência de tais elementos numa rede de computadores?

  3. O Sistema Operacional InfernoTM

    O que é Inferno?

    Inferno

    é um sistema operacional de rede que transmite serviços interativos através de uma variedade de redes, proporcionando acesso em todo lugar para recursos e informações. Suas carac terísticas permitem desenvolver e desdobrar dispositivos inteligentes em qualquer ambiente de rede.

    Este sistema afeta os seguintes segmentos:

      • mercado de Set-top Box;
      • mercado de Telefones Inteligentes;
      • mercado de Provedor de Serviços de Rede;
      • mercado de PDAs/PIMs;
      • mercado de Console de Jogos.

    Inferno foi desenvolvido por membros do Computing Science Research Center, dos Laboratórios Bell, o braço de pesquisa da Lucent Technologies. O sistema operacional Inferno consiste de:

      • Inferno OS
      • � um sistema operacional em tempo real;
      • Limbo
      • � uma linguagem de programação;
      • Dis
      • � uma máquina virtual para Limbo;
      • Styx
      • � um protocolo de comunicação.

    Principais Características

    A plataforma completa para desenvolver e desdobrar dispositivos inteligentes em qualquer ambiente de rede.

    O sistema operacional de rede em tempo real, Inferno, fornece um pequeno, seguro e eficiente ambiente de programação e rede, para provedores de serviços de rede, fabricantes de dispositivos e dese nvolvedores de aplicações. Projetado para subordinar o poder de qualquer rede e permitir dispositivos inteligentes, Inferno emprega investimentos de software e hardware existentes da organização e significantement e reduz a administração do sistema cliente.

    A informação discada por tom.

    A visão de ambientes computacionais de baixo custo se tornará uma realidade quando a complexidade e o custo total de propriedade para o desktop tornar-se tão fácil para usar quanto o telefone e alcançar um nível de conectividade tão universal quanto a telefonia. Com Inferno, qualquer dispositivo de rede interconecta-se com qualquer outro dispositivo, máquina ou rede, sobre qualquer sistema operacional. Ele permite que os usuários acessem ferramentas proveitosas e familiares em toda parte. Programadores projetam e implementam aplicações Inferno somente uma vez, sem se preocupar com a plataforma básica.

    Inferno

    provê uma camada de abstração de rede para oferecer um nível de portabilidade e programabilidade não comparada a outros sistemas operacionais. Ele proporciona portabilidade de rede verdad eira - inclui não só uma máquina virtual que provê portabilidade através de plataformas, mas também inclui um sistema operacional virtual que provê abstração de rede virtual através de um a interface comum de rede. Esta característica única abre um novo grupo de publicações sobre dispositivos de baixo custo, tais como: PDAs, telefones inteligentes e set-top boxes, por empregar recursos fantásticos de redes existentes e significantemente reduzir a carga sobre o dispositivo.

    A evolução da computação cliente-servidor para computação distribuída de fato.

    Inferno possibilita decisões de gerenciamento ótimo de rede porque ele é verdadeiramente um ambiente de computação distribuída. Isto significa que as aplicações Inferno pod em ser executadas onde for mais eficiente e podem utilizar qualquer recurso fora da rede. Isto está em perfeito contraste com ambientes tradicionais cliente-servidor, onde as aplicações devem ser baixadas de servidores para clientes e executadas no cliente.

    Inferno

    realiza computação distribuída de fato por seguir o conceito de um espaço de nome distribuído. As aplicações Inferno vêem todos os recursos como arquivos dentro de um sistema de arquivo hierárquico. Isto permite às aplicações construírem seus próprios espaços de nomes, consistindo de quaisquer recursos fora da rede. Usando a característica de espaço de nome do sistema operacional Inferno, dispositivos podem acessar as aplicações independentemente de recursos locais. A natureza distribuída de Inferno permite aos gerentes de rede, a flexibilidade necess ária para executar as aplicações mais efetivamente.

    Os pedaços que formam a solução fim-a-fim.

    O ambiente Inferno foi projetado com uma infra-estrutura de rede em mente. Ele não é dependente de recursos locais, suporta aplicações robustas e maximiza o uso da rede. Isto é realizado com um mínimo de memória - sobre 1 MB roda o sistema operacional Inferno completo, incluindo as aplicações. Adicionalmente, segurança e controle sobre os recursos compartilhados são implementados como protocolos no núcleo da tecnologia de Inferno.

    Inferno

    é um sistema operacional distribuído que opera ou modo standalone, sobre um hardware econômico (ambiente nativo), ou como uma aplicação em cima de sistemas con vencionais (ambiente de emulação). Este projeto aberto permite que as aplicações rodem em todos os ambientes, sem diferença em relação à performance de tempo de execução.< /P>

    Sistema operacional seguro, pronto para rede, pequeno, portátil e programável.

    Inferno oferece aos usuários a capacidade para:

      • convergir tecnologias, enquanto minimiza custos;
      • desenvolver soluções que permitem baixo custo, dispositivos inteligentes, capazes de evoluírem como novos serviços e aplicações;
      • estender a disponibilidade de estimular novos serviços interativos, sem programas de reengenharia para todo ambiente;

    Vantagens de Inferno

    Provê conectividade

    Inferno provê uma interface de rede que é idêntica sobre todas as plataformas de rede. Esta característica faz conectar dispositivos clientes e estabelecer comunicações com uma rede, t ão simples quanto ligar um telefone na tomada. Com Inferno, os dispositivos podem se interconectar com provedores de serviços e obter acesso para aplicações ilimitadas. Esta mesma interface simplifica amplamente o gerenc iamento e a configuração das aplicações do ambiente de rede, além de fornecer ganchos para sistemas de proteção ao usuário.

    Garante um ambiente seguro

    Segurança é um ponto fundamental para a arquitetura Inferno. Toda conexão do sistema é verificada pelo kernel do Inferno utilizando criptografia de chave pública. Para as aplica&c cedil;ões, Inferno fornece interface e mecanismos para suportar autenticação de chave pública, assinaturas digitais e criptografia.

    Requer somente um pequeno espaço para instalação

    Uma pequena área de memória para instalação é muito importante para conter os custos de dispositivos. As aplicações robustas e o sistema operacional Inferno residem em menos de 1 MB de memória - um espaço muito pequeno. Inferno foi projetado para permitir que as aplicações utilizem recursos locais dinamicamente, quando disponíveis, ou usem os recursos distribuídos fora da rede. Nenh uma das características de sistema operacional é perdida por causa da memória mínima. Capacidades gráficas completas, segurança, sistemas de arquivos e threads estão todos disponíveis para qua lquer dispositivo Inferno. Adicionalmente, o espaço pequeno reduz o custo de dispositivos clientes, talvez baixo o suficiente que NSPs possam fornecer os dispositivos para os usuários gratuitamente em troca por contratos de servi&cced il;os.

    Emprega infra-estrutura de rede existente

    O sistema operacional Inferno pode ser o sistema operacional nativo quando os requisitos do sistema impõem memória mínima, ou pode rodar sobre um sistema operacional existente. As aplicaç&otild e;es legadas e investimentos de hardware existente são protegidos e empregados dentro de novas aplicações e serviços.

    Oferece portabilidade completa

    Portabilidade garante desdobramento fácil de dispositivos e aplicações em qualquer lugar. As aplicações Inferno são portáteis através de todas as principais platafor mas, sistemas operacionais e redes. A interface de rede de Inferno isola as aplicações do protocolo de comunicação de rede básico, fornecendo uma nova camada de portabilidade - "abstração de rede< /I>". Os três níveis de portabilidade permitem o uso de diversos elementos de rede e fazem a rede aparecer homogênea para as aplicações. Além disso, portabilidade completa garante o mais baixo custo para transmitir os serviços.

    É programável

    Aplicações Inferno são escritas na linguagem de programação Limbo, que é idealmente apropriada para aplicações distribuídas rodando em má quinas clientes pequenas. Limbo foi projetada especificamente para o ambiente Inferno e sua sintaxe é influenciada por C e Pascal, suportando os tipos de dados padrões comuns a elas.

    Em particular, um mecanismo de comunicação chamado canal é usado para conectar diferentes tarefas Limbo na mesma máquina ou através da rede. Um canal transporta dados tipados em um padrão independente de máquina, tal que estruturas de dados complexas podem ser passadas entre tarefas Limbo, ou ligadas a arquivos no mesmo espaço de nome.

    Os programas Limbo são construídos em módulos, que são unidades com uma interface bem definida contendo funções (métodos), tipos abstratos de dados e constantes definidas pelo m&oa cute;dulo, visíveis fora dele. Os programas rodam seguramente em uma máquina sem hardware de proteção de memória. Eles são compilados em instruções representando bytecodes para uma m&aa cute;quina virtual chamada Dis.

    Subordinada a Dis, está o kernel de Inferno, que contém o interpretador e o compilador, assim como as funções de gerenciamento de memória, escalonamento, drivers de disposit ivos e pilhas de protocolo. A máquina virtual Inferno implementa vários módulos padrões internamente.

    É escalável

    Aplicações Inferno empregam o conceito de um espaço de nome distribuído. Um espaço de nome de uma aplicação Inferno é uma representação dos recu rsos distribuídos disponíveis. Os espaços de nome da aplicação são criados dinamicamente, maximizando o uso tanto de recursos locais do cliente quanto de recursos encontrados fora da rede. Os recursos da aplica&cc edil;ão podem ser locados em um cliente individual ou estendidos entre múltiplos servidores ou clientes através de uma rede. Escalabilidade é uma característica inerente de Inferno - porque cada apli cação é ciente de somente seu espaço de nome, o tamanho da rede torna-se irrelevante. Esta mesma característica de espaço de nome suporta personalização fácil de serviços e simplifica&c cedil;ão do desdobramento de serviços.

    Especificações do Sistema

    Requisitos de memória

    O sistema completo com as aplicações básicas roda em 1 MB de memória.

    Roda diretamente em microprocessadores populares

    (nativo)

    Motorola M68030

    Motorola PowerPC 603

    Digital StrongARM 110, 1100

    Intel 386, 386EX, 386SX, 486, Pentium

    ARM RISC 7000

    MIPS R4K+

    Sun SPARC Ultra II Sun Java Station (microSPARC-II)

    National Semiconductor Odin 486

    Mitsubishi M32RD (release 3.0)

    Hitachi SH3, SH4 (release 3.0)

    Roda em sistemas operacionais existentes

    Microsoft Windows NT 3.51+

    Microsoft Windows 95

    Sun Solaris 2.5+

    SGI Irix 5.3+

    HP-UX 10.1+

    IBM AIX

    SCO UNIX (release 3.0)

    Digital Unix (release 3.0)

    Linguagens

    Limbo

    Java

    Banco de Dados

    ODBC em Windows 95 e NT

    Oracle

    Informix

    Sybase

    Microsoft

    Redes

    TCP/IP

    UDP/IP Multicast

    PPP

    Ethernet Adapters

    ISDN (release 3.0)

    XDSL (release 3.0)

    ATM (release 3.0)

    CDMA, TDMA, GSM (release 3.0)

    Dispositivos

    Ethernet Adapters

    Adaptadores gráficos

    Sound cards

    MPEG cards

    Infrared (IR) remote control interfaces

    Interfaces de TV

    Modems

    Segurança

    Criptografia/autenticação de chave pública

    40-bit RC4 (internacional)

    Tamanho ilimitado RC4 (US)

    56-bit DES-ECB (US)

    56-bit DES-CBC (US)

    SHA

    MD5

    Máquina Virtual Dis

    Linguagem neutra (pode suportar múltiplas linguagens)

    Garbage Collection

    automático

    Dinamicamente configurável

    Integrada dentro do SO

    Facilmente compilada on-the-fly para conjuntos de instrução nativa em ambientes host

    Arquitetura memória-a-memória

    Ferramentas de desenvolvimento

    Limbo Debugger

    Editor

    Compiladores

    Bibliotecas gráficas

    Níveis de abstração

    Máquina virtual

    Sistema operacional virtual

    Interface de rede virtual

    Segurança

    Inferno garante segurança através de algumas importantes maneiras. Uma das mais importantes é o conceito de espaços de nome, que pode ser usado para restringir acesso a recursos da rede, fazendo visível somente os recursos que uma aplicação precisa. Em um ambiente de servidor, Inferno pode usar as características de segurança do sistema operacional do host, incluindo permissões de arquivos, para controlar o acess o. Em adição a estas características, Inferno incorpora as últimas técnicas de criptografia, dentro de rotinas de segurança construídas, e de uma API.

    Tipos de Segurança

    As rotinas de segurança de Inferno são fáceis para prover qualquer um ou todos os seguintes tipos de segurança:

    • Autenticação Mútua;
    • Message Digesting
    • ;
    • Assinaturas Digitais;
    • Criptografia.

    Autenticação Mútua

    Significa que dois usuários ou aplicações que desejem se comunicar podem garantir que eles realmente são quem eles dizem ser. Este é o nível mais básico de segurança propor cionada por Inferno.

    Autenticação requer uma combinação de elementos: um terceiro grupo de modo que cada usuário pode confiar, um algoritmo ou método matemático para proteger as mensagens entre usuário s, e um protocolo para troca de mensagens de modo a garantir que um intruso não pode ter a intenção de ser um dos usuários, ou usar algum outro método para minar a comunicação.

    Message Digesting

    É uma técnica para garantir que um intruso não pode modificar as mensagens enviadas entre usuários. Isto é especialmente importante em transações financeiras.

    Inferno

    combina message digesting com assinaturas digitais para prover transações incontestáveis, que previnem alguém, por exemplo, de alegar que alguma outra pessoa requisitou uma retirada de s ua conta bancária.

    Message Digesting

    usa um algoritmo hashing matemático para transportar uma mensagem e agrupá-la dentro de um string indecifrável de tamanho fixo, tal que toda mensagem é agrupada c om o mesmo tamanho. Inferno inclui um contador assim como uma chave secreta, conhecida somente pelos grupos de comunicação, na mensagem agrupada, para garantir que as mensagens sejam recebidas na ordem correta e que nenhuma mensagem s eja inserida por alguém que está na linha. É quase impossível duas mensagens serem agrupadas com o mesmo valor.

    Assinaturas Digitais

    Como assinando uma carta, uma assinatura digital comprova a identidade de quem enviou a mensagem. É muito mais difícil falsificar uma assinatura digital.

    Inferno

    usa criptografia de chave pública para criar assinaturas digitais. Uma chave secreta conhecida somente pelo grupo que envia uma mensagem é usada para criar a assinatura. Uma chave pública, ou uma que pode ser distribuída abertamente, é usada para verificar a assinatura.

    Uma assinatura em Inferno inclui um resumo de uma mensagem, a identidade do assinante, e os nomes dos algoritmos hashing usados. Usando a chave pública de quem enviou a mensagem, o grupo que recebe é capaz de desbloquear a informação na assinatura e verificar que a mensagem não foi modificada.

    Criptografia de Mensagem

    Protege a confidencialidade das mensagens tal que somente um grupo ou os grupos para quem as mensagens são destinadas podem descriptografá-las e lê-las.

    A noção tradicional de criptografia é traduzir uma mensagem, chamada um texto puro (texto não-criptografado) em criptografia, dentro de alguma coisa sem permissão para ler, chamada de texto de escrita secreta (texto cifrado � ciphertext).

    Dois tipos básicos de algoritmos são usados em criptografia: algoritmos de chave privada (ou chave simétrica) e de chave pública. Com algoritmos simétricos a mesma chave é usada para criptografa r e descriptografar uma mensagem. Esta chave deve ser uma chave secreta, conhecida somente pelos usuários que querem uma comunicação segura. É freqüentemente chamada de uma chave secreta ou privada.

    Em geral, um algoritmo de chave pública pode usar uma chave privada ou secreta para encriptografar uma mensagem e uma chave pública para descriptografá-la, ou vice-versa. A chave privada ou secreta é conhecida somente pelo u suário que envia a mensagem. A chave pública, entretanto, não tem que ser mantida secreta e pode ser distribuída para alguém com quem o usuário deseja se comunicar.

    Algoritmos Fornecidos

    Alguns dos trade-offs relacionados para escolher algoritmos são: velocidade, grau de segurança e restrições de licença. Todos os algoritmos usados em Inferno são bem conhecidos, c omercialmente disponíveis e rigorosamente testados:

      • Para message digesting
      • : SHA, MD4 e MD5 são todos algoritmos hashing bem conhecidos.
      • Para assinaturas digitais
      • : ElGamal é usado amplamente, sistema de chave pública. Ele usa uma chave privada para assinar uma mensagem e uma chave pública para verificá-la.
      • Para criptografia
      • : DES (Data Encryption Standard) foi adotado como um sistema padrão de criptografia/descriptografia para dados não classificados nos Estados Unidos. Ele é usado amplamente, especialmente pela indústria de serviços financeiros. Dois tipos de DES são oferecidos: DES-ECB (Electronic Code Book) e DES-CBC (Chain Block Coding). RC4 é um sistema de chave privada ou simétrica que é dez vezes mais rápido do que DES e exportável com um tamanho de chave de 40 bits.

    Diffie-Hellman

    é um algoritmo para criar uma chave secreta a ser compartilhada pelos usuários para criptografar as mensagens.

    Protocolos de Segurança

    Protocolos estritos são usados para impedir tentativas para romper ou escutar comunicações confidenciais. Estes protocolos estabelecem um nível de confiança entre os grupos da comunicação. Em I nferno, dois protocolos bem determinados, EKE (Encrypted Key Exchange) e STS (Station-to-Station), são usados para permitir que as chaves sejam mudadas e as identidades de grupos da comunicação sejam verificadas.

    Segurança através da Rede

    Uma das capacidades de Inferno é permitir às aplicações acessar os recursos através de redes heterogêneas usando espaços de nome. A camada de segurança permite &agrav e;s aplicações acessarem estes recursos de uma maneira segura, sem problemas sobre quais plataformas os recursos existem. Por exemplo, uma aplicação em um sistema A, poderia precisar acessar recursos no sistema D. O sistema A p oderia ser um set-top box, o sistema B poderia estar rodando UNIX, o sistema C poderia ter Windows95, e o sistema D poderia estar rodando Windows NT.

    Neste cenário, o sistema C montaria os recursos do sistema D e obteria uma conexão autenticada, e do mesmo modo, o sistema B montaria os recursos do sistema C e estabeleceria uma conexão autenticada. Quando o sistema A monta os rec ursos, ele precisa do sistema B e autentica a conexão. A aplicação no sistema A pode ser assegurada que está acessando os recursos que existem fisicamente no sistema D de uma maneira segura, porque um nível de confian&cc edil;a tem sido estabelecido através da rede. Cada sistema teria obtido um certificado do mesmo CA (Certifying Authority) e teria usado o protocolo STS para autenticar o sistema que foi montado.

    Espaço de Nome

    O espaço de nome do sistema operacional Inferno é a hierarquia de nomes de arquivos disponíveis para um programa. Há duas coisas que fazem disto uma das características principais do sistema Inferno. Pri meiro, Inferno representa muitos recursos como arquivos. Os arquivos não são somente dados; arquivos podem ser também dispositivos, conexões de rede, e interfaces para serviços. Assim, o espaço de nome atua lmente representa um espaço diverso de recursos. Segundo, Inferno oferece um conjunto único de operações para gerenciar esse espaço de nome. Estas operações permitem aos programadores e desenvolvedor es de aplicações lidar com complexidade em ambientes de rede.

    Vantagens do Espaço de Nome

    A regra tradicional de um arquivo é meramente um dos muitos serviços baseados em arquivo em Inferno. Os arquivos são também interfaces para periféricos, programas, serviços e redes. O modelo de arquivo & eacute; simples (abrir, ler e escrever) e conhecido por todos os programadores. Representar então muitos recursos através de uma interface comum é um primeiro passo para controlar complexidade.

    Algumas interfaces do sistema que tradicionalmente requerem chamadas a sistemas são fornecidas através de arquivos especiais. Isto reduz o tamanho do sistema operacional, uma outra vantagem de Inferno.

    As operações do espaço de nome podem ser usadas para separar as questões de aplicação das questões de configuração. Os recursos podem ser criados para aparecer onde eles são necess&a acute;rios em vez de ter aplicações usadas onde os recursos podem ser encontrados.

    O espaço de nome pode ser personalizado. As mudanças no espaço de nome podem ser ou compartilhadas ou restritas para usuários individuais ou mesmo para programas individuais. Deste modo, os recursos podem ser posicionados de ntro do espaço de nome para cada situação.

    Recursos como Arquivos, o Exemplo da Conexão do Servidor

    Um exemplo notável de um importante serviço de sistema fornecido através de uma interface de arquivo é a conexão do servidor, um serviço que traduzirá um nome simbólico do host para um endereço de rede que pode ser usado para estabelecer a conexão.

    O protocolo é escrever o nome do host de interesse dentro do arquivo especial

    /net/cs, e então ler a resposta.

    A requisição write é detectada por um processo daemon que traduz o nome e armazena a resposta até que a requisição read chegue. O daemon é um programa de aplica& ccedil;ão pequeno, simples, não parte do kernel. De fato, o próprio kernel usa o arquivo

    /net/cs quando deve traduzir um nome para um endereço de rede.

    Operações do Espaço de Nome

    As operações chaves são: mount e bind.

    A operação mount adiciona uma árvore de arquivos de uma máquina servidor para o espaço de nome corrente. Uma vez que a árvore de arquivos é ligada, seus membros podem ser acessados da mesma maneira como arquivos locais. As aplicações direcionadas para usar esses arquivos não podem detectar que eles estão operando remotamente.

    Transparência de rede é suportada por todos arquivos Inferno, sejam eles dados simples, ou dispositivos, ou interfaces daemon. As aplicações estão em rede sem programação explícita de rede. A rede Inferno é mais do que uma simples computação cliente-servidor. As regras de "cliente" e "servidor" são relativas para alguns conjuntos de recursos compartilhados.

    A operação bind mapeia um nome de arquivo no espaço de nome para um outro. Suponha que uma aplicação está esperando encontrar um certo arquivo, arquivo B, no diretório D, mas o arquivo atua lmente reside no diretório B.

    A operação bind pode ser usada para fazer o arquivo B aparecer residindo no diretório D. Veja a Figura 6. Note que o arquivo B ainda está disponível no diretório B. Neste caso, os conteúdos originais do diretório D não são conhecidos. Diferentes opções de bind podem ser usadas para fazer D um diretório união que tem tanto os conteúdos originais quanto aqueles do diretório B.

    Uma outra importante facilidade das operações do espaço de nome Inferno é a habilidade de criar diretórios "união". Isto é, a habilidade para fazer vários diretórios aparecerem como um.

    Controlando Acesso a Recursos

    A segurança do sistema pode ser aumentada através das operações do espaço de nome que reduz um espaço de nome existente. Um processo pode estar restrito tal que ele pode somente acessar um conjunto limitado de arquivos e, uma vez restrito, o processo não pode acessar nenhum outro.

    Controlar o acesso a recursos por restrições de espaço de nome é um suplemento para o controle fornecido pelas permissões de arquivo e diretório. Por exemplo, um programa que lê mail, para executar sua função básica, poderia precisar da identidade do usuário para acessar alguns dos arquivos desse usuário. O programa pode ser restrito para um universo contendo somente os arquivos que ele precisa. As permissões do programa para acessar outros arquivos é irrelevante se os caminhos para esses outros arquivos não podem ser definidos.

    Lembre-se que arquivos estão representando todos os tipos de recursos. Restringindo o espaço de nome, o universo de recursos da aplicação é limitado. Omitir a interface de rede significa que não se pode fazer c hamadas de rede. Omitir a interface para rodar programas significa que a aplicação não pode terminar outras aplicações.


    JavaOS � O Ambiente JavaTM

     

    Quais são as principais vantagens proporcionadas por um sistema operacional em um sistema computacional?

    JavaOS

    é uma nova plataforma operacional otimizada para rodar código escrito em Java numa vasta gama de plataformas computacionais. Aplicações escritas em Java podem ser executadas diretamente em diferentes plataformas de hardware, sem a necessidade de um sistema operacional hospedeiro, através de um runtime especialmente adaptado para essa função na plataforma JavaOS. Estas aplicações Java são altamen te interativas, dinâmicas, seguras e portáveis.

    Atualmente, um software deve ser compilado, testado e empacotado separadamente para assim poder rodar em cada uma das diversas plataformas existentes, entre elas Microsoft Windows, Macintosh, OS/2, UNIX, Sun Solaris e Net ware. Em outras palavras, o arquivo binário de uma aplicação que roda numa determinada plataforma não pode ser executado em uma outra, isso porque códigos binários são específicos de cada arquite tura.

    Máquina Virtual Java

    A plataforma Java é uma nova plataforma de software que permite lançar e executar applets e aplicações Java em sistemas de computadores em rede. Esta nova plataforma localiza-se sobre as arquiteturas exi stentes e executa bytecodes, que são instruções para uma máquina virtual. Estas instruções são, portanto, independentes de qualquer máquina física.

    Um programa escrito na linguagem Java é compilado para um arquivo de bytecodes que pode ser executado sempre que exista na máquina a plataforma Java, sobre qualquer sistema operacional. Esta portabilidade é possível g raças à estrutura da Máquina Virtual Java, núcleo da plataforma Java.

    Um ambiente de desenvolvimento para a linguagem Java inclui ambos os ambientes de compilação e execução de aplicativos Java, como pode ser visto na Figura 1. A plataforma Java é representada pelo ambiente de execu&cce dil;ão. O programador escreve o código fonte na linguagem Java (arquivos .java) que são compilados para bytecodes (arquivos .class). Como foi mencionado anteriormente, estes bytecodes são instruções para a máquina virtual Java.

    Quais são as principais vantagens proporcionadas por um sistema operacional em um sistema computacional?

    Figura 1.

    A Máquina Virtual JavaTM

    API Java

    Enquanto cada plataforma sob a máquina virtual Java possui a sua própria implementação para a mesma, existe apenas uma especificação da máquina virtual. Por causa disso, a plataforma Java oferece uma interface de programação uniforme e padronizada para applets e aplicativos em qualquer hardware disponível. Portanto, a plataforma Java é ideal para a Internet, onde um programa deveria ser capaz de rodar em q ualquer computador no mundo.

    A API Java oferece a especificação de como o programador escreve uma aplicação ou um applet acessa as facilidades de algum objeto. O Java Development Kit (JDK) define a API Java, que suporta aplicaç&otil de;es como browsers e applets. A API Java é a mesma para todos os runtimes Java, incluindo as implementações para JavaOS, Microsoft Windows, UNIX e Macintosh.

    A Estrutura do JavaOS

    JavaOS utiliza a plataforma Java para executar poderosos applets e aplicações Java. Para isso, JavaOs implementa a máquina virtual Java e as funcionalidades de baixo nível para sistemas de arquivo, rede e janel amento, sem a necessidade do suporte de um sistema operacional hospedeiro.

    JavaOS é construído a partir da combinação de código nativo (conjunto de instruções e código específico da plataforma de hardware) e código Java, o qual é independente de plataforma. JavaOS define uma plataforma como um conjunto de CPU, memória física e quaisquer dispositivos periféricos, barramentos e slots. O componente independente de plataforma do sistema operacional é chama do JavaOS runtime. A parte específica de cada plataforma é referenciada como JavaOS kernel.

    O JavaOS runtime é projetado para rodar em uma plataforma de hardware bastante limitada. Por exemplo, o JavaOS runtime não requer uma unidade de gerenciamento de memória (MMU) para mapear endereços virtu ais em endereços físicos de memória, nem requer um mecanismo de proteção de memória. Estas tarefas são tratadas pelo JavaOS kernel.

    Os benefícios inerentes da plataforma Java se enquadram entre muitos dos objetivos da construção de dispositivos de rede dinâmicos, simples e inteligentes, com recursos de hardware e software bastante limitados. Uma das melhores maneiras de reduzir os requisitos de hardware de um dispositivo é remover o overhead causado pela necessidade de um sistema operacional de propósitos gerais. JavaOS oferece apenas as facilidades de um sistema operacional necessárias para suportar a plataforma Java, permitindo assim que desenvolvedores usufruam dos benefícios da plataforma Java em dispositivos com limitados recursos de hardware e software. Extingüindo-se a depen dência de um sistema operacional hospedeiro, desenvolvedores podem criar ainda código que suporta diferentes tipos de dispositivos sem muitas das restrições impostas por sistemas operacionais tradicionais.

    Para essa finalidade, JavaOS é construído utilizando uma arquitetura de camadas. Cada camada é projetada para ser mantida de modo independente. Esta arquitetura serve basicamente para dois propósitos: customizaç&atild e;o o produto e adoção de um modelo de sistema operacional paralelo.

    Customização do produto diz respeito à montagem das camadas do JavaOS de acordo com as restrições e propósitos do produto. Por exemplo, um telefone inteligente rodando JavaOS pode precisar de um kernel c om propriedades de resposta em tempo-real, bem como da máquina virtual Java correspondente, de um conjunto mínimo de capacidades gráficas e de alguns protocolos de comunicação. Já um computador de rede requer um < I>kernel mais completo, sem restrições de tempo-real, além da máquina virtual Java, do Abstract Window Toolkit (AWT - uma completa biblioteca gráfica) e de todo o resto do kit JDK e das API�s Java, incl uindo o browser HotJava.

    Um Ambiente Java Independente

    JavaOS oferece um ambiente Java independente. Ou seja, as aplicações desenvolvidas para a plataforma Java utilizando o JavaOS podem rodar em dispositivos sem a necessidade do suporte ou da existência de um si stema operacional hospedeiro. Do mesmo modo, aplicações escritas para rodarem numa máquina sem a existência de um sistema operacional hospedeiro podem rodar em máquinas que não utilizem o JavaOS.

    Para suportar a plataforma Java, JavaOS:

      • Suporta a máquina virtual Java, utilizando um kernel para Java;
      • Suporta AWT e as classes de E/S para arquivos e rede;
      • Oferece os drivers para controle de display, interface de rede, mouse e teclado;
      • Suporta a API Java completa.

    Quais são as principais vantagens proporcionadas por um sistema operacional em um sistema computacional?

    Figura 2. A Arquitetura JavaTM

    A Figura 2 mostra a arquitetura de software utilizada pelo JavaOS. Acima da API Java estão as aplicações e os applets Java independentes de plataforma.

    JavaOS Kernel

    Interno ao JavaOS, o runtime executa não apenas aplicações a nível do usuário, mas tambe�m executa o código de drivers, rede, gráficos e janelas a nível de si stema operacional. A mais baixa camada de código do JavaOS manipula as tarefas sempre presentes em micro ou nano-kernels. O JavaOS kernel contém as funções de baixo nível requeridas pela máquina virt ual Java. Esta funcionalidade requerida é dividida nas seguintes categorias:

      • Booting
      • Tratamento de Exceções
      • Suporte a Threads
      • Gerenciamento de Memória
      • Monitores
      • Sistema de Arquivos
      • Timing
      • Gerenciamento da Biblioteca de Código Nativo
      • Tratamento de Interrupções
      • DMA
      • Depuração
      • Controle geral da Plataforma (miscelânea)

    Sistemas de boot para rede, ROM, RAM, floppy e hard disks são todos suportados pelo sistema operacional JavaOS. Enquanto o código de bootstrap está rodando, ele aloca diversas regi ões da memória, incluindo uma para a pilha Java e outras para os vários registradores de dispositivos de E/S, além das regiões de DMA. O boot também manipula o mapeamento dos dispositivos de hardware que são detectados para os seus drivers correspondentes.

    Além de fornecer o serviço de tratamento de traps e interrupções, o código correspondente faz com que as informações relacionadas estejam acessíveis para o driver Jav a de dispositivo apropriado.

    JavaOS não requer uma unidade de gerenciamento de memória (MMU), mas ele pode usar uma MMU para fazer com que diversas faixas separadas de memória fisíca aparentem ser contínuas, o que simplifica basta nte o processo de alocação de memória. A linguagem de programação Java elimina a manipulação direta da memória através do encapsulamento de todos os acessos a objetos, classes e memória livre. A eliminação de ponteiros faz de Java uma linguagem mais robusta que C e reduz drasticamente o número de falhas relacionadas à memória.

    O código de suporte a threads permite que a máquina virtual Java troque contextos entre diversos threads que estejam rodando no sistema num determinado instante. Devido à proteção provida pela linguagem de programação Java, o sistema operacional JavaOS e todas as aplicações Java podem rodar em um espaço de endereçamento único. Isto simplifica e otimiza o código de chaveamento de cont exto do JavaOS.

    JavaOS apresenta um modelo de memória abstrato e portável. O modelo de memória é baseado no conceito de endereçamento. Entenda-se por endereçamento o processo de identificaçã ;o de um local da memória. A unidade de endereçamento mais fundamental em JavaOS é o endereço físico. Um endereço físico identifica um único local na memória, não sendo transladado pela MMU; pelo contrário, ele é um , identificando o que pode ser memória ROM, RAM ou E/S.

    O espaço de endereçamento virtual do JavaOS é criado pela camada do Java kernel. Note que o termo "virtual" não necessariamente implica em paginação. Pelo contrário, o termo virtua l significa que este espaço de endereçamento é utilizado por todos os programas semm amarrações quanto ao endereçamento físico. JavaOS não assume uma correspondência um-para-um entre os espa&cc edil;os de endereçamento físico e virtual.

    Diferentemente de muitos sistemas operacionais em uso hoje em dia, JavaOS não opera sob o princípio de múltiplos espaços virtuais de endereçamento. Pelo contrário, JavaOS opera em um espaço virtual de en dereçamento único.

    Drivers de Dispositivos

    Todos os drivers dos dispositivo do JavaOS são escritos na linguagem de programação Java. Isto é muito importante para questões de portabilidade.

    Por outro lado, existem tarefas de nível muito baixo, altamente necessárias para a implementação de um driver de dispositivo, que não podem ser escritas em código Java. Para resolver este problema, estas tarefas foram abstraídas em duas pequenas classes de suporte escritas em C. Estas são:

      • Classe Memory
      • � que permite aos drivers acessar e modificar bytes específicos e palavras armazenadas;
      • Classe Interrupt
      • � que manipula e trata os eventos decorrentes de interrupções no sistema.

    Pacote de Protocolos de Rede

    Um amplo pacote de protocolos de rede é oferecido pelo sistema operacional JavaOS, todos escritos na linguagem de programação Java. Estes protocolos incluem o básico dos mecanismos de transporte e roteamento especific ados pelos padrões TCP,UDP, IP e ICMP. JavaOS utiliza ambos DNS e NIS para serviço de nomes.

    Além disso, tanto Reverse ARP quanto o DHCP são suportados pelo JavaOS para identificação de endereço de um dispositivo. Isto otimiza em muito a instalação de máquinas que utilizem o JavaOS.

    Uma máquina rodando JavaOS pode acessar arquivos como um cliente de um servidor com um Sistema de Arquivos de Rede, e pode ser gerenciada utilizando o protocolo SNMP.

    Janelamento e Gráficos

    Ao lado do pacote de protocolos de rede, a maior peça da funcionalidade operacional oferecida pelo JavaOS é o sub-sistema de janelamento e gráficos.

    JavaOS utiliza a biblioteca Tiny AWT para prover a implementação de recursos gráficos como botões, menus e barras de rolagem. Esta biblioteca não perde em funcionalidades se comparada à b iblioteca AWT. Ela se diferencia desta segunda porque utiliza menos recursos do sistema sobre o qual roda.

    Funcionalidades da Máquina Virtual Java

    Como componente fundamental dos sistemas "Java compatíveis", como o JavaOS, a máquina virtual Java é utilizada basicamente para interpretar bytecodes Java, além de ser a infra-estrutura para grande parte do res to do sistema operacional JavaOS. Ela traduz bytecodes para todas as classes internas ao sistema, como gerenciamento de memória, tratamento de exceções e gerenciamento da execução simultânea de múltiplos threads.

    A última implementação da Máquina Virtual Java utilizada pela SUN é muito restrita se comparada ao padrão suportado pelo Java Developer Kit (JDK), mas tem sido otimizada quanto aos mecanismos de aloca&cc edil;ão de memória e armazenamento de classes. Neste último item, classes que não estão sendo utilizadas pelo sistema para nenhum objeto, são automaticamente liberadas.

    Vantagens do JavaOS

    Existem muitas vantagens proporcionadas pela plataforma Java implementada diretamente sobre o hardware, como é o caso da arquitetura do sistema operacional JavaOS. Dentre as principais podemos citar:

      • JavaOS atinge o objetivo de eliminar o overhead de um sistema operacional hospedeiro convencional. Isto porque a estrutura do JavaOS pode ser adaptada para os diversos dispositivos de rede, de acordo com as suas necessidades. Ou seja, todas as características desnecessárias ao dispositivo, sempre presentes em sistemas operacionais convencionais, são eliminadas no JavaOS;
      • JavaOS pode ser armazenado em memória ROM, atendendo deste modo sistemas simples e de baixo custo que necessitem de um boot rápido;
      • JavaOS é escrito em Java, e portanto, novos componentes podem ser desenvolvidos rapidamente, já que a linguagem de programação Java é simples e fácil. Além disso, o código Java é inerentem ente portável e dinamicamente extensível;
      • JavaOS atende a sistemas que são simples de instalar e manter, como terminais, incorporando poderosas as características de uma estação de trabalho tradicional. O custo de configurar e manter um computador talvez seja a par te mais onerosa de se possuir uma máquina. JavaOS pode reduzir dramaticamente esse custo, sem a perda de funcionalidades típicas.

    Sistemas Alvo para JavaOS

    JavaOs é ideal para diversos tipos de dispositivos, incluindo computadores para acesso à Intranet e Internet, e dispositivos embutidos. Como o nome indica, JavaSoft desenvolve software, e não hardware, fornecendo o JavaOS para as companhias fabricantes de hardware, permitindo que elas construam dispositivos inteligentes e dinâmicos.

    Intranets

    Computadores de acesso à Intranet são máquinas conectadas a uma infra-estrutura de rede corporativa. A maioria das companhias disponibiliza conexões Ethernet para cada estaç&atild e;o de trabalho sua, a qual passará trocar dados e acessar aplicações internas à empresa. Muitas dessas companhias dispõem de redes de alta velocidade, sustentadas por potentes backbones.

    Servidores são um outro elemento-chave das redes corporativas. Eles suportam a administração centralizadas das estações de trabalho que compõem a Intranet. Por exemplo, se um servidor imp lementa o protocolo DHCP, que permite a alocação dinâmica de endereços IP, nenhum esforço extra é necessário para a instalação na Intranet de novas estações de trabalho.

    A plataforma Java é ideal para o desenvolvimento e aperfeiçoamento de aplicações baseadas em Sistemas de Informação num ambiente corporativo. Isto porque as aplicações podem ser au tomaticamente "baixadas" através da rede, além da facilidade de desenvolvimento de aplicações na linguagem de programação Java.

    Internet

    Os computadores domésticos conectados à Internet, apesar dos avanços na área, não dispõem geralmente de recursos sofisticados de rede. De fato, eles têm que trabalhar utiliz ando uma largura de banda relativamente limitada, mantendo ainda acesso a modens de alta velocidade e recursos de RDSI (Rede Digital de Recursos Integrados).

    Considerando que a absoluta maioria das pessoas não possui potentes servidores de rede em suas casas, os provedores de serviços da Internet terão que prover a infra-estrutura necessária para que os usu ários possam utilizar os serviços da rede satisfatoriamente e do modo transparente.

    Dispositivos Embutidos

    JavaOS pode ser facilmente ajustado para dispositivos particulares como PDAs, set-top boxes e dispositivos eletrônicos sem recursos de exibição gráfica. Note que isto não significa em red uzir as capacidades da linguagem através da utilização de um sub-conjunto seu. Mas, por outro lado, remover apenas as características que sejam dispensáveis na máquina-alvo. Por exemplo, se há display gr&aa cute;fico, não existe a necessidade da utilização da AWT, nem mesmo do código para janelas e gráficos do próprio JavaOS. Isto é possível graças à modularidade da plataforma Java.

    Disponibilidade

    Atualmente, JavaOS roda em diversas plataformas de hardware. Um conjunto de plataformas é baseado em microprocessadores SPARC. Um outro conjunto de plataformas é baseado em microprocessadores compatív eis com o conjunto de instruções do x86 da Intel. JavaOS tem sido portado para sistemas baseados em outros conjuntos de instruções para microprocessador.

    A versão atual do JavaOS é baseada na versão 1.0 do JDK. Algumas das propriedades-chaves que estão sendo previstas para as próximas versões do JavaOS incluem:

      • Novas API�s para a plataforma Java;
      • Uma nova interface para drivers de dispositivos;
      • Componentes avançados de janela e gráficos com propriedades como fontes escaláveis;
      • Um pacote de protocolos avançados de rede com suporte a comunicação PPP.

    JavaOS é um sistema operacional?

    JavaOS é realmente um sistema operacional? Isto depende do ponto de vista de quem avalia. JavaOS difere dos sistemas operacionais convencionais em muitos aspectos, pois:

      • Não precisa de um sistema de arquivos;
      • Não precisa de memória virtual;
      • Não precisa de espaços de endereçamento separados;
      • Não suporta mais de uma linguagem de programação (no caso, só Java);
      • Não possui seu próprio conjunto de chamadas do sistema.

    Por outro lado, JavaOS possui muitas caraterísticas semelhantes às dos sistemas operacionais convencionais, como:

      • É "bootável";
      • Suporta a propriedade de login protegido por senha;
      • Roda múltiplos applets simultaneamente com segurança;
      • Inclui diversos drivers de dispositivos;
      • Utiliza muitos protocolos de comunicação de rede padronizados;
      • Possui se próprio sistema de janelas;
      • Possui uma API.

    Conclusão

    Basicamente, JavaOS é uma nova plataforma de software que permite a execução de aplicações Java diretamente no hardware sem a necessidade de um sistema operacional hospedeiro.

    JavaOS inclui a máquina virtual Java, os pacotes padrões de classes e apenas o código de sistema operacional suficiente para suportá-los. O código de sistema operacional inclui um código de baix o nível escrito em C ou em linguagem assembly, mais os códigos dos drivers de dispositivos, rede, janelamento e tratamento de gráficos - completamente escritos na linguagem de programação Java.

    A principal vantagem do JavaOS é a eliminação do overhead e da complexidade dos sistemas operacionais hospedeiros. Ele permite o desenvolvimento de novas classes de dispositivos de rede simples, inteligentes e dinâmicos, que conseqüentemente terão um baixo custo. JavaOS é destinado a sistemas como terminais de intranet, computadores de usuários de Internet equipados com pacotes de suporte à navegação e dispositvos embutidos onde recursos de hardware são sempre muito restritos.


    Referências Bibliográficas

    Ä

    Sobre Inferno
    • http://inferno.lucent.com/inferno

      What is Inferno?

      Inferno: la Commedia Interativa

      Security in Inferno

      A comparision of Inferno and Java

      • http://207.121.184.224

      Inferno: White Papers

      Ä

      Sobre JavaOS
      • http://java.sun.com/products/javaos

        The Java plataform and JavaOS: Enabling Network-Based Applications

        JavaOS: The Standalone java Application Platform

        JavaOS: A Standalone Java Environment


        VOLTAR

        Quais as vantagens de um sistema operacional?

        É como uma ponte entre o hardware e os aplicativos, além de fornecer a interface gráfica para a utilização da máquina. O sistema operacional administra os recursos do dispositivo e influencia diretamente na experiência do usuário.

        Qual é a importância do sistema operacional para um sistema computacional?

        Um sistema operacional é importante porque nos permite interagir e dar ordens ao computador. Sem um sistema operacional um computador é inútil, não teríamos a plataforma que carrega os programas para criar um documento, escutar música, navegar na internet ou enviar um e-mail por exemplo.

        Quais as principais vantagens de se utilizar o sistema operacional Windows?

        Windows: vantagens e desvantagens Entre as vantagens está a facilidade de utilização, ou seja, uma grande parte de usuários com idades e background diferentes podem aprender a usar sem quebrar a cabeça. Além disso, existem várias opções de aplicativos disponíveis.

        Quais são as vantagens e as desvantagem do sistema operacional Windows?

        Facilidade de uso e eficiência: O Windows é simplesmente o sistema de computador mais fácil de organizar. Os usuários podem realizar suas tarefas respectivas sem muitas complicações, até porque a Microsoft fez e faz questão de deixa tudo bem organizado. Com isso, o usuário tende a ser fiel a marca.