Plan 9 from Bell Labs – Wikipédia, a enciclopédia livre

Plan 9 from Bell Labs
Versão do sistema operativo Sucessor do Unix
Captura de tela
Plan 9 from Bell Labs
Instalação do Plan 9
Produção Bell Labs
Linguagem C
Modelo Open source
Lançamento 1992 (universidades) / 1995 (público em geral)
Versão estável Quarta Edição
Método de atualização replica
Arquitetura(s) x86 / Vx32, x86-64, MIPS, DEC Alpha, SPARC, PowerPC, ARM
Núcleo Núcleo Híbrido
Interface rio / rc
Licença Licença dupla (GNU GPLv2 and Lucent Public License (com poucas pequenas exceções [1]))
Página oficial 9p.io/plan9/
Estado de desenvolvimento
Corrente

O Plan 9 é um sistema operacional descendente do Unix e desenvolvido pela Bell Laboratories. Ele não é variante Unix, mas é muito parecido. O Plan 9 explora várias "simplificações" do modelo Unix original. Isso incrementa a experiência de usar e programar o sistema, notavelmente em ambientes multi-usuários distribuídos. O Plan 9 foi um projeto interno da Bell Labs por muitos anos, mas a distribuição pública feita em 1993, seguida por uma versão encolhe-envolve em 1995. A Bell perdeu o interesse comercial no projeto após a década de 1990 e distribuiu uma terceira versão sobre um licença não-livre (porém com o código fonte disponível) em 2000, e finalmente sobre uma nova licença open source em 2002. Esta é a quarta, e atual, edição do sistema.

Os direitos para um produto derivado, Inferno, são de propriedade de uma companhia britânica, Vita Nuova. O Inferno compartilha muitas das semelhanças de conceitos de design do Plan 9, mas usa uma nova linguagem de programação de aplicativos, a Limbo, que vem acompanhando de uma máquina virtual, Dis. O Inferno é vendido como um sistema operacional embarcado open source.

Um ambiente funcional instalável existe para x86, mas existem versões do Plan 9 rodado no Intel, MIPS, Alpha, SPARC, PowerPC, ARM e outras arquitecturas. O sistema por si é escrito em um dialeto do ISO/ANSI C; muitas aplicações foram anteriormente escritas em uma linguagem chamada Alef, que tiveram que ser reescritos no mesmo dialecto em C. Ele pode importar programas POSIX e pode emular o Berkeley socket interface. Ele tem um suporte completo ao UTF-8, e um sistema de janelas chamado "Rio".

O nome é uma referência ao filme cult de ficção científica chamado Plan 9 from Outer Space de Ed Wood, feito em 1959.[2] Além disso, Glenda, the Plan 9 Bunny, é presumivelmente uma referência ao filme Glen or Glenda. O sistema continua a ser utilizado e desenvolvido por pesquisadores de sistemas operacionais e hobistas.[3][4]

História[editar | editar código-fonte]

O Plan 9 da Bell Labs foi desenvolvido originalmente, a partir de meados da década de 1980, por membros do Centro de Pesquisas em Ciência da Computação da Bell Labs, o mesmo grupo que originalmente desenvolveu Unix e C.[5] A equipe do Plan 9 foi inicialmente liderada por Rob Pike,Ken Thompson, Dave Presotto e Phil Winterbottom, com o apoio de Dennis Ritchie como chefe do departamento de pesquisa de técnicas de computação. Ao longo dos anos, muitos desenvolvedores notáveis ​​têm contribuído para o projeto, incluindo Brian Kernighan, Tom Duff, Douglas McIlroy, Bjarne Stroustrup e Bruce Ellis.[6]

O Plan 9 substituiu o Unix como plataforma principal dos Bell Labs para pesquisa de sistemas operacionais. Ele explorou várias alterações ao modelo original Unix que facilitam o uso e a programação do sistema, principalmente em ambientes multiusuários distribuídos. Depois de vários anos de desenvolvimento e uso interno, a Bell Labs enviou o sistema operacional para as universidades em 1992. Três anos mais tarde, em 1995, o Plan 9 foi disponibilizado em partes comerciais pela AT&T através da editora Harcourt Brace. Com licenças de origem que custam US $ 350, a AT&T segmentou o mercado de sistemas embarcados em vez do mercado de computadores em geral; Ritchie comentou que os desenvolvedores não esperavam fazer "muito deslocamento" dada a forma como outros sistemas operacionais estabelecidos tinham se tornado.[7]

No início de 1996, o projeto do Plan 9 tinha sido "posto em segundo plano" pela AT&T em favor do Inferno, destinado a ser um rival à plataforma Java da Sun Microsystems.[8] No final dos anos 90, o novo proprietário da Bell Labs, Lucent Technologies, abandonou o suporte comercial para o projeto e, em 2000, uma terceira versão foi distribuída sob uma licença de código aberto. Uma quarto lançamento sob uma licença nova de software livre ocorreu em 2002.[9] Uma comunidade de usuários e desenvolvedores, incluindo funcionários atuais e antigos da Bell Labs , produziu lançamentos diários menores em forma de imagem ISO. Bell Labs hospedou o desenvolvimento.[10] A árvore de origem de desenvolvimento é acessível através dos protocolos 9P e HTTP e é usada para atualizar instalações existentes.[11] Além dos componentes oficiais do SO incluído nas ISOs, a Bell Labs também hospeda um repositório de aplicações e ferramentas desenvolvidas externamente.[12]

Data Versão Comentário
1992 Plan 9 1st edition Distribuída pela Bell Labs a universidades
1995 Plan 9 2nd edition Distribuída pela Bell Labs para fins não-comerciais [13]
2000 Plan 9 3rd ed. (Brazil) Distribuída pela Lucent Technologies sobre uma licença open source
2002 Plan 9 4th edition Distribuída pela Lucent Technologies sobre uma licença open source

Conceitos do design[editar | editar código-fonte]

Os projetistas do Plan 9 estavam interessados em objetivos similares aos do micronúcleo, mas fizeram escolhas bem diferentes em termos de arquitetura e desenvolvimento para atingir estes objetivos.[14] Entre esses objetivos estão:

  • Recursos com arquivos: todos os recursos são representados como arquivos em um sistema de arquivos hierárquico;
  • Namespaces: a visualização da rede pela aplicação é um simples, coerente namespace que aparece como um sistema de arquivos hierárquico, mas representa recursos separados fisicamente (local ou remotamente);
  • Protocolo de comunicação padrão: um protocolo padrão, chamado 9P, é usado para aceder a todos os recursos, tanto locais quanto remotos.

Sistemas de arquivos, arquivos, e nomes[editar | editar código-fonte]

O Plan 9 estende o sistema mediante arquivos por "nomes", isto é, um único caminho para qualquer objeto, não importando se ele é um arquivo, uma tela, usuários, ou computadores. Tudo é feito usando os padrões Unix existentes, mas adicionando o fato que todo objeto pode ser nomeado e endereçado, um conceito similar ao amplamente conhecido sistema URI da internet. Em versões anteriores do Unix, dispositivos como impressoras eram representadas por nomes através do uso de programas conversores em /dev, mas estes endereçam apenas dispositivos conectados directamente por hardware, e não mapeia dispositivos em rede. No Plan 9 as impressoras são virtualizadas e tratadas como arquivos e ambos podem ser acedidos através da rede por qualquer estação de trabalho.

Outra inovação no Plan 9 é a capacidade para os usuários de ter diferentes nomes para os mesmos objectos do "mundo real". De fato qualquer usuário pode criar um ambiente personalizado coleccionando vários objectos em seu "namespace". O Unix tem um conceito similar em que o usuário ganha privilégios ao ser copiado de outro usuário, mas no Plan 9 isto é estendido para qualquer objecto. Os usuários pode facilmente criar "clones" de si mesmo, modificar esta cópia, e depois apagá-la sem afectar nada dos recursos originais.

União de directórios[editar | editar código-fonte]

O Plan 9 também introduziu a ideia de união de directórios. São directórios que combinam recursos entre mídias diferentes ou através de uma rede juntando-se a outros directórios transparente mente. Por exemplo, o directório /bin de outro computador pode ser ligado com o seu próprio /bin, e então este diretório irá compartilhar ambos os binários locais e os binários remotos, e podem ser usados por ambos transparente mente. No Unix, mapear directórios desta forma faz o original ficar oculto enquanto existir o mapeamento. Usando o mesmo método, no Plan 9, fontes e dispositivos externos podem ser ligados ao /dev, fazendo de todos os dispositivos, dispositivos de rede, sem adicionar novos códigos. A arquitetura do diretório union do Plan 9 inspirou as implementações do sistema de arquivos union 4.4BSD e do Linux, embora os desenvolvedores da instalação de montagem union BSD encontraram a fusão não-recursiva de diretórios no Plan 9 "muito restritiva para uso geral".

/proc[editar | editar código-fonte]

Para ilustrar como estas características funcionam simultaneamente para produzir um poderoso conjunto, consideremos o interessante directório /proc, onde todos os processos que estão sendo executados são listados. Processos são considerados objectos no Plan 9, como tudo o mais, então faz sentido listá-los em um directório, assim como o restante. [15]Esta alteração simples tem muitos efeitos colaterais úteis, permitindo ao usuário usar comandos como o ls para pesquisar e organizar a lista de processos (que estão rodando), o que antes só era possível com o uso de ferramentas especializadas.[16] Mas ainda mais interessante, os usuários podem "unir" processos remotos para seu "namespace", interagindo com eles como se os processos fossem executados localmente, tornando quase que trivial o processamento em rede.

O resultado é um ambiente de computação distribuído construído com máquinas separadas - terminais que ficam nas mesas dos usuários, servidores de arquivos que armazenam os dados permanentemente, e outros que fornecem CPUs rápidas, autenticação de usuários, e gateway de rede, todos utilizado o sistema de directórios/nomes hierárquicos familiar à maioria dos usuários de computador. Um usuário pode "construir" um sistema coleccionando directórios em servidores de arquivos, aplicativos rodando em servidores, impressoras em rede e estas conectadas a isto tudo em seu "namespace" rodando em um terminal.

/net[editar | editar código-fonte]

O Plan 9 não tem chamadas de sistema especializadas ou ioctls para acessar a pilha de rede ou hardware de rede. Em vez disso, o sistema de arquivos /net é usado. As conexões de rede são controladas pela leitura e gravação de mensagens de controle para controlar arquivos. Sub-diretórios como /net/tcp e /net/udp são usados ​​como uma interface para seus respectivos protocolos.[16]

Unicode[editar | editar código-fonte]

Para reduzir a complexidade do gerenciamento de codificações de caracteres, o Plan 9 usa o Unicode em todo o sistema. A implementação inicial do Unicode foi ISO 10646. Ken Thompson inventou o UTF-8, que se tornou a codificação nativa no Plano 9. O sistema inteiro foi convertido para uso geral em 1992.[17] O UTF-8 preserva a compatibilidade com as cadeias terminadas nulas tradicionais, permitindo um processamento de informações mais confiável e o encadeamento string de dados multilíngue com Unix pipes entre vários processos. Usando uma única codificação UTF-8 com caracteres para todas as culturas e regiões elimina a necessidade de alternar entre conjuntos de códigos.[18]

Combinando os conceitos de projeto[editar | editar código-fonte]

Embora interessante por conta própria, os conceitos de design do Plan 9 são mais úteis quando combinados. Por exemplo, para implementar um servidor network address translation (NAT), um diretório de união pode ser criado, sobrepondo a árvore de diretórios do roteador /net com seu próprio /net. Da mesma forma, uma rede privada virtual (VPN) pode ser implementada por sobreposição em um diretório union /net hierarquia de um gateway remoto, usando 9P protegido através da internet pública. Um diretório de union com a hierarquia /net e os filtros podem ser usados ​​para sandbox, um aplicativo não confiável ou para implementar um firewall. Da mesma forma, uma rede de computação distribuída pode ser composta com um diretório union de hierarquias /proc de hosts remotos, o que permite interagir com eles como se fossem locais.

Quando usados ​​em conjunto, esses recursos permitem a montagem de um ambiente de computação distribuída complexa reutilizando o sistema de nomes hierárquico existente.[16]

Recepção[editar | editar código-fonte]

Impacto[editar | editar código-fonte]

O Plan 9 demonstrou que um conceito integral do Unix - que cada interface do sistema poderia ser representada como um conjunto de arquivos - poderia ser implementado com sucesso em um sistema distribuído moderno.[19] Alguns recursos do Plan 9, como a codificação de caracteres UTF-8 do Unicode, foram implementados em outros sistemas operacionais. Sistemas operacionais Unix, como o Linux, implementaram o 9P, o sistema de arquivos do Plan 9, e adotaram os recursos do rfork, mecanismo de criação de processo do Plan 9. Além disso, no Plan 9 from User Space, várias das ferramentas e aplicativos do Plan 9, incluindo os editores sam e acme, foram portados para sistemas Unix e Linux e alcançaram algum nível de popularidade. Vários projetos procuram substituir os programas do sistema operacional GNU que cercam o kernel do Linux com os programas do sistema operacional Plan 9.[20][21] O gestor de janelas 9wm foi inspirado no , o mais antigo sistema de janelas do Plan 9; [22] wmii também é fortemente influenciado pelo Plan 9.[23] Em pesquisas na ciência da computação, o Plan 9 tem sido utilizado como uma plataforma de computação em grade e como um veículo para a investigação em computação ubíqua sem middleware.

Vários projetos trabalham para estender o Plan 9, incluindo 9atom e 9front. Esses forks aumentam o Plan 9 com drivers de hardware e software adicionais, incluindo uma versão melhorada do sistema de e-mail Upas, o compilador go, o suporte a sistemas de controle de versões Mercurial e outros programas.[4][24] O Plan 9 foi portado para o computador single-board Raspberry Pi.[25][26] O projeto Harvey tenta substituir o compilador personalizado do Plan 9 C pelo GCC, para alavancar ferramentas modernas de desenvolvimento como o GitHub e Coverity e acelerar o desenvolvimento.

Derivados e forks[editar | editar código-fonte]

O Inferno é um descendente do Plan 9, e compartilha muitos conceitos de design e até mesmo código fonte no kernel, particularmente em torno de dispositivos e o protocolo Styx/9P2000. Inferno compartilha com o Plan 9 a herança Unix dos Laboratórios Bell e a filosofia Unix. Muitas das ferramentas de linha de comando em Inferno foram ferramentas Plan 9 que foram traduzidas para Limbo.

  • 9atom[27] acrescenta a distribuição do Plan 9 com a adição de um kernel 386 PAE, um amd64 cpu e kernel terminal, nupas, suporte de hardware extra para pc, IL e fs Ken.
  • 9front[28] é um fork do Plan 9. Foi iniciado para remediar uma falta percebida de recursos dedicados no desenvolvimento dentro dos laboratórios de Bell, e acumulou vários reparos e melhorias.
  • 9legacy[29] é uma distribuição alternativa. Ele inclui um conjunto de patches com base na distribuição atual do Plan 9.
  • Akaros[30] é projetado para arquiteturas de multiplos-núcleos e sistemas em grande escala SMP.
  • Harvey OS[31] é um esforço para obter o código do Plan 9 trabalhando com gcc e clang.
  • JehanneOS[32] é um sistema operacional experimental derivado do Plan 9. Seu userland e módulos são derivados principalmente do 9front, seu sistema de construção do Harvey OS, e seu kernel é um fork do Plan9-9k 64-bit Plan9 kernel.

Rede e computação distribuída[editar | editar código-fonte]

O Plan 9 é baseado no Unix mas foi desenvolvido para demonstrar o conceito de tornar a comunicação a função central dos sistemas computacionais. Todas os recursos do sistema são nomeados e acedidos como se fossem arquivos e múltiplas visões do sistema distribuído podem ser definidas dinamicamente para cada programa rodando em uma máquina em particular. Esta abordagem melhora, generaliza e modulariza o design das aplicações por encorajar servidores que lidam com qualquer informação a parecer para o usuário e para as aplicações simplesmente como uma coleção de arquivos simples.

A chave para suportar a rede transparente mente no Plan 9 é um protocolo de rede de baixo nível conhecido como 9P. O protocolo 9P e sua implementação conectam objetos de rede nomeados e apresentam em uma interface parecida com um sistema de arquivos. 9P é um rápido sistema de arquivos distribuído orientado a bytes (em vez de ser orientado a blocos) que pode "virtualizar" qualquer objeto, não somente aqueles apresentados por um servidor NFS numa máquina remota.[34] O protocolo é usado para referenciar e se comunicar com processos, aplicações e dados, incluindo tanto a interface de usuário quanto a rede.[35] Com o lançamento da 4ª edição, ele foi modificado e renomeado para 9P2000.[9]

Licença[editar | editar código-fonte]

A partir do lançamento da Quarta edição em abril de 2002,[9] o código fonte completo do Plan 9 da Bell Labs estava livremente disponível sob Lucent Public License 1.02, que é considerada licença de código aberto pela Open Source Initiative (OSI), software livre pela Free Software Foundation, e passa pela Debian Free Software Guidelines.[34] Em fevereiro de 2014, a Universidade da Califórnia em Berkeley, foi autorizada pelo atual titular do copyright do Plan 9 - Alcatel-Lucent - a liberar todo o software do Plan 9 previamente gerido pela Lucent Public License, versão 1.02, sob a GNU 2.[36]

Utilitários padrões Plan 9[editar | editar código-fonte]

  • rc - the Plan 9 shell
  • sam - um editor de texto
  • acme - uma interface de usuário para programadores
  • plumber - interprocess messaging
  • Mk - uma ferramenta para construir software, análoga ao tradicional Unix make
  • namespace
  • rio - o novo sistema de janelas do Plan 9
  • - o velho sistema de janelas do Plan 9
  • Fossil e Venti - the new archival file system and permanent data store

Implementações[editar | editar código-fonte]

  • 9P - o protocolo padrão de arquivos
  • rendezvous - um mecanismo básico de sincronização
  • Brazil - que será a quarta edição do Plan 9

Referências[editar | editar código-fonte]

  1. http://akaros.cs.berkeley.edu/files/Plan9License
  2. Raymond, Eric S. (17 de setembro de 2003). «Plan 9: The Way the Future Was». The_Art_of_Unix_Programming. [S.l.]: Addison-Wesley. ISBN 0-13-142901-9. Consultado em 7 de maio de 2007 
  3. Robertson, James (16 de julho de 2011). «Plan 9 Forked, Continues as 9front». OSNews. Consultado em 31 de dezembro de 2011 
  4. a b «9atom». Consultado em 11 de novembro de 2011 
  5. «From the inventors of UNIX system comes Plan 9 from Bell Labs» (Nota de imprensa). Lucent Technologies. 18 de julho de 1995 [ligação inativa] 
  6. McIlroy, Doug (março de 1995). «Preface». Bell Labs 2nd ed. Lucent Technologies. Consultado em 26 de fevereiro de 2016 
  7. Lee, Yvonne L. (24 de Julho de 1995). «AT&T Bell Labs ships Plan 9 OS for embedded systems». InfoWorld 
  8. Pontin, Jason (19 de Fevereiro de 1996). «AT&T reveals plans for Java competitor». InfoWorld. p. 3 
  9. a b c Loli-Queru, Eugenia (29 de abril de 2002). «Bell Labs Releases New Version of Plan 9». OSNews. Consultado em 31 de dezembro de 2011 
  10. «How to contribute». Bell Labs. Lucent Technologies. Consultado em 30 de novembro de 2011 
  11. «Staying up to date». Bell Labs. Lucent Technologies. Consultado em 27 de abril de 2006. Arquivado do original em 24 de junho de 2007 
  12. «Plan 9 — Additional Software». 2009. Consultado em 6 de março de 2016 
  13. «Announcement of the first release to general public». 9 fans. 16 de julho de 1995. Consultado em 21 de dezembro de 2016. Arquivado do original em 6 de julho de 2008 
  14. Hancock, Brian (2003). «Reinventing Unix: an introduction to the Plan 9 operating system». MCB UP. Library Hi Tech. 21 (4): 471–76. doi:10.1108/07378830310509772 
  15. Ballesteros, Francisco J. (28 de setembro de 2007). «Introduction to OS abstractions using Plan 9 from Bell Labs» (pdf). Universidad Rey Juan Carlos. Cópia arquivada (PDF) em 22 de setembro de 2010 
  16. a b c Pike, R.; Presotto, D.; Dorward, S.; Flandrena, B.; Thompson, K.; Trickey, H.; Winterbottom, P. «Plan 9 from Bell Labs». Bell Labs. Lucent Technologies. Consultado em 26 de fevereiro de 2016 
  17. Pike, Rob (30 de abril de 2003). «UTF-8 History». Consultado em 27 de abril de 2006 
  18. Lunde, Ken (janeiro de 1999). CJKV information processing. [S.l.]: O'Reilly Media. p. 466. ISBN 978-1-56592-224-2. Consultado em 23 de dezembro de 2011 
  19. Hudson, Andrew (19 de julho de 2006). «Investigating the Plan 9 Operating System». OSNews. Consultado em 31 de dezembro de 2011 
  20. «Glendix: Bringing the beauty of Plan 9 to Linux». Consultado em 1 de dezembro de 2011 
  21. «Plan 9 From Gentoo: Plan 9 Meets Gentoo». Gentoo Linux. Consultado em 1 de dezembro de 2011. Arquivado do original em 26 de abril de 2012 
  22. «The 9wm Window Manager». 9wm. Consultado em 2 de janeiro de 2012. 9wm is an X window manager which attempts to emulate the Plan 9 window manager 8-1/2 as far as possible within the constraints imposed by X. 
  23. «window manager improved 2». suckless.org. Consultado em 2 de janeiro de 2012. Arquivado do original em 31 de dezembro de 2011. [wmii] has a 9p filesystem interface and supports classic and tiling (acme-like) window management. 
  24. «plan9front – the front fell off». Consultado em 1 de dezembro de 2011 
  25. Hayward, David (9 de maio de 2013). «Raspberry Pi operating systems: 5 reviewed and rated». TechRadar. Consultado em 20 de abril de 2014. Arquivado do original em 7 de Junho de 2013 
  26. «How to install Plan 9 on a Raspberry Pi». eLinux. Consultado em 16 de novembro de 2014 
  27. «9atom» 
  28. «9FRONT.ORG THE PLAN FELL OFF» 
  29. «9legacy» 
  30. http://akaros.cs.berkeley.edu
  31. «Harvey OS» 
  32. «JehanneOS» 
  33. «NIX» 
  34. a b Pereira, Uriel M. (2006). The Unix Spirit set Free: Plan 9 from Bell Labs (AVI). FOSDEM. Consultado em 2 de dezembro de 2011. Resumo divulgativo (PDF) 
  35. Minnich, Ron (2005). «Why Plan 9 is not dead yet And What we can learn from it» (PDF). Laboratório Nacional de Los Alamos. Consultado em 26 de fevereiro de 2016. Arquivado do original (PDF) em 25 de fevereiro de 2016 
  36. Sharwood, Simon (14 de fevereiro de 2014). «Plan 9 moves out from Lucent licence space». The Register. Consultado em 20 de abril de 2014 

Ligações externas[editar | editar código-fonte]

Bell Labs[editar | editar código-fonte]

Palestras[editar | editar código-fonte]

Outros[editar | editar código-fonte]