ページへ戻る

+ Links

 印刷 

GUIGUI01​/memo10 :: OSASK計画

osaskwiki:GUIGUI01/memo10

ぐいぐい01に関するメモ-10 anchor.png

  • (by K, 2008.11.24)
  • メモのうち重要な部分をそのうちまとめてまともなページを作る
Page Top

(22) efg01は非常にOSASK的なソフトウェア anchor.png

  • OSASKはハードウェアの性能を完全に引き出すことを目的としているわけだが、それはつまり、ハードウェアが本来持っている力を全部出させてあげることである。それに対してefg01.exeを見ると、これはWindowsというOSが実は(こんな小さなパッチみたいなものだけで)ここまでできるんだということを実証していることになっているので、そういう意味ではOSが本来持っている力を出させていることになると思う(特にアプリのサイズについての本来の力を出させている)。
  • この観点で見る限り、efg01は非常にOSASK的であり、単にその対象がハードウェアかOSかというだけの違いでしかない。そして僕はハードウェアだろうとOSだろうとなんだろうと、みんな実力を全部出せることは基本的にいいことだと思う。もちろんライバルが実力を出せずにいればそれだけ競争では有利かもしれないけど、そんなので勝っても意味はないと思っている。だからたとえライバルであっても、実力が出せるならそのほうがいい。

  • 「ぐいぐい01」アプリの正しい使い方。まあ別にどう使っても正しいんだけど(笑)。
    • こういう使い方を推奨しているってわけじゃなくて、こういう風に使ったらどうですか、みたいなもの。
  • WindowsとかLinuxのユーザ:
    • たまに面白そうなアプリがあればefg01を使ってアプリを実行。
  • 旧OSASK/OSASK-HBのユーザ:
    • 標準APIなので普通にアプリを実行。
  • MonaOSとかOSAkkieとかのOSのユーザ:
    • ネイティブアプリをそろえるまでのつなぎ・踏み台として、efg01を経由して実行。特にいきなりコンパイラやアセンブラがそろっているのって結構うれしくないですか?もしネイティブAPI直接利用でもっといいアプリができたのなら、順次そちらに乗り換えていただくということで(そのアプリがたとえ機能性能的に劣っていたとしても、愛着があればそれもアドバンテージです)。

  • アプリ資産を「ぐいぐい01」で持っておけば、気分でOSを毎日変更しても大丈夫(笑)。カーネルなんて飾りです?!・・・いろんなOSを気軽に使い比べられたら、それはとてもステキだと思うのだ。「ブラウザさえあればOSなんてなんだって同じ」なんてことを言う人が最近出てきたそうだが、「efg01さえあればOSなんてなんだって同じ」と僕は言えるようになりたい。
    • 仮に「ブラウザさえあればOSなんてなんだって同じ」が真だとすると、もしかしてfirefox.g01とかができたら、「efg01さえあればOSなんてなんだって同じ」も自動的に真になる???(笑)。
Page Top

(23) efg01/OSASK-HBまでの道 anchor.png

  • サイズ追求編:
    • 1.Win95って大きいなあ。DOSのサイズであれだけできたんだからもっと小さくできるんじゃないのかなあ。じゃあOS作ってみるか(OSを作り始めた動機は他にも多数)。
    • 2.結構小さいOSでもいろいろできるじゃん。こんなに小さくなるとは思わなかった。これってすごくない?うわ、アプリも超小さい。そういえばWinのアプリってみんな大きいのばかりだよね。なんであんなに大きいんだ?・・・よしOSとアプリのサイズをこのOSの特徴の一つにしよう。
    • 3.その後いろいろ作って徐々にスキルがあがる。その上がったスキルで、しかし初心者が付いていけないような難しいことは極力しないという制限を自分に課して、「はりぼてOS」を作る。そうしたらはりぼてアプリが、同じような内容のOSASKアプリよりもサイズで有利に(OSのサイズでも「はりぼてOS」は有利だが、旧OSASKよりも機能的に大幅に劣っているのでこれは比較できない)。
    • 4.これを見て以前から感じていた旧OSASKのAPIの設計の甘さへの不満が爆発。こんなAPIはもう許せない。今の自分ならもっといいAPIを作れるはずだ。
    • 5.そして設計。もちろんこのときは初心者への配慮なんてなくて、全力で設計。特にKHBIOS設計のときの経験が生かされる。「ぐいぐい01」ができる。そして当初の狙い通りアプリのサイズが劇的に改善。ばんざーい、現在に至る。
  • どこででも実行できます編:
    • 0.動機は以前にも書いたが、自分がOSASKを使えるようになった今でさえ、たまにwin32アプリを作っていることに対する自己嫌悪。また以前からkhabaなどで環境に依存しないアプリを作ろうと志してはいた。以下は動機ではなく、技術的にこれはできるかもと思った経緯。
    • 1.かつてGOでwin32/Cの標準関数/OSASKの3対応ソースを作った。
    • 2.それを「ぐいぐい01」の設計中に思い出した。「つまるところ、OSに依存する関数をできるだけ減らした上でその関数をDLLにすれば、とりあえずDLLを交換するだけでどんなOS上でも動くわけだよな。」
    • 3.DLLの機構はOSによってフォーマットや仕様が違うので、そのままではアプリの共通化はできない。じゃあ、ロードとダイナミックリンクするプログラムとDLLを一つのアプリプログラムで提供すればよさそうだな。仕様さえ決めればこれは簡単にできそうだ。そしてこれらをやりやすい仕様を策定し、efg01も作ってみた。うまく動いた。
    • 4.最初はwin32版だけだったが、その後MonaOS版、Linux版、そして「はりぼてOS」版(=OSASK-HB)でもやってみたらうまくいった。これなら当初の目論見どおり、IA-32のOSなら多分なんだってefg01は移植できるぞ。ばんざーい、現在に至る。
  • 「ぐいぐい01」を作る過程で得た教訓(っていうかKHBIOSで得た教訓かも):
    • IA-32用に作るからといって、IA-32ではどうしたらいいかを最初から考えて設計するな。まずどんな処理をやらせたい・できるようにしたいのかを明確に決めて、そのためにどんな命令・機能・仕様がCPUやOS(=efg01の移植先のOS)に「最低限」必要なのか制約なく考えろ。そしてそのような「最低限」の機能しか持たないが、それを効率よく実行できる都合のよいCPUが実際に実在すると仮定して(もしくはFPGAで誰かが作ってくれると仮定して)、そのCPUに最適な設計をまず作る。これはいわば最善解だ。・・・その上で、それをIA-32上に実装するにあたり、実CPUや実OSでの制約を意識し、妥協すべきところがあれば妥協し、そのまま行くべきところはそのままいく。これが最適解だ。最善解を出す前に最適解をだそうと横着すれば、CPUの仕様や得意なことを重視するあまりに(たとえばIA-32ならメモリはたくさん使えるのが当たり前なので、もっと節約できるところを見過ごしがち)、最善解を経由しないと見えてこないことに気付けないまま、全ての可能な設計を検討しつくした気になってしまう。
Page Top

(24) 「ぐいぐい01」のライバル「COM64-GRE」 anchor.png

  • 「おれんじぺこ」のPhase-5 (RC-1)が先日リリースされたが、このOSはrungre.comというプログラムを利用することによって、「COM64-GRE」形式のアプリを実行できるらしい。またこの「COM64-GRE」形式のアプリは同OSにバンドルされているgre.dllを使うことによって、win32上でも実行できる。・・・ということで、「COM64-GRE」は「ぐいぐい01」のライバルな存在といえると思う。
  • しかも実は「COM64-GRE」が実行可能な環境さえあれば、efg01.comという「COM64-GRE」形式のアプリによって「ぐいぐい01」のアプリも実行できてしまう。これはすごい。この状況を前提にするなら、OS開発者としては、自分のOSにはrungreだけを移植すればいい事になる。そうすれば、「COM64-GRE」も「ぐいぐい01」もどちらのアプリも使えるのだから。・・・逆にアプリを作る側から言えば、とりあえず「ぐいぐい01」用に作っておけばrungreかefg01のどちらかがサポートされていれば動くともいえる。
  • 今のところLinux向けやMonaOS向けのrungreは予定されていないようだ。まあ、rungre.g01を作ってしまえばもはや完全に相互運用可能となり、これらのOSへrungreを移植する必要などなくなるのだが(今の「ぐいぐい01」のAPI程度でrungre.g01が作成可能なのかは判らない。でもefg01.comは作成可能だったので、APIの機能的には「COM64-GRE」が同等かもしくは進んでいるのだと思う)。
  • gre.dllやrungre.comのリリースは「おれんじぺこ」のPhase-5 (RC-1)が最初だと思っているのだが、もしそれに間違いがなければ、リリースとしてはこの手の仕組みとしては「ぐいぐい01」のほうが先ということになる。構想はどちらが先かは分からない。でもなんとなく「COM64-GRE」のほうが先に思える・・・。
    • gre.dllはもっとずっと前から(数年前から?)リリースされていたそうです。1~2年前だそうです。その後2006/08/18が最初のリリースであるとの説が濃厚になりました。
  • まあDOS汎用プログラムやDOSエクステンダなどのように、広い範囲で実行可能なものは以前でもあった。でもDOS汎用は16bit時代のもので今では使いたいと思う人はかなり少ないし、DOSエクステンダはその名のとおりDOSの拡張プログラムで、つまりDOS以外のOSでも使えるという形式を目指してはいなかった。ここで話題にしている「ぐいぐい01」や「COM64-GRE」は、32bitでかつ多様なOS上で利用可能なアプリを提供可能にすることを目的の一つとしており、従来のものでこれに相当するものはほとんどなかったのではないかと思われる(志したものはあったかもしれないが、これらほどには普及していない)。



  • なんか「おれんじぺこ」に入っているrungre.comのソースを見ていたら、これくらいなら(いろいろごまかせば)rungre.g01も作れそうな気がしてきた・・・気がしただけだが。
Page Top

こめんと欄 anchor.png


Last-modified: 2009-11-21 (土) 00:00:00 (JST) (319d) by lina