私はileyの投稿が停止したという事実からこの投稿を書くよう促されましたが、habralumはまだ軸の投稿を望んでいました。 私はすぐに予約します、私自身勉強して小さな軸を書きますが、 私は勉強するので、一緒に前進します。 IA-32のプロテクトモードでのシステムの記述を検討します。
1)デザイン;
2)デバッグ。
3)グラフィックを操作します。
4)ディスクを操作します。
5)メモリ管理。
6)タスク管理。
需要がある場合は、何か他のものになるかもしれません。
I)デザイン。
しかし、根拠がないようにするために、デザインについての話から始めましょう。
1)それでは、軸を書くというアイデアから始めましょう。これはなぜですか? おそらくあなたはすでに答えを知っています-アーキテクチャの研究、プロセッサと周辺機器の動作の理解。 これは正しい。
2)次に-使用するカーネルの種類
コアのタイプと機能をリストしてみましょう。
1) モノリシック。
その名前はそれ自体を物語っています。1つの共通アドレス空間で巨大なコードが機能し、拡張するのは困難です。一部(機能、呼び出し方がわかりません)が落ちると、カーネル全体がドロップします。
2) モジュラー。
このタイプは、システムアーキテクチャの進化により発生しました。 ここで、機能はモジュールに分割され、各モジュールが独自の特別な機能を担います。 ただし、これらのモジュールはすべて単一のアドレス空間で再び機能するため、システム全体のセキュリティに影響します。 原則として、モジュラーコアはモノリシックのサブセットです。
3) マイクロカーネルまたはµコア。
ここでは、すべてがモジュラーコアとほぼ同じであり、異なるアドレススペースで実行されるのはサービス(モジュール)のみです。
正直なところ、最も現実的で原始的なものであるため、モジュラーカーネルを使用することをお勧めします。
さらに、開発者は自由に独自の概念を考え出し、それらを実装します。
次に、システムがモノタスクかマルチかを決定します。 私の意見では、モノタスクから始めて、それをさらに開発する方が良いと思います。
ブートローダーについて:有名なGRUBまたはLILOを使用する人もいますが、私の意見では、自分で作成する方が良いと考えています。 個人的に解析する例は、オープンソースプロジェクトの利点であるKOLIBRIのブートローダーです。 初心者のコーダーに最適なデバッガー(ノートブックと鉛筆)を用意し、シェルフのブートローダーを並べ替えます。
ファイルシステム :一般に、FATから始めて、他のファイルに移る方が良いでしょう。 自分で書くことに決めた人もいますが、それは良いことです。ディスクドライブのアーキテクチャと動作は非常に明確です。
次に、 サービスについて説明します (モジュラーコアを開始したため)。
以下を実装すると便利です。
1)ビデオサービス:印刷、標準画面機能。
2)ディスクサービス:THSからLBAへの転送からフラッシュドライブを使用した操作まで、ディスクに関するすべての操作を割り当てます。
3)メモリ管理サービス:ここでは名前は明確です。 これは実装と理論の中で最も難しい部分ですが。
4)タスク管理サービス:これも簡単なタスクではありませんが、引き続きアプローチします。
ここは、原則として、最初の一般的な概要です。 次のリリースまで!