授業で自分のオペレーティングシステムを作成するプロジェクトがあります。それについていろいろ考えましたが、今はすべて混乱しているように見えます

授業で自分のオペレーティングシステムを作成するプロジェクトがあります。それについていろいろ考えましたが、今はすべて混乱しているように見えます

オペレーティング システムの作成を検討しており、どこから作成を開始すればよいかについては、あなたのアドバイスに頼っています。

答え1

マジですか?ファンメイドのオペレーティングシステムはたくさんありますが、重くて大変な作業です!

まず、オペレーティング システムには少なくとも次のものが必要です。

  1. ブートローダ: カーネルをRAMにプッシュし、TLBを準備し、いくつかのハウスキーピングを行う

  2. カーネル: カーネルはオペレーティング システムの最も重要な部分であり、プログラム間の物理/仮想メモリ マッピング、マルチタスク、I/O スケジューリング、IPC、ミューテックスなどの重要な側面を管理します。OS に応じて、いくつかの哲学があります (Linux アーキテクチャのようなモノリシック、OS X アーキテクチャのようなハイブリッド、未完成の Hurd のようなマイクロカーネル)。OS に応じて、システムの個々の側面を管理するのはカーネル コードまたはユーザー コードです。

  3. ユーザーランド アプリケーションは、ユーザーにマシンとの何らかの対話を提供します。

GNU/Linux と BSD の世界には、次のようなものがいくつかあります。

ブートローダー: GRUB2、GRUB、LILO、ISOLINUX...

カーネル: Linux、kFreeBSD...

ユーザーランド アプリ: GNU [または] BSD Coreutils、Bash、Xorg、その他数え切れ​​ないほど :)

とにかく、それがあなたの質問であれば、ここに答えがあります。さらに詳しい情報については、次のウィキに、各側面での設計上の決定について頭を悩ませ始める方法に関する多くの情報があります。http://wiki.osdev.org/メインページ

ブートローダの動作方法、stdio.h などのコモディティを使用せずにベアメタルでプログラムする方法など、非常に多くの有用な情報があります。

関連情報