Sie sind auf Seite 1von 6

//syph0s on Linux: O retorno do Minix http://www.syph0s.net/2009/01/o-retorno-do-minix.

html

//syph0s on Linux
"A renúncia é a libertação. Não querer é poder." ~ Fernando Pessoa

O retorno do Minix
Terça-feira, 13 de Janeiro de 2009 às 18:41 Postado por syph0s Tags: futuro,
google, kernel, linux, microkernel, minix, pesquisa, segurança, software livre

A revista Linux Magazine de fevereiro publicou uma review do Minix 3 contando a


história do sistema, diferenças entre o Minix e o Linux, como o sistema funciona
basicamente e ainda, juntamente com a review, um artigo do autor do sistema, Andrew
S. Tanenbaum, sobre o uso do computador hoje em dia e como a estrutura do Minix
pode fazer a diferença levando-se em conta os objetivos dos usuários comuns. A
matéria é bem longa - como eu gosto - mas vale à pena cada frase. No fim do post
estão os arquivos em PDF da matéria original e da versão traduzida.

-*-*-*-*-*-*-*-*-*-*-*-*-
META
Kernel Inteligente Login / Logout
por Rüdiger Weis / Tradução: Luiz Martins
Posts RSS
O Linux tem uma longa e tempestuosa relação com outro sistema operacional Unix-like RSS dos comentários
conhecido como Minix. Adrew S. Tanenbaum, notável autor e cientista da computação, Blogger.com
lançou a primeira versão do Minix em 1987 como uma ferramenta para ensinar
estudantes sobre sistemas operacionais, e esse pequeno e bem documentado sistema
rapidamente se tornou popular entre os entusiastas. Numa postagem ao grupo de
notícias Minix, um ambicioso graduando finlandês, Linus Torvalds, anunciou o seu
próprio sistema experimental em 1991 e contribuidores rapidamente vieram dos postos PÁGINAS
da comunidade Minix.
Open Music!
Mas Tanenbaum e Torvalds de imediato não se entenderam sobre questões do design.
Tanenbaum sem foi favorável à arquitetura de microkernel, uma característica diferente
do Minix até hoje (veja o texto "Por que os computadores não conseguem funcionar o
tempo todo?"). Linus, por outro lado, fez o Linux com um kernel monolítico, com
sistemas de arquivos, drivers e outros componentes incorporados dentro do kernel.
ENTREVISTAS
Numa famosa postagem ao grupo Minix, o criador do Minix se referiu ao Linux como "...
um gigante retrocesso ao anos 70", e uma confiante resposta do jovem Torvalds para James Whitehurst (Red Hat)
esse experiente líder no campo dos sistemas operacionais é a primeira evidência da sua Jean-Philippe Guillemin
hoje legendária integridade. Apesar de tudo, Linus reconheceu a importância do (Zenwalk)
trabalho de Tanenbaum para a formação de suas próprias idéias. Em sua autobiografia Mark Shuttleworth (Ubuntu)
"Just for Fun", Linus se refere ao livro de Tanenbaum "Operating Systems: Design and
Mark Ulrich (Muppy Linux)
Implementation" como um livro que mudou sua vida.
Martin Nordholts (GIMP)
O debate entre microkerneis e kerneis monolíticos continua hoje em dia, e assim como Richard Stallman (FSF)
o Linux não desapareceu, o Minix muito menos. A versão 3 do sistema operacional Minix
Rod Johnson (SpringSource)
foi projetado com o objetivo de criar um sistema que seja mais seguro e confiável do
que os sistemas POSIX semelhantes, e uma licença livre estilo BSD faz do último Minix
um forte candidato não só para o uso de produção, como também para o uso
educacional. O Minix está atraindo até mesmo a atenção de alguns grandes
patrocinadores. A União Européia está patrocinando o projeto com vários milhões de ÚLTIMOS POSTS
euros, e o Google tem uma quantidade de projetos relacionados ao Minix em seu
programa "Summer of Code". O retorno do Minix
Fotos direto do GIMP para o
O Minix 3 roda tanto em processadores x86 32-bits quanto em várias máquinas virtuais,
incluindo Qemu, Xen e VMWare. O sistema operacional inclui um sistema gráfico de Flickr com o GimpPublishr
janelas (X11), vários editores (Emacs e Vi), shells (incluindo o bash e o Zsh), GCC, VNC no PCLinuxOS
linguagens de script, como Python e Perl, e ferramentas de rede - como o SSH. Com um Como atualizar o PCLinuxOS sem
design diminuto e resistente a erros, o Minix é um bom candidato para sistemas internet
embarcados e a sua estabilidade superior tem conduzido a um novo e promissor papel
Reforma ortográfica
como um sistema de firewall.
Entrevista com Martin Nordholts,
desenvolvedor do GIMP
Inseguro pelo Design
Propaganda do Firefox
Os problemas de segurança à frente da atual safra de sistemas operacionais, incluindo o Navegue com segurança
Windows, mas também incluindo o Linux, são resultado de erros de design. Os erros
Ilusões de Óptica
foram herdados, em sua maior parte, de seus predecessores dos anos 60. A maioria
desses problemas podem ser atribuídos ao fato de que os desenvolvedores não são Desktop? Qual Desktop??
perfeitos. Os humanos cometem erros. Claro, seria bom reduzir os números e mitigar os
efeitos; entretanto, os programadores frequentemente estão dispostos a comprometer a
segurança e um design limpo pela velocidade. Tanenbaum se refere a isso como um
"pacto faustiano".
Além dessas questões relacionadas à dimensão, designs monolíticos também estão
propensos a problemas estruturais inerentes: qualquer erro é capaz de comprometer o LINKS
sistema como um todo. Um erro de design fundamental é que os sistemas operacionais
atuais não seguem o Princípio da Menor Autoridade (POLA em inglês). Para esclarece Blog do Hqxriven
isso, o POLA afirma que os desenvolvedores devem distribuir os sistemas sobre uma Blog do kErNeL_sCrIpT
quantidade de módulos a fim de que um erro num módulo não comprometa a

1 de 6 14/1/2009 14:19
//syph0s on Linux: O retorno do Minix http://www.syph0s.net/2009/01/o-retorno-do-minix.html

segurança e estabilidade dos outros módulos. Eles também devem garantir que cada Blog do nq6
módulo tenha apenas os direitos que ele realmente necessite para finalizar as funções
Blog do samuelbh
designadas.
Brasil Livre
O contínuo crescimento do sistema operacional vem com a integração de novos drivers. Exército do Linux
Sistemas monolíticos incorporam drivers de dispositivos dentro do kernel, o que Felipe Borges
significa que um erro de driver pode comprometer todo o sistema. Drivers de código
fonte fechado em particular colocam em risco a segurança do sistema. De acordo com Fórum ArchLinux-BR
Tanenbaum, incorporar um driver fechado no kernel é como aceitar um pacote lacrado Fórum Ubuntu-BR
de um estranho e levá-lo à cabine do avião. Genius Life
InfoSucata
Kronos Blog
Márcio de Castro
Ubuntu Dicas
Ubuntued

ARQUIVOS
Janeiro (5)
Dezembro (27)
Novembro (12)
Outubro (33)
Setembro (50)
Agosto (1)
Julho (3)
Junho (4)
Maio (12)
Abril (1)
Março (14)
Figura 1: O microkernel do Minix encapsula vários subsitemas na Área do Ususário, incluindo Fevereiro (10)
drivers, o sistema de arquivos e a pilha de rede. O kernel roda apenas funções críticas como Janeiro (6)
operações de I/O, agendadores e gerenciamento de memória.

Arquitetura Transparente
NUVEM DE TAGS
O Minix é, provavelmente, o sistema operacional existente mais bem documentado. O
"The Minix Book" de Tanenbaum e Woodhull é a referência principal. Inúmeras archlinux braziu chrome
publicações sobre novas funções e pesquisas em andamento são encontradas na página documentação documentário
principal do Minix. O Minix obedece ao padrãoPSIX IEEE 1003.2-1996 e os
eleição entrevista flash
desenvolvedores já portaram muitos programas Unix para o Minix.
futuro g1 gimp
A Diferença do Minix google história
humor kde kernel
O Minix 3 está nos currículos de muitas universidades e muitas gerações de estudante
já examinaram os poucos milhares de linhas do código do Minix e consertaram muitos
linux mediocridade

erros. A arquitetura em microkernel implementa os drivers como processos de modos microsoft novell open
de usuários separados que não permitem executar comandos privilegiados ou operações music opensolaris
de I/O (Entrada e Saída) ou escrever diretamente na memória. Em vez disso, essas pclinuxos pesquisa piracy
operações são feitas por chamadas fiscalizáveis do kernel (ver Figura 1). red hat release
segurança smartphones
O Minix 3 utiliza mensagens de largura definida para a comunicação de processos. Esse
design simplifica a estrutura do código e ajuda a mitigar o perigo de transbordamento software livre sun
de dados. O sistema de arquivos do Minix é executado como um simples processo de tutorial ubuntu windows
usuário. Já que ocupa cerca de 8.200 linhas do código da área de usuário, mas sem
código do kernel, odebug nele é feito facilmente.

Um componente inovador, o "servidor de reincarnação", aumenta a confiabilidade do


sistema Minix de servir como responsável por todos os servidores e drivers. Ele detecta
erros muito rapidamente e monitora continuamente a função de processo críticos,
reiniciando processos inoperantes quando necessário para manter o sistema rodando.

O Projeto Minix Firewall


Filtros de pacotes são um componente do sistema em risco. Apesar da excelente
qualidade do Linux em implementações Nelfilter, várias questões de segurança
surgiram no passado. Se um subsistema desse tipo está rodando no kernel Linux, ele
estará colocando em risco a segurança do sistema. Com base no trabalho do grupo de
Tanenbaum, a Universidade Técnica em Ciência Aplicada de Berlim portou o
famosoframework Netfilter para o Minix 3.

Novamente, a estabilidade da arquitetura em microkernel oferece benefícios adicionais.


No Linux, um invasor que tenha sucesso em provocar um erro - por exemplo,
explorando um transbordamento de dados na função do_replace () - pode deixar um
firewall Linux de joelhos. No Minix 3, um único processo de usuário poderia colapsar
sem comprometer a segurança do sistema. O servidor de reincarnação poderia
simplesmente reiniciar o processo.

2 de 6 14/1/2009 14:19
//syph0s on Linux: O retorno do Minix http://www.syph0s.net/2009/01/o-retorno-do-minix.html

As diferenças se tornam ainda mais aparente se um invasor tem sucesso ao executar


um código. No Minix, um processo de usuário seqüestrado ainda é um problema. mas o
efeito é muito mais brando graças à isolação.

Até a Microsoft está explorando o próprio sistema em microkernel, chamado Singularity.


Embora o Minix tenha jogado o jogo do microkernel por anos, o seu maior obstáculo
para se tornar mais conhecido sempre foi as suas licenças não livres. Agora que o Minix
3 está sendo distribuído sob uma licença BSD e as extensões de firewall estão
disponíveis sob GPL, os pesquisadores daTFH Berlin estão trabalhando na exploração do
potencial do Minix como um firewall virtualizado. Estabilidade, um design diminuto e
um novo modelo de licenciamento deram ao Minix 3 um grande potencial de
crescimento, especialmente em sistemas embarcados.

Figura 2: O Minix é bastante espartano na inicialização. Dito isso, a versão 3.1.2a incluí uma
interface X11 e ferramentas para desenvolvedores.

Por que os computadores não conseguem funcionar o tempo


todo?
Por Andrew S. Tanenbaum

Os usuários de computador estão mudando. Dez anos atrás, a maioria dos usuários de
computador eram pessoas jovens ou profissionais com muita experiência técnica.
Quando as coisas davam errado - e frequentemente davam -, eles sabiam como
consertar as coisas. Hoje em dia, o usuário comum é muito menos sofisticado, talvez
um garotinha de 12 anos ou um vovô. A maioria deles sabe tanto sobre arrumar
computadores quando umnerd de computadores sabe sobre consertar o próprio carro. O
que eles querem mais do que qualquer outra coisa é um computador que funcione o
tempo todo, sem falhas ou erros.

Muitos usuários comparam automaticamente seus computadores com seus aparelhos de


televisão. Ambos estão repletos de eletrônicos mágicos e têm telas grandes. A maioria
dos usuários tem um modelo implícito de um aparelho de televisão: 1) você compra o
aparelho; 2) o conecta; 3) ele funciona perfeitamente sem qualquer falha pelos
próximos 10 anos. Eles esperam isso de um computador e quando não conseguem isso,
ficam frustrados. Quando pessoas com alguma experiência em computação diz a eles:
"Se Deus quisesse que os computadores funcionassem todo o tempo, Ele não teria
inventado o botão RESET". Eles não se impressionam.

Na falta de uma definição melhor de confiabilidade, vamos adotar a seguinte: Um


dispositivo é dito ser confiável se 99% dos usuários nunca experimentar qualquer falha
durante o período de vida do próprio dispositivo. Por essa definição, virtualmente,
nenhum computador é confiável, enquanto a maioria dasTV's, iPods , câmeras digitais,
câmeras de vídeo, etc são. Viciados em tecnologia estão dispostos a perdoar um
computador que falhe uma ou duas vezes por ano; usuários comuns não.

Usuários domésticos não são os únicos incomodados pela pobre confiabilidade dos
computadores. Até mesmo em configurações altamente técnicas, a baixa confiabilidade
dos computadores é um problema. Empresas como Google eAmazon , com centenas de
servidores, experimentam várias falhas todos os dias. Eles aprenderam a conviver com
isso, mas certamente iriam preferir sistemas que simplesmente funcionassem o tempo
todo. Infelizmente, os softwares atuais os deixam na mão.

O problema básico é que o software contém bugs, e quanto mais softwares existem,
mais bugs irão existir. Vários estudos têm mostrado que o número de bugs por milhar
de linhas de código (KLoC) variam de 1 a 10 em grandes sistemas de produção. Um
pedaço de um software bem escrito pode ter 2 bugs por KLoC com o passar do tempo,
mas não menos. Um sistema operacional com, digamos, 4 milhões de linhas de código
é, portanto, suscetível a ter ao menos 8000 bugs. Nem todos são fatais, mas alguns

3 de 6 14/1/2009 14:19
//syph0s on Linux: O retorno do Minix http://www.syph0s.net/2009/01/o-retorno-do-minix.html

serão. Um estudo da Universidade de Stanford mostrou que drivers de dispositivos -


que compõem 70% da base de códigos de um típico sistema operacional - têm taxas de
bugs de 3 a 7 vezes maiores do que o resto do sistema. Drivers de dispositivos tem
uma alta taxa de bugs porque (1) são mais complexos e (2) são menos examinados.
Enquanto muitas pessoas estudam o agendador, poucas observam o driver da
impressora.

A Solução: Kerneis Menores

A solução para esse problema é tirar o código do kernel, onde ele pode causar o máximo
de estrago, e colocá-lo nos processos da área de usuário, onde bugs não conseguem
causar falhas no sistema. É assim que o Minix foi projetado. O atual sistema Minix é o
[segundo] sucessor do Minix original, que foi lançado originalmente em 1987 como um
sistema operacional educacional mas tem sido corrigido desde então a fim de se tornar
um sistema altamente confiável e auto-imune. O que segue é um breve descrição da
arquitetura do Minix; você pode encontrar mais detalhes em http://www.minix3.org.

O Minix 3 foi projetado para rodar com o menor código possível no modo kernel, onde
os bugs podem ser facilmente fatais. Em vez de 3 ou 4 milhões de linhas de código no
kernel, o Minix 3 tem cerca de 5000 linhas de código no kernel. Às vezes kerneis tão
pequenos são chamados de microkerneis. Eles lidam com o gerenciamento de processo
de baixo nível - agendamento, interrupções e o relógio - e fornecem alguns serviços de
baixo nível para componente da área de usuário.

O volume do sistema operacional roda como uma coleção de drivers e servidores de


dispositivo, cada um rodando como um processo comum na área de usuário com
privilégios restritos. Nenhum desses servidores e drivers rodam como super-usuário ou
equivalente. Eles não podem nem mesmo acessar os dispositivos de entrada e saída ou
a unidade de gerenciamento de memória diretamente (MMU).

Eles têm de usar os serviços do kernel para ler e escrever no hardware. A camada de
processos rodando no modo de usuário acima do kernel consiste de drivers de
dispositivos - com drivers de discos, drivers de rede e todos os outros drivers - rodando
como processos separados protegidos pelaMMU do hardware a fim de que eles não
possam executar quaisquer instruções privilegiadas e não possam escrever ou ler
qualquer memória, exceto a própria.

Acima da camada de drivers vem a camada de servidores - com um servidor de


arquivos, um servidor de processos e outros servidores. Os servidores fazem uso tanto
dos drivers quanto dos serviços do kernel. Por exemplo, para ler de um arquivo, um
processo de usuário manda uma mensagem para o servidor de arquivos, que então
manda uma mensagem para o driver do disco buscar os blocos necessários. Quando o
sistema de arquivos os tem no cache de dados, ele chama o kernel para movê-los para
o espaço do endereço do usuário.

Além desses servidores, há um outro servidor chamado de servidor de reincarnação. O


servidor de reincarnação é o responsável por todos processos de drivers e servidores e
monitora o comportamento deles. Se ele descobre um processo que não está
respondendo a seus pings, ele inicia uma nova copia pelo disco (exceto para o driver de
disco, que é vigiado na RAM). O sistema foi projetado para que muitos (mas não todos)
dos drivers e servidores críticos possam ser substituídos automaticamente enquanto o
sistema está operante, sem perturbar os processos de usuário ou mesmo notificar o
usuário. Dessa maneira, o sistema é auto-imune.

Para testar se essas idéias funcionam na prática, fizemos o seguinte experimento.


Iniciamos um processo defeituoso por injection que sobrescreveu 100 instruções no
binário do driver da rede para ver o que aconteceria se um deles fosse executado. Se
nada acontecesse por alguns segundos, outras 100 instruções seriam introduzidas e
assim por diante. Ao todo, injetamos 800.000 processos defeituosos em cada um dos
três drivers de rede diferentes e causou 18.000 erros de driver. Em todos os casos, o
driver foi substituído pelo servidor de reincarnação. Apesar de injetar 2.4 milhões de
processos defeituosos no sistema, nenhuma vez sistema operacional falhou. Não precisa
dizer que se um erro faltal ocorre num driver Linux ou Windows rodando no kernel, o
sistema operacional por falharia completo instantaneamente.

Existe uma desvantagem nessa abordagem? Sim. Há uma meta de desempenho. Nós
não medimos isso extensivamente, mas o grupo de pesquisa em Karlshure
(Universidade de Karlshure, Alemanha), que desenvolveu o próprio microkernel, o L4, e
depois rodou Linux sobre ele como um simples processo de usuário, foi capaz de atingir
uma meta de desempenho de 5%. Acreditamos que, se colocarmos alguns esforços
nele, poderemos alcançar a taxa entre 5% e 10% também. A performance não tem sido
uma prioridade para nós, assim como a maioria dos usuários que lêem seus emails e
entram no Facebook não estão limitados pela performance do CPU. O que eles querem,
no entanto, é um sistema que funcione o tempo todo.

Se os microkerneis são tão confiáveis, por que todos não os usam?

Na verdade, todos usam. Provavelmente, você roda vários deles. O seu telefone celular,
por exemplo, é um pequeno computador normal e há uma boa chance dele rodar o L4
ou o Symbian ou outro microkernel. Os roteadores de alta performance da Cisco usam.
Nos mercados aeroespacial e militar, onde a confiabilidade é primordial, o Green Hills,
outro microkernel, é amplamente usado. O PikeOS e o QNX também são microkerneis
amplamente usados em sistemas embarcados e industriais. Em outras palavras, quando
se trata de sistemas que "funcionem o tempo todo", as pessoas se voltam para os
microkerneis. Para saber mais sobre esse assunto, acesse www.cs.vu.nl/~ast

4 de 6 14/1/2009 14:19
//syph0s on Linux: O retorno do Minix http://www.syph0s.net/2009/01/o-retorno-do-minix.html

/reliable-os/.

Sendo assim, é o que acreditamos, baseado em várias conversas com usuário não
técnicos, que o que eles querem acima de qualquer coisa é um sistema que funcione
perfeitamente todo o tempo. Eles têm uma baixa tolerância para sistemas não
confiáveis mas atualmente eles não têm escolhas. Acreditamos que sistemas baseados
em microkerneis podem indicar o caminho para sistemas mais confiáveis.

Rüdiger Weis é professor de program ação de sistem as na THF Berlin. Entre 2002 e 2005, ele esteve
envolvido com uma pesquisa de pós-doutorado sistem as operacionais seguros sob a supervisão do
Professor Andrew S. Tanenbaum na Vrije Universiteit, Am sterdã.

-*-*-*-*-*-*-*-*-*-*-*-*-
PDF (Inglês)
PDF (Português)

Comments (4)
Sort by: Date Rating Last Activity

Gattune! Tecnologia 0

Pergunta? E o Android! É um MicroKernel


» 4 hours ago POST REPLY

Fábio 0

O Android é baseado no Linux, portanto deve incorporar suas


características neste sentido (kernel monolítico).
» 3 hours ago POST REPLY

Pablo Hess 0

Parabéns e obrigado pela ótima tradução, Luiz.


A título de diversidade (aquela típica do Software Livre), sugiro também a
tradução oficial do editorial de Tanenbaum (que compõe um trecho deste
artigo) intitulado "Por que os computadores não conseguem funcionar o
tempo todo?", publicada dia 08/12/2008 no site da Linux Magazine
brasileira, em http://www.lnm.com.br/materia/tanenbaum_por_que_o....
» 2 hours ago POST REPLY

Henrique Taniyama 0

Parabéns pela tradução! muito bom esse artigo!


» 2 hours ago POST REPLY

Post a new comment


Enter text right here!

Name
Email (track replies)
Blog URL (optional)

Sign up for IntenseDebate Why? | Login to comment

SUBMIT COMMENT
Receive email updates for this post
Or post using OpenID

Início Postagem mais antiga


Assinar: Postar comentários (Atom)

5 de 6 14/1/2009 14:19
//syph0s on Linux: O retorno do Minix http://www.syph0s.net/2009/01/o-retorno-do-minix.html

Esta obra está licenciada sob uma Licença Creative Commons.

6 de 6 14/1/2009 14:19

Das könnte Ihnen auch gefallen