2

コース外のプロジェクトとして、私は現在、実際の OS のすべての側面をよりよく理解するためにカーネルを開発しています。ここまでで、ページングと基本的な割り込み (次はキーボード、おそらくトラックパッド/マウス) をサポートするフラットな物理メモリ モデルのセットアップが完了しました。ファイルシステムを実装することが前進だと思っていたので、ext2 に関心があります。私はSOでも周りを見回しましたが、私の質問に答える明確なものは何もありません:

  1. C で ext2 ファイルシステムにアクセスするドライバを作成することは可能ですか?
  2. USB デバイスからファイルシステムにアクセスする場合は、最初に USB 用のデバイス ドライバーを実行する必要があると想定しています。これに関するヘルプは大歓迎です。
  3. ファイルシステムを検出するためのコードが MINIX やその他のカーネルで既に利用可能であることは知っていますが、本当に知りたいのは、単純ではあるがカスタムのファイルシステムを構築したい場合、どうすればよいのでしょうか? 私もその可能性を考えています。

質問と詳細が少し無知に聞こえる場合は申し訳ありませんが、私はまだ学習過程にあります.

ありがとう :)

4

1 に答える 1

1

いくつかのヒント/ヒントを提供しようとします-明確な答えはそれほど単純ではありません:

  1. Cで書かれたext2ファイルシステムは単なるCです.Cは単なるプログラミング言語です-C++、プレーンアセンブリ、またはその他のいくつかを使用できます(いくつかのOSはDを使用します)-しかし、「管理された」言語などではありません。この言語をしっかりと理解していることが重要です。私の意見では、アセンブリは必須です (オペレーティング システムのスケジューラを見てください -> プレーン アセンブリ)

  2. 本当に USB ドライバを書きますか? 「単なる」単純な USB ドライバー (抽象化レイヤー) ではありません。なぜフロッピー ディスクや CD ドライバーではなく、USB ドライバーなのですか (信じてください - 32 ビット プロテクト モードのフロッピー ドライバーはそれほど難しくありません)。

  3. プロジェクトに集中してください。もちろん、Linux (初期バージョン) と Minix にはサンプル コードがありますが、設計構造 (モノリシック/マイクロカーネルまたはハイブリッド カーネル) に注意してください。混合せずに、独自のコードを記述してください。

次々と足を運んでください。あなたは基本的な IRQ 処理を書きました。計画はキーボード/マウス ドライバを書くことです - キーボード ドライバを書きます! ファイルを読み込んで実行するなんて夢にも思わないでください (Rom は 1 日で構築されたわけではありません)。

Intel のマニュアルやその他の「本」などのドキュメントを読む必要があります。非常に人気のあるフォーラムは osdev.org です - wiki を見てください。twalberg が言ったように、これは非常に巨大なモジュールです。オペレーティング システムの主要部分に集中してください。

これがあなたの質問に対する答えではないことはわかっていますが、間違った方向に進んで派手な UI やこのようなものを夢見てはいけません ;)

osdev.org フォーラム
osdev.org wiki
Intel マニュアル

そして、私の本棚にある他のいくつかの本をここで見つけることができます (Tanenbaum、Peter Galvin との Silberschatz - 素晴らしい本!):

書籍

于 2013-02-19T21:48:47.940 に答える