[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[OSASK 00051] Re: 簡易質問
- From: Hidemi KAWAI <kawai !Atmark! osask.jp>
- Date: Tue, 17 Oct 2006 06:22:33 +0900
- Cc:
- References: <20061016124056.8391.qmail !Atmark! s10.xrea.com>
おはようございます、川合です。
FORM-Akkie さんは 2006/10/16 21:40:56 の「[OSASK 00050] Re: 簡易
質問」で書きました:
>ご自身でも書かれている通り、過去の批判が正しかった、という面は
>少なからずあるようですね。
そうなのです。その理由やこの結論に至るまでの思考過程は違ったの
ですが、とにかく最終的な結論としては僕よりも僕を批判していた人の
ほうが正しかったのです。まあ僕は何事もやってみないと理解できない
ようなところがあり(逆にそれで僕の考えがうまくいったこともありま
したし)、僕は今後も似たような失敗を繰り返すことはあるかもしれま
せん。僕としては失敗したことを後悔しているのではなく、批判してく
れた人やその様子を見守ってくれていた人たちに、「この意見のほうが
正しかった」ということを伝えたいだけなのです。
>> 自分がダメだと思うようなCPUのために1バイトだって書く気はしないのです。
>> ということになれば、とりあえずは結局CPUに依存しない形でOS開発
>> するしかない、という結論になってしまいます。
>386はダメだと思うようなCPUになったのでしょうか?
残念ながらそうなのです。
ARMを勉強する前の僕にとって、たとえば10年後や20年後の僕が何を
しているだろうと想像すると、それはきっと386用のOSASKをGeodeLXや
TOWNSで使っているだろうということでした。そう考えていた僕にとっ
ては、386用にプログラムを作りつづけることは、「将来に渡って使え
る」ソフトウェアを作ることにもなって、だから作る意欲も十分ありま
したし、作っていて楽しかったのです。
しかし一方、今僕が思い描いている自分の将来像は、CPUをいくつも
作ってようやく理想(というか、まあとりあえずこれで満足しようとい
う妥協点?)に達し、そしてそのCPU向けにOSを書いて(それも多分
OSASKという名前を冠していると思います)、そしてネイティブアプリ
を作るのです。・・・この状況にあっては、386用のソフトウェアを実
行するには、エミュレーションしかありません。十分に賢いエミュレー
タかアプリコンバータができれば大丈夫ですが、それまでは386用に書
いたソフトウェアは僕にとってはただの動かないコードか、もしくは、
質の悪いエミュレータによってやたらとのろのろと動くヘボソフトに過
ぎません。
まあだから厳密に言うなら「386がダメだと思う」ようになったとい
うのは「386が(自分の将来を託せるようなCPUかどうかという視点では
)ダメだと思う」ようになった、という感じです。
>以前、高速にするために、それが十分効果を持つ所では、
>CPU毎にアセンブラ(ネイティブコード)での最適化をすることに
>意味がある、といっていた気がしましたが、変わったのでしょうか。
何ら変わりません。実際khabaもそのような記述を支援する機能をつ
けます。つまり、ソフトウェアを複数の関数で記述することができるわ
けですが、そのいくつかの関数について、「もし動作環境が○○CPUだ
ったら、khabaで書かれた汎用コードを変換したものを使わずに、この
最適化コードを使え」ということを記述可能なのです。もちろんこの記
述をオーバーライドして、あえて汎用コードを使わせることもできるよ
うにはしますが(これは専用コードにバグがあると分かったときなどに
有効だろうと思うので)。
この機能を使って、速度のボトルネックになりそうなところに関して
は、386やARM専用のコードを書くでしょう。80%-20%ルールを信じるな
ら、僕は自分の作るOSやアプリのコードの2割の部分だけには機種依存
コードも準備して埋め込むだろうというわけです。まあその機種依存コ
ードは将来の僕にとっては一度も使われないデッドコードになるのかも
しれませんが、でもとりあえず今しばらくは386系CPUを使うわけで、そ
れならその程度の努力ならしてもいいかなと思うわけです。
>> いずれの場合もエミュレーションをするわけではないので、QEMU上で
>> OSASKを動かす現在の環境よりもきっと高速です。
>多くの人の頭の中にJAVAがありますので、きっと、
>という事になるのでしょうか。
うーん、僕としてはそういう含みではなく、単に理論的にはそうなる
はずだけど、実際のところはやってみないと分からない要素もある、み
たいな感じです。たとえば、僕が開発している間にもQEMUは進化しつづ
けるわけでかなりかしこい最適化とかをするようになるかもしれません
。そうなると、QEMU上で動かしたOSASKは、khaba版OSASKよりも速くな
る日がくるかもしれないのです。・・・それに僕の力が及ばずに、
khabaはあまり速くできないかもしれないという不安も少しあります。
>386に特化し、無駄を切り捨てるという事が、OSASK
>の今までの目標であり、性能を生かす、という事につながっていました。
>果たして、移植性を切り捨てたことをやめてしまうのはどうなってしまうのでしょうか。
それは1015名無しさんの見解であって、僕の同意できないところです
。OSASKは386に特化したというのはそのとおりですし、ムダを切り捨て
るというのもそのとおりです。それが目標だというのも、性能を生かす
というのもそのとおりです。・・・しかし移植性を切り捨てたことが、
OSASKのよさの理由のすべてではないと僕は思っています。
僕の主張する意見としては、OSASKが軽いのは第一に386に依存しため
ではなくて、僕が再設計して作り直したからです。たとえば「はりぼて
OS」は機種依存部分が(OSASKに比べれば)かなり少ないOSですが、そ
れでもかなり軽いです。まあOSASKはその「はりぼてOS」よりもさらに
軽く、その比は1.5倍くらいはありそうなので、この1.5倍の性能向上に
ついては386に特化したせいだということは言えるかもしれません。
(註:「はりぼてOS」はバイナリが公開されているので、読者ではなく
ても軽さを実感できます。)
もちろん再設計に当たってはCPUの特性も考慮しているわけで、だか
らCPUへの依存がないOSを作るというのは僕にとって難易度が高いとい
うのは正しいところです。・・・ただ、新OSASKが十分に軽いかどうか
は、結局のところkhabaがどうなるのか(=本当にJavaや.NETをあしら
えるほどの性能が出るのか)にかかっていると思います。
もしかしたら、結局は、「JavaOSみたいな発想で作るOSは、たとえ川
合が作っても(という言い方は傲慢極まりないですが)、この程度の速
度しか出ない、だからダメだ」という結論を得るだけになるかもしれま
せん。でも逆に「JavaOSの発想が悪いのではなく、それまでのプログラ
マの腕(=設計力)がたいしたことなかったから」ということが証明さ
れるかもしれません。・・・今の僕の心境としては、勝算があると思う
からやってみようと思うわけで、だからやってみなけりゃわからないと
いうか、まあ結果をご覧じろ、という感じなのです。OSASKだって最初
は「機種依存だろうがなんだろうが、そんなにOSが軽くできるなんて誇
大妄想もたいがいにしておけ」と言われていたんですから、同じような
ものですよ(笑)。
ちなみにOSASKの設計での効果としては、既存OSとの互換性を捨てた
ことも大きいと僕は思っています。POSIX互換やWin互換を第一に設計を
始めてしまったら、こうはいかなかったでしょう。もちろんAPIが独自
のOSは他にもありますしそれがOSASKよりも遅かったりはしますが(た
とえばMonaOS)、それはそのOSが設計において性能を重視しなかったた
めであって、僕のこの主張の反例とはなりません。
>後一つだけ、他のOSと違う所として何を打ち出していくのかだけでも
>述べてくださればと思います。
僕としては第一に性能でしょう。それはOSASKがエミュレータOSであ
る以上、絶対に譲れないところです。たとえOSASKがkhabaベースであっ
ても、「エミュレータによってソフトウェアの互換性が担保されるよう
になったら、OSの優劣は性能でのみ決まる。それがエミュレータOSのか
なめだ」という僕の主張に変わりはありません。・・・もし新OSASKの
性能があまりにもお粗末であれば、僕は ver.4.9 に戻って、そこから
CPU依存前提の開発を再開するという可能性もあるのです。
そしてタスクセーブや仮想化の思想(たとえばアプリは現在の画面サ
イズを直接指定したり、取得できるべきではないなど)もすべて引き継
ぎます。いずれはこれらがOSASKを特徴付けるようになるかもしれませ
ん。こういうことを言っているOSはまだないと思います(まあそれはこ
んなことがウリになるとは思われていないせいかもしれませんが)。
新OSASK固有の特徴としては、khabaのサポートがあるでしょう。つま
りkhabaでアプリを書けば、どの機種でも全力が出せない代わりに、ど
の機種でもあまり遅くはならないのです。それにOS自身がkhabaで書か
れて移植性が高くなり、今までよりも幅広い機種でOSASKが利用できる
ことになります。これは技術的にはJavaOSが果たせなかった夢です。ま
あ使う側にすれば、そんなことよりも自分が使っている機種で性能が上
がってくれたほうがうれしいというかもしれませんが。
また既存OSとの親和性も向上し、WindowsユーザやLinuxユーザなど既
存のOSユーザもOSASKを使うためにわざわざFDやCFやCD-RにOSASKのディ
スクイメージをインストールして再起動する必要がありません(再起動
がいらないというところが重要)。QEMU上でマシンパワーを浪費しなが
ら使う必要もありません。今まで以上に気楽につかえるのではないでし
ょうか。
それでは。
--
川合 秀実(KAWAI Hidemi)
OSASK計画代表 / システム設計開発担当
E-mail:kawai !Atmark! osask.jp
Homepage http://osask.jp/