#2 ひとまずKernelまで作ってみた
だいぶ前に投稿していたOS開勉強について。ちょっと進んだので、いろいろと感想を書いてみる。
実際の技術的な内容が気になる方はテキストを買ってみるべし。
低レイヤーに触れている楽しさ
普段何気なく使っている、ソフト達の根っこを見ることができる!
これが何と言っても、勉強していて楽しい。私たちが普段使っているソフトやアプリ、果てはプログラム言語は低レイヤーの処理が隠されている。
例えば、メモリはどうやって確保しているのか?OSはどうやって起動しているのか?…… などなど
これを"隠す"ことは使いやすさ、分かりやすさを考えたら当然のこと。だけどみんな隠してばっかで、超気になるのに見れない。
しかしOSを開発するということは、その隠された部分を自分で組み立てていくことに他ならない。これがもう本当に楽しい。
物理的にプログラムを走らせている感がたまらない。これはOS開発、低レイヤー開発の唯一無二の快感だと思う。
コンピュータってコンピュータなんだ
これは私がマニアックなことをやりすぎて頭がおかしくなっているわけではない。ここで話したいのは、OSが起動する前の話。
むき出しのコンピュータは真実、計算機(コンピュータ)なのだ!
タイトルはそういう意味。OSが起動する前に、UEFIというファームウェアとOSをつなぐための原始的(?)なソフトが立ち上がる。この時、CPUは特権モード。完全に自由な状態。メモリも直接触れちゃう。故にコンピュータを触っているというよりも、回路や機械を直接触っている感がある。
UEFIのおかげで最低限のこと、C・C++・asmを使ってのプログラムが可能。とはいえ私たちが普段想像するパソコンからはかけ離れたものだ。必然とロジックもマシン語的な部分が多い。レジスタに小さな命令を積み重ねることで、ようやくOSを呼び出すことができる。そしてこれが実機上で動いた時の喜びたるや….
大文字・小文字問題
少々技術的な内容も。BootLoaderのディレクトリを大文字表記にしていたらうまい事起動してくれなかった。全く同じBootLoaderを小文字表記したディレクトリに格納したところ無事起動。
低レイヤーあるあるなのだが、よくわからないところで詰まったりする。ソースコード内のコメントが干渉したりするのだ。今回のもそんなところだと思う。どうやらUNIX系は大文字と小文字を区別するようなので、今回はそこらへんが干渉してるかも。
参考図書(テキスト)
テキストは未だ、1/6程度。夏くらいには終わらせたいなー
この記事が気に入ったらサポートをしてみませんか?