Páginas

3 SISTEMAS OPERACIONAIS QUE NÃO SÃO ESCRITOS NA LINGUAGEM C

3 SISTEMAS OPERACIONAIS QUE NÃO SÃO ESCRITOS NA LINGUAGEM C
3 SISTEMAS OPERACIONAIS QUE NÃO SÃO ESCRITOS NA LINGUAGEM C

 Esse é mais um artigo que tive inspiração de escrever após o vídeo sobre Solaris e FreeBSD serem superiores a todos os sistemas operacionais... O primeiro artigo foi sobre recursos que somente Linux possui e em mais nenhum outro Unix (e nem a API POSIX). Já esse eu conto três sistemas operacionais que não são escritos em linguagem C. A linguagem C se torna quase padrão quando se trata do desenvolvimento de um sistema operacional, só que aqui mostramos que isso não é necessariamente uma ordem (ou pelo menos, grande parte de OS).

 MenuetOS é um sistema operacional de kernel monolítico pre-emptivo, real-time, multiprocessador e escrito inteiramente na linguagem assembly (vale duas ressalvas; a primeira que seus headers podem ser escritos em qualquer linguagem, a segunda é que o MenuetOS não é um Unix e nem segue a especificação POSIX).

 A ideia e vantagem em se trabalhar com uma linguagem de baixo nível eliminando camadas extras do sistema operacional. O resultado disso é um sistema operacional muito pequeno (uma imagem de apenas 1.4MB), extremamente rápido e evitando certos bugs.

 Trabalhar com desenvolvimento de baixo nível realmente proporciona melhor desempenho devido estar acesso diretamente ao hardware. O Ninja Build, que já tratei no canal e aqui no blog, é a exata prova disso; foi desenvolvido no Google para substituir o GNU make e acelerar o processo de compilação do port Google-Chrome para Linux. O Mantle da AMD e o Vulkan são outros grandes exemplos práticos de ganho de desempenho por trabalhar em baixo nível.

the horse turns aout a little basic but boy, can it run
o cavalo fica um pouco básico. Mas, cara, ele corre.

 O MenuetOS possui suporte a TPC/IP, suporte SMP para 32 CPUs diferentes, multithreading, ring-3 protection, driver gráfico, driver de áudio, biblioteca C, biblioteca de matemática e muito mais.  Conferindo os prints, podemos dizer que é um OS até bonito com bordas semi transparente.





 Não é de hoje que existe sistema operacional escrito em Assembly; o Unics (que depois recebeu o nome de Unix) foi escrito inicialmente em Assembly. Linus Torvalds desenvolveu seu emulador de terminal na linguagem Assembly para poder aprender sobre seu processador.

 O problema e  desvantagem de se escrever um sistema operacional em tal linguagem de baixo nível é que toda vez que utilizá-lo em um computador diferente (mesmo em uma sub arquitetura diferente), será necessário reescreve-lo totalmente do zero. Logo abaixo podemos conferir dois exemplos de "Hello World" em Assembly para dois computadores diferentes (o DEC PDP-8 e o DEC PDP-11).

 Foi aí que Ken Thompson teve a ideia de criar uma linguagem de programação para permitir o reaproveitamento do código entre os computadores diferentes bastando somente compilá-lo. Então Ken se baseou na linguagem BCPL para criar a linguagem B que, com a ajuda de Denis Ritchie, a amadureceram, a aprimoraram e veio a se tornar a linguagem C.

 O sistema operacional está sob licença própria definindo-o somente para uso acadêmico e, se caso quiser utilizar para fins comerciais, deve pedir autorização formal do projeto para isso. Já a versão de 32 bits (que está chegando ao seu fim) está sob GPL (fim da GPL mesmo).

 Há um fork  do MEnuetOS chamado KolibriOS que, honestamente, não entendi a real proposta do projeto.


 Redox é um sistema operacional Unix-like microkernel que não segue as normas POSIX e é escrito na linguagem Rust. Possui os sistemas de arquivos RedoxFS com implementações do TFS (inspirado no ZFS), suporte a compatibilidade de binários Linux, seu proprio XFS, servidor gráfico Orbital e etc...


 Está sob licença MIT como principal, GPLv2 para GNU Unifont, GPLv3 para os ícones Faba e Moka, Open Font License 1.1 para Fira font,  um numero de licenças free software e BSD para a Newlib C library (ou seja, nem tudo do RedoxOS é Rust) e BSD 2-clause para o NASM (e uma parte que não é mencionada em sua docmentação, GPLv2 para a sua parte de isoLinux que é outra parte que não é Rust).

 A ideia por trás do sistema operacional é a inovação tecnológica tendo suas inspirações no Plan9, no Minix, no Linux e nos BSDs. Na verdade suas motivações de coisas que não gosta nesses sistemas operacionais. O time tem como argumento que apesar que o Linux domina o mundo, Linux não é ideal para inovação... Os BSDs lideraram muitas a inovações nas ultimas duas décadas... com coisas como o Jails e o ZFS... Mas como seu kernel também é monolítico, cai no mesmo conceito. O Minix é bem dentro dos mesmos conceitos mas é escrito em C. Se bem que os argumentos apresentados não são tão reais o quanto alegam; confiram no vídeo abaixo que eu debato por que:

 Aqui será aplicado um video que irei gravar para debater o que é verdade ou não sobre o que a comunidade REdoxOS diz em seu Doc:


JX system

 É um sistema operacional microkernel que podemos dizer ser uma prova de conceito, para demonstrar que é possível um sistema operacional completamente em Java mantendo boa qualidade de desempenho. Completamente em partes pois seu microkernel é escrito em C e Assembly (ou Assembler) devido a rotinas de baixo nível que não podem ser fornecidas pela linguagem Java como system initialization após o boot, saving and restoring CPU state, low-level protection-domain management e monitoring.


 Inicialmente o projeto rodava sobre Linux e que depois passaram a portar as ferramentas do Linux para o metaXaOS.

 Em Benchmarks realizados, o JX atingiu entre 40% à100% do desempenho do Linux em file system e em torno de 80% no NFS (fora outros testes realizados).

Benchmarks realizados entre o JX e o Linux.
Benchmarks realizados entre o JX e o Linux.
 Possui licenças mistas como JX Ltd e GPLv2 e bom, se a ideia é ter um sistema operacional que rode Java, o Android já é uma prova disso (só que não por completo) além da Sun Microsystem já ter tido o JavaOS. Moral da história é que não se dá para ter um sistema operacional escrito em uma unica linguagem (nem mesmo os que apresentei são isentos disso). O Linux mesmo é escrito em linguagens diferentes como C, C++, Objective-C, Assembly e outras. O importante mesmo é saber aonde devidamente aplicar cada uma.

Linguagens que o kernel Linux é escrito.
Linguagens que o kernel Linux é escrito.


Nenhum comentário:

Postar um comentário

Viu algum erro e quer compartilhar seu conhecimento? então comente aí.

Observação: somente um membro deste blog pode postar um comentário.