自分のオペレーティング システム カーネルのプログラミングについて学び始めるには、いくつかの指示が必要です。
教育目的のためだけに。
独自のカーネルを作成するにはどうすればよいですか?
自分のオペレーティング システム カーネルのプログラミングについて学び始めるには、いくつかの指示が必要です。
教育目的のためだけに。
独自のカーネルを作成するにはどうすればよいですか?
最初に質問したいのですが、なぜ「カーネルを書く」ことを選んだのですか? 「私が書いたスケジューラによってスワップされるメモリに独自のタスク構造を実装し、私が書いたコードによって管理され、マシンレベルのアトミック命令の抽象化によって保護され、与えられたメモリを使用するというアイデア以外の答えはありません。 /O 実際のハードウェア インターフェイスの上にある抽象化を介したアクセスは、私にとって魅力的です」はおそらく、まったく調査を行っておらず、時間を無駄にしていることを示す悪い答えです。
上記と同じように答えた場合は、良い出発点があり、調査する必要があることを知っています (つまり、知らないが調べる必要がある情報をある程度特定することができます)。
いずれにせよ、この質問をする価値はないと思います。ある場合には、実際にこれを行うことができるかどうかを調べるために独自の調査を行っていない場合もあれば、過度に広範な質問をした場合もあります。
OS/161はハーバード大学の教育目的の簡易オペレーティング システムです。OS はシミュレーター上で実行されるため、新しいマシンを実行する必要はありません。オペレーティング システムのコースで使用しましたが、非常に役に立ちました。
また、オペレーティング システムのコースをまだ受講していない場合は、受講することを検討してみてください。
それほど難しいことではありませんが、適切なリソース管理と低レベルのデバイス I/O について学ぶ必要があります。市販の x86 ボックスを対象としている場合は、BIOS の仕組みとディスクの構造について学ぶ必要があります。たとえば、BIOS はディスクの最初のブロックをメモリの固定アドレスに読み込み、そのアドレスにジャンプします。カーネルを格納するには 1 つのブロックに十分なスペースがない可能性があるため、カーネルをディスクから読み取ってロードするブートローダーを作成する必要があります。
いくつかの単純なマルチタスクを実行し、BIOS だけを使用して I/O を実行する最小限のカーネルを作成することはそれほど難しくありません。read()
単純なファイル システムを実装しwrite()
て作業を開始するのに忙しいでしょう。