Plan9 Inferno
-
Upload
fernanda-cardinaly -
Category
Documents
-
view
779 -
download
48
Transcript of Plan9 Inferno
Chapter
6
Sistema Operacional Plan9/Inferno
Jaedson Bruno de Oliveira Araújo, Jackson Soares, Emerson Max de
Medeiros Silva, Fernanda Cardinaly de Araújo Silva
Resumo
O Plan9/Inferno são sistemas operacionais descendente do Unix. Apesar de não ser um
variante Unix, O Plan9 e o Inferno possuem muitas características que exploram assim
várias "simplificações" do modelo Unix original. O Plan9/Inferno utilizam recursos
como arquivos, namespaces e um protocolo de comunicação que é responsável por se
comunicar com processos, aplicações e dados, incluindo tanto a interface de usuário
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 não ser um variante Unix, O Plan 9 possui muitas
características que exploram assim 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 Plan9 utiliza um coelho como sendo o seu
mascote, e este tem o nome de Glenda (ver figura 1.1).
Em sua configuração mais geral, o Plan 9 usa três tipos de componentes:
terminais (pequenos computadores usados pelos usuários), servidores de arquivo que
armazenam dados de maneira permanente, e outros servidores que proveem CPU’s mais
rápidas, autenticação de usuário 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 tendência da computação em migrar dos grandes computadores
centralizados de tempo compartilhado para as redes de pequenas máquinas pessoais,
onde rodavam tipicamente estações de trabalho UNIX. Os usuários estavam cansados de
máquinas burocráticas, sobrecarregadas e de tempo compartilhado, deixando notória
assim a necessidade de trocá-las por sistemas baseados em computadores pessoais ou
estações de trabalho auto-mantidas interligadas em rede, mesmo que isto significasse
uma perda de poder de computação devido a esta conexão via rede. No entanto como os
microcomputadores tornavam-se cada vez mais rápidos e baratos, essa perda poderia ser
recuperada facilmente, e por essa razão este estilo de computação tornou-se bastante
popular, situação que ainda vigora nos dias atuais, desta forma, o Plan 9 veio com o
propósito de Construir um novo sistema operacional de tempo compartilhado fora das
estações de trabalho.
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 dialeto em C, o Plan9 possui ainda um ambiente funcional
instalável para x86, mas existem versões 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 são representados como arquivos
em um sistema de arquivos hierárquico, onde se 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 diretamente 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
acessados através da rede por qualquer estação de trabalho.
- Namespaces: a visualização da rede pela aplicação é um simples e coerente
namespace que aparece como um sistema de arquivos hierárquico, mas representa
recursos separados fisicamente (local ou remotamente), capacidade para os usuários de
ter diferentes nomes para os mesmos objetos do "mundo real". De fato qualquer usuário
pode criar um ambiente personalizado coleccionando vários objetos 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 objeto. Os
usuários pode facilmente criar "clones" de si mesmo, modificar esta cópia, e depois
apagá-la sem afetar nada dos recursos originais.
- Protocolo de comunicação padrão: um protocolo padrão, chamado 9P, é
usado para aceder a todos os recursos, tanto locais quanto remotos. O protocolo 9P e
sua implementação conectam objetos de rede nomeados e apresentam em uma interface
parecida com um sistema de arquivos. O protocolo 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. O protocolo é usado para referenciar e se comunicar com processos, aplicações
e dados, incluindo tanto a interface de usuário quanto a rede.
O Inferno por sua vez, é uma evolução do Plan9, seu desenvolvimento deu-se
com o mesmo propósito de atuar em sistemas distribuídos, porém com o poder de fazê-
lo em uma variedade ainda maior de ambientes de redes do que era possível no plan9
como por exemplo, os telefones de suporte avançado, dispositivos de mão, caixas de TV
set-top ligado aos sistemas de cabo ou satélite, Internet e computadores de baixo custo.
Os ambientes mais visíveis do mundo atual envolvem TV a cabo, transmissão
direta via satélite, Internet e outras redes. Como o entretenimento, telecomunicações,
indústria e computação convergem e se interconectam, uma variedade de redes públicas
de dados está surgindo. Ao contrário do sistema de telefonia, que começou com
terminais padrão e sinalização, estas redes estão se desenvolvendo em um mundo de
terminais diversos, hardware de rede e protocolos. Só um sistema operacional bem
desenvolvido, pode isolar os vários provedores de conteúdo e serviços do transporte
igualmente variados e plataformas de apresentação. Inferno é um sistema operacional de
rede para esse novo mundo.
O Inferno roda no modo hospedeiro sobre vários sistemas operacionais
diferentes, ou nativamente em um range de arquiteturas de hardware. Em cada
configuração o sistema operacional apresenta as mesmas interfaces padrões para suas
aplicações. Um protocolo chamado Styx é aplicado uniformemente para acessar os
recursos tanto os locais como os remotos.
O diferencial do Inferno esta presente em algumas características próprias do
sistema:
- Maior portabilidade entre processadores: atualmente funciona em Intel, Sparc,
MIPS, ARM, HP-PA, e arquiteturas PowerPC e é facilmente portável para outros;
- Maior portabilidade em ambientes diversos: ele funciona como um sistema
autônomo de funcionamento nos terminais de pequeno porte, e também como um
aplicativo de usuário 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 mínimos de hardware: ele roda aplicações úteis stand-alone em
máquinas com apenas 1 MB de memória, e não requer hardware de mapeamento de
memória;
- adaptabilidade dinâmica: os pedidos podem, dependendo do hardware ou
outros recursos disponíveis, a carga dos módulos do programa diferente para executar
uma função específica. Por exemplo, um aplicativo de player de vídeo pode usar
qualquer um dos vários módulos do decodificador diferente.
6.2. Histórico
Em 1980 foi criado o Sistema operacional Plan 9 . Ele não é variante Unix, mas é muito
parecido. Explorando 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 foi feita em 1993, 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.
Baseado no Plan 9 surgiu o sistema operacional Inferno em maio de 1996 com a versão
Inferno Venture Formed. O sistema foi desenvolvido pelo Computing Sciences
Research Center, do Bell Labs, que é o órgão 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 responsável pelo desenvolvimento do Inferno
era formada por: Sean M. Dorward, Rob Pike (quem nomeou o sistema e seus
componentes, baseando-se na Divina Comédia, de Dante Alighieri), David Leo
Presotto, Dennis M. Ritchie (um dos criadores do UNIX), Howard W. Trickey, e Philip
Winterbottom. Este sistema tem como missão prover os elementos de software
necessários para construir um sistema com serviços operacionais de rede confiáveis.
O Inferno é um sistema operacional e um ambiente de execução, para redes; pequeno,
flexível, seguro e portável, que facilita a criação e distribuição de serviços nos novos e
emergentes ambientes de rede, tais como: CATV (tv a cabo), sistemas de radiodifusão
por satélite, assim como: a Internet, usos para entretenimento: aplicações para "pay-per-
view", e demais recursos das telecomunicações e informática, como telefonia celular,
webfone, aplicações com palm-tops, dentre outras. É um sistema para a era centrada
nas redes.
Nos dias de hoje , os direitos do 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 e se encontra em sua quarta
versão.
6.3. Gerenciamentos de Processos/Threads
6.3.1. Gerenciamento de Processos no Plan 9:
Processos em Memória Compartilhada: O programa é organizado em um
ou mais procs, que são compartilhados na memória de processos do
sistema operacional que pode ser agendado antecipadamente;
O Plan9 Thread Library torna a programação 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 são
aplicados na memória compartilhada. Processos estão programados de
forma independente (portanto, pode executar simultaneamente em um
multiprocessador) e compartilhar a memória. Cada processo contém um
ou mais segmentos que se comportam como co-rotinas (ou seja, eles são
programados pelo processo).
Métodos de escalonamento: FIFO , Nível de Prioridades.
6.3.2. Gerenciamento de Processos no Inferno:
Existe apenas a definição de Procs: No Plan9 como existia definição e
uso de segmentos e tarefas como maneira de agrupar os Procs, no Inferno
a intenção é trabalhar com apenas uma unidade de informação e dados
com o intuito de deixar o tráfego de informações mais leve.
Procura-se evitar o paralelismo;
Não existe o bloqueio Explicito de processos: a execulsão de um Proc, só
é bloqueada de forma implícita no sistema, basicamente quando aquele
proc não esta respondendo ou contém erros. Cada proc é execultado por
vez.
O sistema de escalonamento é igual ao Plan9;
O programador deve especificar o dono especifico para qualquer peça de
dados: Através deste método de gerenciamento de processos, o sistema
pode assim identificar qual processo possui maior prioridade, e de onde
ele se origina na troca de informações.
6.4. Gerenciamento de memória
6.4.1. Gerenciamento de memória Plan 9
Plan 9 utiliza memória com segmentação pagina, podendo gerenciar de 8MB a 3840MB
de memória, onde pode ser reservado até 256MB para o kernel. Abaixo desse espaço
reservado para o kernel, tem mais 256MB, que são divididos entre a tabela de página
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 seleção de vitima usado é o LRU, onde é selecionando a página que está
a mais tempo na memória para ser substituída, deste modo o gerenciamento de memória
no Plan9 tem um objetivo bem definido que é selecionar aquela página que foi a última
a ser referenciada e assim ocorrerá menos pages-faults.
Algo interessante também no gerenciamento de memória do Plan9 é que das 18 mil linhas de
código que compõem o Plano 9, cerca de 5000 linhas são exclusivamente para executar o
gerenciamento de memória, gerenciamento de processo, interface de hardware e sistema. O
resto é para os 17 diferentes sistemas de arquivos de execução de dispositivos, redes, controle
de processos, etc. Desde que a maioria dos sistemas de arquivos sejam completamente
independentes,
a complexidade do código do kernel é ainda menor. Na verdade, o kernel é responsável pelo
gerenciamento de memória do Plan9 e mesmo com todos os sistemas de arquivo incluído
ainda é inferior a metade do tamanho de sua micro-kernel.
6.4.2. Gerenciamento de memória Inferno
No inferno a memória é divida em várias regiões separadas para a execução de threads,
o segmento de código armazena um fluxo decodificado de instruções de máquina
virtual, que será traduzido pela maquina virtual para a arquitetura do computador.
Um thread executando um modulo tem acesso a duas regiões da memória de dados:
Um apontador de módulo que define uma região global de armazenamento para
um módulo específico;
Um apontador de quadro que define o registro atual de ativação do frame para a
thread.
O endereçamento da memoria é em bytes e tipos de dados maiores que um byte é
armazenado em endereços contíguos. E somente uma instancia do “Dis” (Máquina
Virtual utilizada pelo Inferno) controla a pilha por vez.
O inferno possui também um sistema de coleta de lixo na máquina virtual e que é usado
dois algoritmos: um de contagem de referencias, que busca por variáveis que não estão
sendo mais referenciadas e as marcam para ser limpa e a de estrutura de dados cíclicas,
que verifica quando ocorre uma referência cíclica e a marca para limpeza.
Internamente, o kernel usa esse mecanismo de alocação de bloco através de chamadas
que operam como o malloc() e free(). Programas de usuário escrito em Limbo não aloca
diretamente memória como processos do UNIX fazem usando o brk(), chamada de
sistema, ou o malloc() chamada de biblioteca. Por conseguinte, O Inferno não provê
nenhuma forma de alocação para chamda de sistemas de processos usuário. Há, no
entanto, uma série de construções que fazem Limbo implicitamente alocar memória.
6.5. Sistemas de Arquivos
Podemos entender um recurso como sendo uma conveniência necessária para se realizar
um trabalho.
Todos os recursos do Inferno, local e remoto, são representados como um conjunto de
arquivos dinâmicos dentro de um sistema de arquivos hierárquico. Esses arquivos são
usados para representar, entre outras coisas, dispositivos de armazenamento, conexões
de redes, serviços de rede e até mesmo os processos.”Processos podem ser entendidos
inicialmente como um programa em execução.”(BERENGER MACHADO, Francis;
MAIA, Luiz. Arquitetura de Sistemas Operacionais. 3º Edição. Rio de Janeiro: PTC,
2004.65p.).
O Inferno eleva ao máximo o conceito de recursos como arquivos. Um aplicativo pode
acessar cada recurso através de operações de manipulações de recursos, como open,
close, read e write.
As vantagens do uso de recursos como arquivos são:
Os sistemas de arquivos têm interfaces simples e bem compreendidas. Através
de operações simples é possível acessar os recursos e funcionalidades, como
abrir, ler e escrever;
A dependência dos sistemas de arquivos reduz a quantidade de código de
interface e mantém o sistema Inferno pequeno, confiável e altamente portátil
Convenções de nomenclatura para os arquivos são bem conhecidos, uniforme e
de fácil compreensão;
Em relação à segurança, os direitos de acesso e permissões para os arquivos são
bem simples, mas pode ser usado para garantir a vários níveis de segurança.
É possível associar a um dado recurso a mais de um arquivo. Quando isso é feito cria-se
um diretório, colocando os arquivos relacionados ao recurso dentro desse diretório.
Tipicamente, cada diretório poderia ter dois arquivos, um para o controle de estados do
recurso e outro para operações de entrada e saída relacionadas ao recurso. Exemplo, o
diretório /dev/tcp representa o recurso relacionado ao protocolo tcp/ip. Nesse diretório
podemos encontrar dois arquivos, data e ctl, data é utilizado para operações entrada e
saída e ctl é utilizado para o controle de estado do recurso.
Localização dos principais recursos do sistema operacional inferno:
/dev/tcp, /dev/udp: Interface de rede
/prog: informações sobre processos.
/dev/user, /dev/time: Informações gerais.
6.5.1. Espaco de Nomes (Namespaces)
O espaço de nomes serve para manter a representação uniforme dos recursos, formando
uma representação hierárquica semelhante ao do sistema Unix.
Cada conjunto de recursos é representado como uma hierarquia de arquivos e é
acessível através de operações de acesso de arquivos padrão. Os vários recursos e
serviços que estão sendo usados por um processo são combinados em uma única
hierarquia enraizada de nomes de arquivos, chamado de namespace, ou espaço de
nomes. Os recursos acessíveis dentro de um espaço individual podem ser localizados
em um único cliente ou em vários servidores em toda a rede.
Uma das principais vantagens deste sistema namespace (espaço de nomes) é que um
aplicativo pode usar recursos de modo totalmente transparente. Depois que os arquivos
dinâmicos presentes pelo recurso são montados dentro do espaço visível da aplicação,
pode acessá-los sem saber se o recurso é local ou remoto.
Por exemplo, o depurador gráfico dinâmico lê os arquivos no diretório /prog para
acessar informações sobre os processos do sistema atual. No entanto, se o usuário
desejasse parar um processo em uma máquina remota, tudo que seria necessário é
importar o diretório /prog dessa máquina.
A localização do espaço de nomes é transparente, não importando se é local ou remoto.
Isso quer dizer que as aplicações enxergar o espaço de nomes da mesma maneira. Isso é
feito com o uso de um protocolo chamado styx.
6.6. Entrada e Saída
Os dispositivos de entrada e saída tanto no sistema operacional Inferno quanto no Plan9
são totalmente descendentes do Unix, mas, não é uma variante. Desta forma, os drivers
de dispositivos é representado como um sistema de arquivos residente no Kernel e todos
os dispositivos de entrada e saída são classificados como sendo de bloco (disco, etc.) ou
de caractere (impressora, modem, etc.) e são associados a arquivos mantidos no
diretório /dev (diretório que é herdado do sistema Unix). O acesso aos dispositivos de
E/S como terminais discos, impressoras e a própria rede, é feito através de arquivos
especiais, Cada dispositivo está associado a um ou mais arquivos especiais, localizados
no diretório/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 representação uniforme de dispositivos no mesmo computador ou
até mesmo dispositivos que são acessados remotamente.
Outra característica herdada do Unix e que está presente no Plan9 e no Inferno é que os
dispositivos de hardware são identificados por seu tipo (bloco ou caracteres) e um
número de dispositivo onde é de fundamental importância, pois existe uma tabela de
escolha para dispositivos do tipo bloco e uma tabela de escolha para dispositivos do tipo
caractere, que necessita deste número do dispositivo para decidir qual dispositivo deve
ser usado.
Existem dois tipos de número de dispositivo: O número de dispositivo principal e o
número do dispositivo secundário.
O número do dispositivo principal é utilizado como um índice na tabela de
escolha para localizar o drive de dispositivo correto.
O número do dispositivo secundário é encaminhado para o driver de
dispositivo e utilizado para selecionar a(as) subunidade(s) correta(s). ( Por
exemplo selecionar a partição correta de um sistema de arquivo mesmo que
o disco esteja dividido em várias partições)
Existe um tipo de dispositivo denominado pseudo-dispositivo (pseudo-devices) que não
obedece a nenhum periférico físico. Ele é apenas uma abstração 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
à memória 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 são descendentes do
mesmo sistema operacional o Unix, e este por sua vez quem o produziu foi a Bell
Laboratories, e esta empresa é a responsável por inúmeras façanhas entre elas podemos
destacar:
1969: Sistema operativo Unix é criado por Dennis Ritchie e Ken Thompson
1983: A linguagem de programação C++ desenvolvida por Bjarne Stroustrup
1998: Primeira combinação de voz e dados sobre uma rede IP
2000: Mapa de alta resolução do cosmos
A origem do nome Plan9 deve-se a um filme de ficção cientifica filmado em 1956 em
algumas semanas, e a fama deste filme se deu 2 anos após a sua estréia por ser
considerado o pior filme de todos os tempos.
O sistema operacional Inferno possui um protocolo de comunicação chamado “Styx”
sendo ele o único protocolo que o sistema operacional possui e responsável 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 programação que é
utilizada para a criação dos programas para o SO Inferno, o nome da linguagem de
programação é Limbo. Limbo significa, segundo a teologia da Igreja Católica Apostólica
Romana, um lugar fora dos limites do Céu, onde se vive a plena felicidade natural, mas
privado da visão beatífica de Deus e por isso, privado também da felicidade suprema e
eterna.
Tanto o nome do sistema operacional Inferno é quanto a Vita Nuova são inspiradas pelo
trabalho literário de Dante Alighieri (1º de junho de 1265 — Ravenna, 13 ou 14 de
setembro de 1321), foi um escritor, poeta e político italiano e até hoje é considerado
como il sommo poeta ("o sumo poeta"), o maior poeta italiano, particularmente a Divina
Comédia.
Referências
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.; Análise e Descrição 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/2s2007-
mo806/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 em:
<http://pt.wikipedia.org/wiki/Plan_9> Acessado em 05 de Junho de 2011.
6. WIKIPEDIA, Vita Nuova. Disponivel em: <http://pt.wikipedia.org/wiki/Vita_Nuova>
Acessado em 03 de Junho de 2011.
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 Labs’s Official website. Disponível em: <http://plan9.bell-
labs.com/sources/plan9/sys/src/9/> Acessado em 08 de Junho de 2011.
11. Time Line of Bell Labs. Disponivel em: <http://www.alcatel-lucent.com/wps/portal/BellLabs/History/Timeline> Acessado em 08 de Junho 2011.