毎日コミュニケーションズ
売り上げランキング: 5269

非常に有意義なOS作成本
ファイルシステム無しではOSと言えない
とても面白い
ハッカーへの最短距離?
GUIより肝心なこと
先日、課題研究のことを少し話したと思うけど・・・。
自作 OS の作成ということにテーマを決めて進めることにした、ということを書きましたね。
これから、課題研究の進行をこのブログに書き留めて生きたいと思います。
そこで、まずはプログラミングに関しての知識はある程度あるものの、どうやったらディスクからブートするかということも知らない僕にとっては、何も資料がない状態では無理に近いです。
というわけで、早速資料探し。
そこで見つけたのが、この本。
軽く読んでみたが、ここまで作れちゃうのか、というほど。
個人的には、GUI は使えないとなぁと思っていたけど、ここまでこの本に収まるぐらいの物で作れるとは思わなかった。
というのも、この本いろいろ飛ばしてるというか、ハードウェアに関する知識や OS の基礎をすっ飛ばしてるような感じです。
これに関しては、賛否両論がありますが、僕が考えるにそういうことは、この本の先をやる上で学べばいいことで、その辺の面倒な説明はすっ飛ばしておkだと考えます。
というか、個人的には、学校や自分の知識として、そこらへんは大体把握していると思っているので、まあ僕にはそれぐらいがちょうどいいか。
思うんだけど、本って興味をもてればいいと思うんだ。
それで読んで、その先は各自ネットとか、もっと先へ進んだ本へ。(といっても、自作 OS について書かれている本は皆無に近い)
実際、売られているプログラミング関連のほうも、最初のほうに座学的な内容がずらずら並べてあって、正直やる気なくす。
何もやったことない人に向かって、オブジェクト指向とは何か、データ型とは何か、OS ってこんなことやってるんだぜぇ~なんていっても、わかるはずがない。
正直、いきなり "Hello, world" や、とりあえず何かをやるプログラムを作らせて、あとから説明したほうがわかりやすい。
マイコンカーの 1 年教育をやって、なんとなくそういうことがわかった。
本を書いている人は、教える人が見えないから、なかなか大変なんだろうなぁと思ったり。
1年に、いきなり CPU となにか、H8 マイコンとはなにか、C 言語とは何か、さらには PWM とかいろんなことを教えても話にならない。
あの反応は、明らかに頭が "はてなマーク [?]" で埋め尽くされているような感じがする。
いきなり、走らせてあげたほうが、よっぽど実感がつかめるのではないかと思って、いまはミニマイコンカーをいじらせているが。
それに、男と女だと頭の構造も違うだろうから、今年は特に大変なような。
で、本題に戻る。
この本は、とても自作 OS に興味は持ったけど、知識がない人にとっては絶好の資料だ。
ただ、ちょっと斜め読みしただけだけど、アセンブラと C 言語は知っておいたほうがいい。
幸い、アセンブラは基本情報のとき CASL を一応触っておいたし、C は普通に組めるので、ここは問題ない。
まあ、これは OS 開発には、当然必要になる知識だからね・・・。
最近のプログラミングというと、VB, Java とか PHP とか、オブジェクト指向とか、Web プログラミングとかから入った人が多いと思う。
そういう人にとっては、C ってなんぞや?とか、こんなの考えられねぇ~という人が多いかも。(僕も、VB から入った人間ですが)
でも、なれれば、そうそう苦にはならない。
少なくとも、基本的な C 言語は絶対的な命令数が少ないので、あとは、頭をフル回転させるだけだ。
アセンブラも一緒、命令数は少ないから、あとはどれだけの発想能力があるかとか、そこら辺を問われるかもしれない。
とりあえず、まあ僕も半年もしないうちに C 言語になれて、いまや VB なんて カ(ry なんていってるぐらいですからw (といっても、C# だって ++ 派からすると カ(ry なんでしょうけど、いや ++ ができないわけじゃないですよ。)
まあそんなもんだ。
本を読んだり、ktok 君の Debian いじり (gcc うごかねぇ~) を手伝っていたため、あまり作業を進めることはできず。
とりあえず、FD からブートさせて、画面上に自由自在に文字を表示するぐらいはできました。
これでは、まだ OS ではありませんね。
少なくとも、この本を全部読破すれば、これぐらいのものは作れるようです。
しかし、これだけじゃ物足りないというか、個人的には納得がいかない。
高望みかもしれないけど、せいぜいディスクに何か保存できるぐらいはしたい。
が、どうもこの本は、ファイルシステムについての記述があまりないので、たぶんそういうことはやらないのかな?
で、ネットワークに接続して、ファイルのやり取りぐらいはしたい。
が、これもまず NIC を認識しないというか、ほとんどデバイスに非対応なのでここら辺は・・・。
ここで思った、やっぱ Linux ベースにするべきだった・・・。
最初は、それも考えたが、それじゃつまらないなぁと思って却下したのだが。
正直、高望み過ぎたかもしれない。
確かに、これでも十分 OS ではあるような気がしないでもない。
少なくとも、いろんな面から見て学校で習った OS の定義とはずいぶんかけ離れているな。
確か、この本の作者は、情報系の学校とか行ってないって書いてたようなきがしたけど。
固定観念にとらわれないのも、大事かもね。
少なくとも、僕みたいに学校で勉強しちゃった人間が OS を全部何も資料なしに作るって言うと、たぶんぜんぜん違うものができるだろうなぁ。
確かに、学校に行くといろいろ学べるけど、失うものもあるのかも。って思ったり。
といっても、いまさらテーマ変更とか、方向修正はできない。
やるしかないみたいだねw
まあ、目標としては、この本に載ってることはあくまで参考。
なるべくオリジナルなものを作りたいのだけど。
そうなると、この本は一通り読んだら、あまり役に立たそうだな。
でも、その先って、どんなものを読めばいいんだろう。
とりあえず、それはあとから考えることとするか。
連休中に、この本の内容全部終わらせるぐらいのペースで行かないとヤバイかも。
あ~どうしよ。
そもそも、研究テーマは "自作 OS によるサーバー用OS" とか何とか書いたような気がしたな。
もちろん、実現できる可能性は、そのときから薄いとは思ってたけど。
夢は大きくがモットーの部活に居ると、こういうことになるのです。
構想は大きいほうがいいかもしれないけど、ほどほどに。


コメントする