Você está na página 1de 14

RESUMO:

Inferno um sistema operacional compacto projetado para a construo de rede e sistemas distribudos em uma ampla variedade de dispositivos e plataformas. Com muitos recursos avanados e nico, O Inferno pode ser executado como um aplicativo de usurio no topo de um sistema operacional existente ou como um sistema autnomo de funcionamento.

Inferno S.O.
O Inferno um sistema operacional para criao e suporte a servios distribudos. O nome do sistema operacional e dos programas associados, bem como o da companhia Vita Nuova que o produziu, so inspirados pelo trabalho literrio de Dante Alighieri, particularmente a Divina Comdia. O Inferno roda no modo hospedeiro sobre vrios sistemas operacionais diferentes, ou nativamente em um range de arquiteturas de hardware. Em cada configurao o sistema operacional apresenta as mesmas interfaces padres para suas aplicaes. Um protocolo chamado Styx aplicado uniformemente para acessar os recursos tanto os locais como os remotos. A partir da quarta edio do Inferno, Styx idntico mais nova verso do hallmark 9P protocol, 9P2000do Plan 9. As aplicaes so escritas na linguagem de programao type-safe chamada Limbo, em que a representao binria idntica em todas as plataformas, e executada usando a tcnica de compilao just-in-time em uma mquina virtual.

Principios do design
O Inferno um sistema operacional distribudo baseado em trs princpios bsicos: Recursos como arquivos: todos os recursos so representados como arquivos em um sistema de arquivos hierrquico. Namespaces: a viso da aplicao da rede nica, coerente namespace que aparece como um sistema de arquivos hierrquico mas pode representar recursos separados (locais ou remotos) fisicamente.

Protocolo padro de Comunicao: um protocolo padro, chamado Styx (9P2000), usado para acessar todos os recursos, tanto locais quanto remotos.

Plan 9 ancestralidade
O Inferno e o Plan 9 compartilham um ancestral comum, um sistema operacional de aproximadamente 1996. Eles compartilham os mesmos princpios de design, embora haja diferenas: O Plan 9 userland roda cdigo nativo, na maior parte em linguagem C com uma pequena quantidade de cdigo em linguagem assembly, enquanto o Inferno userland roda atravs de um interpretador bytecode ou compilao just-in-time chamado Dis, na maior parte escrito em Limbo. O ncleo do Plan 9 um ncleo hibrido, enquanto o ncleo do Inferno um ncleo antigo do Plan 9 com os excessos desnecessrios tirados fora e incluindo uma mquina virtual. O ncleo Plan 9 chaveia entre o modo usurio (userland) e o modo supervisor (ncleo), enquanto o Inferno nunca deixa o modo supervisor (ncleo), mas fornece proteo atravs do uso de uma mquina virtual. Inferno um tanto similar a Java Virtual Machine.

Ports
O Inferno roda diretamente em hardware nativo e tambm como uma aplicao, provendo um sistema operacional virtual que roda em outras plataformas. Aplicaes podem ser desenvolvidas e rodadas em todas as plataformas Inferno sem modificaes ou recompilao. Portes nativos incluem: x86, MIPS, XScale, ARM, PowerPC, SPARC.

Hosted or Virtual OS ports include: Microsoft Windows, Linux, FreeBSD, Plan 9, Mac OS X, Solaris, IRIX, UnixWare. O Inferno pode tambm ser hospedado por um plugin para o Internet Explorer. De acordo com a Vita Nuova plugins para outros navegadores esto a caminho. [1]

Licena
A quarta edio do Inferno 4th foi distribuda no princpio de 2005 como Software Livre sobre uma mistura de licenas Open Source (GNU GPL, GNU LGPL, Lucent Public ou MIT License, dependendo do componente). Vita Nuova tambm oferece uma licena comercial convencional no copyleft para aqueles que no desejam licenciar suas modificaes sobre o esquema padro Free Software.

Livros
O Livro Texto Inferno Programao com Limbo ISBN 0470843527 (Chichester: John Wiley & Sons, 2003), Por Phillip Stanley-Marbell, descreve um edio 3 do Sistema Inferno Operacional, embora mais voltado para a linguagem Limbo e suas interfaces com o sistema Inferno , que no sistema Inferno em si. Por exemplo, ela fornece poucas informaes sobre shell Inferno comando verstil, o que compreensvel, uma vez que um livro de linguagem de programao. Outro Livro "O Inferno de Programao Livro: Introduo Programao para o Inferno Distributed System", Por Martin Atkins, Charles Forsyth, Rob Pike e Howard Trickey, TeVe uma Inteno hum provador de Ponto de Vista centrado nenhum Sistema Operacional, MAS FOI infelizmente Nunca completado / lanado Por SEUS Autores.

Cross-Platform Portabilidade

Inferno pode ser executado como um aplicativo de usurio no topo de um sistema operacional existente ou como um sistema autnomo de funcionamento. A maioria dos sistemas operacionais e arquiteturas de processadores so suportados: Sistemas Operacionais Host Windows NT/2000/XP Irix Linux MacOS X FreeBSD Solaris Plan 9 Arquitecturas Suportadas Intel x86 (386 e superior) Intel XScale IBM PowerPC StrongARM ARM (ARM & Thumb) Sun SPARC

Inferno tambm funciona como um plug-in no Internet Explorer verso 4 ou superior. Cada sistema Inferno apresenta um ambiente idntico s aplicaes, independentemente do sistema operacional host subjacente ou arquitetura, permitindo ao desenvolvedor trabalhar com um ambiente verdadeiramente homogneo em vrias plataformas diferentes .

Aplicativos Portable
Inferno aplicaes so escritas em Limbo , uma moderna, segura, modular, linguagem de programao concorrente com a sintaxe C-like. Ele mais poderoso que C, mas consideravelmente mais fcil de entender e depurar a C + + ou Java. fcil de expressar a simultaneidade, no mundo fsico diretamente na sintaxe do Limbo. Qualquer pedido Inferno ser executado de forma idntica em todas as plataformas Inferno.

Portable Cdigo
Limbo cdigo compilado em cdigo independente de arquitetura para o Dis Virtual Machine, com uma representao compacta. Dis pode ser interpretado de forma directa (economia de espao), ou compilado em tempo real para um processador de destino indicado (economia de tempo). A escolha pode ser feita em tempo de execuo, por mdulo. Dis A arquitetura foi cuidadosamente projetado para fazer on-the-fly a gerao de cdigo simples. Suas instrues so fceis de implementar.

Transparente Recursos
Inferno oferece transparncia completa dos recursos e dados atravs de simples namespace 'do sistema, mas poderosa "um. Representando recursos como arquivos e ter um protocolo de comunicao padro - 9P (Styx ) - recursos como armazenamento de dados, servios e dispositivos externos podem ser facilmente compartilhados entre os sistemas de Inferno. Uma interface de recursos podem ser importados para o sistema local e usado pelas aplicaes sem eles saberem, ou a necessidade de saber, se local ou remoto.

Segurana
Alto nvel de segurana uma parte importante do sistema Inferno. Usando um protocolo padro para todas as comunicaes de rede, segurana pode ser enfocada em um ponto, e desde a nvel de sistema. Inferno oferece suporte completo para autenticado, conexes criptografadas usando um certificado de sistema de identificao de usurio baseadas e uma variedade de algoritmos, incluindo:

IDEA, DES de 56 bits, 40, 128 e 256-bit RC4 algoritmos de criptografia

MD4, MD5 e algoritmos de hash SHA seguro Uma Soluo Completa Inferno no apenas um sistema operacional, tambm um ambiente de desenvolvimento completo, fornecendo todas as ferramentas necessrias para criar, testar e depurar as aplicaes que rodam nele.

Acme IDE: inclui o editor, o escudo, as ferramentas padro mais avanado de correspondncia e muito mais Fast Compiler: com a sintaxe completa e compilar a verificao de tipo de tempo Grfica Debugger: com pilha completa de tpicos em execuo no momento Poderosa Shell: com sofisticados recursos de script comandos UNIX, como: incluso de vincular, grep, gzip, montagem, ps, alcatro, yacc.

3 Inferno
O sistema Inferno um sistema operacional direcionado para a criao de servios distribudos [BEL 96]. Foi desenvolvido pelo Bell Labs, o brao de pesquisa e desenvolvimento da Lucent Technologies (http://www.lucent.com). O sistema Inferno pode ser utilizado em uma grande variedade de ambientes de rede, sistemas de telefonia, aparelhos de TV conectados a sistemas de cabos, agendas eletrnicas (PDA's) e computadores. As aplicaes escritas para o Inferno so independentes de plataforma. Isso significa que o mesmo programa, sem nenhuma modificao, pode ser executado em qualquer plataforma que suporte o Inferno. As aplicaes rodam sobre uma virtual machine que permite escrever o programa uma vez e execut-lo em muitos ambientes. O Inferno pode ser executado como um sistema operacional nativo ou hospedado sobre um sistema operacional existente. A verso 2.0 roda como um sistema operacional nativo nos processadors Intel x86, AMD 29000, MIPS, Motorola 68030 e StrongARM e hospedado em Windows 95/98, Windows NT, UNIX Solaris e Linux. Ele suporta os protocolos de rede TCP/IP e UDP/IP. O sistema Inferno inclui:

o kernel do sistema operacional de rede; uma linguagem de programao: Limbo; uma virtual machine chamada Dis; um protocolo de comunicaes, chamado Styx; a API (Application Programming Interface) Inferno; uma biblioteca grfica independente de plataforma; funes de segurana e autenticao;

kits de ferramentas.

O propsito geral da linguagem Limbo gerar aplicaes executadas em sistemas distribudos em computadores de pequeno porte. A linguagem Limbo suporta programao modular e sua sintaxe similar da linguagem C. Os programas escritos em Limbo usam a API Inferno que inclui interfaces para suporte a rede, segurana, grficos e outros servios.

Limbo uma mistura de C e Pascal, acrescida de mdulos que lidam com o espao de nomes e a carga dinmica de grandes programas e de uma funo de canal para permitir programao paralela [GRO 96]. Limbo interpretada pela Dis, virtual machine do sistema Inferno, que pode interpretar o programa Limbo ou compil-lo dinamicamente no momento da execuo (conhecida como compilao "just-in-time" - JIT). Dis oferece um sistema de garbage collection que recupera a memria que no est sendo mais utilizada. Dis transfere as instrues para o kernel do Inferno que oferece os servios necessrios para processos, arquivos ou outros recursos de gerncia. Se a aplicao solicita o um recurso remoto, o kernel do sistema Inferno usa o protocolo Styx para comunicar com a mquina remota. O protocolo Styx isola as aplicaes do sistema Inferno de detalhes fsicos da rede, tambm oferecendo transparncia de comunicaes sobre uma variedade de redes com funes de segurana.

Figura 1 - Diagrama de Componentes do sistema Inferno, traduzido de [LUC 97].

3.1 Componentes do Sistema Inferno


A figura 1 apresenta um diagrama dos componentes do sistema Inferno. Na camada de aplicaes, a mais superior, as aplicaes Limbo so executadas atravs da virtual machine Dis, que o componente da camada de aplicaes que interpreta as

instrues dos programas e invoca as respectivas system calls necessrias para completas as aes solicitadas. As aplicaes escritas em Limbo s podem ser executadas em sistemas que rodem Inferno, tanto clientes como servidores. Abaixo da camada de aplicaes se encontra a camada kernel, onde esto localizados os componentes que oferecem a funcionalidade de sistema operacional ao Inferno: gerncia de espao de nomes, controle de processos, gerenciamento de memria, segurana e funes grficas. Estes elementos do kernel se comportam da mesma maneira, quer estejam sendo executados diretamente no hardware ou sobre um sistema operacional nativo atravs do uso de um emulador. A camada de hardware composta de componentes fsicos do sistema, tais como dispositivos e redes. A exceo ocorre quando o Inferno est sendo executado no ambiente de emulao, onde o acesso a essa camada feito atravs do sistema operacional hospedeiro.

3.2 Mquina Virtual Dis


A mquina virtual Dis oferece o ambiente de execuo para as aplicaes executadas sob o sistema Inferno. Ela projetada como uma arquitetura CISC, memria a memria e com trs operandos. O cdigo pode ser interpretado por uma biblioteca C ou compilado dinamicamente em cdigo da mquina onde ser executado. Dis pode escalonar mltiplas threads que so executadas pelo modelo de escalonamento round-robin, descrito em [TAN 92], o que possibilita multitarefa at mesmo em aplicaes finas. [LEW 97] analisam essa possibilidade.

3.2.1 Organizao da memria


A memria para a execuo de threads dividida em vrias regies separadas [LUC 97]:

o segmento de cdigo armazena um fluxo decodificado de instrues de mquina virtual pronto para execuo pelo interpretador ou cdigo nativo de mquina que compilado dinamicamente pela CPU hospedeira; uma thread executando um mdulo tem acesso a duas regies da memria de dados:
o o

um apontador de mdulo (module pointer, mp) define uma regio global de armazenamento para um mdulo especfico; um apontador de quadro (frame pointer, fp) define o registro atual de ativao do frame para a thread.

a memria pode ser alocada da pilha usando-se vrias formas de instrues new e pode ser endereada logo a seguir usando-se um modo de endereamento indireto com o pointer armazenado em fp ou mp.

A memria de dados endereada como bytes. As palavras so armazenadas na representao nativa da CPU hospedeira. Tipos de dados maiores que um bytes devem ser armazenados em endereos contguos.

Somente uma instncia da Dis controla a pilha. Mltiplas instncias no podem compartilhar a memria, j que no existem mecanismos de lock na pilha. Todos os mdulos e threads compartilham uma nica pilha de dados. O mdulo de programa instancia e empilhas frames que so alocados da pilhas. Cada objeto da pilha associado com um descritor de tipos que contm seu tamanho e a localizao dos pointers de outros objetos da pilha. A informao sobre a localizao da memria transmitida na forma de descritores de tipos que so gerados automaticamente pelo compilador Limbo. Quando um objeto novo gerado, todos os seus pointers so inicializados como nil, um valor certo de garantir uma exceo se for referenciado. A proteo de memria garantida pela cooperao entre o compilador e a memria virtual.

3.2.2 Coleta de lixo


O coletor de lixo na mquina virtual Dis um esquema hbrido que usa dois algoritmos. A maior parte da memria coletada usando-se um algoritmo de contagem de referncia que restaura os recursos, colocando-os a disposio imediatamente aps o ltimo uso. Estruturas de dados que so cclicas so detectadas pelo coletor de lixo, que executado como um processo independente na mquina virtual. Estruturas cclicas so coletadas por um processo de "marcao-e-limpeza" que garante uma desalocao considerada eficiente. Esta abordagem hbrida de coleta de lixo permite que o programador tenha a liberdade de escolher quais tipos especficos so manipulados pela mquina para otimizar o cdigo a fim de obter uma melhor performance. A seleo das instrues determina qual algoritmo ser aplicado a tipos especficos.

3.3 Programao Paralela com Limbo


Mltiplas threads Limbo so executadas em uma fila de execuo e executadas atravs do escalonamento round-robin. As threads so multiplexadas em processos. Uma thread qualquer pode ser executada por vrios processos em seqncia antes de ser completada e mltiplas threads podem ser anexadas a um nico processo. A tabela 1 lista os estados possveis em que podem se encontrar as threads.
Estado alt broken Significado Processamento de comunicao inter-thread A thread sofreu um "crash"

delete exiting ready receive release send

Remova da fila Instrues da thread completadas Disponvel para executar instrues Pronta para receber um valor de outra thread Remover da fila para completar uma call do kernel Pronta para transmitir um valor para outra thread

Tabela 1 - Estados possveis de uma thread, de [LUC 97]. A figura 2 apresenta um diagrama com a seqncia de operaes da mquina virtual Dis, executando as threads.

Figura 2 - Operao da virtual machine Dis, traduzido de [LUC 97]. Um programa Limbo constitudo de um ou mais processos, cada um contendo uma ou mais threads, que podem ser escalonadas preemptivamente pelo sistema e podem executar em uma mquina multiprocessada. As threads so controladas pelo run-time da Limbo e so executadas cooperativamente. Cada programa Limbo iniciado como uma nica thread. A primeira thread de cada programa criadas quando o programa inicia. Ela inicia sua execuo quando executada a funo init. A palavra-chave spawn permite a criao de uma nova thread escalonada independentemente de uma funo Limbo.

A figura 3 demonstra a criao de uma thread func1 a partir da thread original. A seguir, o programa chama outra thread func2 que, por sua vez, cria uma outra thread func3.

Figura 3 - Programa Limbo criando threads, extrado de [LUC 97a]. Um canal Limbo um mecanismo utilizado pela linguagem para a passagem de dados tipados entre threads. Um canal algo como um vetor. Ele prprio um tipo e, por sua vez, tem um tipo. Os canais formam um modelo de controle comum para programas Limbo: um processo executivo (ex. init) inicia outras threads e comunica-se com elas atravs de canais. Os canais so similares aos pipes do UNIX. A declarao a seguir cria um canal de nome c que transporta valores inteiros. c : chan of int; As operaes possveis com canais so: enviar uma mensagem atravs do canal ou receber uma mensagem pelo canal. Nos primeiro exemplo a seguir, o inteiro 5 enviado pelo canal c. No segundo exemplo, a varivel i recebe o valor que foi passado atravs do canal c. c <-= 5; i := <-c; A figura 4 demonstra a passagem de valores entre threads atravs do uso de canais.

Figura 4 - Passagem de mensagens entre threads atravs do uso de canais, extrado de [LUC 97a].

Curiosidades:
Inferno no Android: A verso para Android do sistema operacional distribudo e open source Inferno, criado em meados da dcada passada nos Bell Labs, acaba de ser anunciada. Nesta verso, batizada de Hellaphone, o Inferno roda hospedado diretamente sobre o kernel Linux do Android, substituindo os servios no estilo Java e a interface grfica deste. A linguagem Limbo permite o desenvolvimento de aplicativos para o ambiente, e um vdeo no YouTube est disponvel demonstrando o sistema. (via osnews.com Inferno OS running hosted on Android phones).

Bibliografias Acesso em: 29/10/2011 http://www.inf.ufrgs.br/gppd/disc/cmp157/trabalhos/urcamp99-1/ccl/index.html http://infernoos.blogspot.com/2010/09/tudo-sobre-sistema-operacional-inferno.html .