Por que o Linux roda bem em tantos tipos diferentes de máquinas - desktops, laptops, servidores, dispositivos incorporados, telefones celulares, etc? É principalmente porque o sistema está aberto, então qualquer parte dele pode ser modificada para funcionar em diferentes ambientes? Ou existem outras propriedades do kernel e / ou sistema Linux que tornam mais fácil para este sistema operacional funcionar em uma ampla variedade de plataformas?
22
Respostas:
Embora a abertura seja certamente parte disso, acho que o principal fator é a insistência contínua de Linus Torvald de que todo o trabalho, de grande a pequeno, tenha um lugar no kernel Linux principal, desde que seja bem feito. Se ele tivesse decidido, em algum momento, traçar uma linha e dizer "ok, para esse sofisticado hardware de supercomputador, precisamos de uma bifurcação", então as variantes high-end e small-system completamente separadas podem ter se desenvolvido. Como é, as pessoas fizeram o trabalho mais difícil de fazer com que tudo acontecesse em conjunto relativamente bem.
E kludges que permitem um lado das coisas em detrimento do outro geralmente não são permitidos - novamente, forçando as pessoas a resolverem os problemas de uma maneira mais difícil, mas mais correta, o que geralmente é mais fácil de avançar. uma vez que seja necessário, o kludge se torna uma nota de rodapé histórica.
De uma entrevista há vários anos :
fonte
O Linux é escalável para muitos tipos diferentes de hardware, porque:
fonte
fork
seja possível efork
não possa ser feito razoavelmente eficientemente em um sistema de memória não virtual. Embora as portas indicadas provavelmente usem partes do kernel Linux e possam executar algum software Linux, na maioria das vezes parece que as APIs expostas por essas portas são diferentes dos kernels Linux típicos. (Exemplo: o mapeamento de memória - que, obviamente, requer a memória virtual)O kernel do Linux é bem dimensionado porque é isso que é. O núcleo do kernel é relativamente pequeno e faz o que precisa fazer. Os drivers de dispositivo são opcionais e podem ser deixados de fora do kernel para sistemas menores. Além dos requisitos mínimos do kernel, a maioria das funcionalidades é implementada como recursos opcionais.
Dê uma olhada no arquivo de configuração instalado ao lado da maioria dos kernels. Ele listará todos os recursos que foram ativados, bem como quais drivers são suportados.
Os drivers são suportados, incorporados no kernel ou como módulos carregáveis. Isso permite que um kernel seja configurado dinamicamente para o hardware em que está sendo executado. Essa é a abordagem usada por muitas distribuições.
Além de ter as ferramentas de compilação, modificar o kernel para um novo hardware é relativamente simples. Para um novo processador, apenas o código relacionado precisa ser implementado como modificações na funcionalidade existente. Novos dispositivos requerem apenas um novo driver com os ganchos relevantes. Novos sistemas de arquivos também são modificações relativamente triviais.
A base de código foi bem mantida para manter essa flexibilidade sem bifurcação externa. A compilação condicional conduz um kernel muito flexível que foi mantido o mínimo possível.
fonte
Não tenho o conhecimento técnico detalhado para fazer o backup dessa resposta, mas minha experiência sugere que o Linux se adapta bem em comparação com outros sistemas operacionais que eu frequentemente uso (principalmente o Windows). Portanto, talvez a questão seja por que o Windows não se adapta tão bem quanto o Linux.
Se ainda for útil reafirmar a questão dessa maneira, sugiro que as forças do mercado motivem a Microsoft a adicionar recursos e funcionalidades voltados para o hardware mais recente e mais capaz, porque eles vendem mais cópias do sistema operacional principalmente quando os usuários finais compram novos sistemas. . Portanto, a qualquer momento, acho que a versão mais recente do Windows apresenta um desempenho ruim em hardware mais antigo e menos capaz.
Perdoe-me se isso simplificar demais sua pergunta.
fonte