Você está na página 1de 11

Chapter

6
Sistema Operacional Plan9/Inferno
Jaedson Bruno de Oliveira Arajo, Jackson Soares, Emerson Max de Medeiros Silva, Fernanda Cardinaly de Arajo Silva
Resumo
O Plan9/Inferno so sistemas operacionais descendente do Unix. Apesar de no ser um variante Unix, O Plan9 e o Inferno possuem muitas caractersticas que exploram assim vrias "simplificaes" do modelo Unix original. O Plan9/Inferno utilizam recursos como arquivos, namespaces e um protocolo de comunicao que responsvel por se comunicar com processos, aplicaes e dados, incluindo tanto a interface de usurio quanto a rede.

Abstract
The Plan9/Inferno are descended from Unix operating systems. Despite not being a Unix variant, the Plan9 and Inferno have so many features that explore various "simplifications" of the original Unix model. The Plan9/Inferno use resources such as files, namespaces, and a communication protocol that is responsible for communicating with processes, applications and data, including both user interface and the network.

6.1. Os Sistemas Operacionais Plan9 e Inferno.


O Plan 9 um sistema operacional descendente do Unix e desenvolvido pela Bell Laboratories. Apesar de no ser um variante Unix, O Plan 9 possui muitas caractersticas que exploram assim vrias "simplificaes" do modelo Unix original. Isso incrementa a experincia de usar e programar o sistema, notavelmente em ambientes multi-usurios distribudos. O Plan9 utiliza um coelho como sendo o seu mascote, e este tem o nome de Glenda (ver figura 1.1). Em sua configurao mais geral, o Plan 9 usa trs tipos de componentes: terminais (pequenos computadores usados pelos usurios), servidores de arquivo que

armazenam dados de maneira permanente, e outros servidores que proveem CPUs mais rpidas, autenticao de usurio e gateways para redes.

Figura 1.1. Glenda, mascote do Plan9

O desenvolvimento do Plan 9 ocorreu por volta de meados dos anos 80, motivado pela forte tendncia da computao em migrar dos grandes computadores centralizados de tempo compartilhado para as redes de pequenas mquinas pessoais, onde rodavam tipicamente estaes de trabalho UNIX. Os usurios estavam cansados de mquinas burocrticas, sobrecarregadas e de tempo compartilhado, deixando notria assim a necessidade de troc-las por sistemas baseados em computadores pessoais ou estaes de trabalho auto-mantidas interligadas em rede, mesmo que isto significasse uma perda de poder de computao devido a esta conexo via rede. No entanto como os microcomputadores tornavam-se cada vez mais rpidos e baratos, essa perda poderia ser recuperada facilmente, e por essa razo este estilo de computao tornou-se bastante popular, situao que ainda vigora nos dias atuais, desta forma, o Plan 9 veio com o propsito de Construir um novo sistema operacional de tempo compartilhado fora das estaes de trabalho.

O sistema por si escrito em um dialeto do ISO/ANSI C; muitas aplicaes foram anteriormente escritas em uma linguagem chamada Alef, que tiveram que ser reescritos no mesmo dialeto em C, o Plan9 possui ainda um ambiente funcional instalvel para x86, mas existem verses do Plan 9 rodado no Intel, MIPS, Alpha, SPARC, PowerPC, ARM e outras arquiteturas. Em sua arquitetura de desenvolvimento o Plan9 utiliza: - Recursos com arquivos: Todos os recursos so representados como arquivos em um sistema de arquivos hierrquico, onde se estende o sistema mediante arquivos por "nomes", isto , um nico caminho para qualquer objeto, no importando se ele um arquivo, uma tela, usurios, ou computadores. Tudo feito usando os padres Unix existentes, mas adicionando o fato que todo objeto pode ser nomeado e endereado, um conceito similar ao amplamente conhecido sistema URI da internet. Em verses anteriores do Unix, dispositivos como impressoras eram representadas por nomes atravs do uso de programas conversores em /dev, mas estes endeream apenas dispositivos conectados diretamente por hardware, e no mapeia dispositivos em rede. No Plan 9 as impressoras so virtualizadas e tratadas como arquivos e ambos podem ser acessados atravs da rede por qualquer estao de trabalho.

- Namespaces: a visualizao da rede pela aplicao um simples e coerente namespace que aparece como um sistema de arquivos hierrquico, mas representa recursos separados fisicamente (local ou remotamente), capacidade para os usurios de ter diferentes nomes para os mesmos objetos do "mundo real". De fato qualquer usurio pode criar um ambiente personalizado coleccionando vrios objetos em seu "namespace". O Unix tem um conceito similar em que o usurio ganha privilgios ao ser copiado de outro usurio, mas no Plan 9 isto estendido para qualquer objeto. Os usurios pode facilmente criar "clones" de si mesmo, modificar esta cpia, e depois apag-la sem afetar nada dos recursos originais. - Protocolo de comunicao padro: um protocolo padro, chamado 9P, usado para aceder a todos os recursos, tanto locais quanto remotos. O protocolo 9P e sua implementao conectam objetos de rede nomeados e apresentam em uma interface parecida com um sistema de arquivos. O protocolo 9P um rpido sistema de arquivos distribudo orientado a bytes (em vez de ser orientado a blocos) que pode "virtualizar" qualquer objeto, no somente aqueles apresentados por um servidor NFS numa mquina remota. O protocolo usado para referenciar e se comunicar com processos, aplicaes e dados, incluindo tanto a interface de usurio quanto a rede.

O Inferno por sua vez, uma evoluo do Plan9, seu desenvolvimento deu-se com o mesmo propsito de atuar em sistemas distribudos, porm com o poder de fazlo em uma variedade ainda maior de ambientes de redes do que era possvel no plan9 como por exemplo, os telefones de suporte avanado, dispositivos de mo, caixas de TV set-top ligado aos sistemas de cabo ou satlite, Internet e computadores de baixo custo. Os ambientes mais visveis do mundo atual envolvem TV a cabo, transmisso direta via satlite, Internet e outras redes. Como o entretenimento, telecomunicaes, indstria e computao convergem e se interconectam, uma variedade de redes pblicas de dados est surgindo. Ao contrrio do sistema de telefonia, que comeou com terminais padro e sinalizao, estas redes esto se desenvolvendo em um mundo de terminais diversos, hardware de rede e protocolos. S um sistema operacional bem desenvolvido, pode isolar os vrios provedores de contedo e servios do transporte igualmente variados e plataformas de apresentao. Inferno um sistema operacional de rede para esse novo mundo. 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. O diferencial do Inferno esta presente em algumas caractersticas prprias do sistema: - Maior portabilidade entre processadores: atualmente funciona em Intel, Sparc, MIPS, ARM, HP-PA, e arquiteturas PowerPC e facilmente portvel para outros;

- Maior portabilidade em ambientes diversos: ele funciona como um sistema autnomo de funcionamento nos terminais de pequeno porte, e tambm como um aplicativo de usurio no Windows NT, Windows 95, Unix (Irix, Solaris, FreeBSD, Linux, AIX, HP / UX) e Plan 9. Com a mesma interface para todos os ambientes; - Requisitos mnimos de hardware: ele roda aplicaes teis stand-alone em mquinas com apenas 1 MB de memria, e no requer hardware de mapeamento de memria;

- adaptabilidade dinmica: os pedidos podem, dependendo do hardware ou outros recursos disponveis, a carga dos mdulos do programa diferente para executar uma funo especfica. Por exemplo, um aplicativo de player de vdeo pode usar qualquer um dos vrios mdulos do decodificador diferente.

6.2. Histrico
Em 1980 foi criado o Sistema operacional Plan 9 . Ele no variante Unix, mas muito parecido. Explorando vrias "simplificaes" do modelo Unix original. Isso incrementa a experincia de usar e programar o sistema, notavelmente em ambientes multi-usurios distribudos. O Plan 9 foi um projeto interno da Bell Labs por muitos anos, mas a distribuio pblica foi feita em 1993, A Bell perdeu o interesse comercial no projeto aps a dcada de 1990 e distribuiu uma terceira verso sobre um licena no-livre (porm com o cdigo fonte disponvel) em 2000, e finalmente sobre uma nova licena open source em 2002. Esta a quarta, e atual, edio do sistema. Baseado no Plan 9 surgiu o sistema operacional Inferno em maio de 1996 com a verso Inferno Venture Formed. O sistema foi desenvolvido pelo Computing Sciences Research Center, do Bell Labs, que o rgo de pesquisa e desenvolvimento da Lucent Technologies (a mesma que criou o sistema operacional UNIX); tendo como sede a cidade de New Jersey (U.S.A). A equipe responsvel pelo desenvolvimento do Inferno era formada por: Sean M. Dorward, Rob Pike (quem nomeou o sistema e seus componentes, baseando-se na Divina Comdia, de Dante Alighieri), David Leo Presotto, Dennis M. Ritchie (um dos criadores do UNIX), Howard W. Trickey, e Philip Winterbottom. Este sistema tem como misso prover os elementos de software necessrios para construir um sistema com servios operacionais de rede confiveis. O Inferno um sistema operacional e um ambiente de execuo, para redes; pequeno, flexvel, seguro e portvel, que facilita a criao e distribuio de servios nos novos e emergentes ambientes de rede, tais como: CATV (tv a cabo), sistemas de radiodifuso por satlite, assim como: a Internet, usos para entretenimento: aplicaes para "pay-perview", e demais recursos das telecomunicaes e informtica, como telefonia celular, webfone, aplicaes com palm-tops, dentre outras. um sistema para a era centrada nas redes.

Nos dias de hoje , os direitos do inferno so de propriedade de uma companhia britnica, Vita Nuova. O Inferno compartilha muitas das semelhanas de conceitos de design do Plan 9, mas usa uma nova linguagem de programao de aplicativos, a Limbo, que vem acompanhando de uma mquina virtual, Dis. O Inferno vendido como um sistema operacional embarcado open source e se encontra em sua quarta verso.

6.3. Gerenciamentos de Processos/Threads

6.3.1. Gerenciamento de Processos no Plan 9:

Processos em Memria Compartilhada: O programa organizado em um ou mais procs, que so compartilhados na memria de processos do sistema operacional que pode ser agendado antecipadamente; O Plan9 Thread Library torna a programao concorrente: D suporte a multitarefa. A biblioteca implementa procs, segmentos, canais e eclusas: Um canal um mecanismo de passagem de mensagem: um processo envia um valor em um canal e outro recebe. O primeiro processo de enviar ou receber blocos at que outro processo faz uma chamada correspondente. Eles so aplicados na memria compartilhada. Processos esto programados de forma independente (portanto, pode executar simultaneamente em um multiprocessador) e compartilhar a memria. Cada processo contm um ou mais segmentos que se comportam como co-rotinas (ou seja, eles so programados pelo processo). Mtodos de escalonamento: FIFO , Nvel de Prioridades.

6.3.2. Gerenciamento de Processos no Inferno:

Existe apenas a definio de Procs: No Plan9 como existia definio e uso de segmentos e tarefas como maneira de agrupar os Procs, no Inferno a inteno trabalhar com apenas uma unidade de informao e dados com o intuito de deixar o trfego de informaes mais leve. Procura-se evitar o paralelismo; No existe o bloqueio Explicito de processos: a execulso de um Proc, s bloqueada de forma implcita no sistema, basicamente quando aquele proc no esta respondendo ou contm erros. Cada proc execultado por vez. O sistema de escalonamento igual ao Plan9;

O programador deve especificar o dono especifico para qualquer pea de dados: Atravs deste mtodo de gerenciamento de processos, o sistema pode assim identificar qual processo possui maior prioridade, e de onde ele se origina na troca de informaes.

6.4. Gerenciamento de memria 6.4.1. Gerenciamento de memria Plan 9 Plan 9 utiliza memria com segmentao pagina, podendo gerenciar de 8MB a 3840MB de memria, onde pode ser reservado at 256MB para o kernel. Abaixo desse espao reservado para o kernel, tem mais 256MB, que so divididos entre a tabela de pgina virtual, o kmap e kunmap que realiza o mapeamento temporario por processo e para uso geral dos processos e do processador, eles usam respectivamente 4MB, 4MB e 248MB. O algoritmo de seleo de vitima usado o LRU, onde selecionando a pgina que est a mais tempo na memria para ser substituda, deste modo o gerenciamento de memria no Plan9 tem um objetivo bem definido que selecionar aquela pgina que foi a ltima a ser referenciada e assim ocorrer menos pages-faults.

Algo interessante tambm no gerenciamento de memria do Plan9 que das 18 mil linhas de cdigo que compem o Plano 9, cerca de 5000 linhas so exclusivamente para executar o gerenciamento de memria, gerenciamento de processo, interface de hardware e sistema. O resto para os 17 diferentes sistemas de arquivos de execuo de dispositivos, redes, controle de processos, etc. Desde que a maioria dos sistemas de arquivos sejam completamente independentes, a complexidade do cdigo do kernel ainda menor. Na verdade, o kernel responsvel pelo gerenciamento de memria do Plan9 e mesmo com todos os sistemas de arquivo includo ainda inferior a metade do tamanho de sua micro-kernel.

6.4.2. Gerenciamento de memria Inferno No inferno a memria divida em vrias regies separadas para a execuo de threads, o segmento de cdigo armazena um fluxo decodificado de instrues de mquina virtual, que ser traduzido pela maquina virtual para a arquitetura do computador. Um thread executando um modulo tem acesso a duas regies da memria de dados:

Um apontador de mdulo que define uma regio global de armazenamento para um mdulo especfico; Um apontador de quadro que define o registro atual de ativao do frame para a

thread.

O endereamento da memoria em bytes e tipos de dados maiores que um byte armazenado em endereos contguos. E somente uma instancia do Dis (Mquina Virtual utilizada pelo Inferno) controla a pilha por vez. O inferno possui tambm um sistema de coleta de lixo na mquina virtual e que usado dois algoritmos: um de contagem de referencias, que busca por variveis que no esto sendo mais referenciadas e as marcam para ser limpa e a de estrutura de dados cclicas, que verifica quando ocorre uma referncia cclica e a marca para limpeza.

Internamente, o kernel usa esse mecanismo de alocao de bloco atravs de chamadas que operam como o malloc() e free(). Programas de usurio escrito em Limbo no aloca diretamente memria como processos do UNIX fazem usando o brk(), chamada de sistema, ou o malloc() chamada de biblioteca. Por conseguinte, O Inferno no prov nenhuma forma de alocao para chamda de sistemas de processos usurio. H, no entanto, uma srie de construes que fazem Limbo implicitamente alocar memria.

6.5. Sistemas de Arquivos


Podemos entender um recurso como sendo uma convenincia necessria para se realizar um trabalho. Todos os recursos do Inferno, local e remoto, so representados como um conjunto de arquivos dinmicos dentro de um sistema de arquivos hierrquico. Esses arquivos so usados para representar, entre outras coisas, dispositivos de armazenamento, conexes de redes, servios de rede e at mesmo os processos.Processos podem ser entendidos inicialmente como um programa em execuo.(BERENGER MACHADO, Francis; MAIA, Luiz. Arquitetura de Sistemas Operacionais. 3 Edio. Rio de Janeiro: PTC, 2004.65p.). O Inferno eleva ao mximo o conceito de recursos como arquivos. Um aplicativo pode acessar cada recurso atravs de operaes de manipulaes de recursos, como open, close, read e write. As vantagens do uso de recursos como arquivos so: Os sistemas de arquivos tm interfaces simples e bem compreendidas. Atravs de operaes simples possvel acessar os recursos e funcionalidades, como abrir, ler e escrever; A dependncia dos sistemas de arquivos reduz a quantidade de cdigo de interface e mantm o sistema Inferno pequeno, confivel e altamente porttil Convenes de nomenclatura para os arquivos so bem conhecidos, uniforme e de fcil compreenso;

Em relao segurana, os direitos de acesso e permisses para os arquivos so bem simples, mas pode ser usado para garantir a vrios nveis de segurana.

possvel associar a um dado recurso a mais de um arquivo. Quando isso feito cria-se um diretrio, colocando os arquivos relacionados ao recurso dentro desse diretrio. Tipicamente, cada diretrio poderia ter dois arquivos, um para o controle de estados do recurso e outro para operaes de entrada e sada relacionadas ao recurso. Exemplo, o diretrio /dev/tcp representa o recurso relacionado ao protocolo tcp/ip. Nesse diretrio podemos encontrar dois arquivos, data e ctl, data utilizado para operaes entrada e sada e ctl utilizado para o controle de estado do recurso. Localizao dos principais recursos do sistema operacional inferno: /dev/tcp, /dev/udp: Interface de rede /prog: informaes sobre processos. /dev/user, /dev/time: Informaes gerais. 6.5.1. Espaco de Nomes (Namespaces) O espao de nomes serve para manter a representao uniforme dos recursos, formando uma representao hierrquica semelhante ao do sistema Unix. Cada conjunto de recursos representado como uma hierarquia de arquivos e acessvel atravs de operaes de acesso de arquivos padro. Os vrios recursos e servios que esto sendo usados por um processo so combinados em uma nica hierarquia enraizada de nomes de arquivos, chamado de namespace, ou espao de nomes. Os recursos acessveis dentro de um espao individual podem ser localizados em um nico cliente ou em vrios servidores em toda a rede. Uma das principais vantagens deste sistema namespace (espao de nomes) que um aplicativo pode usar recursos de modo totalmente transparente. Depois que os arquivos dinmicos presentes pelo recurso so montados dentro do espao visvel da aplicao, pode acess-los sem saber se o recurso local ou remoto. Por exemplo, o depurador grfico dinmico l os arquivos no diretrio /prog para acessar informaes sobre os processos do sistema atual. No entanto, se o usurio desejasse parar um processo em uma mquina remota, tudo que seria necessrio importar o diretrio /prog dessa mquina. A localizao do espao de nomes transparente, no importando se local ou remoto. Isso quer dizer que as aplicaes enxergar o espao de nomes da mesma maneira. Isso feito com o uso de um protocolo chamado styx.

6.6. Entrada e Sada

Os dispositivos de entrada e sada tanto no sistema operacional Inferno quanto no Plan9 so totalmente descendentes do Unix, mas, no uma variante. Desta forma, os drivers

de dispositivos representado como um sistema de arquivos residente no Kernel e todos os dispositivos de entrada e sada so classificados como sendo de bloco (disco, etc.) ou de caractere (impressora, modem, etc.) e so associados a arquivos mantidos no diretrio /dev (diretrio que herdado do sistema Unix). O acesso aos dispositivos de E/S como terminais discos, impressoras e a prpria rede, feito atravs de arquivos especiais, Cada dispositivo est associado a um ou mais arquivos especiais, localizados no diretrio/dev.

Os sistemas operacionais Plan9 e Inferno tratam os dispositivos como arquivos de sistemas, e com isso possui muitas vantagens, entre elas podemos destacar: Evita problemas de ordem de byte Garante uma representao uniforme de dispositivos no mesmo computador ou at mesmo dispositivos que so acessados remotamente. Outra caracterstica herdada do Unix e que est presente no Plan9 e no Inferno que os dispositivos de hardware so identificados por seu tipo (bloco ou caracteres) e um nmero de dispositivo onde de fundamental importncia, pois existe uma tabela de escolha para dispositivos do tipo bloco e uma tabela de escolha para dispositivos do tipo caractere, que necessita deste nmero do dispositivo para decidir qual dispositivo deve ser usado. Existem dois tipos de nmero de dispositivo: O nmero de dispositivo principal e o nmero do dispositivo secundrio. O nmero do dispositivo principal utilizado como um ndice na tabela de escolha para localizar o drive de dispositivo correto. O nmero do dispositivo secundrio encaminhado para o driver de dispositivo e utilizado para selecionar a(as) subunidade(s) correta(s). ( Por exemplo selecionar a partio correta de um sistema de arquivo mesmo que o disco esteja dividido em vrias parties)

Existe um tipo de dispositivo denominado pseudo-dispositivo (pseudo-devices) que no obedece a nenhum perifrico fsico. Ele apenas uma abstrao empregada para adicionar funcionalidades ao SO, explorando a interface padronizada j existente para o tratamento de dispositivos. assim, por exemplo, que o sistema UNIX permite o acesso memria principal como se fosse um disco (ramdisk), ou ainda o emprego do dispositivo nulo (/dev/null) para descartar dados.

6.7. Curiosidades sobre o Plan9 e o Inferno

O Plan9 e o Inferno tem em comum muitas coisas, inclusive eles so descendentes do mesmo sistema operacional o Unix, e este por sua vez quem o produziu foi a Bell

Laboratories, e esta empresa a responsvel por inmeras faanhas entre elas podemos destacar: 1969: Sistema operativo Unix criado por Dennis Ritchie e Ken Thompson 1983: A linguagem de programao C++ desenvolvida por Bjarne Stroustrup 1998: Primeira combinao de voz e dados sobre uma rede IP 2000: Mapa de alta resoluo do cosmos

A origem do nome Plan9 deve-se a um filme de fico cientifica filmado em 1956 em algumas semanas, e a fama deste filme se deu 2 anos aps a sua estria por ser considerado o pior filme de todos os tempos. O sistema operacional Inferno possui um protocolo de comunicao chamado Styx sendo ele o nico protocolo que o sistema operacional possui e responsvel por representar e acessar os recursos, a palavra Styx originaria da mitologia Grega onde um rio que forma a fronteira entre a terra e o submundo.
Outra curiosidade interessante sobre o nome da linguagem de programao que utilizada para a criao dos programas para o SO Inferno, o nome da linguagem de programao Limbo. Limbo significa, segundo a teologia da Igreja Catlica Apostlica Romana, um lugar fora dos limites do Cu, onde se vive a plena felicidade natural, mas privado da viso beatfica de Deus e por isso, privado tambm da felicidade suprema e eterna.

Tanto o nome do sistema operacional Inferno quanto a Vita Nuova so inspiradas pelo trabalho literrio de Dante Alighieri (1 de junho de 1265 Ravenna, 13 ou 14 de setembro de 1321), foi um escritor, poeta e poltico italiano e at hoje considerado como il sommo poeta ("o sumo poeta"), o maior poeta italiano, particularmente a Divina Comdia.

Referncias 1. Sistema Operacional Inferno<http://bsbjoao.net/wpcontent/uploads/2011/04/SISTEMA_ OPERACIONAL_INFERNO.doc> Acessado em 06 de Junho de 2011. 2. NISHIHARA, M. Ricardo.; WAKU, Evandro.; SOUZA de, Pedro.; Anlise e Descrio do Sistema Plan9 <ftp://ftp.dca.fee.unicamp.br/pub/docs/marco/disci plinas/ia367_98_2/monografias/plan9.pdf.gz> Acessado em 08 de Junho de 2011. 3. SANTOS, dos A. B. Daniel.; <http://www.ic.unicamp.br/~islene/2s2007mo806/slides/Plan9.pdf> Acessado em 08 de Junho de 2011. 4. WIKIPEDIA, 9P. Disponivel em: <http://pt.wikipedia.org/wiki/9P> Acessado em 07 de Junho de 2011. 5. WIKIPEDIA, Plan9 Sistema Operacional. Disponivel <http://pt.wikipedia.org/wiki/Plan_9> Acessado em 05 de Junho de 2011. 6. WIKIPEDIA, Vita Nuova. Disponivel em: Acessado em 03 de Junho de 2011. em:

<http://pt.wikipedia.org/wiki/Vita_Nuova>

7. Principles of operating systems and applications - Google Livros 8. Inferno Official website. Disponivel em: <http://www.vitanuova.com/inferno/index.html> Acessado em 07 de Junho de 2011. 9. <http://www.sabereletronica.com.br/secoes/leitura/274> Acessado em 03 de Junho de 2011. 10. Plan 9 from Bell Labss Official website. Disponvel em: labs.com/sources/plan9/sys/src/9/> Acessado em 08 de Junho de 2011. <http://plan9.bell-

11. Time Line of Bell Labs. Disponivel em: <http://www.alcatellucent.com/wps/portal/BellLabs/History/Timeline> Acessado em 08 de Junho 2011.