(0) 背景
- OSASKをIA-32以外に移植したいという人がいるかもしれないと、ある大学の先生から連絡を受けました。幸い関東の大学なので、もし本当にそんな人がいるならその人と直接いろいろと話すつもりです。でもそこで話す内容をここにまとめておくことは、もしかしたら将来同じようなことを考える人がいた場合に有益だと思うので、ここに書いておきます。
- 現時点ではあくまでも「いるかもしれない」という段階です。仮に本当にその人がやる気になったとしても、そのOSが一般に公開されるかどうかは分かりません。
- ここで書く内容は OSASK ver.4.9 までのOSASKを移植するとしたらという話であって、 OSASK ver.5.0 以降のOSASKを移植する話ではありません。 OSASK ver.5.0 以降のOSASKを移植するのであれば、おそらくkhabaを移植するだけでOS本体もアプリも大半は移植完了ということになるはずです。
(1) 概要
- OSASKの移植とはいっても、実際はOSASKのソースを手直しして組み込むというよりは、適当にOSを作ってそれにOSASKライクなAPIを載せるという手法をとることになると思います。OSASKはCPUに依存してでも効率を追及するべきなのですから、ソースの流用は基本的にしないほうがいいと思うのです。アルゴリズムについては、よさそうなものがあれば、それは利用していいと思います。
- ソースを手直しして作るという方法でやったら、多分うまくいかないと思います。たぶん「負の遺産」みたいなものも混ざっていると思うので、そんなものを引き継ぐ必要はないですし。
- 仮に移植版OSASKを作った場合、それがどれほどIA-32用のソースを利用していたとしても、派生物であることに変わりはないのですから、そのOSの名前に「OSASK」を含められるかどうかは難しいところです。究極的にはKが認めれば問題はないわけなのですが、基本的には期待しないほうがいいと思います。
- 具体的にはオリジナルでもLinuxでもBSDでもMINIXでもDOSでも何でもいいですが(「はりぼてOS」でもOK)、とにかく何か適当にOSを作ります。その上で、API部分をOSASKチックなものにしていけばいいでしょう(完全互換である必要はないと思います。まあアプリをソースレベルで互換にしたいなどという野望があれば完全互換のほうがいいかもしれませんが、でもAPIブリッジをはさめる構成にしておけばそこまでこだわらなくてもよさそうです)。
- 具体的にはAPI呼び出しをポインタ渡しにするとか、シグナルや仮想化やメモリレスアーキテクチャを意識した仕様にするとか、そういうことです。
- 基本的にCPUが違うのでバイナリレベルでのアプリ互換は無理です(それを何とかするのがkhabaなわけで)。ソースレベルでの互換は可能だろうと思いますが、それはCなどで書かれたアプリに限定されるでしょう。アセンブラで作られたアプリについてはソースレベル互換にはできないと思います。
- APIを無事に構築できたらあとはOS部を見直してOSASKのように小さく高速になるように努力すればいいでしょう。
こめんと欄
Last-modified: 2009-11-17 (火) 00:00:00 (JST) (323d) by k-tan