マエストロのスクリーンショット
Rustは十分な人気を得ています これは、Linux だけでなく、他のオペレーティング システムにも第 2 言語として統合される言語の 1 つとなっています。Android の場合は、コードの一部が既に Rust に組み込まれており、Windows も同様です。などが承認を与えている。
Rust 堅牢な言語であることが証明されており、そのような信頼を生み出しています 一部のオペレーティング システムはこのプログラミング言語を使用して作成されており、いくつか挙げると次のとおりです。 レドックス、 次のようなゼロから書かれたカーネルもあります。 ケーララ またはで使用されるカーネル 中国が最近打ち上げた人工衛星.
このことについて言及する理由は、最近、気になるニュースを見つけたからです。 Rustで書かれたカーネルを開発するプロジェクトが発表されました Linux と部分的に互換性があります。
このプロジェクトの名前は "教師" そして前述したように、 Linux カーネルからのシステム コールのサブセットを実装する Rust で書かれた Unix 風のカーネルです 標準的な作業環境を作成するには十分です。このように、開発者はこのプロジェクトが 2018 年に誕生したと述べているため、「Maestro」プロジェクトは新しいものではありませんが、当時は C で書かれており、Rust の利点と特性が異なるため、プロジェクトは XNUMX 年に書き直されました。ゼロ。
プロジェクトページでは 変更の理由は次のように説明されています。
その瞬間、私は Rust (この言語での最初のプロジェクト) に切り替えることにしました。これにはいくつかの利点がありました。
- 以前の失敗から学んだ教訓を活用して、プロジェクトを最初からやり直します。
- C で Linux のようなカーネルを書くよりも、もう少し革新的になってください。結局のところ、その時点では Linux を使用するだけです。
- Rust 言語のセキュリティを使用して、カーネル プログラミングのいくつかの問題を利用します。 Rust ライティング システムを使用すると、メモリの安全性に対する責任の一部をプログラマからコンパイラに移すことができます。
カーネル開発では、次のような理由からデバッグが非常に困難です。
- 多くの場合、ドキュメントを見つけるのは難しく、BIOS の実装にはバグがある可能性があります (思っているよりも頻繁に発生します)。
- 起動時に、カーネルはメモリに完全にアクセスできるため、書き込むべきではない場所 (独自のコードなど) に書き込むことができます。
- メモリ リークのトラブルシューティングは簡単ではありません。 valgrind などのツールは使用できません。
- gdb は QEMU および VMWare で使用できますが、別のエミュレータまたは仮想マシンで実行するとカーネルの動作が異なる場合があります。また、これらのエミュレータは gdb (VirtualBox など) をサポートしていない可能性があります。
- QEMU または VMWare の gdb サポートに一部の機能が欠けており、gdb がクラッシュすることもあります
に関して プロジェクトの特徴として、カーネルがモノリシックであることが際立っています。 現在、86 ビット モードの x32 システムでのみサポートされています。カーネル コード ベースは約 49 行をカバーしており、実際のハードウェアと QEMU や VirtualBox などの仮想化環境の両方で実行可能です。
現在の「マエストロ」の開発では、 31% が実装済み (135/437) Linux システムコールの数。 これは Bash と Musl 標準 C ライブラリに基づくコンソール環境をロードするのに十分です。 さらに、Maestro ベースの環境では、GNU coreutils スイートからのいくつかのユーティリティと、任意の Unix システムからの基本パッケージを実行できます。現在、ネットワーク スタックの実装に向けた作業が行われており、また、ネットワーク スタックの開発にも取り組んでいます。
間で Maestro で利用できる機能が際立っています 次の::
- テキスト モードと ANSI シーケンスの部分的なサポートを備えた PS/2 キーボードおよび端末用のコントローラ。
- 仮想メモリをサポートするメモリ割り当てシステム。
- POSIX シグナルをサポートするラウンドロビン アルゴリズムに基づくタスク スケジューラ。
- PCI デバイスの定義。
- IDE/PATA コントローラー。
- Ext2 ファイルシステム。
- /tmp および /proc 仮想ファイル システムのサポート。
- FS、MBR、および GPT ディスク パーティションをマウントする機能。
- initramfs のサポート。
- タイマーと正確な時間を実現する RTC コントローラー。
- カーネルモジュールのロードのサポート。
- ELF 形式の実行可能ファイルを実行する機能。
のために プロジェクトについてもう少し詳しく知りたい、詳細を確認できます 次のリンクで。 プロジェクト コードに興味がある人は、それが次のようなものであることを知っておく必要があります。 MIT ライセンスで配布されています。