サイトトップへ
OSASK.NET
  サイトトップへ       新掲示板(閉鎖済)   Wiki(凍結済)   旧掲示板(廃止済)   ニュース(廃止済)  
2: 2009-11-20 (金) 05:05:29 hideyosi ソース 現: 2024-01-08 (月) 12:59:06 lina ソース
Line 1: Line 1:
TITLE:x TITLE:x
-COLOR(red){試作中・・・} +*第二世代OSASKとは? [#p5f012b7] 
----- + 
-*OSASK-HBとは? [#p5f012b7]+ 
 +ものすごく簡単に言えば、ほぼゼロから新しく興しなおす。第一世代OSASKの作り直しバージョンだと思ってください。 
 +-第一世代OSASKとは? 
 +--2000年5月頃から川合秀実氏が発表を続けていた独自OS。2004年12月発表のVer4.7を最後に休眠。
-ものすごく簡単に言えば、ほぼゼロから新しくOSASKを興しなおす。OSASKの作り直しバージョンだと思ってください。そのコードネームです。+COLOR(blue){''※''以下、上記第一世代OSASKを第一世代、第二世代OSASKを単に第二世代と呼ぶ}
**なぜ作り直すのか [#t525a0ac] **なぜ作り直すのか [#t525a0ac]
-川合氏いわく・・・ 
- 川合氏が「はりぼてOS」や「KHBIOS」などの開発を通じてスキルアップした後の 
- 目で旧OSASKを見たとき、これはひどい!と思いました。 
- OSASKは長い間多くの問題点がありながらも、大改修を避けてきました。 
- しかしこれを機にそれらの問題点についても、多くを修正することにしました。 
- HBは「Haribte-Based」を意味していて、OSとしてOSASK-HBは、「はりぼてOS」の 
- コードをベースに作りはじめています。 
- これはOSASK-HBを当面はC言語主体で書いてみようと思ったからです。 
--ことの経緯は旧OSASK Ver.4.8(試作。一般公開はなし)に手を入れていたあたり +-ことの経緯は第一世代の Ver.4.8(試作。一般公開はなし)に手を入れていたあたり 
--この頃はKHBIOS、はりぼてOSを作っていた。特にはりぼてOSは書籍用のもの。かなり時間を割いて専念していたらしい。+-この頃はKHBIOS、はりぼてOSが作くられていた。特にはりぼてOSは書籍用のもの。かなり時間を割いて専念していたらしい。
-川合氏曰く、これらを作るために猛烈に新しい技術等を勉強していたとのこと。 -川合氏曰く、これらを作るために猛烈に新しい技術等を勉強していたとのこと。
--さてはりぼても無事完成。ひさしぶりに旧OSASKのソースを眺めてみて・・・げー!これじゃダメだ!って思ったんだそうです。(勉強したりいろんなものを作っていく上で川合氏自身のスキルや考え方が大きく変化したらしい) +-さてはりぼても無事完成。ひさしぶりに第一世代のソースを眺めてみて・・・げー!これじゃダメだ!って思ったんだそうです。(勉強したりいろんなものを作っていく上で川合氏自身のスキルや考え方が大きく変化したらしい) 
--・・・で! それら新しい技術で試しにいくつかのAPIやツールを試作してみると、旧OSASKよりずっといい感じに仕上がってしまったと。+-・・・で! それら新しい技術で試しにいくつかのAPIやツールを試作してみると、第一世代よりずっといい感じに仕上がってしまったと。
-「こりゃばかばかしい。これで最初から作っちゃったほうがいいじゃないか!」と。 -「こりゃばかばかしい。これで最初から作っちゃったほうがいいじゃないか!」と。
-で、手元にある改良が容易なはりぼてOSにAPIをどんどん乗せていくと・・・いけるいける!と。 -で、手元にある改良が容易なはりぼてOSにAPIをどんどん乗せていくと・・・いけるいける!と。
--そんなわけで、はりぼてを土台にした''OSASK-HB''が形になってきた。こういう流れだそうです。+-そんなわけで、はりぼてを土台にした第二世代の試作が形になってきた。こういう流れだそうです。
-COLOR(blue){もっとも改良しすぎてもうはりぼては見る影もなくなっちゃっているそうですがw} -COLOR(blue){もっとも改良しすぎてもうはりぼては見る影もなくなっちゃっているそうですがw}
-旧OSASKを建て増してゆくのに限界が出てきた。ヘタに手直しするより新しい技術・新しいツール・新しい設計で作り直したほうが早く良いものができるかもしれない。こうした考えから始動したものです。 +第一世代を建て増してゆくのに限界が出てきた。ヘタに手直しするより新しい技術・新しいツール・新しい設計で作り直したほうが早く良いものができるかもしれない。こうした考えから始動したものです。
 +COLOR(green){''※''ただし。この第二世代は第一世代のように単独で動作するOSという形にはなりえていません。誤解を恐れずに言えば、第三世代へのたたき台・部分試作的な色合いが強いです。第二世代の技術やノウハウを元に第一世代のように単独で動き、起動可能な第三世代へに着手が予定されています。}
Line 39: Line 34:
COLOR(blue){よく「OSASKはもう終わった」という発言がありますがそれは間違いです。新設計の元、作り直しているのです。} COLOR(blue){よく「OSASKはもう終わった」という発言がありますがそれは間違いです。新設計の元、作り直しているのです。}
-*作り直しによる成果(OSASK-HBの特徴) [#p1a57760] +*作り直しによる成果 [#p1a57760] 
-せっかく動いていたOSASKを事実上凍結してまで行った作り直し。その成果は???+せっかく動いていた第一世代を事実上凍結してまで行った作り直し。その成果は???
**アプリのサイズ: [#l2770a83] **アプリのサイズ: [#l2770a83]
まずは川合氏拘り(笑)のファイルサイズについてです。((この賛否に対するご意見は聞く気はありません。ヨソで思う存分やってください)) まずは川合氏拘り(笑)のファイルサイズについてです。((この賛否に対するご意見は聞く気はありません。ヨソで思う存分やってください))
- 
-OSASK-HBのアプリケーションフォーマットやAPIは、残念ながら旧OSASKとは互換性のないものになっています(とはいえ、APIブリッジなどでサポート可能ではありますが)。 
アプリの実行ファイルがコンパクトにできることを最優先に、徹底的に再設計されたようです。 アプリの実行ファイルがコンパクトにできることを最優先に、徹底的に再設計されたようです。
Line 52: Line 45:
川合氏にとって「人生の最高傑作」といっても恥ずかしくないレベルに達っすることができたとのこと。なにしろ''世界最高の仕様''を目指したようなので。 川合氏にとって「人生の最高傑作」といっても恥ずかしくないレベルに達っすることができたとのこと。なにしろ''世界最高の仕様''を目指したようなので。
-残念ながら現時点ではGUIまわりのAPIが装備されていません。 
 +-いくつかの例
 +--コンソール画面に「hello, world\n」と表示するアプリを、わずか16バイト!
 +---アプリの先頭の2バイトは誤認防止用のシグネチャが入っており、DOSの.COMファイルのようなヘッダのないフォーマットではありません(このシグネチャは全ての第二世代用・第三世代用のアプリに共通して含まれます)。
 +---「hello, world\n」はそれだけで13バイトあります。アプリのフォーマットの効率の高さ(無駄の少なさ)が察せられるのではないでしょうか?
 +---「hello, world\n」に特化したAPIを持つなどの卑怯なことはしないで実現しています
 +---(参考:DOSの.COMファイルで書くと22バイトになります)。
-なく、旧OSASKに対して見劣りすることを含めても、それでもこの成果は現段階でリリースするに値します(将来的にはもちろんGUIのAPIも追加されます)。世界中に似たようなことを志している人はいるかもしれませんが、その人たちが私たちの技術を学ばずにOSASK-HBを追い抜くことはまず無理でしょう。いや追いつくことすら無理でしょう。+--コンソールに「 !"#$%&'() ... uvwxyz{|}~」と、キャラクタコード0x20から0x7eを出力するプログラムを作ると、第二世代用はたった13バイトになります。 
 +---あったりまえですがこれは16bitアプリではなくもちろん32bitのネイティブアプリです。 
 +---(参考:DOSの.COMファイルで書くと17バイトになります)。
-少し例を挙げます。 OSASK-HBにおいては、コンソール画面に「hello, world\n」と表示するアプリを、わずか16バイトで作ることができます。こんなサイズですがアプリの先頭の2バイトは誤認防止用の「47 01」というシグネチャが入っており、DOSの.COMファイルのようなヘッダのないフォーマットではありません(このシグネチャは全てのOSASK-HBアプリに共通して含まれます)。 +--第二世代用のアプリにはcpy.g01というものがあり、これはファイルのコピーや連結を行うことができるアプリです。このアプリは引数無しで起動すると、usageが出力されます。
-さらに、注意してほしいのですが、「hello, world\n」はそれだけで13バイトあります。アプリのフォーマットの効率の高さ(無駄の少なさ)が察せられるのではないでしょうか?これはもちろん、「hello, world\n」に特化したAPIを持つなどの卑怯なことはしないで実現しています +
-(参考:DOSの.COMファイルで書くと22バイトになります)。+
-別の例です。コンソールに「 !"#$%&'() ... uvwxyz{|}~」と、キャラクタコード0x20から0x7eを出力するプログラムを作ると、OSASK-HB用は13バイトになります。念のために書いておきますが、これは16bitアプリではなくもちろん32bitのネイティブアプリです +>>           usage>cpy.g01 [in:]input-file [[in:]input-file]... out:output-file
-(参考:DOSの.COMファイルで書くと17バイトになります)。+
-さらに別の例です。 OSASK-HBのアプリにはcpy.g01というものがあり、これはファイルのコピーや連結を行うことができるアプリです。このアプリは引数無しで起動すると、usageが出力されます。+---これの文字数を数えると、66文字あります。しかしながらこのcpy.g01というファイルは45バイトしかありません。たったの45バイトでも、コピーや連結ができる上に、66バイトものusage出力が可能なのです。 
 +---第一世代用のものでもとても小さいことがウリでしたが、第二世代はさらにその上を行きます。(そしてこれが、x86の本当の能力なのです。)
-     usage>cpy.g01 [in:]input-file [[in:]input-file]... out:output-file+-誤解がありそうなので書いておきますが、ただアプリを縮めるのではありません。こんな小さなサイズでもキチンと動作できるAPI。普通に作っても小さくなってしまうAPI。これが第二世代の能力です。
-これの文字数を数えると、66文字あります。 
-しかしながら、このcpy.g01というファイルはたったの45バイトしかありません。たったの45バイトでも、コピーや連結ができる上に、66バイトものusage出力が可能なのです。それがOSASK-HBの常識であり、x86の本当の能力なのです。+**アプリの互換性 [#vb864eb7]
-他のOSは機能密度の高いアプリを作りやすいAPIはどうあるべきかを考えていません。考えたつもりかもしれませんが、そんなのはOSASK-HBからすれば、考えていないに等しいのです。十分な汎用性や表現力を担保しつつ、かつ簡潔な表現を可能にするにはどうしたらいいのか、その答えがOSASK-HBのAPIにはつまっています。+第二世代~のアプリは他のOS上で実行可能!??
-このほかにもhexdump.g01やcalendar.g01など、紹介したいものはたくさんありますが、きりがないのでここまでにしておきます。+第一世代のアプリはQEMU等のエミュレータ無しではWindows上で実行することができませんでした(そらそーだw)。
 +しかし第二世代用のアプリはのエミュレータを使わずに''efg01''と呼ばれる20KB程度のローダを使うだけで、Windows上での実行が可能です(efg01の大きさはバージョンabcdw014時のもの)。
-*OSASK-HBの特徴(アプリの互換性): [#vb864eb7]+-COLOR(Purple){efg01つーのが専用のエミュレータってところか?} 
 +-COLOR(blue){そんなふうに考えてもらっていいと思います。} 
 +-COLOR(Purple){「なんだよQUMEがあるのにわざわざ独自エミュ作ったのかよバカバカしい!」} 
 +-COLOR(blue){まぁそんなふうに考えることもできるでしょう。}
-OSASK-HBのアプリは、ただ小さいだけではありません。他のOS上で実行可能にするということにも配慮しました。+-なんでヘンな独自エミュ作るの?qumeでいいじゃん! 
 +--まずは。圧倒的に小さい小さいってこと。QUME等はPC/ATが持つすべての機能をエミュレートしないといけません。機能・プログラムは複雑になり、速度も問題になってきます。efg01は本体がたったの20kbです。
-旧OSASKアプリは、QEMU等のエミュレータ無しでは、Windows上で実行することができませんでした。しかしOSASK-HB用のアプリは、QEMU等のエミュレータを使わずともefg01と呼ばれる20KB程度のローダを使うだけで、Windows上での実行が可能です(efg01の大きさはバージョンabcdw014時のもの)。 Windows上で、この極小のOSASK-HBアプリが動いてしまうのですよ!?なんだWindowsも「やればできる子」だったんですね、たった20KBのローダアプリを使うだけここまでできるんですから(笑)。+他の独自OS(第一世代を含む) 
 + ネイティブアプリ → 各種独自OS → QEMU → 実際のOS(Win・Linux・MacOSX等)→ 実機が動作
-efg01はLinux用もMonaOS用もMEG-OS用もあります。「はりぼてOS」用や旧OSASK用も検討されています。その気になればTownsOS用やDOS汎用(DOS|Extender的なもの)も用意できると思います。基本的にx86用32bitOSであれば、ほとんど対応可能なはずです。 efg01の移植には多少の苦労が伴いますが、それさえできれば、OSASK-HB用のアプリは再コンパイルしなくてもバイナリのまま動いてしまうのです。それに苦労といってもたかが20KBのアプリです。それだけで全てのOSASK-HB用のアプリが使えるようになるのですから、安いものです。+efg01を使い、OSASK-HBアプリを実行~ 
 + ネイティブアプリ → eg01 → 実際のOS(Win・Linux・MacOSX等)→ 実機が動作
-これで分かるように、OSASK-HBアプリは単に機能密度が高いというだけではなく、OS横断的な共通互換アプリしての資質まで備えているのです。むろんこの分野ではJavaや.netというすばらしい先人がいます。これらはx86という壁も越えているので、互換性に関しては格が違います。しかしJavaや.netのランタイムは非常に大きく、waba等の軽量実装でさえ40KBを切ることは非常に難しいです。またOSASK-HBアプリはx86ネイティブなので、JIT等が不要で実行開始までのレイテンシもほとんどありません。そして多分Javaや.netでは.g01よりも小さく作ることはできないでしょう。・・・したがってOSASK-HBを「バイトコードを使わずにやったらどこまでいけるのか」の実験例としてみていただければと思います。+--これを見ただけでも無駄を大きく省いていることが解ると思います。
-この「エミュレータなしで実行可能にする」を実現しようとすると、APIの設計の選択肢が減ります。そのため旧OSASKアプリでは実現できませんでしたし、他のOS用のアプリでもこのような特徴を挙げているものはほとんどないと思います。サイズの追求という面とは競合もしています。つまりこのバイナリ互換を捨てれば、アプリサイズはもっと小さくできたのです。・・・しかしこれは逆にとらえてほしいです。互換性まで盛り込みながらも、このサイズを達成できているのだ、と。+***efg01は既にLinux用・MonaOS用・MEG-OS用もある [#d5679f77]
-せっかく苦労して作ったアプリがOSASK-HBでしか動かないなんて、寂しいではありませんか。最高のアプリを、好きなOSの上で使ってもらう、これこそがKの理想です。仮に機能密度の低いアプリがOSを超えて利用できたとしても、そんなものは使う気がしないというものです。+はりぼてOS用・第一世代用、その気になればTownsOS用やDOS汎用(DOS|Extender的なもの)も可能なはずです。 
 +基本的にx86用32bitOSであれば、ほとんど対応可能なはずです。 efg01の移植には多少の苦労が伴いますが、それさえできれば、第二世代用のアプリは''再コンパイルしなくてもバイナリのまま''動いてしまいます。それに苦労といってもたかが20KBのアプリです。それだけで全ての第二世代用のアプリが使えるようになります。
 +第二世代用(のAPIを利用した)アプリは単に機能密度が高いというだけではなく、OS横断的な共通互換アプリしての資質まで備えているのです。
-*OSASK-HBの特徴(実用性): [#z893df63]+-COLOR(purple){Javaでいいじゃんwww} 
 +--Javaや.netというすばらしい先人がいます。これらはx86という壁も越えているので、互換性に関しては格が違います。 
 +しかしその代償としてJavaや.netのランタイムは非常に大きく、waba等の軽量実装でさえ40KBを切ることは非常に難しいです。 
 +また第二世代用のアプリはx86ネイティブなので、JIT等が不要で実行開始までのレイテンシもほとんどありません。そして多分Javaや.netでは.g01よりも小さく作ることはできないでしょう。・・・したがって第二世代を「バイトコードを使わずにやったらどこまでいけるのか」の実験例としてみていただければと思います。
-ここまでの説明だと、実用性に乏しいhelloなどが極端に小さいサイズで書けて、それでそれが他のOSでも動くだけ、なんていう印象を持つかもしれません。しかし現状はもう少し進んでいます(バージョンabcdw014時点)。+この「エミュレータなしで実行可能にする」を実現しようとすると、APIの設計の選択肢が減ります。そのため第一世代用アプリでは実現できませんでしたし、他のOS用のアプリでもこのような特徴を挙げているものはほとんどないと思います。サイズの追求という面とは競合もしています。つまりこのバイナリ互換を捨てれば、アプリサイズはもっと小さくできたのです。・・・しかしこれは逆にとらえてほしいです。互換性まで盛り込みながらも、このサイズを達成できているのだ、と。
-たとえば、OSASKや「はりぼてOS」の開発ツールの定番に、naskというアセンブラがあります。このnaskはwin32版で27,648というサイズで、x86用アセンブラとしては世界最小をうたっています。このサイズは当時から「さすがだ」とたくさんの人に評価していただきました。しかし実はこのnaskはすでにOSASK-HB用に移植が完了していて、そのサイズは22,824です。つまり4,824バイトも小さくなっているのです。機能は全く損なっていませんし、先のefg01を持っていれば、この小さくなったnaskもWindows上で実行できます。そればかりか、Linux上でも、ほかのOS上でも動くのに、こんなに小さくなったのです。+***バイナリのまま互換を保てることで生まれる可能性 [#qa94293b] 
 +-当然ですが、第一世代用に作ったアプリを他のOSで動かそうとすると丸々移植・・・いやそれどころか事実上作り直しになるでしょう。 
 +-せっかく苦労してアプリを作ってもOSASKでしか動かない。アプリを作ってくださる人のモチベーションを大きく下げる要因かもしれません 
 +-しかし第二世代用に作ったアプリはソース互換どころかefg01によってバイナリが直接動作します。つまり、「移植をする」という手間どころか概念が不要になるのです! 
 + 
 +*実用性 [#z893df63] 
 + 
 +COLOR(purple){APIがいくらもない物が小さくても当たり前だろw なんも作れネェよこんなんじゃwww} 
 + 
 +おっと。こう考える人もいるかもしれませんね。(現にまだまだAPIは不足しています) 
 +でもそう考えるのは早計ですよ。アナタが望むアプリはまだ作れないかもしれませんが、既に''十分実用''できるものが作られ、実際に動いています。 
 + 
 +-例:nask 
 +--第一世代(OSASK)や「はりぼてOS」の開発ツールの定番に、naskというアセンブラがあります。(naskについてはこちら) 
 +--naskはwin32版で27,648というサイズで、x86用アセンブラとしては世界最小をうたっています。このサイズは当時から「さすがだ」とたくさんの人に評価していただいています。 
 +--このnaskはすでに第二世代用(efg01で動く)に移植が完了していて、そのサイズは22,824です。つまり4,824バイトも小さくなっているのです。 
 +--naskは決して多機能とは呼べない(GAS等のモンスター級に比べればw)単機能アセンブラですが、現に第一世代(OSASK)・そのアプリ・はりぼてOSのコンパイルに実際に使用されています。そしてこの移植時にそれらの機能はなにも損なっていません。 
 +--先のefg01を持っていれば、この小さくなったnaskもWindows上で実行できますしLinux上でも動いています。(当然eft01さえ移植すれば、他のOS上でも動きます。) 
 +--こんなに小さくなったのに・・・・
Line 108: Line 135:
           ・makefont   3,072 → 72  OSASKと「はりぼてOS」用の半角フォントデータ生成プログラム            ・makefont   3,072 → 72  OSASKと「はりぼてOS」用の半角フォントデータ生成プログラム
 +これはある意味福音かもしれませんな。
 +実際に極初期のこれらのツールをLinuxに移植した時はすごく大変でした。
 +(今は元の段階から他OSへの移植を考慮されているので技術的にはずいぶん楽にはなりましたが)
 +技術的なことはもちろんでしたがとにかく数が多い!
 +アレを移植して次にこれを移植して・・・
 +少なくともバイナリのままで動き、移植はefg01のみに集中できればどれほど楽か・・・ね。
 +
 +*問題点は? [#g7ceb1dd]
 +-残念ながら現時点ではGUIまわりのAPIが装備されていません。
 +-第二世代用のアプリケーションフォーマットやAPIは、残念ながら第一世代とは互換性のないものになっています(とはいえ、APIブリッジなどでサポート可能ではありますが)。
 +-ドキュメントやサンプル等、作ってみたい人へのフォローが貧弱すぎる(汗
 +
 +*リンク [#k730bbb1]
技術的な細部に興味があるひとは、とりあえず http://wiki.osask.jp/?OsaTech を見てください 技術的な細部に興味があるひとは、とりあえず http://wiki.osask.jp/?OsaTech を見てください
 +
 +第二世代の構想の最中、K氏によって書かれた文書郡
 +#ls2(GUIGUI01/)
 +----
 +#ls2(OSASK-HB/)

トップ   差分 バックアップ 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ
新着

目次
メンバー一覧


最新の20件
2016-10-01 2016-09-08
  • @MenuBar.
2016-09-07 2016-09-04 2016-08-15 2015-09-23 2014-07-30 2014-07-04 2014-02-04 2013-10-26 2013-06-21 2013-06-17 2013-06-15 2013-04-02 2013-02-09 2013-02-04 2012-12-25 2012-12-01 2012-05-28 2012-03-31

トピック一覧
一般用コメント最新
新掲示板lina
2016/9/5 20:58
SandBoxゲスト
2016/9/4 12:01
RecentDeletedlina
2015/6/2 19:29
Old-OSASK-MLlina
2014/6/29 9:14
hideyosi/メールhideyosi
2014/1/6 20:17
hideyosi/募集中lina
2013/11/8 19:56

このサイトは川合秀実から委託を受けて、OSASKコミュニティによって管理・運営されています。