ページへ戻る

− Links

 印刷 

design011 のバックアップソース(No.2) :: OSASK計画

osaskwiki:design011 のバックアップソース(No.2)

« Prev[4]  Next »[5]
* OS開発の方向性
-(by [[K]], 2009.01.03)
*** (0)
-これは当初「川合のぼやき」に書こうかどうか迷った内容のものを書くことにしたわけだけど、ここは僕のホームページではなくOsaskWikiなので他の誰が書いてもいいものだと思う。
-ただこのシリーズの趣旨としては、OSASKの設計に関する話を書いているので、他の人が書く場合もそれには準じてほしい。で、僕以外の人がOSASKの設計に関する話を書くなんてことはまずないと思うかもしれないけど、そんなことはなくて、たとえばこういう考え方のもとでこうしたらどうかという提案はできる。
-基本的に一つの話題に1ページ使ってしまうので、ちょっとした提案であれば、OSASK-MLや[[impressions]]を活用してもらうほうがいいと思う。
*** (1)
-これを読んだ(これに限らず.mjtさんの日記は興味深い話題が多いと思う)。
--http://d.hatena.ne.jp/mjt/20090103/p3
-この記事のタイトルは「OS開発の今後」となっているけど、これは必ずしも一般的なOS開発を指しているわけではなく、.mjtさんが望んでいるOSの開発、もしくはそれに類するOSの開発のみに当てはまることだと思う。それを踏まえて読むと、なかなか面白い。
-.mjtさんにとっては、「OSを作る=新しいファイルシステム(オブジェクト環境)を作る」ことなので(それが目的なので)、この話になるのだと思う。・・・めんどくさいので、いっそのこと引用してしまおう。
 OS開発のマイルストーンを現代的に定義するとするなら :
  1.libcをどうにかして、自分のオブジェクト環境の中でgccをコンパイルする
  2.mingwのbashやm4等各種ツールを自分のオブジェクト環境の中で動かす
  3.Xenの上で動くカーネルを作る
  4.(Xorgを移植する)
-この話を読むと分かるとおり、独自のファイルシステムを作って、そこで既存のアプリケーション(gccやbashやm4)を動かすことになっている。つまり独自のアプリケーションを動かすことは主たる目的ではないのだ。カーネルをXen上に構築することで分かるように、ドライバを作ることも目的ではないのだ。またXを移植するというところで分かるとおり、独自の新しいウィンドウシステムを作ろうという気もないらしい。・・・僕はそれを批判したいわけじゃない。OSを作る目的は人によってさまざまだ。ファイルシステム重視で作るというのは非常に有力な一つの候補だし、それは他の目的と比べてなんら劣ってなんかいない。僕が今言いたいのは、でもそれでOS開発全般を語ったことにはなっていないということを指摘しておきたいだけだ。
-独自のウィンドウシステムを作りたくてOSを作る人もいる。独自のAPIを作りたくてOSを作る人もいる。とにかくカーネルを書きたいという人もいる。カーネルなんてその辺から流用してしまえばいいという人もいる(L4カーネルを使って独自OSを作るとか)。デバイスドライバを書くのが楽しくてしょうがないという人もいる。
*** (2)
-さてここからがむしろ本題なのだけど、じゃあ僕はどうなのか、OSASKはどうなのか。それを整理してみようと思う(というかそれがなければこの話題はOsaskWikiにふさわしくない・・・笑)。そしてそれをやってみたら、なかなか興味深い分析ができそうな気がする。
-僕はとにかく究極的に効率のよい状態がほしい。古いPCも新しいPCもその能力を余すことなく出し切れている状態がいい。特に古いPCが能力を出し切っていないのに、つまり本当はまだまだ現役でやれるのに、それなのに無能力の烙印を押されて破棄されていくのは嫌いだ。
--参考:[[design007]]の(1)
-そういう「状態」を生み出すにはどうしたらいいだろうか。それには効率のよいOSと効率のよいアプリと効率のよいドライバと効率のよいウィンドウシステム・・・などが必要だろう。そして最初僕はOSから作ろうと考えた(全てを同時に作ることはできない、どれかからやらなければいけないのだから)。アプリは後回しにしようとした。それが初期のエミュレータ重視路線でもある。
-しかし実際にOSから作って分かったことがあった。実は全てを同時に作るウルトラC的な方法があったのだ。というのは、つまりアプリはコミュニティの人でも手が出しやすいし、しかもそれは十分に既存のアプリよりもいいものなのだ(多分僕が作るよりもいい・・・というのは、確かに僕が作ったほうがより効率を高められることもあるけれど、でも僕はアプリのアイデアは貧困だから、僕だけがアプリを作ってもろくなものじゃない)。・・・そういうことなら、最初に作るべきはOSじゃない。APIだ。OSとアプリの接点であるAPIさえ決まれば、OS開発班とアプリ開発班は別々にそして同時並行的に開発できる。OSから作っていたのでは、OSに実装していない機能のAPIは作れない。
-そう考えれば、今の「ぐいぐい01」の流れはとても自然だ。僕が今やっていることはまさにOS開発に先行してAPIを決めることだから。OSASK-HBよりもabcdwのほうが明らかに先行している。APIの良し悪しはもちろんアプリが小さくなるかどうかだ。非常に分かりやすい判断基準である(それがいいかどうかは別にして)。そして成果が上がってきていることは、[[GUIGUI01/memo14]]の表などを見ればはっきりと分かる。
-僕はとにかく効率のよい状態がほしい。そして効率を究極的にまで高めるためには、結局全ての部分を高効率なものに置き換えなければいけない。ファイルシステムだけ作り変えればいいわけじゃない。とりあえずここまででAPIとアプリについては解決できたとしよう。それでもドライバやカーネルやシェルやファイルシステムやウィンドウシステムや・・・それこそいくらでもある。.mjtさんの提案のように、適当に既存のものを流用できるのならしたいくらいだけど、そういう流用は結局は「とりあえず動いただけ」になってしまうことが多く、とても高効率とはいえない。動くだけでいいのならそもそもOSなんか作る必要がないのだ、僕の場合は。OSを作ることそのものは目的じゃないから、そんな効率の低いもので我慢できるのならわざわざOSを作るまでもなく、Windows上やLinux上でefg01していれば用は済む。
-そう考えると、なかなか道は長くて遠くて険しい。でも他にやりようがないから仕方ない。ほしいものはほしい。いくら大変そうでも、それを理由に自分にとって必要のない別の何かを作る気にはならない(大変だからあきらめるということはありえるかもしれないけど)。

* こめんと欄
#comment

« Prev[4]  Next »[5]