オペレーティングシステムが舞台裏でどのように機能するかを本当に理解したいと思います。しかし、そこにあるほとんどのオープンソースOSのカーネルは、フルタイムのプログラマーが学習するのであっても、学習目的には複雑すぎると思います。学習目的のためだけに作られた「シンプルな」OSはありますか?
オペレーティングシステムが舞台裏でどのように機能するかを本当に理解したいと思います。しかし、そこにあるほとんどのオープンソースOSのカーネルは、フルタイムのプログラマーが学習するのであっても、学習目的には複雑すぎると思います。学習目的のためだけに作られた「シンプルな」OSはありますか?
回答:
Andrew TanenbaumのMinix(「オペレーティングシステムの設計と実装」を参照)は、まさにこのような目的のためのものです。もう1つの(かなり古い)可能性は、Unix V6(完全なUnixですが、まだ簡単に学習できるほど十分に古い十分なバージョン)をカバーするLion's Bookを読むことです。後者の明らかな欠点は、使用するCがかなり時代遅れであるため、かなり経験豊富なCプログラマーでさえ、読みにくい部分を見つける可能性があり、コードを消化する最新のコンパイラーを計画できないことです。
MITのOSコースで使用される最新のUnix-a-like、Xv6オペレーティングシステムを検討する必要があります。同様に、いくつかの教材が関連付けられているようです。
BochsとQemu x86エミュレーターの両方で実行されます。その部分をやった。楽しかった。
Minixは素晴らしい選択肢であり、他の回答の1つで説明されています。
新u
XINU-XINU Is Not Unixも検討してください。
また、逆スペルのUNIXです。
ダグラス・コーマーの著書で、よく書かれていて、説明がよく、範囲が広いと思ったものがあります。
Embedded Xinuと、Xinuでのティーチングに関するWebサイトがあります。
http://xinu.mscs.mu.edu/Teaching_With_Xinu
FreeRTOS
最近多くの愛を集めているもう1つの小さなOSは、FreeRTOSです。ほとんどすべてで実行されます。火星から来て、それが実行されないプロセッサまたは評価ボードを持っている場合、約10ページのドキュメントを読み、割り込み、タイマー、およびUARTに関連する約5つのファイルを変更して実行できます。
彼らは、31のアーキテクチャと18のツールチェーンをサポートしていると主張しています。2009年後半の私の経験は素晴らしかったし、それ以来ずっと改善されたと聞いています。
その他のリンク
あなたに役立つ情報があるかもしれない同様の質問はここにあります:
/programming/254149/how-do-you-write-a-basic-operating-system
Linuxや他の多くのオペレーティングシステムの設計はUNIXの影響を受けているため、元のデザイナー(Kernigan、Richie、Thompsonなど)が有益であり、ソースから設計のアイデアを得るこのビデオ。
http://techchannel.att.com/play-video.cfm/2012/2/22/AT&T-Archives-The-UNIX-System
古典的な、しかししばしば改訂されるオペレーティングシステムのテキストブックがあります。
Silberschatz、Galvin、Gagne:オペレーティングシステムのコンセプト、第7版
新しいエディションもあります。書籍販売業者を通じて書籍にリンクすることはめったにありませんが、プレビューは非常に寛大なので、オペレーティングシステムの詳細については、以下をご覧ください。
http://www.amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/0470128720
私の大学では、NachOSを学びました。それは学習のための素晴らしいオープンソースOSです。また、学習のためにNachOSで多くの大学の演習を見つけることができます。
Nachosは、学部生および潜在的に卒業生のレベルのオペレーティングシステムコースを教えるための教育ソフトウェアです。Nachosディストリビューションには次のものが含まれます。
- 概要ペーパー
- 動作中のオペレーティングシステムのシンプルなベースラインコード
- 一般的なパソコン/ワークステーションのサンプル割り当て用のシミュレーター
- C ++入門書(NachosはC ++の学習しやすいサブセットで書かれており、この入門書はCプログラマーにサブセットを教えるのに役立ちます)
割り当ては、スレッドと同時実行、マルチプログラミング、システムコール、仮想メモリ、ソフトウェアロードTLB、ファイルシステム、ネットワークプロトコル、リモートプロシージャコール、分散システムなど、最新のオペレーティングシステムのすべての領域を示し、調査します。
.NETテクノロジファミリに興味がある場合は、Singularityを確認できます。2008年以降は更新されていませんが、ここからCodePlexからソースおよびISO形式でダウンロードできます。