* KHBIOSについて -(by [[K]], 2015.03.20) ** (1) KHBIOSとは? -趣味でx86の32bitの自作OSを作っていると、デバイスドライバの作成が結構苦労する。OSを作りたいのであって、デバイスを制御して遊びたいわけではない。 -そもそもそのためにBIOSの仕組みがあるわけだが、AT互換機の場合、32ビットモードからではBIOSはあまり使いやすくはないし、FM-TOWNSやNEC-PC-9801との互換性もない。 -ないなら作ろう、そういう発想で「拡張汎用BIOS」という名前でプロジェクトは始まった。後に、作品名を半角英数化したほうが都合がよいと分かり「KHBIOS」に名称変更した。 -また、BIOSが起動デバイスとして認識しないデバイスからOSを起動させるという目的もあった。 --当時、OSもアプリもデータもOSASKによってコンパクトになり、だからこれらを一つのメディア(たとえばメモリカードなど)に収めておけば、このメモリカードから起動することで、いつでもどこでも自分の環境が持ち歩ける、PCが壊れてもOSやアプリの再インストールは必要なくて、便利なことこの上ない。というPCの使い方の提案をしていた。これを「OSASKスタイル」とか「KHBIOSスタイル」と言っていた。 --当時、OSもアプリもデータもOSASKによってコンパクトになり、だからこれらを一つのメディア(たとえばメモリカードなど)に収めておけば、このメモリカードから起動することで、いつでもどこでも自分の環境が持ち歩ける、PCが壊れてもOSやアプリの再インストールは必要なくて、便利なことこの上ない。というPCの使い方の提案をしていた。これを「OSASKスタイル」とか「KHBIOSスタイル」と言っていた。そもそも昔のMS-DOSなどでは一枚のディスクに全部を入れられたので、その原点に帰ろうというそれだけのことでもある。 --これを実現するにはメモリカードから起動する必要があり、たいていのBIOSはこれに対応していないので、KHBIOSが必要になる。 -仕組みとしては、まずKHBIOSが各機種の標準BIOSからOSとして起動し、その後メモリの一部にドライバなどと一緒に居座って、KHBIOS対応のOSを探して起動する。 ** (2) 経過 -つまり、OSASKからデバイスドライバを切り離して適当に整理すればそれでよかった・・・はずなのだが、設計しているうちに欲が出てきた。 --(2-1) HDDのパーティションやファイルシステムも支援してやろう --(2-2) メモリ管理も支援してやろう: メモリ構成は機種によって違うので、それを吸収してやりたかった --(2-3) 複数のOSがメモリを切り分けて同居できるようにしよう --(2-4) CPU時間のスケジューラも付けよう、これを使えば複数のOSが同時に動作することもできる --(2-5) 適当なバイトコード体系を定義してやって、それでOSを記述した場合はCPUに依存せずに動作できるようにしよう -などと構想が猛烈に巨大化して、ついに当時の[[K]]の実装力を超えてしまった。 -なお(2-5)については各OS上でCPUに依存しないアプリケーションを作りたいと思った時にも必要だと考えて、khabaというプロジェクトに設計を引き継いだ。 ** (3) リンクなど -OS-Wiki内のページ: http://oswiki.osask.jp/?KHBIOS * こめんと欄 #comment