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.


 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.

Comente com o Facebook:

Nenhum comentário:

Postar um comentário

Marcadores

A pior história sobre Linux que já ouvi (5) A.I (1) ambiente gráfico (15) AMD (13) analise (9) Andriod (8) artigo (5) benchmark (3) BSDs (16) btrfs (10) Caixa de Ferramentas do UNIX (19) canto do Diego Lins (2) certificações Linux (6) Código Fonte (50) comandos (16) comp (1) compressores (4) container (1) CPU (15) criptografia (2) crowdfunding (9) cursos (19) daemons (13) Debian (29) desenvolvimento (53) desktop (16) DevOps (1) DevSecOps (1) dic (1) Dica de leitura (48) dica DLins (2) dicas do Flávio (27) diocast (1) dioliunx (3) distribuições Linux (12) Docker (7) DragonflyBSD (10) ead Diolinux (2) edição de vídeo (4) EMMI Linux (4) emuladores (5) endless (5) English interview (2) Enless OS (2) entrevista (16) espaço aberto (83) evento (4) facebook (1) Fedora (4) filesystem (56) financiamento coletivo (2) fork (3) fox n forests (4) FreeBSD (11) Funtoo Linux (13) games (87) gerenciadores de pacotes (2) GOG (3) google (8) gpu (2) hardware (96) I.A (1) init system (7) Intel (14) IoT (1) ispconfig (1) jogos (33) kernel (114) lançamento (39) leis (1) LFCS (1) licenças (7) Linus (15) linus torvalds (1) Linux (188) linux foundation (3) linux para leigos (1) live (4) LPI (8) LTS (1) machine learning (1) meetup (1) mesa redonda (27) microsoft (3) microst (1) muito além do GNU (115) não viva de boatos (9) navegadores (2) NetBSD (3) novatec (17) o meu ambiente de trabalho (3) off-topic (12) open source (78) OpenBSD (3) OpenShift (1) os vários sabores de Linux (36) padrim (2) palestras e eventos (3) partições (6) pentest (6) processadores (23) professor Augusto Manzano (11) Programação (40) propagandas com Linux (8) Red Hat (13) redes (2) resenha nerd (4) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) runlevel (2) Secomp (1) segurança digital (13) servidores (1) shell (1) sistema operacional (18) Software livre e de código aberto (147) sorteio (3) Steam (8) Steam no Linux (6) supercomputadores (3) suse (3) systemd (7) terminal (73) toca do tux (1) toybox (14) tutorial (5) Tux (3) unboxing (7) UNIX (15) UNIX Toolbox (14) vartroy (1) vga (1) vulnerabilidade (3) wayland (2) whatsapp (1) Windows Subsystem for Linux (1) wine (12) WoT (1) ZFS (7)