23 pontos por kuroneko 2023-08-31 | 10 comentários | Compartilhar no WhatsApp
  • Uma tentativa de criar um SO não-Unix usando Rust.
  • No momento, ele já oferece saída gráfica, alocação dinâmica, execução concorrente e suporte a teclado/mouse.
  • Um ponto incomum é que ele foi projetado para que todos os apps possam funcionar como uma única função.
    • Como os apps são executados recebendo um Context que inclui as funcionalidades do SO, toda a interação acontece por meio desse Context.
    • Com isso, sandboxing e depuração ficam muito fáceis, e como a persistência de memória também é feita via Context, reinicialização e suspensão se tornam simples.
  • O design dos apps ainda não está completo, então ainda há problemas, como todos os apps conseguirem ver a memória uns dos outros.
  • Suporte a armazenamento persistente, GPU e rede ainda precisa ser implementado.

10 comentários

 
honglu 2023-08-31

O conceito é bem sexy. O mundo inteiro é Rust... kkkkk

 
botplaysdice 2023-08-31

"Apps conseguem ver a memória umas das outras"... :)

 
ahwjdekf 2023-08-31

Sim, isso é muito engraçado

 
xguru 2023-08-31

VirGL - GPU 3D virtual utilizável dentro de uma VM QEMU

Como oferece suporte ao VirGL, é possível instalar e testar no QEMU.

 
kuroneko 2023-08-31

Um futuro em que programas em Rust rodam em um OS feito em Rust...? O mundo inteiro é Rust agora.

 
heycalmdown 2023-08-31

Seria ótimo se, quando houvesse uma thread do HN nos comentários, o neo a resumisse automaticamente kkk, não dá mais pra viver sem o neo

 
kuroneko 2023-08-31

Da próxima vez, vou tentar trazer também um resumo por IA. Curiosamente, parece que ela faz um resumo por argumento de cada pessoa.

  • danhau: levanta a dúvida se o escalonamento cooperativo realmente deve falhar como outras pessoas afirmam, e se preocupa com o fato de que os apps já cooperam. Também teme que ataques de negação de serviço possam derrubar facilmente esse tipo de sistema.
  • aseipp: concorda com danhau e diz que o escalonamento cooperativo pode fazer com que erros simples se tornem fatais para o sistema, o que pode ser problemático para executar programas arbitrários.
  • gnulinux: sugere que não é tudo ou nada, e diz que pode haver maneiras de permitir apps cooperativos sem que loops infinitos travem o sistema. Por exemplo, poderia haver timeouts ou detecção de loops.
  • DSMan195276: argumenta que não é tudo ou nada porque programas cooperativos assumem que não serão preemptados. Diz ainda que, mesmo com um nível menor de preempção, a forma de escrever programas teria de mudar.
  • getpokedagain: diz que nem todo sistema operacional precisa executar apps multiusuário imprevisíveis, e que em sistemas mais restritos, como dispositivos embarcados ou consoles de videogame, o modelo cooperativo pode funcionar.
  • Symmetry: afirma que CPUs modernas têm várias threads, então, se o SO puder continuar funcionando enquanto monitora o uso excessivo de algumas threads, o modelo do Fomos pode funcionar sem parar completamente.
  • cmrdporcupine: menciona que casos de uso especializados podem se beneficiar de um modelo que atribui trabalho diretamente a núcleos livres, mas a complexidade de lidar com concorrência talvez não seja muito mais simples do que implementar time-slicing.
  • JoeAltmaier: observa que um loop while(true) em uma thread pode não afetar outras threads, mas que o aumento de bateria/temperatura ainda mostra um problema de recursos que precisa ser gerenciado.
  • keyle: demonstra entusiasmo com este projeto e com a abordagem minimalista, e espera mais desenvolvimento, como um sistema de arquivos que atenda ao requisito tradicional de rodar DOOM.
  • mepian: esclarece que métodos de Smalltalk são chamados entre objetos, e não funções independentes, e explica que alguns sistemas operacionais Lisp iniciais também usavam funções antes dos sistemas de objetos.
 
xguru 2023-08-31

Felizmente? o Neo acabou cuidando do mesmo texto hehe

Fomos: um sistema operacional experimental desenvolvido em Rust

 
xguru 2023-08-31

O problema é que eu também estava resumindo enquanto via aquele link, aff

Podem ver e comparar nada menos que 3 versões de resumo haha

  • Eu queria tentar criar um OS não-Unix
  • O Exo-Kernel é interessante, mas em sua maior parte fica só na teoria, então isso ajuda a entender esse padrão
  • Funcionalidades
    • saída gráfica, alocação dinâmica, todos os apps rodam em um loop assíncrono
    • mouse/teclado Virtio (os drivers também são tarefas assíncronas)
    • escalonamento cooperativo (os apps cedem o controle sempre que possível)
    • depois do boot não há troca de contexto
    • suporte quase completo ao Virgl™
  • Pontos únicos
    • assinatura do app pub extern "C" fn _start(ctx: &mut Context) -> i32
    • os apps não precisam da biblioteca padrão, e todas as funções do OS são passadas ao app por meio de Context
    • no Fomos, um app é simplesmente uma única function. Essa é a parte mais importante. Os executáveis de sistemas Unix/Windows são muito complexos em comparação com uma função.
 
roxie 2023-09-04

Não existe thumbs down, então como seu karma ficou negativo?