背筋を伸ばして、まいにち笑顔

ブログには何度も挫折してきた。今度こそ、とりあえず体裁なんて忘れて、消しカスみたいなことでもアウトプットしていきたい。

OS自作入門4日目

f:id:tkntkn:20150224053451p:plain

久々

ブログを始めた初日以降12日間更新を怠っていたわけですが、1日坊主を克服すべくようやく更新です。久しぶりに背筋を伸ばすことと笑顔を作ることを意識しました。

以前に「30日でできる!OS自作入門」に挑戦していると書きましたが、ブログ同様こちらの方も、最近少し忙しくて手を付けられなくて、本の内容で言うとやっと4日目に突入です。このペースだと90日ぐらいかかる見込みですが、これからもっと忙しくなるので、多分終了までにあと120日ぐらいです。とりあえず何日かかっても挫折しないように頑張ります。

矩形表示

4日目の結果は貼りつけた画像の通りです。まあ本の内容を丸々コピペして走らせたら得られる結果なのですが、そうはいっても、GUIなんてHTMLとCSSでしか触ったたことなかった人間としては、ディスプレイに直接描画させられるようになるのが面白いです。

インターフェイスを叩く

今回ふと思ったことを垂れ流しておきます。うまくまとめられていないなくて、何を言っているのか分からないと思いますが。不勉強だから間違ってるかもしれない。

プログラミングで言うと、初めて触れたのはHTMLで、これまでそこからJavaScriptC言語Rubyとかじる程度に裾野を広げてきたわけですが。HTMLとかJavaScriptを書いているときには、ブラウザのAPIを叩いているだけだという感覚が拭えませんでした。なんというか、「本物」のプログラムを走らせているのだ、本当に画面に表示させているのだ、というよりは、一皮挟まっていて、CPUの歓声が聞こえてこないというか。

それが、C言語とかRubyとかを触るようになって、少し本当にコンピュータを回している感覚に近づいた気がしました。しかしいろいろ触っているうちに、結局それもほとんど言語やOSの用意したAPIを叩いているだけで、結局「本物」には触れていないのだという感覚がありました。そして、それはOSというのは、その「本物」を自在に使いこなすプログラムなのだろう、と思っていました。

そうしたあこがれもあり手を出した本書で、今回初めて画面に矩形表示をしたわけですが。そうして思ったのは、この画面表示のプログラムだって、ちょっとした自前の計算はしているものの、結局は、BIOSとかVGAdiplayへの命令を、VARMに関する規定とかいったお約束に従って、叩いているだけなんだ、という感覚です。プログラミング言語からライブラリの用意された関数を呼び出すよりは、メモリに直接書き込んだりして非常に生々しくはあるのですが。

べつにがっかりとか、そういう訳ではないけれど、きりがないんだな、という気持ちにはなりました。あれだけ本物があると思っていたOSにも、なんで画面に表示されるのか本質は分からなくて、なんでメモリが書き換わるのか本質は分からなくて。そうやって、階層化して一層ずつ綺麗に隠ぺいしているからこそ今があるわけですが、たどり始めたら、CPUとかディスプレイとか、あるいはさらにもっと電気的な部分にまで踏み込んで行って、先が長いというか、きりがないというか。

まあそうは思うものの、そういうこと自体に気づけること、OSによって今まで隠されていた色々な部分のインターフェイスが見えてくることはとても面白いです。果てしない階層化の中でもかなり大きなウェイトを締めるものではありますよね。実用面でも、流石にCPUの電気的特性が分かったところでWebサービスには活かせないけれど、OSが分かれ何かしら役立ちそうだし。

ということで、先は長いですが頑張って読み切りたいと思います。