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.
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.
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:
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).
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.
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. |
Linguagens que o kernel Linux é escrito. |
JavaOS da Sun
https://archive.org/details/insidejavaosoper00saul
https://archive.org/details/insidejavaosoper00saul
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.