23 ポイント 投稿者 kuroneko 2023-08-31 | 10件のコメント | WhatsAppで共有
  • Rustを使ってNon-Unix OSを作ってみる試み。
  • 現在はグラフィックス出力、動的割り当て、並行実行、キーボード/マウスをサポートしている状態。
  • 特徴的なのは、すべてのアプリが単一の関数として動作できるように設計されていること。
    • OS機能を含んだContextを受け取ってアプリが実行されるため、すべての相互作用はContextを通じて行われる。
    • これにより、サンドボックス化やデバッグなどが非常に容易で、メモリの維持もContextを通じて行うため、再起動やスリープが容易。
  • まだアプリに関する設計が完全ではなく、すべてのアプリが互いのメモリを見られるなどの問題が残っている。
  • 永続ストレージ、GPU、ネットワーク対応などはまだ実装が必要な項目。

10件のコメント

 
honglu 2023-08-31

コンセプトはセクシーですね。世界中がRustだ…(笑)

 
botplaysdice 2023-08-31

「アプリがお互いのメモリを見ることができる」... :)

 
ahwjdekf 2023-08-31

ええ、とても面白いですね

 
xguru 2023-08-31

VirGL - QEMU VM内で使用できる Virtual 3D GPU

VirGLをサポートしているため、QEMUにインストールしてテストできます。

 
kuroneko 2023-08-31

Rust OSでRustプログラムを実行する未来……? 世界中がRustですね。

 
heycalmdown 2023-08-31

コメントにHNスレッドがあれば、neoが自動で要約してくれるといいですね(笑)。もうneoなしでは生きられない

 
kuroneko 2023-08-31

今後はAI要約も一緒に持ってきてみます。少し変わっていて、人が行った主張ごとに要約してくれるようですね。

  • danhau: 他の人たちが主張するように、協調スケジューリングは失敗すると予想されるのではないかと疑問を呈し、すでにアプリ同士が協調している点を懸念しています。DoS攻撃によってこのようなシステムが簡単に停止させられることを危惧しています。
  • aseipp: danhauに同意し、協調スケジューリングは単純なミスをシステムにとって致命的なものにし得るため、任意のプログラム実行には問題があり得ると述べています。
  • gnulinux: 何もかもがそうだというわけではないとし、協調アプリを許可しつつも、無限ループによってシステムが停止するのを防ぐ方法があり得ると述べています。たとえばタイムアウトやループ検出などが考えられるとのことです。
  • DSMan195276: 協調プログラムはプリエンプトされないことを前提としているため、実際には何もかもがそうではないと主張しています。たとえプリエンプションの水準が下がるだけでも、プログラムの書き方を変える必要があると述べています。
  • getpokedagain: すべてのOSが予測不能なマルチユーザーアプリを実行する必要はなく、組み込み機器やゲーム機のような制約のあるシステムでは協調モデルが機能し得ると述べています。
  • Symmetry: 現代のCPUは複数のスレッドを備えているため、OSが一部スレッドの過度な使用を確認しながら復帰できるのであれば、Fomosのモデルは完全停止せずに動作し得ると述べています。
  • cmrdporcupine: 特殊なユースケースでは、空いているコアに直接処理を割り当てるモデルを使える利点がある一方で、並行性処理の複雑さはタイムスライシングを実装する場合と比べて大幅には単純化されない可能性があると述べています。
  • JoeAltmaier: あるスレッド内の while(true) ループが他のスレッドに影響しないかもしれない一方で、バッテリー消費や発熱は依然として管理が必要なリソース問題であることを示しています。
  • keyle: このプロジェクトとミニマリスト的なアプローチに熱狂しており、DOOMを動かすという伝統的な要件を満たすファイルシステムのような、さらなる開発に期待しています。
  • mepian: Smalltalkのメソッドは独立した関数ではなくオブジェクト間で呼び出されることを明確にし、一部の初期のLisp OSもオブジェクトシステム以前には関数を使っていたと説明しています。
 
xguru 2023-08-31

幸い?にも同じ記事はNeoが処理しましたね(笑)

Fomos: Rustで構築された実験用オペレーティングシステム

 
xguru 2023-08-31

問題は、私もそのリンクを見ながら一緒に要約していたことです(泣)

なんと3種類の要約版を見比べられます(笑)

  • Non-Unix OS を作ってみたかった
  • Exo-Kernel は興味深いものの、その大半は理論にとどまっており、このパターンを理解する助けになる
  • 機能
    • グラフィック出力、動的割り当て、すべてのアプリが非同期ループで実行
    • Virtio マウス/キーボード(ドライバも非同期タスク)
    • 協調スケジューリング(アプリができるだけ制御を明け渡す)
    • 起動後はコンテキストスイッチなし
    • Virgl™ をほぼサポート
  • ユニークな点
    • アプリのシグネチャ pub extern "C" fn _start(ctx: &mut Context) -> i32
    • アプリには標準ライブラリが不要で、すべての OS 機能は Context を通じてアプリに渡される
    • Fomos ではアプリは単なる1つの function。これが最大のポイント。Unix/Windows OS の実行ファイルは、関数に比べるとはるかに複雑です。
 
roxie 2023-09-04

thumbs down がないのに、どうしてカルマがマイナスになったんですか?