memo0022の(5)から分岐 -- OSとKHBIOSの関係

  • (by K, 2007.03.28)

(1)

  • KHBIOS構想が単なるブート手段の拡張だけであったころ、KHBIOSはOSの領分を侵す心配はなかった。しかし32bitインタフェースを持ってAT/TOWNS/98の壁を取り払ったり、ディスクイメージの仮想化、バックグラウンド処理までするようになってくると、KHBIOSは徐々にOSのように見えてくる。
  • XenはOS屋の救世主というよりは、OS屋の敗北の象徴であるという持論からすると、結局KHBIOSもOS屋の敗北の象徴なのではないか。なぜ複数のOSが同時に動く必要があるのか。一つのOSの上に複数のシェルやアプリが動くだけではいけないのか。

  • OSが進歩していくためには、複数のOSが同時に起動できて競えるほうがいい。それは間違いない。ということは、複数OSの同時起動というのは、過渡期の技術なのか・・・そうかもしれないな、確かに。
  • この考え方の根底には、結局最終的にはOSは1つに収斂可能だというのがありそうだなあ。でも結局モジュール性を高めていけば、これは真に思える。というか、「KHBIOS+複数のOS」で実現できることが、「一つのOS+複数のアプリケーション」で実現できないというのはどうもなさそうに思える。特権などの事情により、OSにできてアプリにできないことというのはたくさんあるけど、そんなのはOSが努力してCPL=0で動くアプリを作成可能にすれば済むことだと思う。
  • 複数のOSの同時起動という面を除いて仮想化や多機種対応の面だけを考えるなら、これはOSからの分業の問題であって、だから本質的な問題ではない。
  • とにかくいえることは、qemuなどを使って他のOSを手軽に実行したいという需要があるうちは、絶対にKHBIOSに複数のOSの同時起動機能は必要である。この機能はつまり限界まで軽くなったqemuだと思えばいいのだから。だから需要はある。僕だってOSASKとはりぼてOSファミリーを同時起動して遊びたい。・・・実用性は・・・うーん、実用性は・・・OSのデバッグくらいにしか使えないのかなあ、結局。っていうか、僕にとってのqemuもそんな感じだもんなあ。

  • つまりOSの同時起動の機能は本質的には「おまけ」だと思えばよさそうだ。無駄な機能である。だからこのせいでオーバーヘッドがはっきりと出てしまうようなら、こんな機能は作っても使われない。おまけはおまけらしく、それに見合ったわずかな労力で実現できなければならない。・・・ふーむ、なるほど。確かにそうだな。我ながらなかなか良い考察だ。
  • オーバーヘッドがほぼない状態というのは次のように定義される。KHBIOSがこのために大きくなりすぎて起動時間に体感できる差が生じないこと。もし生じてしまうのなら、同時起動をサポートしない版も絶対に用意するべきだ。同時起動対応OSにすることがそれほど面倒でなく、しかも処理が重くならないこと(OSのサイズもほとんど増えないこと)。・・・となると、メモリ再配置サポートは本当にオプショナルというか、おまけ中のおまけといった感じになるんだなあ。タスクセーブして再起動、みたいなほうがいいかもなあ。
  • まあなんだ、結局メモリ再配置が必要になる状況ってのが生じないのが本来の姿なんだろう。たとえばメインOSは最初に多めのメモリで起動して、トラブルがない限りずっとそのまま、とか。メインOSが複数でも本質的には同じことだ。サブOSは頻繁に再起動したりするかもしれない。別にそれは問題じゃない。・・・うん、なんかいい設計に思えてきた。つまりメモリをあまりダイナミックには管理しない。ほぼ静的にいくつかの領域に分けて、必要ならそれらに名前を付けて区別して、OSに割り振って使う、と。いいねこのバランス。複雑で高度なことをしたいのならそれこそ単一OSによる完全支配を目指せ、と。それこそ進むべき道なんだ。KHBIOSのOS同時起動機能はあくまでもおまけなんだ。おまけに多くを期待しちゃいけない。KHBIOSが高度化していくのは正しくない(KHBIOSをその完全支配OSへ拡張するつもりなら話は別かもしれないけどね)。
  • バックグラウンド処理についてはどうだろうか。HLTステートを奪うだけならもっともやさしい。でもそれじゃ不便のような気がする。時分割してほしい。どうしたらいいだろう。・・・マルチタスクスケジューラに干渉するのはいいけど、それだけだとつらいので、HLTステートを奪うだけでもいいことにしよう。OS作者が選択すればいい。
    • シングルタスクOSのことも忘れずに。

(2)

  • ちなみに僕はいつでも作りたいプログラムを適当に作っているように見えるかもしれません。まあたいていはそうなのですが、でもこんなふうにまず「意義」を考えることもあるんです。意義が決まればどういう方針で設計するべきかが見えるし、そもそも作るべきではないと悟ることもあります。
  • たとえばある機能を自分の環境に持たせたいとして、それはOSを拡張するべきか、それともアプリとして作るべきか、それともライブラリとして作るべきか、BIOSの拡張とするべきか、などなどです。ただ闇雲に作っていたら、ただでさえのろまな僕の開発力じゃ、ほぼ永遠に完成しませんからね。

こめんと欄


コメントお名前NameLink

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Last-modified: 2007-03-28 (水) 23:21:37 (5572d)