4 月 20 日のやじうまウォッチなどいろいろなところで話題になっている「30 日でできる OS 自作入門」を購入。
毎日パソコンを使うけれども、パソコンの OS って実はどういう仕組みで動いているのかよくわかっていない。「パソコンの OS」ってじゃあ他の OS は分かっているのかよ?ということになるが、過去にARM で動く μITRON のコードは見たことがある。でも、その OS が動いていたシステムの入出力デバイスはマウス、キーボード、ディスプレイではなかったし、タスクの制御方式も違うし、ファイルシステムもなかった。つまり「パソコンの OS」に関していえば素人である。
自分自身どこまでできるのかわからないけど、この本で「パソコンの OS」について学習していきたいと思う。30日では終われるわけがないので、目標を 30 営業日 (読書日?) を目安においてやっていくつもり。
----
0 章:開発を始める前に
いきなり「OS とはなんだろう?」。確かに昔の MS-DOS も OS だし、Windows も Linux も OS、地味なところではデジカメや DVD レコーダーとかほとんどの電子機器にも何らかの OS が入っているだろうし。範囲が広すぎる。この本では『ウィンドウがぽこぽこでて、マウスカーソルがあって、複数のアプリケーションが同時に動くような』を作るらしい。それを読んで安心した。MS-DOS みたいなのだったらちょっとがっくりだし。
ちょっと読み進めていくと「OSを作るにはどうしたらいいの?」。世界初の OS はそのコードを書くための OS がないのだから人が直接機械語を記憶装置に書き込んだらしい…。出た!コンパイラのコンパイラのアセンブラの…って遡るとついには機械語にたどりつくわけで、鶏と卵の話じゃないけど、この連鎖を考え出すと止まらないのだけど、それをいきなり書いてしまう勢いに圧倒された。当たり前だけど「まず OS ありき」ではないということだな。うん。だから作るというわけだ。
----
1章:PC の仕組みからアセンブラまで
いきなりバイナリエディタでフロッピー 1 枚 1.44MB のバイナリを作ることになった。ほとんど 0x00 なのでコピペなんだけどヘキサを延々と書く作業の虚しさ。小学生の漢字の書き取り50 回ずつみたいな。「まず OS ありき」ではないのは分かるけど、いきなりこれからですか! いわれるがままに書いたコードをエミュレータ上で動かすと黒い画面に「hello, world」の文字が表示された。だから、なんやねん…、自分で書いたコード感慨深さ…一切なし。
予断だけど、私が使っているパソコンはフロッピーディスクドライブがついてないので、「作ったバイナリをフロッピーにインストールして起動してみましょう」という流れにはマジであせりました。実際には上で書いたように PCエミュレータ上で動かすということで、一安心。いまどきフロッピーはないわなぁ。
で、今度は著者の川合さんが作ったという nask というアセンブラでそのバイナリと等価なものを作って動作確認。当たり前だけど、動作結果は同じ。でも、アセンブラにはきちんとコメントが書いてあるから、少しはやってることが分かる。先頭に FAT12 フォーマットフロッピーディスクのための設定みたいなのがあって、次にプログラム本体があって、次に表示するメッセージの部分。そして後ろになんかわからん記述。PC は起動時にディスクの先頭にあるブートセクタを読み込んで OS を起動するとか昔勉強したような気がするけど、それなら今日書いたこのコードはまだ OS の体をなしてないことになりますな。IPL といっても、プログラムロードしてないし(笑)、それよりも、そもそも何がどうなって「hello world」が表示されたのかすらまだ、説明はありません。まだ、すべてはなすがまま。












コメントする