Follow falcon_dark on Twitter
Google

segunda-feira, setembro 12, 2005

Quando o professor está errado e o aluno está certo

Pesquisando sobre as diferenças entre o kernel Mach usado no MacOS X e um kernel monolítico como o Linux para entender as diferenças de desempenho sobre as quais eu falei no meu último artigo eu me deparei com algo muito bacana. É uma discussão que ocorreu na lista de e-mails do MINIX em 1992 entre Andrew Tanenbaum e Linus Torvalds que pode ser lida em inglês aqui.

A discussão e as formas de pensar de ambos me remeteram à “A Catedral e o Bazar” ensaio de Eric Raymond sobre o sistema de desenvolvimento de Softwares Livres. Mais que isso, mostrou-me o quanto um homem gabaritado e inteligente pode errar em suas impressões e previsões quando depara-se com uma idéia cuja total plenitude ele ainda não percebera.

Andrew S. Tanenbaum
Professor de Ciência da Computação na Universidade de Vrije em Amsterdam, Holanda. Desenvolvedor do MINIX um sistema operacional UNIX-like pensado para ensinar aos seus estudantes a matéria de Sistemas Operacionais que leciona. O MINIX usa microkernel em sua arquitetura que é definido por essência como sendo uma maneira elegante porém com menor desempenho de implementar um kernel de sistema operacional. Publicou vários livros sobre o assunto como pode ser constatada em sua biografia disponibilizada no link.

Linus Torvalds.
Graduado em Ciência da Computação pela faculdade de Helsink, Finlândia; período no qual desenvolveu as primeiras versões do kernel monolítico Linux que foi posteriormente lançado sob a GPL e usado como kernel padrão em várias distribuições do sistema operacional GNU desenvolvido pela FSF sob o comando de Richard Stallman.

Não seria prático traduzir na íntegra toda a discussão entre eles, por isso mostrarei apenas os pontos que achei interessantes, por mostrar como alguém com o histórico e o gabarito de um professor universitário de renome pode estar errado frente as inovações e ideais de um simples estudante. À época do diálogo (1992) Linus já havia feito seu célebre comunicado aos hackers do mundo para o desenvolvimento do kernel Linux (ver link). Faço meus comentários em itálico e azul sobre as postagens, apresentadas aqui em ordem cronológica.

------------Início das transcrições------------

Tanenbaum:
-Meu trabalho é como professor e pesquisador na área de sistemas operacionais; como resultado de minha ocupação eu creio que sei um pouco sobre o rumo que os sistemas operacionais tomarão na próxima década ou perto disso (as idéias de Tanenbaum então estenderiam-se até 2002 ou perto disso; portanto até os dias de hoje, segundo seu próprio senso de percepção). Dois aspectos devem ser considerados: Microkernel vs Kernel Monolítico e Portabilidade.
a)Microkernel vs Kernel Monolítico:
-Esse debate está acabado, o microkernel venceu.
(Encontrei alguns sistemas operacionais na internet que usam somente Microkernel, mas quase todos ou estão em desenvolvimento ou são sistemas focados em aplicações embarcadas, a maioria dos sistemas de produção de hoje usam modelos mistos de kernel monolítico com conceitos de microkernel implementados em parte ou microkernels controlando pseudo-kernels mais completos, nessa categoria podemos colocar o FreeBSD, o MacOSX. (Nota de falcon_dark: Posteriormente encontrei fortes indícios de que o FreeBSD usa um kernel monolítico de fato, como o Linux. Isso colocaria-o em uma classificação de tipos de kernel ao lado do Linux e em oposição ao MacOSX. Para informações sobre isso leia o meu post mais recente sobre o assunto.) O Linux, o WindowsNT/XP usam kernels monolíticos com o Linux usando o conceito de módulo para subir e descer servidores (como um microkernel faria) e o Windows usando um monolítico tradicional mas com alta portabilidade usando uma Camada de Abstração de Hardware por baixo do kernel. Assim como nenhum processador de hoje pode ser classificado diretamente como RISC ou CISC, mas sim um misto dessas duas tecnologias não se poderia classificar um kernel de sistema operacional de produção hoje como sendo micro ou monolítico, pois praticamente todos os kernels sobre os quais li usam algum recurso da arquitetura concorrente. A grande razão para isso me parece ser o fato de que um microkernel puro pode perder até 60% do desempenho de um hardware em operação real.)
-Linux é um sistema de estilo monolítico. É um grande passo atrás de volta à 1970. Para mim, escrever um sistema monolítico em 1991 é uma idéia muito pobre.
b)Portabilidade:
-[Tenenbaum descreve a história da Intel, do 4004 ao 80486 e insinua que eles são todos iguais] Nesse meio tempo aconteceram os chips RISC e agora eles estão acima de 100MIPS. Logo estarão à 200MIPS. Essas coisas não vão desaparecer. O que vai acontecer é que esses chips tomarão o lugar da linha 80x86. Acho um erro grosseiro desenhar um sistema operacional para esta arquitetura já que ela não ficará no mercado por muito mais tempo.
(Esse parece ser o maior erro de avaliação do professor. Não só os chips RISC não dominaram o mercado mas quase desapareceram. Os chips tradicionais, como a linha x86 que seria retirada do mercado incorporou muito da tecnologia RISC e não foi substituída por ela. Os MIPS que ele cita são Milhões de Instruções Por Segundo, um referêncial de desempenho de processadores. Os 80486 ficavam perto de 50MIPS, enquanto que os 80686 mais recentes chegam perto de 10.000MIPS)
-Eu devo sugerir que todos aqueles que queiram um sistema moderno e gratuíto procurem por um que use microkernel, portável, como talvez o GNU ou algo do gênero.
(Quando refere-se ao GNU, o professor fala do projeto original do GNU de usar a dupla Mach/Hurd como kernel/servidor. Acontece que o Mach tem um desempenho muito ruim, perto de um kernel monlítico e o Hurd não ficou pronto até hoje. O Linux acabaria por substituir Mach/Hurd na tarefa de kernel do sistema GNU, criando o GNU/Linux, que usamos hoje.)

Linus Torvalds:
-Veja quem ganha dinheiro com o MINIX e quem fornece o Linux de graça. Então vamos falar de hobbies!
(Linus mostra-se ofendido com o fato de Tanenbaum dizer que seu MINIX é apenas um hobby e não uma tentativa real de construir um sistema de verdade. O comentário original parece meio ofensivo à Linus que decide reagir de maneira enérgica, esse é o tom do resto da mensagem.)
-Verdade, Linux é monolítico, e concordo que microkernels são mais bonitos. Mas se o GNU estivesse pronto na última primavera eu nem começaria meu projeto. E se esse parâmetro fosse a única coisa para classificar um kernel como bom ou ruim, eu daria razão a você. O seu MINIX não faz as coisas de microkernel muito bem, tem problemas com multi-tarefa real no kernel.
-O que o Linux faz: ele usa um subset de intruções do 386 que parece maior do que o que os outros kernels usam. Claro que isso torna o kernel difícil de ser portavel, mas deixa seu desenho mais simples. Uma troca aceitável e que tornou o Linux possível em primeiro lugar. E meu código fonte está livre, o que significa que qualquer um pode portar para onde quiser.

Tanenbaum:
-Um sistema de arquivos com multithreading (capacidade de endereçar multiplas escritas/leituras ao mesmo tempo, característica fundamental para os sistemas multi-tarefa domésticos de hoje) é um “hack” de performance. Quando há apenas uma tarefa ativa, que é o caso normal de um PC pequeno, isso não melhora nada e adiciona uma complexidade desnecessária ao código. (O professor critica Linus por implementar esse recurso em seu kernel Linux, mas se o kernel Linux não tivesse essa capacidade não teria sido adotado pelo mercado como foi)
-Eu mantenho meu ponto de que desenhar um kernel monolítico em 1991 é um erro. Seja grato por não ser meu aluno, você não tiraria boas notas por esse desenho :-)
-Meu ponto é que escrever um novo sistema operacional que está amarrado à uma plataforma, especialmente uma tão estranha quanto a da Intel, é baiscamente errado. Escrever um sistema apenas para o 386 em 1991 te dá sua segunda nota ZERO para essa matéria. Mas se você for muito bem no exame final talvez consiga se formar.
(Nota ZERO para o que se tornaria um ícone do software livre e um dos kernels de melhor reputação e desempenho da história da informática? Acho que descobrir porque não gosto muito dos professores da faculdade)


Linus Torvalds:
-Sim, o MINIX é portável, mas você pode reescrever essa frase como “O MINIX não usa nenhum dos aprimoramentos do hardware”, e a frase continuaria sendo verdadeira.
(Linus critica o fato do Minix ser muito portável mas não conseguir usar implementações técnicas das plataformas, como o sistema de paginação de memória do 386, perdendo desempenho por não usar essas características. Isso chama a atenção para uma coisa, hoje em dia os sistemas operacionais buscam uma mistura de portabilidade e uso intensivo dos recursos de hardware. Bons sistemas e programas são aqueles que conseguem usar caracteristicas especiais dos processadores, como as instruções SSE3 da Intel e as extensões de 64-bit da AMD. Há versões distintas do kernel Linux para cara uma dessas plataformas, o Windows XP também, com seu HAL procura sempre adaptar-se ao máximo ao hardware sobre o qual ele rodará. Parece então não ser uma questão de escolher entre portabilidade e uso de recursos de cada plataforma, mas sim buscar uma maneira de encaixar as duas coisas para obter um equilíbrio.)
-Não é verdade que um sistema de arquivos com multithreads seja um “hack” de performance. Quando você escreve um UNIX “obsoleto” você tem automaticamente um kernel multithread: cada processo deve fazer seu próprio trabalho, e você não precisa fazer coisas feias como filas de mensagens para fazer isso funcionar eficientemente (como nos microkernels)
-O kernel Linux é uma minúscula parte de um sistema completo: os fontes têm atualmente 200KB enquanto comprimidos. De fato o kernel Linux inteiro é muito menor que a parte i386 do microkernel Mach> i386.tar.Z da versão atual do Mach tem mais de 800KB comprimidos. Claro que o Mach tem mais recursos que o Linux mas isso ainda deve dizer alguma coisa.
(Linus quer dizer que se ele precisasse reescrever o kernel Linux para outra plataforma naquela data ainda teria menos trabalho do que se alguém quisesse adaptar o kernel Mach para uma nova máquina e discute, com esse argumento, a falta de portabilidade do Linux. De fato hoje o Linux é sem dúvida o kernel que tem versões estáveis para o maior número de plataformas do mercado, mostrando que sua portabilidade é real e exeqüível)

------------Fim das transcrições------------

Em outra mensagem Tanenbaum discute ainda o free-ness do Linux e do software em geral. Mas fica claro no texto que ele leva o uso da palavra free para a interpretação de preço baixo ou gratuíto, não havendo um entendimento ou argumentação dele sobre as liberdades de software. Ele ainda questiona-se por quanto tempo Linus conseguiria manter-se desenvolvendo o Linux quando os desenvolvedores independentes começassem a implementar coisas que ele não gostaria em seu kernel e demonstra não acreditar que o kernel Linux terá uma vida longa ou atinja êxito como um sistema operacional usável.

Eu publiquei esse post para mostrar como, às vezes, pessoas competentes e experientes em assuntos técnicos podem enganar-se quando encontram coisas ainda não vistas, e como boas idéias podem superar conceitos consolidados. No começo dos anos 90 o consenso entre os especialistas em informática era de que os processadores seriam todos RISC, que o x86 morreira, que os sistemas operacionais teriam microkernels e que o UNIX ou o GNU se firmariam como o sistema operacional padrão por todos os lados.

Desde então a Digital morreu e os Power tornaram-se processadores mistos praticamente varrendo do mercado a idéia de processadores RISC puros, a IBM abandonou o Taligent (microkernel universal para todos os seus sistemas operacionais) e os melhores kernels de hoje são mistos de conceitos de microkernels e kernels monolíticos, o x86 é a plataforma #1 em vendas no mundo todo e o Windows domina boa parte do cenário dos sistemas operacionais, deixando o UNIX e suas variantes um pouco atrás.

E no artigo passado eu contei como os testes práticos de um sistema microkernel contra um kernel monolítico mostraram que o microkernel tem realmente um desempenho inferior. São coisas para se pensar. Enquanto isso, recomendo a leitura do ensaio “A catedral e o Bazar” de Eric Raymond e uma passada na Wikipedia para ler sobre os assuntos discutidos aqui: microkernel, Mach, Linux kernel, Taligent, MacOS X e Windows NT. São leituras interessantes e muito explicativas.


Follow falcon_dark on Twitter
Google
Comments:
Rapaz, não é por nada não mas esse blog tá cada vez mais divertido :P

Eu já tinha feito essas pesquisas e lido sobre as diferenças nos kernels, e essa sua resenha me fez refletir sobre várias coisas.

Como Henry Ford dizia: "... Nossos melhores sucessos foram devidos a deixarmos os loucos insistirem no que os sábios haviam abandonado."

Eu ainda conheço isso muito na teoria, mas por pura curiosidade vou pegar o código das primeiras releases públicas do Linux e do antigo Minix e dar uma olhada.

E o NetBSD? O NetBSD é extremamente portável mas também é monolítico. Será que ele aproveita tão bem o hardware como o Linux?

Abraços,
 
Salve Daniel, muito obrigado pelo elogio!

Muito boa essa frase do Henry Ford... Olha tem um tempão eu tinha visto um comparativo de performance de BSDs x Linux 2.4 e 2.6. Lembro que o resultado era Linux 2.6 na cabeça... mas não me lembro como havia sido entre os BSDs... boa coisa pra procurar na web...

Mas acho que acabei respondendo sua pergunta com isso... acho que ninguém aproveita tão bem o hardware como o Linux... hehehehe

Grande abraço...
 
Corrige ae, o Windows também é microkernel.
 
Depende de cada tarefa.

Têm tarefas que o Windows faz melhor e aproveita o hardware melhor, outras o Linux, outras os BSD, o OSX ...

Um exemplo, ripar DVD no Linux não presta, no OSX gasta 1/3 do tempo.
 
que analisesinha infantil... e com "explicações" (as partes em azul) erradas...
 
Falcon_Dark, primeiramente quero parabenizar pelo otimo texto e lendo todo seu texto lembrei de algo que escutei a algum tempo atras sobre a grande briga entre ATM e Ethernet, todos diziam que Ethernet era uma m*rda e nunca vingaria e que ATM era o futuro, hj vemos que não foi bem isso que aconteceu ne hehehe. Existem conceitos para mim que so valem ou so dão certo no meio acadêmico. No mais não ligue para comentarios desnecessários sobre a qualidade de seu texto ou conteúdo do mesmo, pois alguem que nem tem a coragem de postar com o proprio nome criticando algo deve ser considerado. Abraços!
 
"Olha tem um tempão eu tinha visto um comparativo de performance de BSDs x Linux 2.4 e 2.6. Lembro que o resultado era Linux 2.6 na cabeça... mas não me lembro como havia sido entre os BSDs... boa coisa pra procurar na web..."

Por favor me envie o link oonde fala disso!
 
Como sempre excelente o seu artigo, sobre o maior flamewar da história.

Vejo muita gente falando sobre o conceito de micro kernel, mas nenhum resultado efetivo na prática.

Pros Trolls de plantão, favor ler a história toda e as mensagens originais, ajuda bastante.

Abraços
 
Parabens pelo otimo artigo, precisamos disto para rever nossos conceitos sobre Kernel.

[s] TEOTONIO
 
Aos Anônimos de plantão: A microsoft ATESTA que o WindowsXP é microkernel, mas ninguém sabe ao certo porque ninguém, nem funcionários da microsoft, pode ver o código fonte completo, então não há como saber. O que dá pra saber é que um sistema com microkernel jamais poderia ficar travado pela súbita interrupção de um fluxo de dados, e isso acontece sim com o Windows, então muitos especialistas (dentre os quais eu não me incluo, mas confio neles) recusam-se a chamar o kernel do Windows de microkernel, veja por exemplo este link. Portanto como todo material sério que encontrei sobre o assunto até agora recusa-se a chamar o Windows de sistema microkernel eu não o farei e por isso no texto citei o mesmo como sendo um sistema monolítico modificado. Faça o teste, insira um CD ou DVD danificado em uma unidade com WindowsXP e mande o Windows Explorer acessá-lo, se nesse meio tempo você não puder continuar operando seu sistema normalmente isso é um grande indício de que o kernel dele está travado à espera do fluxo, coisa que um microkernel não deveria fazer. Obrigado pelos adjetivos sobre a infantilidade do meu texto e sobre minhas "explicações" erradas em azul, de fato sem contra-argumentos é muito tranqüilo dizer que alguém está errado. Adoraria que alguém pesquisasse mais sobre o assunto e enchesse minha caixa postal, ou este blog, de material técnico para que todos pudéssemos aprender mais. Pesquise e mostre que estou errado, já aconteceu antes aqui mesmo no blog quando discutimos a GPL e não tenho nenhum problema com isso, estou aqui para aprender com a comunidade.

Para coisas como ripar DVD o "linux não presta" por enquanto. Pois ainda não há bons programas no Linux para fazer muitas coisas. Com bons programas isso pode ser diferente. O Linux tem uma ótima infra estrutura para trabalhar com sistemas de arquivos e com processamento massivo, o que dá boas perspectivas para realizar muitas tarefas, a medida que mais programas de qualidade aparecerem na plataforma poderemos ver o Linux tornar-se uma boa opção para fazer muitas coisas, como edição de mídia, por exemplo. Hoje ele é um sistema muito bom para servidores, como podemos comprovar olhando para a internet, porque bons servidores estão presentes e sabem usar bem os recursos que o sistema oferece.

Malaki: o lance do ATM x Ethernet tem muito a ver com os baixos custos que os equipamentos ethernet atingiram para poder dominar o mercado. Isso também aconteceu com o SCSI x IDE, Rambus x DDR, PC x Mac e outras coisas que conseguiram suplantar padrões técnicos superiores usando preços mais acessíveis, é mercado. Quando alguém com gabarito técnico olha apenas a parte técnica e diz coisas como tal padrão dominará o mercado muitas vezes esquece que custos são talvez a parte mais importante da estratégia de mercado para uma tecnologia.

Juliano: essa análise que eu citei saiu logo que o kernel 2.6 veio para a praça, há muito tempo, vou dar uma pesquisada e posto o link por aqui se eu achar.

Rafael: muita gente trabalha e acredita em microkernel, hoje me parece que kernel monolítico ainda é uma alternativa de melhor desempenho, mas no futuro quem sabe o que pode acontecer? Obrigado pelos elogios.

Aprecio os comentários de todos, inclusive os comentários negativos. Apenas fico chateado com pessoas que passam por aqui e comentam algo apenas, sem deixar nenhum tipo de informação em troca. Afinal trocar informações é o objetivo desse blog. Tenho ciência que todo post que trouxer análises, comparativos ou mesmo minhas impressões pessoais sobre alguma coisa estará sujeito a gerar polêmica, mas isso é normal. Mas gostaria que aqueles que queiram criticar possam sempre fazê-lo com mais argumentos técnicos e dados para que possamos sempre informar-nos uns aos outros sobre nossas opiniões e pontos de vista e ter sempre um debate que será aproveitável para todos.

Obrigado por suas participações e visitas.
 
Foi ótima a matéria pois só assim sabemos o que realmente precisamos no Linux (Kernel) onde a maioria das distro's já veêm cheias de programas emuladores e tudo mais, ond na verdade do precisanos é apenas seu kernel com suas funções principais e atualizações... e que o que precisarmos adicional, basta encontrar na WEB... Só pra frizar: Muito bom mesmo esse seu artigo precisamos e sempre vamos precisar de algo assim ...
 
Juliano e a todos os interessados: Aqui está o teste que eu tinha visto e que havia comentado, é de 2003. Foi feito um teste entre FreeBSD, NetBSD, OpenBSD, Linux 2.4 e Linux 2.6 que simula a escalabilidade desses sitemas enquanto servidores de web. Leiam o texto todo, vejam os gráficos e depois voltem aqui e leiam o que vou trazer de lá abaixo:

Segundo o teste as posições em termos de performance de servidor são: Linux 2.6, FreeBSD, Linux 2.4, NetBSD e OpenBSD, isso para os sistemas daquela época. Não há uma boa razão para atestar que se repetidos hoje esses testes dariam o mesmo resultado. Mas são uma fotografia daquela época e daquelas versões dos sistemas.

Duas coisas à notar: Linux 2.6 e FreeBSD tiveram resultados sempre muito próximos, mostrando que a equipe do FreeBSD tem feito um bom trabalho com seu microkernel. NetBSD e OpenBSD tiveram desempenhos muito ruins, mostrando que o microkernel pode ser uma má opção em termos de performance se você não trabalhar duro sobre ele. Divirtam-se
 
Parabéns pelo artigo!
aprendi muito lendo essas linhas...
Abraços!

Fleming - www.sputnix.com.br
 
Falcon_dark, você conhece alguém que tenha visto o código do QNX inteiro para afirmar se ele é realmente microkernel ou não? Acho que mesmo que nunca tenha conhecido uma pessoa assim você vai parecer um maluco se falar que o QNX não é um microkernel, ou seja essa de que a MS diz e pode não ser verdade não é um bom argumento. Entenda por QNX o kernel e não o sistema todo.
Eu acharia interessante também se a discussão envolvesse a tecnologia atual de microkernel, o Mach como referência na área é história, ao que parece muitos desenvolvedores tem preferido o que se chama de sistema L4, o próprio Hurd já está usando este tipo de tecnologia e abandonou o Mach.
Se você ler sobre a performance o NetBSD 2.0 está muito melhor que a versão 1.6 do teste que você citou. O autor coloca logo no começo da página: "NetBSD: now scales better than even FreeBSD 5!", aqui você pode ver os gráficos de escalabilidade do NetBSD 2.0
 
Não conheço ninguém que tenha visto o código do QNX, aliás não conheço ninguém que tenha visto o QNX rodando para poder dizer algo. Mas não corte meu argumento pela metade! Eu disse que não acredito que o Windows seja um microkernel porque muita gente também não acredita e com algumas razões. Que melhor argumento para a arquitetura microkernel haveria além de dizer que o sistema operacional mais usado do mundo É microkernel? Nem os especialistas mais defensores de microkernel, como o próprio Tanenbaum costumam citar o Windows como exemplo de microkernel, por quê?

Eu disse antes: não acredito que o Windows seja um sistema microkernel (conforme a arquitetura orienta) porque é só a palavra da Microsoft nesse favor (e nisso eu não confio nada mesmo) e porque seu péssimo desempenho multi-tarefa não condiz com o razoável para um sistema de arquitetura microkernel. Faça o teste! Baixe o Freesbie ou o FreeBSD (que é microkernel mesmo), instale e interrompa o fluxo de dados em um sistema de arquivos desligando a energia de um HD durante a cópia de uma imagem ISO por exemplo, faça o mesmo com um Windows e me diga se você acha que são kernels de mesma arquitetura, são dois comportamentos totalmente distintos! O FreeBSD continuará operando normalmente, o Windows irá ficar paralisado, talvez você até veja a Tela Azul da Morte...o comportamento do WindowsXP parece-se muito mais com o do DOS do que com o do FreeBSD. A arquitetura cliente/servidor de um microkernel deixa todo o processamento a cargo dos servidores, então uma interrupção de fluxo jamais poderia paralizar um sistema microkernel e isso ACONTECE no Windows. Quer mais? Uma das grandes vantagens do microkernel é poder parar e reiniciar servidores sem precisar de boot, porque então quando eu instalo um novo driver de placa de video o Windows precisa reiniciar o sistema? Um microkernel deveria ser capaz de fazer isso on the fly, e o Windows não faz. TODAS essas coisas me fazem acreditar que o Windows não é um sistema que use microkernel, não só o fato de não poder ver seu código, são indícios muito claros e consistentes e mais confiáveis do que a publicidade da Microsoft, com certeza. Mas é claro... são apenas indícios... posso estar errado, e se algum dia alguém me provar que o Windows é microkernel tudo bem, mas como ninguém pode fazer isso, continuo com minhas desconfianças ;-)

Quanto ao L4, de fato é um microkernel que segundo o que li resolve boa parte dos problemas de desemepnho da arquitetura, não sei que ligação haveria, se é que haveria, com o FreeBSD. Falei bastante do Mach pois foi sua versão 3 que foi usada como base para o MacOSX. Seria legal ver alguns testes de desempenho pra ter noção de o quanto o L4 é mais rápido que o Mach. Sobre o teste de desempenho, deixei claro que ele é de 2003 e que não representa a realidade de hoje, aliás o próprio autor admite ter sido injusto com o OpenBSD por ter usado sua versão stable no teste. Foi apenas o retrato daquela época com aquelas versões de sistemas operacionais.
 
é verdade.

o autor está de parabéns pelo artigo, coisas de qualidade como esta é que nos ajuda a tornarmos cada vez mais inteligentes.

muito bom, nota 10.
 
Parabéns pelo post Fábio, esclareceu algumas coisas sobre o debate do Linus vs Tanembaum. Ainda não consegui ler na íntegra, mas mostra realmente (com suas palavras) que mesmo pessoas gabaritadas podem estar erradas quanto a conceitos consolidados. Imaginamos então isso nos dias de hj ... quais são os conceitos e o que está por vir.

Daniel Semblano
 
Olá, hoje mesmo fiz uma prova para a cadeira de Sistemas Operacionais, pena que não achei seu blog antes.

Está de parabéns.

Vi em um comentário uma citação que o MacOS X é melhor para ripar um DVD do que um Linux. Acredito que este fato dá-se pelo hardware da apple ser excelente com cálculos e pontos flutuantes, motivo também pelo qual é muito usado em edição de video e não pelo S.O. da apple.
 
Legal o seu artigo no ponto de lembrar da história da conversa entre os dois. Porém algumas observações:

- O GNU/Hurd já está operacional (veja o Debian GNU/Hurd).
- O Próprio Linus na próxima versão do kernel estará tentando fazer um pseudo-microkernel.

- O Conceido do micro-kernel é um conceito meio difícil de implementar, pois como você conseguirá um paginador de memória e um escalonador de processos se um precisa do outro? Por isso que no início o Linus optou por monolítico...

- O Minix nunca teve o intuito de ser portável e free (apesar que eu acho que ele devia ser GPL) pois sempre foi a idéia do Tanenbaum de ser simples e apenas para esino.

- Veja que quando o Tanenbaum disse em amarra o Linux à uma plataforma é besteira. Agora pense, por mais que o GNU/Linux rode mais em x386, o GNU/Linux está em várias arquiteturas, então foi "implementado" o que o Tanenbaum discute neste ponto...

Por último eu acho que os dois foram grandes contribuidores para a ciência dos Sistemas Operacionais. Cada qual com a sua maneira.

[s
 
O Minix já é GPL a muito tempo.

Inclusive mudaram o rumo do minix, em breve irá ter o lançamento do 3.0, para competir com Linux e BSDs.

http://groups-beta.google.com/group/comp.os.minix/browse_thread/thread/67b6452840766183/7b869e684aa7d3d5?lnk=raot#7b869e684aa7d3d5
 
Esqueci de incluir no comentáio anterior.

Segurança também é importante.

http://www.oreillynet.com/pub/a/network/2005/09/12/alan-cox.html
 
ftp://ftp.cs.vu.nl/pub/ast/asw/minix308f.iso.gz
 
Spacial: até onde sei o GNU/Hurd é ainda um sistema de testes, você não deve implantá-lo em uma solução para operar realmente, ainda é só um protótipo e não um sistema operacional de produção. O Minix tinha o intuíto de ser portátil sim, leia no debate entre Tanenbaum e Linus que essa é uma das características que ele (Tanenbaum) fez questão de implementar para permitir que seus estudantes o rodassem em qualquer máquina disponível, a portabilidade do Minix era um objetivo do projeto, até por isso ele não conseguia aproveitar os recursos específicos do 386, fato muito criticado pelo Linus em suas mensagens.

Anônimo: O Minix não é GPL. Seu código é aberto e pode ser modificado, mas seu sistema de licenciamento é proprietário. Seu dono, Tanenbaum, já disse e continua dizendo que o Minix não irá tornar-se um sistema de produção comercial, que continuará simples e básico para que seus alunos possam entendê-lo e estudar com ele. Assim mudar o rumo e criar um sistema que realmente possa ser um alternativa à Linux ou BSD é até possível, mas não poderia ser vendido comercialmente e poderia sofre limitações caso o próprio Tanenbaum quisesse impô-las.

Não podemos confundir Software de Código Fonte Aberto (OSS) e Software Livre (FS) são duas coisas distintas e que funcionam, principalmente no aspecto jurídico, de maneiras distintas.
 
4, Companies who want a small (real-time) modular, open source operating
system free of the GPL. MINIX is and will continue to be released
under the BSD license.


We are also looking for a name and a logo. Current OSes have penguins,
longhorns, tigers, daemons, and whatnot as symbols. Maybe we need an
animate symbol too.


My group is now working on a new and much improved MINIX 3. This is a
serious effort, with two experienced, professional programmers working
full time on it now, not to mention various students. The goal for the
first release is the end of October 2005. The main goals of MINIX 3
are to be small, reliable and secure. Numerous other improvements are in
the works including longer file names, bigger memories and disks, more
real-time friendly, better security, etc.


I see a serious 'market' for MINIX 3 in several areas, among them:

1. Education, as has always been the case. The book is being updated.

2. Low-end PCs. Various organizations are working on PCs that will
sell for under $100 in India and China and will be powered by
batteries recharged by a crank, solar cells, or other sources of
power where there is no electricity. An operating system for these
limited computers must be small, resource efficient, and reliable.

3. Embedded systems such as DVD players, digital cameras and camcorders,
TV sets, cell phones, and the like often have an operating system
with multiprogramming and a hierarchical file system. They often need
to be highly modular. Some are real time.

http://groups.google.com/group/comp.os.minix
 
Parabéns pela resenha, acabei de cair no blog via google.
Acho que todo mundo da área já leu o livro "Sistemas Operacionais - Projeto e Implemantação" do Tanenbaum e leu também a discussão do linux X Tanenbaum, mas sua argumentação está concisa e esclarecedora.
A comunidade agradece.
 
BEm, só para corrigir (ou não :P):

Na verdade, o SO com as maiores pretensões
de portabilidade sem perder desempenho é o
NetBSD. O kernel Linux chega bem perto mas não
o suficiente...
Mesmo agora que o Linux 2.6 está tomando fama,
ele não parece estar tão perto de ter um custo
portabilidade versus desempenho tão bom quanto
o NetBSD. OS dois empatam pelo menos, mas não
sou capaz de afirmar com segurança que o Linux
ganhe essa.

Bem, a idéia de microkernel versus monolítico é
mais uma escolha entre bom projeto e bom desempenho.
Não é a toa que nao ha sistema puramente microkernel
nem puramente monolítico nem puramente em camadas, mas
um misto deles todos. Por exemplo, até muito tempo
pipeline de instrucoes era "privilegio"de maquinas RISC,
mas nao ha arquitetura CISC que nao tenha implementado
alguma delas.

P.S.: Atualizando a coisa, agora o NetBSD tá em
ponto de bala, de acordo com aquele mesmo site.
OU seja, minha maquina esta com os tres ultimos avancos
em SO conhecidos (Slackware Lnux, FreeBSD, NetBSD) e a
maior velharia reescrita da historia (FreeDOS 1.0)!

BEm, é isso aí!
 
Postar um comentário

Links to this post:

Criar um link



<< Home

This page is powered by Blogger. Isn't yours?