自分でOSを1から作ってみる Advent Calendar 2024の1日目です。
そもそもOSって何?
まあこの記事を読むような人にOSが何か知らない人はいないような気もしますが一応。
OSはオペレーションシステムの略でデバイスの基本的な機能を提供するソフトフェアです。我々が使っているwebブラウザなどのアプリケーションはすべてOSがあるからこそ動いているのです。OSの基本的な機能としてはメモリ管理、プロセス管理、キーボードやマウス、ディスプレイ、プリンタなどの入出力デバイスとアプリケーション間のやり取りの調整、UIの調整などがあります。
OSといえばwindowsやMac、Linuxなどが思い浮かぶ人が多いと思いますが、実は他にもOSはたくさんあって、自分で作ることもできます。
今回作成するOSについて
実はPCにはマザーボードに格納されたBIOSというプログラムがあって、それがOSの読み込みなどをやってくれます。BIOSはUEFBIOSとレガシーBIOSというものがあり、近年のPCはすべてUEFIBIOSになって来ています。しかし、このUEFIBIOSというものはなかなか曲者で初心者にとってはレガシーBIOSの方が圧倒的に使いやすいと思います。なので今回はレガシーBIOS向けのOSを作っていこうと思います。
これだけ聞くとレガシーBIOSの方がいいように聞こえると思いますが、開発が難しくなるだけで機能は圧倒的です。あと実は大きいOSを作る人にとってはレガシーBIOSでは2段階でブートプロセスを行わないといけなかったりもします。
あと今回作るOSはとりあえずC言語を中心で作ろうと思います。まあ有名だし基本的な言語なので作りやすいということが理由です。
C言語は使えない!?
C言語を中心にして開発していくといったばかりですが、自分で作ったOSでは当然C言語なんて使えません。なぜならば、既存のCコンパイラはすでにあるOSのためのものなので、自作のOSでは使うことができないからです。なのでOSを作るためにはアセンブラも使っていかなければなりません。
今後の流れ
次の回からは実際にOSを作っていこうかと思っていますが、だいぶ面倒くさいと思います。しかし、本当にOSを作れるようになれば、OSを作れるというだけではなく、プログラミング系のすべてのことに対しての理解が深まると思います。一般には難しいと思われているポインタなどもこれが分かれば簡単に思えると思います。なのでぜひ頑張ってみてください。ただ面倒なだけの部分はコピペでいいと思いますが。