OSASK-WikiのKの落書きの過去ログ
- 本家:OSA:K
- 過去ログにコメントしたい人も、本家のこめんと欄に突っ込んでください。
- そのうちKによって下のこめんと欄に移動しますので。
kabaとkabao
- (2005.04.03)
- kabaの話の続きです。
- バイトコードで、任意の環境上で動くプログラムをkabaとしましたが、そのkabaとのコミュニケーション可能なネイティブコードを、kabao386ということにしました。
- kabao386には2つの書式がありまして、それぞれフラット用(a)とマルチセグメント用(b)といいます。どちらもタスクセーブ可能で、セーブしたOSと再開するOSが同じである必要もありません。ネイティブなので、Java(waba含む)や.NETなどよりも格段に高速に動作します(その代わり、IA-32の32bit環境が利用可能なOSでしか動きませんが)。
- 最初のサポートはOSASKとwin32を予定していて、その後LinuxやMonaにも実行用アプリを提供したいです。
- ただ少しさみしい問題もあります。kabao386aはwin32やOSASKやLinuxやMonaなど、おそらく全てのIA-32のOS上で実行可能なのですが、十分な抽象化を検討した結果、今のGOやその他のC言語ではプログラミングできないということになりました。ASKAやnaskやNASMでがんばらないとアプリやライブラリやDLLやドライバなどが作れません。
- いっぽう、kabao386bはGOなどのC言語も問題なく使える書式なのですが、今度はOSASKとTownsOSくらいでしか実行できそうにありません。これは結局、アプリがシステムに依頼して自由にセグメントセレクタを作れるようになっているかと、アプリがセグメントレジスタに好きなセレクタを入れていいかという問題に帰着していまして、こういうことはフラットモデルプログラミングしかできない他のOSでは、どうやっても克服できないのです。
- これができないと、メモリアドレスの仮想化ができない。メモリアドレスの仮想化は、タスクセーブには必須で、ランタイムのメモリ空間整理時にも必要。
- 僕としてはこれでも会心のアイデアなのです。
- 今はこのことしか考えられない状態なので、勢いでhelloくらいが表示できる共通アプリと、win32とOSASK用のランタイムくらいは作ってしまいたいです。