Linuxカーネルは、読むことをお勧めするコードベースとしてリストされていることが多く、コメントが不十分である(または私が調べたファイルがすべてそうである)場合でも、非常に優れたコードが含まれています。
さて、Linuxカーネルは別として、システムプログラミングやオペレーティングシステムに興味のある人に、他にどのオペレーティングシステムカーネルを研究することをお勧めしますか? なぜ?コードベースの何が素晴らしいのですか? Linuxカーネルが採用したものとは非常に異なるアプローチを示しますか?彼らは興味深い技術を使用していますか?他に何か…?
カーネルがオープンソースライセンスの下にあることは、多かれ少なかれ必要です。
優れたカーネルは MINIX Tanenbaumの本で深く説明されています(ペーパーバックにあります): オペレーティングシステムの設計と実装 。
... Minuxの作成者によって作成されたプロのプログラマーは、今日利用できる最新のチュートリアルとリファレンスを入手できます。
MINIXの最新バージョン(MINIX 3)に対処するために改訂されたこの合理化された簡略化された新版は、関連する原則を最初に説明し、次にUnixライクなオペレーティングシステムを使用して詳細な例としてアプリケーションを示す唯一のオペレーティングシステムテキストです。特に、高い信頼性、組み込みシステムでの使用、および教育の容易さのために設計されています...
Microsoft Researchの特異点 。オペレーティングシステムを設計するための非常に異なるアプローチ。最新のプログラミング言語、型システム、ツール、静的分析、コンパイラー、およびプログラム検証の進歩に基づいています。実際、チームの大多数は、Microsoft Researchのオペレーティングシステム部門の出身ではなく、言語、ツール、検証、コンパイラの人々でした。
基本的な考え方は、静的型付けと分析により、CPUのMMUよりもはるかに強力なプロセス分離の保証が得られるということです。Andランタイムではなくコンパイル時にこれらの保証を与えることができます。つまり、プロセスははるかに軽量です。実際、すべてのデバイスドライバーは十分に軽量です。 、すべてのファイルシステム、アプリケーションのすべてのサブコンポーネントは、独自の分離されたガベージコレクションで実行でき、オーバーヘッドは実質的にゼロです(コンテキストスイッチは、ほとんどの場合、一連のポインタをフリップするだけです。そのうちの1つは、コンパイル時にすでに実行されています。)
Singularityのアイデアは、MSR以外のいくつかのオペレーティングシステムにも採用されています:Midori(Singularityの商用実装であり、Windows NTの後継となる可能性があると噂されています)およびHelios(すべてのデバイスドライバー、OSハードウェアに依存しない言語で記述されたサービスとプログラム。それをマルチカーネルアプローチに適用します。OSのさまざまな部分が、さまざまなISAを持つさまざまなCPUで実行されます)。
Inferno -アイデアの多くが遅かれ早かれLinux/Unixに「バックポート」されるため、チェックアウトする価値があります。これはベル研究所による実験的なオペレーティングシステムであり、 Plan9 での作業の継続です。
Infernoの最も興味深い機能は、ネットワークリソースをアプリケーションに対して完全に透過的にする方法です。
透過的なリソース
Infernoは、シンプルだが強力な「名前空間」システムを使用して、リソースとデータの完全な透過性を提供します。リソースをファイルとして表し、1つの標準通信プロトコル(9P(Styx®))を使用することで、データストア、サービス、外部デバイスなどのリソースをInfernoシステム間で簡単に共有できます。リソースインターフェースはローカルシステムにインポートされ、ローカルかリモートかを知らなくても、または知る必要もなく、アプリケーションで使用できます。
オベロン。書籍は Oberonシステム:ユーザーガイドおよびプログラマーズマニュアル および Project Oberon:オペレーティングシステムおよびコンパイラの設計
Oberonは、大きなワークステーションオペレーティングシステムは大きなものである必要はないという主張の存在証明です。 Unixがロードするだけで数メガバイトを必要とした(かつ初期のLinuxディストリビューションの1つは8メガバイト未満ではロードできなかった)時代に、Oberonは約300キロバイトのメモリフットプリントを備えた完全なワークステーションオペレーティングシステムを提供しました。