(57)【要約】【課題】他のＯＳを改造することなく、かつセキュリティを強化させた状態で、複数のＯＳを起動すること。【解決手段】ＯＳ−Ａ１００の起動時に、ＯＳ−Ｂ２００が起動する際に使用する物理メモリ領域またはＯＳ−Ｂ２００が起動後に使用する物理メモリ領域とは異なる物理メモリのアドレスを配置位置として指定するロード位置指定部１１３と、指定された物理メモリ１１６のアドレスに配置されて起動した場合に、ＯＳ−Ｂ２００が起動の際に使用する物理メモリ領域へのアクセスを許容するように、ＯＳ−Ｂ２００が起動するために使用する物理メモリ領域の物理メモリアドレスとＯＳ−Ａ１００の仮想空間の仮想メモリアドレスとを対応付けてＯＳ−Ａ１００のページテーブル１０６を変更するページテーブル変更部１０５とを備えた。【選択図】        図１
2004303028.tif 000002
【特許請求の範囲】
【請求項１】
一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムであって、
起動時に、他のオペレーティングシステムが起動の際に使用する物理メモリ領域および前記他のオペレーティングシステムが起動後に使用する物理メモリ領域とは異なる物理メモリのアドレスを配置位置として指定する配置位置指定手順と、
前記配置位置指定手順によって指定された物理メモリのアドレスに配置されて起動された場合に、前記他のオペレーティングシステムの起動の際に使用する物理メモリ領域へのアクセスを許容するように、前記他のオペレーティングシステムが起動の際に使用する物理メモリ領域の物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスとを対応付けるように前記オペレーティングシステムのページテーブルを変更する第１のページテーブル変更手順と、
をコンピュータに実行させることを特徴とするオペレーティングシステム。
【請求項２】
前記第１のページテーブル変更手順は、さらに、前記他のオペレーティングシステムが起動の際に使用する物理メモリ領域の物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスとを対応付けた前記オペレーティングシステムのページテーブルを、物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスが一致するように変更することを特徴とする請求項１に記載のオペレーティングシステム。
【請求項３】
前記オペレーティングシステムの起動の際に使用する物理メモリ領域と起動後に使用する物理メモリ領域とを、起動処理の初期段階においてはアクセスを許容するように、前記オペレーティングシステムがアクセス可能な物理メモリ領域の範囲を定めたメモリマップを書き換える第１のメモリマップ変更手順と、
前記オペレーティングシステムの前記ページテーブルを作成する前に、起動後に使用する物理メモリ領域へのアクセスを許容し、それ以外の物理メモリ領域へのアクセスを禁止するように、前記メモリマップを書き換える第２のメモリマップ変更手順と、
をさらにコンピュータに実行させることを特徴とする請求項１または２に記載のオペレーティングシステム。
【請求項４】
前記他のオペレーティングシステムの初期化処理を監視して、前記オペレーティングシステムの動作に影響を与える命令または複数のオペレーティングシステムを起動するために変更することが必要な命令を代替え処理する監視手順
をさらにコンピュータに実行させることを特徴とする請求項１〜３のいずれか一つに記載のオペレーティングシステム。
【請求項５】
前記監視手順は、ＣＰＵをトレースモードに設定した際に発生するデバッグ割り込みを用いて、前記他のオペレーティングシステムの次に実行する命令を取得し、取得した命令に対して代替え処理をすべきか否か判定する処理手順を含むことを特徴とする請求項４に記載のオペレーティングシステム。
【請求項６】
前記監視手順は、前記他のオペレーティングシステムのメモリマップを取得する命令を検出し、先に取得した前記他のオペレーティングシステムの前記メモリマップを、前記他のオペレーティングシステムの起動する物理メモリ領域のみが使用できるように書き換える処理手順を含むことを特徴とする請求項５に記載のオペレーティングシステム。
【請求項７】
前記監視手順は、前記デバッグ割り込みを用いて、前記他のオペレーティングシステムのページテーブルのアドレスをＣＰＵのページテーブルレジスタに設定する命令を検出し、検出された命令を実行せずにスキップする処理手順を含むことを特徴とする請求項５または６に記載のオペレーティングシステム。
【請求項８】
前記監視手順は、前記デバッグ割り込みを用いて、前記他のオペレーティングシステムの割り込みテーブルのアドレスをＣＰＵの割り込みテーブルレジスタに設定する命令を検出し、検出された命令を実行せずにスキップする処理手順を含むことを特徴とする請求項５〜７のいずれか一つに記載のオペレーティングシステム。
【請求項９】
前記他のオペレーティングシステムの初期化処理の終了を検出し、ＣＰＵに設定したトレースモードを解除する解除手順をさらにコンピュータに実行させることを特徴とする請求項５〜８のいずれか一つに記載のオペレーティングシステム。
【請求項１０】
前記他のオペレーティングシステムの初期化処理中に、前記他のオペレーティングシステムを、前記他のオペレーティングシステムが単独で起動された場合に配置されるべき前記他のオペレーティングシステムの仮想空間上の仮想メモリアドレスと同じ位置である他のオペレーティングシステムの仮想空間上の仮想メモリアドレスに配置されるように、前記オペレーティングシステムのページテーブルを変更する第２のページテーブル変更手順
をさらにコンピュータに実行させることを特徴とする請求項１〜９のいずれか一つに記載のオペレーティングシステム。
【請求項１１】
前記他のオペレーティングシステムの初期化処理終了後に、前記オペレーティングシステムが使用する物理メモリ領域以外の物理メモリ領域をアクセス禁止するように、前記オペレーティングシステムのページテーブルを変更する第３のページテーブル変更手順を
さらにコンピュータに実行させることを特徴とする請求項１〜１０のいずれか一つに記載のオペレーティングシステム。
【請求項１２】
一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムであって、
起動時に、他のオペレーティングシステムが起動の際に使用する物理メモリ領域および前記他のオペレーティングシステムが起動後に使用する物理メモリ領域とは異なる物理メモリのアドレスを配置位置として指定する配置位置指定手順と、
前記オペレーティングシステムが起動の際に使用する物理メモリ領域と起動後に使用する物理メモリ領域とを、起動処理の初期段階ではアクセスを許容し、かつ、前記オペレーティングシステムが起動の際に使用する物理メモリ領域と起動後に使用する物理メモリ領域とが連続する場合、両物理メモリ領域の間に所定サイズだけアクセス不可能な物理メモリ領域を設定するように、前記オペレーティングシステムがアクセス可能な物理メモリ領域の範囲を定めたメモリマップを書き換える第１のメモリマップ変更手順と、
前記オペレーティングシステムのページテーブルを作成する前に、起動後に使用する物理メモリ領域へのアクセスを許容し、それ以外の物理メモリ領域へのアクセスを禁止するように、前記メモリマップを書き換える第２のメモリマップ変更手順と、
をコンピュータに実行させることを特徴とするオペレーティングシステム。
【請求項１３】
複数のオペレーティングシステムを起動するオペレーティングシステム起動装置であって、
オペレーティングシステムがアクセス可能な物理メモリ領域の範囲を定めたメモリマップと、
仮想メモリアドレスと物理メモリアドレスとを対応付けたページテーブルと、
一つのオペレーティングシステムの起動時に、他のオペレーティングシステムが起動する際に使用する物理メモリ領域および前記他のオペレーティングシステムが起動後に使用する物理メモリ領域とは異なる物理メモリのアドレスを配置位置として指定する配置位置指定手段と、
前記配置位置指定手段によって指定された物理メモリのアドレスに配置されて起動した場合に、他のオペレーティングシステムが起動の際に使用する物理メモリ領域へのアクセスを許容するように、前記他のオペレーティングシステムが起動するために使用する物理メモリ領域の物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスとを対応付けるように前記オペレーティングシステムの前記ページテーブルを変更するページテーブル変更手段と、
を備えたことを特徴とするオペレーティングシステム起動装置。
【請求項１４】
前記他のオペレーティングシステムが起動するために使用する物理メモリ領域の物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスとを対応付けた前記オペレーティングシステムの前記ページテーブルを、物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスが一致するように変更する前記ページテーブル変更手段
をさらに備えたことを特徴とする請求項１３に記載のオペレーティングシステム起動装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムおよびオペレーティングシステム制御装置に関し、特に、他のオペレーティングシステムを改造することなく複数のオペレーティングシステムを起動することができるオペレーティングシステムおよびオペレーティングシステム起動装置に関する。
【０００２】
【従来の技術】
通常のコンピュータでは、一つのオペレーティングシステムがプロセッサ、メモリ、二次記憶装置などのコンピュータ資源を管理し、コンピュータが効率良く動作できるように資源スケジュールを実施している。しかし、オペレーティングシステムには、バッチ処理に優れているもの、ＴＳＳ（Ｔｉｍｅ  Ｓｈａｒｉｎｇ  Ｓｙｓｔｅｍ）に優れているもの、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）に優れているものなど様々な種類があることから、各ＯＳの特徴を活かして複数のＯＳを同時に利用したいという要求がある。
【０００３】
たとえば、大型計算機においては、実際の業務に伴うオンライン処理を実行するオペレーティングシステムと、開発用のオペレーティングシステムとを一台のコンピュータで動作させたいという要求がある。あるいは、ＧＵＩの整っているオペレーティングシステムと、実時間性に優れているオペレーティングシステムとを同時に稼動させたいという要求もある。
【０００４】
しかしながら、個々のオペレーティングシステムは、単独でコンピュータ資源の管理を実施することを前提として設計されていることから、複数のオペレーティングシステムを共存させるためには、個々のオペレーティングシステムに対して何らかの改造が必要となる。
【０００５】
たとえば、あるオペレーティングシステムを起動した後で他のオペレーティングシステムを起動するためには、先に起動したオペレーティングシステムの走行環境を破壊することなく他のオペレーティングシステムを起動する必要がある。したがって、他のオペレーティングシステムを物理メモリへロ−ドする場合に、先に起動したオペレーティングシステムがロードされている物理メモリ領域が上書きされることや、コンピュータに接続された入出力装置の初期化が繰り返しおこなわれることなどを防ぐ必要がある。
【０００６】
そこで、先に起動したオペレーティングシステムの走行環境を破壊することなく他のオペレーティングシステムを起動する技術が開発されている（たとえば、特許文献１、２および３参照。）。
【０００７】
【特許文献１】
特開平１１−１４９３８５号公報
【特許文献２】
特開２００１−２１６１７２号公報
【特許文献３】
特開平８−２１２０８９号公報
【０００８】
【発明が解決しようとする課題】
しかしながら、かかる従来技術では、後から起動するオペレーティングシステムを改造する必要がある。しかしながら、オペレーティングシステムは、Ｌｉｎｕｘ（Ｒ）やＵＮＩＸ（Ｒ）のようにソースコードが公開されているものばかりでなく、Ｗｉｎｄｏｗｓ（Ｒ）等のようにソースコードが非公開なものもあるため、オペレーティングシステムを改造しなければならないとすると、同時に稼働できるオペレーティングシステムの種類が限られてしまうという問題がある。
【０００９】
また、いずれの従来技術も共有メモリ領域を介して、複数のオペレーティングシステム間の命令やデータの授受をおこなっている。このため、共有メモリ領域に悪意をもったプログラムを配置させることによって、たとえばあるオペレーティングシステムから他のオペレーティングシステムの非共有メモリ領域に格納されているデータを改ざんしたり、不正読み込みをおこなうことができ、セキュリティが低下してしまう。このため、複数のオペレーティングシステムを一台のコンピュータで起動するという技術が却ってコンピュータのセキュリティを不安定なものにしてしまうという問題がある。
【００１０】
この発明は、上述した従来技術による問題点を解消するためになされたものであり、他のオペレーティングシステムを改造することなく、かつセキュリティを強化させた状態で、複数のオペレーティングシステムを起動することができるオペレーティングシステムおよびオペレーティングシステム制御装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記目的を達成するため、請求項１にかかる発明は、一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムであって、起動時に、他のオペレーティングシステムが起動の際に使用する物理メモリ領域および前記他のオペレーティングシステムが起動後に使用する物理メモリ領域とは異なる物理メモリのアドレスを配置位置として指定する配置位置指定手順と、前記配置位置指定手順によって指定された物理メモリのアドレスに配置されて起動された場合に、前記他のオペレーティングシステムの起動の際に使用する物理メモリ領域へのアクセスを許容するように、前記他のオペレーティングシステムが起動の際に使用する物理メモリ領域の物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスとを対応付けるように前記オペレーティングシステムのページテーブルを変更する第１のページテーブル変更手順と、をコンピュータに実行させることを特徴とする。
【００１２】
この請求項１の発明によれば、他のオペレーティングシステムが起動する際に使用する物理メモリ領域や前記他のオペレーティングシステムが起動後に使用する物理メモリ領域とは異なる物理メモリのアドレスを配置位置として指定し、指定されたアドレスに配置されて起動した場合に、他のオペレーティングシステムが起動するために使用する物理メモリ領域へのアクセスを許容するように、前記他のオペレーティングシステムが起動するために使用する物理メモリ領域の物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスとを対応付けるように前記オペレーティングシステムのページテーブルを変更することで、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを起動することができる。また、複数のオペレーティングシステム間のデータのやりとりに共有メモリ領域を必要としないので、セキュリティを強化させた状態で、複数のオペレーティングシステムを起動することができる。
【００１３】
また、請求項２にかかる発明は、請求項１に記載のオペレーティングシステムにおいて、前記第１のページテーブル変更手順は、さらに、前記他のオペレーティングシステムが起動の際に使用する物理メモリ領域の物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスとを対応付けた前記オペレーティングシステムのページテーブルを、物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスが一致するように変更することを特徴とする。
【００１４】
この請求項２の発明によれば、前記他のオペレーティングシステムが起動するために使用する物理メモリ領域の物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスとを対応付けた前記オペレーティングシステムの前記ページテーブルを、物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスが一致するように変更することで、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを起動することができる。また、起動済のオペレーティングシステムの走行環境を破壊することなく他のオペレーティングシステムを安全に起動することができる。
【００１５】
また、請求項３にかかる発明は、請求項１または２に記載のオペレーティングシステムにおいて、前記オペレーティングシステムの起動の際に使用する物理メモリ領域と起動後に使用する物理メモリ領域とを、起動処理の初期段階においてはアクセスを許容するように、前記オペレーティングシステムがアクセス可能な物理メモリ領域の範囲を定めたメモリマップを書き換える第１のメモリマップ変更手順と、前記オペレーティングシステムの前記ページテーブルを作成する前に、起動後に使用する物理メモリ領域へのアクセスを許容し、それ以外の物理メモリ領域へのアクセスを禁止するように、前記メモリマップを書き換える第２のメモリマップ変更手順と、をさらにコンピュータに実行させることを特徴とする。
【００１６】
この請求項３の発明によれば、前記オペレーティングシステムが起動するために使用する物理メモリ領域と起動後に使用する物理メモリ領域とを、起動処理の最初はアクセスを許容する内容に、前記オペレーティングシステムがアクセス可能な物理メモリ領域の範囲を定めたメモリマップを書き換えて、前記オペレーティングシステムの前記ページテーブルを作成する前に、起動後に使用する物理メモリ領域へのアクセスを許容し、それ以外の物理メモリ領域へのアクセスを禁止する内容に、前記メモリマップを書き換えることで、単独で起動する際の物理メモリ領域以外の位置に起動することができる。また、オペレーティングシステムで使用する物理メモリ領域しかアクセスを許容しないので、セキュリティを強化させた状態で、複数のオペレーティングシステムを起動することができる。
【００１７】
また、請求項４にかかる発明は、請求項１〜３に記載のオペレーティングシステムにおいて、前記他のオペレーティングシステムの初期化処理を監視して、前記オペレーティングシステムの動作に影響を与える命令または複数のオペレーティングシステムを起動するために変更することが必要な命令を代替え処理する監視手順をさらにコンピュータに実行させることを特徴とする。
【００１８】
この請求項４の発明によれば、他のオペレーティングシステムの初期化処理を監視して、オペレーティングシステムの動作に影響を与える命令や複数のオペレーティングシステムを起動するために変更することが必要な命令を代替え処理することで、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができる。
【００１９】
また、請求項５にかかる発明は、請求項４に記載のオペレーティングシステムにおいて、前記監視手順は、ＣＰＵをトレースモードに設定した際に発生するデバッグ割り込みを用いて、前記他のオペレーティングシステムの次に実行する命令を取得し、取得した命令に対して代替え処理をすべきか否か判定する処理手順を含むことを特徴とする。
【００２０】
この請求項５の発明によれば、他のオペレーティングシステムの初期化処理の監視手順に、ＣＰＵをトレースモードに設定した際に発生するデバッグ割り込みを用いて、他のオペレーティングシステムの次に実行する命令を取得し、代替え処理をすべきか判定する処理を含むことで、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができる。
【００２１】
また、請求項６にかかる発明は、請求項５に記載のオペレーティングシステムにおいて、前記監視手順は、前記他のオペレーティングシステムのメモリマップを取得する命令を検出し、先に取得した前記他のオペレーティングシステムの前記メモリマップを、前記他のオペレーティングシステムの起動する物理メモリ領域のみが使用できるように書き換える処理手順を含むことを特徴とする。
【００２２】
この請求項６の発明によれば、前記他のオペレーティングシステムの初期化処理の監視手順において、前記他のオペレーティングシステムのメモリマップを取得する命令を検出し、先に取得した前記他のオペレーティングシステムの前記メモリマップを、前記他のオペレーティングシステムの起動する物理メモリ領域のみが使用できる内容に書き換える処理を含むことで、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができる。また、各オペレーティングシステムで使用する物理メモリ領域しかアクセスを許容しないので、セキュリティを強化させた状態で、複数のオペレーティングシステムを起動することができる。
【００２３】
また、請求項７にかかる発明は、請求項５または６に記載のオペレーティングシステムにおいて、前記監視手順は、前記デバッグ割り込みを用いて、前記他のオペレーティングシステムのページテーブルのアドレスをＣＰＵのページテーブルレジスタに設定する命令を検出し、検出された命令を実行せずにスキップする処理手順を含むことを特徴とする。
【００２４】
この請求項７の発明によれば、前記他のオペレーティングシステムの初期化処理の監視手順に、ＣＰＵをトレースモードに設定した際に発生するデバッグ割り込みを用いて、前記他のオペレーティングシステムのページテーブルのアドレスをＣＰＵのページテーブルレジスタに設定する命令を検出し、実行させないようスキップする処理を含むことで、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができる。
【００２５】
また、請求項８にかかる発明は、請求項５〜７に記載のオペレーティングシステムにおいて、前記監視手順は、前記デバッグ割り込みを用いて、前記他のオペレーティングシステムの割り込みテーブルのアドレスをＣＰＵの割り込みテーブルレジスタに設定する命令を検出し、検出された命令を実行せずにスキップする処理手順を含むことを特徴とする。
【００２６】
この請求項８の発明によれば、前記他のオペレーティングシステムの初期化処理の監視手順に、ＣＰＵをトレースモードに設定した際に発生するデバッグ割り込みを用いて、前記他のオペレーティングシステムの割り込みテーブルのアドレスをＣＰＵの割り込みテーブルレジスタに設定する命令を検出し、実行させないようスキップする処理を含むことで、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができる。
【００２７】
また、請求項９にかかる発明は、請求項５〜８に記載のオペレーティングシステムにおいて、前記他のオペレーティングシステムの初期化処理の終了を検出し、ＣＰＵに設定したトレースモードを解除する解除手順をさらにコンピュータに実行させることを特徴とする。
【００２８】
この請求項９の発明によれば、前記他のオペレーティングシステムの初期化処理の終了をを検出し、ＣＰＵに設定したトレースモードを解除することで、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができる。
【００２９】
また、請求項１０にかかる発明は、請求項１〜９に記載のオペレーティングシステムにおいて、前記他のオペレーティングシステムの初期化処理中に、前記他のオペレーティングシステムを、前記他のオペレーティングシステムが単独で起動された場合に配置されるべき前記他のオペレーティングシステムの仮想空間上の仮想メモリアドレスと同じ位置である他のオペレーティングシステムの仮想空間上の仮想メモリアドレスに配置されるように、前記オペレーティングシステムのページテーブルを変更する第２のページテーブル変更手順をさらにコンピュータに実行させることを特徴とする。
【００３０】
この請求項１０の発明によれば、前記他のオペレーティングシステムの初期化処理中に、前記他のオペレーティングシステムを、前記他のオペレーティングシステムが単独で起動された場合に配置されるべき前記他のオペレーティングシステムの仮想空間上の仮想メモリアドレスと同じ位置である他のオペレーティングシステムの仮想空間上の仮想メモリアドレスに配置されるように、前記オペレーティングシステムのページテーブルを変更することで、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができる。
【００３１】
また、請求項１１にかかる発明は、請求項１〜１０に記載のオペレーティングシステムにおいて、前記他のオペレーティングシステムの初期化処理終了後に、前記オペレーティングシステムが使用する物理メモリ領域以外の物理メモリ領域をアクセス禁止するように、前記オペレーティングシステムのページテーブルを変更する第３のページテーブル変更手順をさらにコンピュータに実行させることを特徴とする。
【００３２】
この請求項１１の発明によれば、前記他のオペレーティングシステムの初期化処理終了後に、前記オペレーティングシステムの使用する以外の物理メモリ領域をアクセス禁止するように、前記オペレーティングシステムのページテーブルを変更することで、各オペレーティングシステムで使用する物理メモリ領域しかアクセスを許容しないので、セキュリティを強化させた状態で、複数のオペレーティングシステムを起動することができる。
【００３３】
また、請求項１２にかかる発明は、一台のコンピュータで同時に動作する複数のオペレーティングシステムのうちの一つのオペレーティングシステムであって、起動時に、他のオペレーティングシステムが起動の際に使用する物理メモリ領域および前記他のオペレーティングシステムが起動後に使用する物理メモリ領域とは異なる物理メモリのアドレスを配置位置として指定する配置位置指定手順と、前記オペレーティングシステムが起動の際に使用する物理メモリ領域と起動後に使用する物理メモリ領域とを、起動処理の初期段階ではアクセスを許容し、かつ、前記オペレーティングシステムが起動の際に使用する物理メモリ領域と起動後に使用する物理メモリ領域とが連続する場合、両物理メモリ領域の間に所定サイズだけアクセス不可能な物理メモリ領域を設定するように、前記オペレーティングシステムがアクセス可能な物理メモリ領域の範囲を定めたメモリマップを書き換える第１のメモリマップ変更手順と、前記オペレーティングシステムのページテーブルを作成する前に、起動後に使用する物理メモリ領域へのアクセスを許容し、それ以外の物理メモリ領域へのアクセスを禁止するように、前記メモリマップを書き換える第２のメモリマップ変更手順と、をコンピュータに実行させることを特徴とする。
【００３４】
この請求項１２の発明によれば、オペレーティングシステムが起動するために使用する物理メモリ領域と起動後に使用する物理メモリ領域とが連続する場合、それらの間に所定サイズだけアクセス不可能な物理メモリ領域を設定する内容に、オペレーティングシステムがアクセス可能な物理メモリ領域の範囲を定めたメモリマップを書き換えることで、物理メモリ上の最適化処理がおこなわれることを回避でき、他のオペレーティングシステムの起動を確実におこなうことができる。
【００３５】
また、請求項１３にかかる発明は、複数のオペレーティングシステムを起動するオペレーティングシステム起動装置であって、オペレーティングシステムがアクセス可能な物理メモリ領域の範囲を定めたメモリマップと、仮想メモリアドレスと物理メモリアドレスとを対応付けたページテーブルと、一つのオペレーティングシステムの起動時に、他のオペレーティングシステムが起動する際に使用する物理メモリ領域および前記他のオペレーティングシステムが起動後に使用する物理メモリ領域とは異なる物理メモリのアドレスを配置位置として指定する配置位置指定手段と、前記配置位置指定手段によって指定された物理メモリのアドレスに配置されて起動した場合に、他のオペレーティングシステムが起動の際に使用する物理メモリ領域へのアクセスを許容するように、前記他のオペレーティングシステムが起動するために使用する物理メモリ領域の物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスとを対応付けるように前記オペレーティングシステムの前記ページテーブルを変更するページテーブル変更手段と、を備えたことを特徴とする。
【００３６】
この請求項１３の発明によれば、オペレーティングシステムがアクセス可能な物理メモリ領域の範囲を定めたメモリマップと、仮想メモリアドレスと物理メモリアドレスとを対応付けたページテーブルと、一つのオペレーティングシステムの起動時に、他のオペレーティングシステムが起動する際に使用する物理メモリ領域や前記他のオペレーティングシステムが起動後に使用する物理メモリ領域とは異なる物理メモリのアドレスを配置位置として指定する配置位置指定手段と、前記配置位置指定手段によって指定された物理メモリのアドレスに配置されて起動した場合に、他のオペレーティングシステムが起動するために使用する物理メモリ領域へのアクセスを許容するように、前記他のオペレーティングシステムが起動するために使用する物理メモリ領域の物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスとを対応付けるように前記オペレーティングシステムの前記ページテーブルを変更するページテーブル変更手段と、を備えたことで、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができる。また、起動済のオペレーティングシステムの走行環境を破壊することなく他のオペレーティングシステムを安全に起動することができる。
【００３７】
また、請求項１４にかかる発明は、請求項１３に記載のオペレーティングシステム起動装置において、前記他のオペレーティングシステムが起動するために使用する物理メモリ領域の物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスとを対応付けた前記オペレーティングシステムの前記ページテーブルを、物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスが一致するように変更する前記ページテーブル変更手段をさらに備えたことを特徴とする。
【００３８】
この請求項１４の発明によれば、前記他のオペレーティングシステムが起動するために使用する物理メモリ領域の物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスとを対応付けた前記オペレーティングシステムの前記ページテーブルを、物理メモリアドレスと前記オペレーティングシステムの仮想空間の仮想メモリアドレスが一致するように変更することで、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを起動することができる。また、起動済のオペレーティングシステムの走行環境を破壊することなく他のオペレーティングシステムを安全に起動することができる。
【００３９】
【発明の実施の形態】
以下に添付図面を参照して、この発明にかかるオペレーティングシステムおよびオペレーティングシステム起動装置の好適な実施の形態を詳細に説明する。
【００４０】
（実施の形態１）
図１は、この発明の実施の形態１であるオペレーティングシステム（ＯＳ−Ａ）およびオペレーティングシステム起動装置の機能的構成を示すブロック図である。本実施の形態では、一台のコンピュータにオペレーティングシステムＯＳ−Ａ１００とＯＳ−Ｂ２００が同時に稼働する。本実施の形態では、図１に示すように、ＯＳ−Ａ１００が改造されており、本発明におけるオペレーティングシステムを構成する。ＯＳ−Ａ１００は、ソースコードが公開されているオペレーティングシステムを本発明に適用して改造したものである。一方、ＯＳ−Ｂ２００は、ソースコードが非公開のオペレーティングシステムであり、かかるＯＳ−Ｂ２００にソースコードの改造を加えずに、先にＯＳ−Ａ１００を起動し、後からＯＳ−Ｂ２００を起動することができるものである。
【００４１】
なお、本実施の形態では、ＯＳ−Ａ１００とＯＳ−Ｂ２００ともにオープンソースのＬｉｎｕｘ（Ｒ）２．４カーネルを採用した例を示している。ただし、ＯＳ−Ａ１００、ＯＳ−Ｂ２００とも本実施の形態で採用したものに限られず、ＯＳ−Ａ１００はソースコードが公開されてソースコードレベルで改造可能なオペレーティングシステム（ＯＳ）であればいずれのＯＳを採用することもでき、たとえば、Ｌｉｎｕｘ（Ｒ）の他、ＵＮＩＸ（Ｒ）等を採用することができるし、ソースコードが非公開でも版権を所有する者が改造を許可し、改造可能なオペレーティングシステム（ＯＳ）であれば、いずれのＯＳを採用することができる。また、ＯＳ−Ｂ２００には、ソースコードが公開されているＯＳ、ソースコードが公開されていないＯＳのいずれも採用することができる。
【００４２】
また、本実施の形態では、ＣＰＵ（中央演算装置：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）としてＩｎｔｅｌ（Ｒ）社のＰｅｎｔｉｕｍ（Ｒ）を採用した例を示しており、このため以下で使用するセグメントディスクリプタテーブル、割り込みディスクリプタテーブル、リアルモード、プロテクトモード、ページングＯＦＦ、ページングＯＮの名称もＩｎｔｅｌ（Ｒ）社固有の用語である。
【００４３】
ＯＳ−Ａ１００は、図１に示すように、ｓｅｔｕｐプログラム１０１と、ＯＳ初期化処理部１０４と、メモリマップ１０８と、割り込みディスクリプタテーブル１０９と、デバッグ例外処理部１１０と、を主に備えている。
【００４４】
ｓｅｔｕｐプログラム１０１は、ＯＳ−Ａメモリマップ変更部１０２と、メモリマップ取得コマンド発行部１０３とを主に備えている。ＯＳ初期化処理部１０４は、ページテーブル１０６と、ページテーブル変更部１０５と、メモリ管理初期化部１０７とを主に備えている。
【００４５】
上記各部の中で、ＯＳ−Ａメモリマップ変更部１０２と、メモリ管理初期化部１０７と、デバッグ例外処理部１１０と、ページテーブル変更部１０５が本来提供されるＯＳ−Ａと異なる改造点となっている。ここで、ページテーブル変更部１０５は本発明におけるテーブル変更手段を構成する。また、デバッグ例外処理部１１０は本発明における監視手段を構成する。
【００４６】
ＯＳ−Ｂ２００は、図１に示すように、ｓｅｔｕｐプログラム２０１と、ＯＳ初期化処理部２０４と、メモリ管理初期化部２０７と、メモリマップ２０８と、割り込みディスクリプタテーブル２０９とを主に備えている。また、ｓｅｔｕｐプログラム２０１にはメモリマップ取得コマンド発行部２０３を備えている。ＯＳ初期化処理部２０４はページテーブル２０６を備えている。このＯＳ−Ｂ２００は、本来提供されるＯＳ−Ｂからの改造点は存在しない。
【００４７】
また、本実施の形態のオペレーティングシステム起動装置には、ハードディスク装置（ＨＤＤ）１２１が設けられており、かかるＨＤＤ１２１には、ブートローダ１１５と、ＯＳ−Ａ１００に関わるｓｅｔｕｐプログラム１１１と、展開・連結プログラム１１２と、圧縮されたＯＳ−Ａカーネル１１４と、ＯＳ−Ｂ２００に関わるｓｅｔｕｐプログラム２１１と、展開・連結プログラム２１２と、圧縮されたＯＳ−Ｂカーネル２１４が格納されている。
【００４８】
ＯＳ−Ａの展開・連結プログラム１１２にはロード位置指定部１１３があり、ＯＳ−Ｂの展開・連結プログラム２１２にはロード位置指定部２１３がある。
【００４９】
なお、展開・連結プログラム１１２と、前記展開・連結プログラム１１２中にあるロード位置指定部１１３とが本来提供されるものと異なる改造点となっている。ここで、ロード位置指定部１１３は本発明における配置位置指定手段を構成する。
【００５０】
また、本実施の形態のオペレーティングシステム起動装置には、物理メモリ（ＲＡＭ（Ｒａｎｄａｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））１１６と、ＣＰＵ１１７と、ＣＰＵ中にあるＣＲ３レジスタ１１８と、割り込みディスクリプタテーブルレジスタ（ＩＤＴＲ）１１９と、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）１２０等が設けられている。
【００５１】
なお、本実施の形態のオペレーティングシステム起動装置は、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やＷＳ（Ｗｏｒｋ  Ｓｔａｔｉｏｎ）などの通常のコンピュータの構成をしている。また、３２ｂｉｔアドレッシングモードで動作するコンピュータ（オペレーティングシステム起動装置）上で複数のオペレーティングシステムＯＳ−Ａ１００とＯＳ−Ｂ２００を動作させている。
【００５２】
ｓｅｔｕｐプログラム１０１は、ＯＳ−Ａ１００が物理メモリにロードされた後、最初に実行されるプログラムであり、ディスプレイカードやキーボードやディスクコントローラの初期化など基本的な初期化処理を実行したり、メモリマップ取得コマンド発行部１０３において、メモリマップをＢＩＯＳ１２０から取得したりする。さらに、前記取得したメモリマップを書き換えるＯＳ−Ａメモリマップ変更部１０２を実行する。
【００５３】
ＯＳ−Ａメモリマップ変更部１０２は、前記ＢＩＯＳ１２０が出力した前記メモリマップ１０８を、ＯＳ−Ａ１００が使用する物理メモリ領域を制限したり、物理メモリ領域を区分けするように、書き換える処理をおこなう。
【００５４】
メモリマップ取得コマンド発行部１０３は、ＢＩＯＳ１２０に対してメモリマップ１０８を出力するよう依頼する。これにより、ＯＳ−Ａ１００は、物理メモリ（ＲＡＭ）１１６の使用可能領域等の情報を取得することができる。ただし、前記メモリマップ取得コマンド発行部１０３により出力されるメモリマップ１０８は、物理メモリ（ＲＡＭ）１１６の実装状況に基づく使用可能領域等の情報であり、たとえば複数のオペレーティングシステムを起動させる際、ＯＳ−Ａ１００に制限後の物理メモリ使用可能領域とは異なる。
【００５５】
ＯＳ初期化処理部１０４は、ＯＳ−Ａ１００の初期化処理全般をおこなう。また、メモリ管理初期化部１０７とページテーブル変更部１０５を有している。
【００５６】
ページテーブル変更部１０５は、前記メモリ管理初期化部１０７が作成した前記ページテーブル１０６を変更することにより、物理メモリ空間と仮想メモリ空間との対応を変更する。
【００５７】
ページテーブル１０６は、物理メモリ空間と仮想メモリ空間とをページ単位で区切り、仮想メモリ空間のページと物理メモリ空間のページと対応付けをおこなうテーブルである。
【００５８】
メモリ管理初期化部１０７は、ＯＳ−Ａ１００のメモリ管理処理の初期化をおこなう。また、前記メモリマップ１０８を読み込んで、物理メモリ空間上の物理メモリ１１６の使用可能領域と仮想メモリ空間との対応付けをしたページテーブル１０６を作成する。
【００５９】
メモリマップ１０８は、物理メモリ（ＲＡＭ）１１６において、使用可能領域や使用不可能領域等の情報を格納したテーブルであり、このテーブルに基づいて、ＯＳ−Ａ１００が使用できる物理メモリ領域を認識する。
【００６０】
割り込みディスクリプタテーブル１０９は、割り込み発生時に対応する割り込み処理ルーチンへのアドレスが格納されているテーブルであり、一般的には割り込みベクタテーブルを意味する。
【００６１】
デバッグ例外処理部１１０は、デバッグ例外の割り込みを処理するものであり、ＣＰＵをトレースモード（シングル・ステップ・モード）で走行すると、各命令を実行するたびにデバッグ例外が発生し、ＣＰＵが割り込みディスクリプタテーブル１０９を参照して、デバッグ例外処理部１１０にジャンプする。このデバッグ例外処理部１１０は、次に実行される命令を先読みし、先読みした命令が特定の命令または特定の命令群であるか否かを調べ、特定の命令または特定の命令群である場合には、その命令の代替処理をおこなったり、その命令または命令群を実行せずに飛ばしたりする処理をおこなう。
【００６２】
ここで、トレースモードは、Ｉｎｔｅｌ（Ｒ）社固有の用語では、デバッグモードと呼ばれる。また、ＣＰＵが一命令を実行するたびにデバッグ例外が発生するモードを、Ｉｎｔｅｌ（Ｒ）社固有の用語で、シングル・ステップ・モードという。また、デバッグ例外は、Ｉｎｔｅｌ（Ｒ）社などで使用される用語であり、トレース例外と呼ぶ場合もある。
【００６３】
ＯＳ−Ａのｓｅｔｕｐプログラム１０１は、ブートローダ１１５によって、ＨＤＤ１２１から物理メモリ１１６の１ＭＢ番地以下にロードされる。ロードされたものがすなわちｓｅｔｕｐプログラム１０１である。
【００６４】
展開・連結プログラム１１２は、圧縮されたＯＳ−Ａカーネル１１４と連続してＨＤＤ１２１に格納されており、ブートローダ１１５によって、ＨＤＤ１２１から物理メモリ１１６の１ＭＢ番地にロードされる。さらに、展開・連結プログラム１１２は、圧縮されたＯＳ−Ａカーネル１１４を二つの領域に分けて展開し、展開・連結プログラム１１２自身を物理メモリ１１６の４ＫＢ番地にコピーし、二つの領域に分けて展開されたＯＳ−Ａカーネルを、ロード位置指定部１１３が指定する物理メモリ上のアドレスに連結し、連結したＯＳ−Ａカーネルの先頭、つまりＯＳ−Ａ初期化処理部１０４に制御を移行するものである。この際、本来提供されるＯＳ−Ａでは、ロード位置指定部１１３が指定する物理メモリアドレスの１ＭＢ番地に連結されるが、本実施の形態では、ロード位置指定部１１３が指定する物理メモリアドレスの９６ＭＢ番地にＯＳ−Ａ１００が連結されるようになっている。
【００６５】
ロード位置指定部１１３は、ＯＳ−Ａ１００の起動時に、ＯＳ−Ｂ２００が単独で起動する際使用する物理メモリ領域及びＯＳ−Ｂ２００が単独で起動した後で使用する物理メモリ領域と重ならないように、ＯＳ−Ａ１００の使用する物理メモリ領域が配置されるように、ＯＳ−Ａ１００のロード位置を指定するものである。本実施の形態では、ＯＳ−Ｂ２００は、その単独起動時に物理メモリの先頭から１ＭＢ番地のアドレスにロードされるようになっており、このため、ＯＳ−Ａ１００では、この１ＭＢ番地の位置から高位でかつＯＳ−Ｂ２００のサイズより大きいアドレスである９６ＭＢ番地のアドレスをロード位置に指定している。
【００６６】
ＯＳ−Ａカーネル（圧縮）１１４は、圧縮されたＯＳ−Ａカーネルのことであり、展開・連結プログラム１１２に続いて、ＨＤＤ１２１に格納されている。
【００６７】
ブートローダ１１５は、ＨＤＤ１２１の最初に格納されており、ＢＩＯＳ１２０によって物理メモリにロードされる。そして、ブートローダ１１５は、オペレーション・システムの中からどのオペレーティングシステムをロードするか否かを決定する。そして選択したオペレーティングシステムのｓｅｔｕｐプログラムをＨＤＤ１２１から物理メモリ１１６の１ＭＢ番地以下にロードし、同じく選択したオペレーティングシステムの展開・連結プログラムと圧縮されたカーネルをＨＤＤ１２１から物理メモリ１１６の１ＭＢ番地にロードする。その後、ＯＳのｓｅｔｕｐプログラムやＯＳ−Ａに制御を移行する。
【００６８】
物理メモリ（ＲＡＭ）１１６は、オペレーティングシステム等のプログラムがロードされて実行されるメモリである。ＯＳ−Ａ１００が使用する領域とＯＳ−Ｂ２００が使用する領域が重ならないように配置される。
【００６９】
ＣＰＵ１１７は、トレースモード（シングル・ステップ・モード）に設定されると、各命令を実行するたびにデバッグ例外が発生し、ＣＰＵ１１７がＩＤＴＲ１１９が指す割り込みディスクリプタテーブル１０９を参照して、次に実行される命令のアドレスを示すＣＳレジスタ（セグメントレジスタ）の値とＥＩＰ（インストラクションポインタ）レジスタの値をスタックに格納し、デバッグ例外処理部１１０にジャンプする。このデバッグ例外処理部１１０は、前記スタックに格納されたＣＳレジスタの値とＥＩＰレジスタの値から次に実行される命令を先読みすることができる。
【００７０】
ＣＲ３レジスタ１１８は、ＣＰＵ１１７が用いるページテーブルの先頭アドレスが格納されている。ＣＰＵ１１７は、ＣＲ３レジスタが指すアドレスにあるページテーブルを参照し、物理メモリ空間と仮想メモリ空間の対応付けをおこなう。
【００７１】
割り込みディスクリプタテーブルレジスタ（ＩＤＴＲ）１１９は、ＣＰＵ１１７が用いる割り込みディスクリプタテーブルレジスタの先頭アドレスが格納されている。ＣＰＵ１１７は、割り込みが発生すると、ＩＤＴＲ１１９が指すアドレスにある割り込みディスクリプタテーブルを参照し、所望の割り込み処理へジャンプする。
【００７２】
ＢＩＯＳ１２０は、コンピュータの基本的なハードウェア情報を受け持つ簡易なプログラムである。メモリマップ取得コマンドを受けると、実装された物理メモリ１１６の使用可能領域等の情報を物理メモリ１１６に出力する。
【００７３】
図２は、一般的なオペレーションシステムの機能的構成を示すブロック図であり、その構成は、図２に示すように、図１に示す改造されていないＯＳ−Ｂ２００の構成と同様である。
【００７４】
次に、メモリマップを利用してＯＳの使用可能な物理メモリ空間を制限する方式について説明する。
【００７５】
まず、本実施の形態で使用するメモリマップについて説明する。図３は、メモリマップの構造の一例を示す説明図である。図３に示すように、メモリマップは、複数のエントリから構成され、各エントリは物理メモリの部分領域を示している。また、各エントリは、ベースアドレスの低３２ビットを示す４バイト、ベースアドレスの高３２ビットを示す４バイト、領域の大きさの低３２ビットを示す４バイト、領域の大きさの高３２ビットを示す４バイトおよびオペレーティングシステムがその領域を使用可能か否かを示すメモリタイプの４バイトの計２０バイトの大きさを有する。
【００７６】
ここで、メモリタイプが「１」である場合には、オペレーティングシステムはその領域を使用することができ、メモリタイプが「１」以外である場合には、オペレーティングシステムはその領域を使用することができない。
【００７７】
たとえば、あるエントリのベースアドレスの低３２ビットが「０ｘ００１０００００」であり、ベースアドレスの高３２ビットが「０ｘ００００００００」であり、領域の大きさの低３２ビットが「０ｘ０５ｆ０００００」であり、領域の大きさの高３２ビットが「０ｘ００００００００」であり、メモリタイプが「０ｘ０１」である場合には、先頭アドレスが「０ｘ１０００００」から「０ｘ５ｆ０００００」分の物理メモリ領域をオペレーティングシステムが使用することができる。
【００７８】
また、オペレーティングシステムが使用できない領域としては、ＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ：電源管理の仕様）が使用する領域などがあり、たとえばメモリタイプの値は「４」である。
【００７９】
オペレーティングシステムは、初期化処理時に、このメモリマップに基づいて物理メモリをどのように利用するか、オペレーティングシステムのメモリ管理機能部で構成するため、このオペレーティングシステムの初期化処理内でメモリマップを書き換えることによって、オペレーティングシステムが使用する物理メモリ領域を制限することができる。
【００８０】
図４（ａ）および（ｂ）は、メモリマップのエントリの変更によってＯＳの使用可能な物理メモリ空間を制限する方式を示す説明図である。
【００８１】
メモリマップのエントリが図４（ａ）に示すような例の場合には、ＯＳが使用可能な領域はアドレスＡ２：Ａ１からサイズＢ２：Ｂ１の範囲となる。このエントリを２つに分けた例を図４（ｂ）に示す。この場合、ＯＳが使用可能な領域はアドレスＡ２：Ａ１からサイズＣ２：Ｃ１の範囲となり、アドレスＡ２＋Ｃ２：Ａ１＋Ｃ１からサイズＢ２−Ｃ２：Ｂ１−Ｃ１までの領域は、ＯＳが使用不可能な予約された領域となる。このような図４（ａ）から（ｂ）に示すようなエントリの分割をおこなうことによってＯＳが使用できる領域を制限したり、逆に図４（ｂ）から（ａ）に示すようにエントリの変更をおこなうことによってＯＳが使用できる領域を広げたりすることができる。
【００８２】
次に、以上のように構成された本実施の形態のオペレーティングシステムおよびオペレーション起動装置によるＯＳ−Ａ１００，ＯＳ−Ｂ１１０の起動処理について説明する。
【００８３】
（ＯＳの通常の起動処理）
まず、通常に一つのオペレーティングシステム（ＯＳ）の起動処理について説明する。図５は、一般的なＯＳの起動処理の手順を示すフローチャートである。図６は、ＯＳの起動処理における物理メモリの状態の遷移を示す説明図である。なお、通常のＯＳはロード位置指定部２１３に物理メモリアドレスの１ＭＢ番地が指定されている。
【００８４】
まず、ＢＩＯＳ１２０がブートローダ１１５を物理メモリ１１６にロードし（ステップＳ５０１）、制御がブートローダ１１５に移行する。そして、ブートローダ１１５はＯＳのｓｅｔｕｐプログラム２１１をＨＤＤ１２１から物理メモリ１１６の１ＭＢ番地以下のアドレスにロードする（ステップＳ５０２）。次いで、ブートローダ１１５は、展開・連結プログラムと圧縮されたＯＳカーネルをＨＤＤから読み出して物理メモリ１１６の１ＭＢ番地にロードする（ステップＳ５０３）。次いで、制御をＯＳのｓｅｔｕｐプログラム２０１（ＨＤＤ１２０のｓｅｔｕｐプログラム２１１をロードしたもの）に移行し、ＯＳのｓｅｔｕｐプログラム２０１がセットアップ処理を実行する（ステップＳ５０４）。
【００８５】
次に、ｓｅｔｕｐプログラム２０１のメモリマップ取得コマンド発行部２０３がＢＩＯＳ１２０に対しメモリマップ取得命令（ＥＡＸ＝０ｘＥ８２０、ｉｎｔ１５）を発行する（ステップＳ５０５）。すると、ＢＩＯＳ１２０は、メモリマップ２０８を物理メモリ１１６に出力する（ステップＳ５０６）。次に、ＯＳのｓｅｔｕｐプログラム２０１がページングＯＦＦのプロテクトモードに移行する（ステップＳ５０７）。
【００８６】
ここで、プロテクトモードは、セグメント単位の仮想記憶を実現するとともにメモリ保護機能を使ってメモリアクセスに対する保護をおこなっているモードであり、物理メモリアドレスと仮想メモリアドレスとが一致していることを前提とするページングＯＦＦのプロテクトモードと、物理メモリアドレスと仮想メモリアドレスとが必ずしも一致せず、両アドレスをページテーブルで対応させるページングＯＮのプロテクトモードとがある。これに対し、１ＭＢの物理メモリ空間しかアクセスできないモードをリアルモードという。
【００８７】
次に、展開・連結プログラム２１２は、圧縮されたＯＳカーネル２１４を、物理メモリ１１６の低位アドレスと高位アドレスに分割して展開し（ステップＳ５０８）、展開・連結プログラム２１２自分自身を物理メモリ１１６の４ＫＢ番地にコピーする（ステップＳ５０９）。そして、展開・連結プログラム２１２は、物理メモリ１１６の低位アドレスに展開されたＯＳカーネル前半部をロード位置指定部２１３で指定されたアドレス（１ＭＢ番地）に移動する（ステップＳ５１０）。次いで、展開・連結プログラム２１２は、物理メモリ１１６の高位アドレスに展開されたＯＳカーネル後半部を、ＯＳカーネル前半部連続する位置に移動することにより、前半部と後半部に分割されたＯＳカーネルを連結する（ステップＳ５１１）。そして、展開・連結プログラム２１２は、ロード位置指定部２１３で指定されたアドレス（１ＭＢ番地）にジャンプする（ステップＳ５１２）。
【００８８】
次に、ＯＳ初期化処理部２０４に制御がわたる。そして、ＯＳ初期化処理部２０４が処理の実行をおこない（ステップＳ５１３）、ＯＳ初期化処理部２０４のメモリ管理初期化部２０７がメモリマップ２０８からページテーブル２０６を生成する（ステップＳ５１４）。次いで、メモリ管理初期化部２０７は、ＣＰＵ１１７のＣＲ３レジスタ１１８にページテーブル２０６の先頭アドレスを格納し（ステップＳ５１５）、ＣＰＵ１１７のＩＤＴＲレジスタ１１９に割り込みディスクリプタテーブル２０９の先頭アドレスを格納する（ステップＳ５１６）。そして、ＯＳ初期化処理部２０４は、ページングＯＮのプロテクトモードに移行する（ステップＳ５１７）。このような処理によって、ＯＳの起動処理が完了する。
【００８９】
（ＯＳ−Ａ１００の起動処理）
次に、ＯＳ−Ａ１００の起動処理について説明する。図７は、ＯＳ−Ａ１００の起動処理の手順を示すフローチャートである。図８は、ＯＳ−Ａ１００の起動処理における物理メモリの状態の遷移を示す説明図である。
【００９０】
ＯＳ−Ａ１００の起動処理では、ＯＳ−Ａ１００がそのロード位置指定部１２１に９６ＭＢ番地が指定されて改造されているため、ＯＳ−Ａ１００が物理メモリアドレスの９６ＭＢにロードされる点と、ＯＳ−Ａのメモリマップ１０８の変更をおこなう点が通常のＯＳの起動処理と異なっている。
【００９１】
まず、ＢＩＯＳ１２０がブートローダ１１５を物理メモリ１１６にロードし（ステップＳ７０１）、制御がブートローダ１１５に移行する。そして、ブートローダ１１５はＯＳ−Ａのｓｅｔｕｐプログラム１１１をＨＤＤ１２１から物理メモリ１１６の１ＭＢ番地以下のアドレスにロードする（ステップＳ７０２）。次いで、ブートローダ１１５は、展開・連結プログラム１１２と圧縮されたＯＳ−Ａカーネル１１４をＨＤＤ１２１から読み出して物理メモリ１１６の１ＭＢ番地にロードする（ステップＳ７０３）。次いで、制御をＯＳ−Ａのｓｅｔｕｐプログラム１０１（ＨＤＤ１２１のｓｅｔｕｐプログラム１１１をロードしたもの）に移行し、ＯＳ−Ａのｓｅｔｕｐプログラム１０１がセットアップ処理を実行する（ステップＳ７０４）。
【００９２】
次に、ｓｅｔｕｐプログラム１０１のメモリマップ取得コマンド発行部１０３がＢＩＯＳ１２０に対しメモリマップ取得命令（ＥＡＸ＝０ｘＥ８２０、ｉｎｔ１５）を発行する（ステップＳ７０５）。すると、ＢＩＯＳ１２０は、メモリマップ１０８を物理メモリ１１６に出力する（ステップＳ７０６）。
【００９３】
次に、ＯＳ−Ａメモリマップ変更部１０２が、物理メモリアドレス０番地から９６ＭＢ番地、および９６ＭＢ番地以降をＯＳ使用可能になるようにＯＳ−Ａメモリマップ１０８を変更する（ステップＳ７０７）。なお、ＯＳ−Ａメモリマップ１０８の変更は、図３で説明した手法でおこなわれる。そして、ＯＳ−Ａ１００のｓｅｔｕｐプログラム１０１がページングＯＦＦのプロテクトモードに移行する（ステップＳ７０８）。
【００９４】
次に、展開・連結プログラム１１２は、圧縮されたＯＳ−Ａカーネル１１４を、物理メモリ１１６の低位アドレスと高位アドレスに分割して展開し（ステップＳ７０９）、展開・連結プログラム１１２自分自身を物理メモリ１１６の４ＫＢ番地にコピーする（ステップＳ７１０）。そして、展開・連結プログラム１１２は、物理メモリ１１６の低位アドレスに展開されたＯＳ−Ａカーネル前半部をロード位置指定部１１３で指定された物理メモリアドレス（９６ＭＢ番地）に移動する（ステップＳ７１１）。次いで、展開・連結プログラム１１２は、物理メモリ１１６の高位アドレスに展開されたＯＳ−Ａカーネル後半部を、ＯＳ−Ａカーネル前半部連続する位置（物理メモリアドレス９６ＭＢ番地）に移動することにより、前半部と後半部に分割されたＯＳ−Ａカーネルを連結する（ステップＳ７１２）。そして、展開・連結プログラム１１２は、ロード位置指定部１１３で指定された物理メモリアドレス（９６ＭＢ番地）にジャンプする（ステップＳ７１３）。
【００９５】
次に、ＯＳ初期化処理部１０４に制御がわたる。そして、ＯＳ初期化処理部１０４が処理の実行をおこない（ステップＳ７１４）、ＯＳ初期化処理部１０４のメモリ管理初期化部１０７が、物理メモリアドレス０番地から９６ＭＢ番地までをＯＳ使用不可能にし、物理メモリアドレスの９６ＭＢ番地以降をＯＳ使用可能になるようにＯＳ−Ａメモリマップ１０８を変更する（ステップＳ７１５）。そして、メモリ管理初期化部１０７がＯＳ−Ａメモリマップ１０８からページテーブル１０６を生成する（ステップＳ７１６）。次いで、メモリ管理初期化部２０７は、ＣＰＵ１１７のＣＲ３レジスタ１１８にページテーブル２０６の先頭アドレスを格納し（ステップＳ７１７）、ＣＰＵ１１７のＩＤＴＲレジスタ１１９に割り込みディスクリプタテーブル２０９の先頭アドレスを格納する（ステップＳ７１８）。そして、ＯＳ初期化処理部１０４は、ページングＯＮのプロテクトモードに移行する（ステップＳ７１９）。このような処理によって、ＯＳ−Ａの起動処理が完了する。
【００９６】
図１３は、ＯＳ−Ａ１００の起動した時の物理メモリ空間と仮想メモリ空間の状態を示す説明図である。図８および図１３に示すように、ＯＳ−Ａ１００は、通常のロード位置（１ＭＢ番地）より高位の物理メモリアドレスの９６ＭＢ番地にロードされることになる。これは、物理メモリの９６ＭＢ番地より低位のアドレス空間に共存させるＯＳ−Ｂ２００を起動してロードするためである。
【００９７】
本実施の形態では、ＯＳ−Ａ１００のロード位置である物理メモリ空間の９６ＭＢ番地を、仮想メモリ空間の３ＧＢ＋９６ＭＢ番地に対応付けることとする。この理由は、後から起動するＯＳ−Ｂ１１０は改造なしのため、本来配置される仮想メモリ空間の３ＧＢ番地に配置されるので、ＯＳ−Ａ１００とＯＳ−Ｂ１１０の仮想メモリ空間上でロードされる位置が重ならないようにするためである。
【００９８】
（ＯＳ−Ｂ２００の起動処理）
次に、このようにＯＳ−Ａ１００が物理メモリアドレスの９６ＭＢ番地にロードされた後における、ＯＳ−Ａ１００の管理下でのＯＳ−Ｂ２００の起動処理について説明する。図９および図１０は、ＯＳ−Ｂ２００の起動処理の手順を示すフローチャートである。図１１は、ＯＳ−Ｂ２００の起動処理における物理メモリの状態の遷移を示す説明図である。ここで、ＯＳ−Ｂ２００は改造されていないＯＳであり、このためロード位置指定部２１３には、通常のＯＳと同様に、物理メモリアドレス１ＭＢ番地が設定されている。
【００９９】
まず、ＯＳ−Ａ１００またはＢＩＯＳ１２０がブートローダ１１５を物理メモリ１１６にロードし（ステップＳ９０１）、制御がブートローダ１１５に移行する。そして、ブートローダ１１５はＯＳ−Ｂのｓｅｔｕｐプログラム２１１をＨＤＤ１２１から物理メモリ１１６の１ＭＢ番地以下のアドレスにロードする（ステップＳ９０２）。次いで、ブートローダ１１５は、展開・連結プログラム２１２と圧縮されたＯＳ−Ｂカーネル２１４をＨＤＤ１２１から読み出して物理メモリ１１６の１ＭＢ番地にロードする（ステップＳ９０３）。
【０１００】
次に、ＯＳ−Ａ１００によってＣＰＵ１１７の走行モードをトレースモードに設定し（ステップＳ９０４）、ＯＳ−Ｂ２００のｓｅｔｕｐプログラム２０１（ＨＤＤ１２０のｓｅｔｕｐプログラム２１１をロードしたもの）がセットアップ処理を実行する（ステップＳ９０５）。このとき、ステップＳ９０４でＣＰＵ１１７の走行モードがトレースモードになっているため、一命令ごとにデバッグ割り込みが発生する。ＯＳ−Ａ１００のデバッグ例外処理部１１０は、発生したデバッグ割り込みによって、ＯＳ−Ｂ２００で発行された命令を監視し、かかる命令がＯＳ−Ａ１００の走行環境に影響を与える特定の命令または特定の命令群であるか否かを判断する。かかるＯＳ−Ａ１００のデバッグ例外処理部１１０によるＯＳ−Ｂ２００の監視処理の詳細については後述する。
【０１０１】
次に、ＯＳ−Ｂ２００のｓｅｔｕｐプログラム２０１のメモリマップ取得コマンド発行部２０３がＢＩＯＳ１２０に対しメモリマップ取得命令（ＥＡＸ＝０ｘＥ８２０、ｉｎｔ  １５）を発行する（ステップＳ９０６）。すると、ＢＩＯＳ１２０は、ＯＳ−Ｂメモリマップ２０８を物理メモリ１１６に出力する（ステップＳ９０７）。
【０１０２】
このとき、ＯＳ−Ａ１００のデバッグ例外処理部１１０は、ＯＳ−Ｂ２００が発行したメモリマップ取得命令を検出し、このメモリマップ取得命令の代わりに、ＯＳ−Ｂメモリマップ２０８を、物理メモリアドレス０番地から９６ＭＢ番地をＯＳ使用可能に、９６ＭＢ番地以降をＯＳ使用不可になるように変更する（ステップＳ９０８）。なお、ＯＳ−Ｂメモリマップ２０８の変更は、図３で説明した手法でおこなわれる。
【０１０３】
次に、ＯＳ−Ａ１００のデバッグ例外処理部１１０は、ＯＳ−Ａ１００のページテーブル１０６を変更することによって、物理メモリアドレスの０番地から９６ＭＢ番地までを仮想メモリアドレスの０番地から９６ＭＢ番地までに一致したアドレスとなるようにページを対応付け、物理メモリ空間と仮想メモリ空間のストレートマッピングをおこなう（ステップＳ９０９）。そして、ＯＳ−Ｂ２００のｓｅｔｕｐプログラム２０１がページングＯＦＦのプロテクトモードに移行する（ステップＳ９１０）。
【０１０４】
ページングＯＦＦのプロテクトモードにおけるアドレス認識は、まだＯＳ−Ｂのページテーブルが生成されていないため、物理メモリアドレスと仮想メモリアドレスが一致していることを前提におこなわれる。このため、本実施の形態では、ＯＳ−Ｂ２００の起動前に物理メモリ空間と仮想メモリ空間とをストレートマッピングすることで、ＯＳ−Ｂ２００の初期化処理を、ＯＳ−Ｂ２００に改造を加えることなくおこなえるようにしている。
【０１０５】
図１４は、ストレートマッピング終了後の物理メモリ空間と仮想メモリ空間の状態を示す説明図である。図１４に示すように、物理メモリアドレス９６ＭＢ番地までは、物理メモリ空間と仮想メモリ空間がストレートマッピングされている。
【０１０６】
次に、展開・連結プログラム２１２は、圧縮されたＯＳ−Ｂカーネル２１４を、物理メモリ１１６の低位アドレスと高位アドレスに分割して展開し（ステップＳ９１１）、展開・連結プログラム２１２自分自身を物理メモリ１１６の４ＫＢ番地にコピーする（ステップＳ９１２）。そして、展開・連結プログラム２１２は、物理メモリ１１６の低位アドレスに展開されたＯＳ−Ｂカーネル前半部をロード位置指定部２１３で指定された物理メモリアドレス（１ＭＢ番地）に移動する（ステップＳ９１３）。次いで、展開・連結プログラム２１２は、物理メモリ１１６の高位アドレスに展開されたＯＳ−Ｂカーネル後半部を、ＯＳ−Ｂカーネル前半部連続する位置（物理メモリアドレス１ＭＢ番地）に移動することにより、前半部と後半部に分割されたＯＳ−Ｂカーネルを連結する（ステップＳ９１４）。そして、展開・連結プログラム２１２は、ロード位置指定部２１３で指定された物理メモリアドレス（１ＭＢ番地）にジャンプする（ステップＳ９１５）。
【０１０７】
図１５は、ＯＳ−Ｂ２００のロード後の物理メモリ空間と仮想メモリ空間の状態を示す説明図である。図１５に示すように、ＯＳ−Ｂ２００は、物理メモリアドレス１ＭＢ番地の位置にロードされ、物理メモリ空間と仮想メモリ空間とがストレートマッピングされている。
【０１０８】
次に、ＯＳ−Ｂ２００のＯＳ初期化処理部２０４に制御がわたる。そして、ＯＳ初期化処理部２０４が処理の実行をおこない（ステップＳ９１６）、ＯＳ−Ｂ２００のＯＳ初期化処理部２０４のメモリ管理初期化部２０７がＯＳ−Ｂメモリマップ２０８からＯＳ−Ｂのページテーブル２０６を生成する（ステップＳ９１７）。
【０１０９】
次に、ＯＳ−Ｂ２００のメモリ管理初期化部２０７は、ＣＰＵ１１７のＣＲ３レジスタ１１８にＯＳ−Ｂ２００のページテーブル２０６の先頭アドレスを格納する命令を発行する。しかし、当該命令をＯＳ−Ａ１００のデバッグ例外処理部１１０が検出して、この命令がＯＳ−Ａ１００の走行環境に影響を与えると判断し、当該命令を実行せずにスキップする（ステップＳ９１８）。
【０１１０】
次に、ＯＳ−Ａ１００のデバッグ例外処理部１１０は、ＯＳ−Ａのページテーブル１０６の変更をおこない、物理メモリアドレス０番地から９６ＭＢ番地をＯＳ−Ａ１００の仮想メモリ空間の仮想アドレス０番地から９６ＭＢ番地にストレートマッピングをおこなっていた状態を、物理メモリアドレス０番地から９６ＭＢ番地をＯＳ−Ａ１００の仮想メモリ空間の仮想アドレス３ＧＢから（３ＧＢ＋９６ＭＢ）番地にマッピングし、ストレートマッピングを解除する（ステップＳ９１９）。
【０１１１】
図１６は、ストレートマッピング解除後の物理メモリ空間と仮想メモリ空間の状態を示す説明図である。図１６に示すように、ＯＳ−Ａのページテーブル１０６の変更によって、ストレートマッピングが解除された状態となっている。
【０１１２】
次に、ＯＳ−Ｂ２００のＯＳ初期化処理部２０４は、ＣＰＵ１１７のＩＤＴＲレジスタ１１９にＯＳ−Ｂ２００の割り込みディスクリプタテーブル２０９の先頭アドレスを格納する命令を発行する。しかし、当該命令をＯＳ−Ａ１００のデバッグ例外処理部１１０が検出して、この命令がＯＳ−Ａ１００の走行環境に影響を与えると判断し、当該命令を実行せずにスキップする（ステップＳ９２０）。そして、ＯＳ−Ｂ２００のＯＳ初期化処理部２０４はページングＯＮのプロテクトモードに移行する（ステップＳ９２１）。
【０１１３】
これによって、ＯＳ−Ｂ２００の初期化処理が完了するが、このＯＳ−Ｂ２００の初期化処理完了を、ＯＳ−Ａ１００のデバッグ例外処理部１１０が検出し（ステップＳ９２２）、ＯＳ−Ａ１００のデバッグ例外処理部１１０は、ＣＰＵ１１７の走行モードであるトレースモードを解除する（ステップＳ９２３）。
【０１１４】
そして、ＯＳ−Ａ１００のデバッグ例外処理部１１０は、ＯＳ−Ａ１００のアイドルプロセスに移行する（ステップＳ９２４）。なお、ＯＳ−Ａ１００のアイドルプロセスに移行する代わりに、ＣＰＵ１１７のＩＤＴＲレジスタ１１９にＯＳ−Ｂ２００の割り込みディスクリプタテーブル２０９の先頭アドレスを格納するとともに、ＣＰＵ１１７のＣＲ３レジスタ１１８にＯＳ−Ｂ２００のページテーブル２０６の先頭アドレスを格納し、ＯＳ−Ｂ２００の初期化終了後の次の命令に移行するように構成してもよい。以上のような処理によって、ＯＳ−Ｂ２００の起動処理が完了する。
【０１１５】
図１７は、ＯＳ−Ｂ２００の起動処理完了後の物理メモリ空間と仮想メモリ空間の状態を示す説明図である。図１１に示すように、ＯＳ−Ａ１００は物理メモリアドレス９６ＭＢ番地より高位のアドレスで、ＯＳ−Ｂ１１０は物理メモリアドレス９６ＭＢ番地より低位のアドレスで動作する。
【０１１６】
（ＯＳ−Ａ１００によるＯＳ−Ｂ２００の監視処理）
次に、ＯＳ−Ａ１００のデバッグ例外処理部１１０によるＯＳ−Ｂ２００の監視処理について説明する。図１２は、ＯＳ−Ａ１００がＯＳ−Ｂ２００による処理をトレースモードで監視する処理の手順を示すフローチャートである。
【０１１７】
ＯＳ−Ａ１００がＣＰＵ１１７の走行モードをトレースモードに設定し（ステップＳ１２０１）、ＯＳ−Ｂ２００のｓｅｔｕｐプログラム２０１やＯＳ初期化処理部２０４が処理の一命令を実行すると（ステップＳ１２０２）、一命令ごとにデバッグ割り込みが発生する（ステップＳ１２０３）。
【０１１８】
割り込みディスクリプタテーブル１０９に、デバッグ割り込みが発生した場合に実行するデバッグ例外処理部１１０の先頭アドレスが登録されており、このため、ＯＳ−Ａ１００のデバッグ例外処理部１１０にジャンプする（ステップＳ１２０４）。
【０１１９】
ＯＳ−Ａ１００のデバッグ例外処理部１１０は、スタックに格納された次の命令のＣＳの値とＥＩＰの値を取得し（ステップＳ１２０５）、かかる値より次命令の内容を取得する（ステップＳ１２０６）。
【０１２０】
そして、デバッグ例外処理部１１０は、取得した次命令がＯＳ−Ａ１００の走行環境に影響を与える特定の命令であるか否かを判断する（ステップＳ１２０７）。そして、特定の命令である場合には、ＯＳ−Ａ１００のデバッグ例外処理部１１０は、特定の命令の代替え処理をおこなうかあるいは当該特定の命令をスキップする（ステップＳ１２０８）。ここで、特定の命令とは、たとえばメモリマップ取得命令等（ＥＡＸ＝０ｘＥ８２０、ｉｎｔ  １５等）が挙げられるが、これに限定されるものではなく、ＯＳ−Ａ１００の走行環境に影響を与えるような命令または命令群であればいずれのものであってもよい。また、特定の命令の代替え処理は、たとえば、疑似命令の実行などがあげられる。
【０１２１】
次いで、次に実行させたい命令に戻るため、スタックに格納されたＣＳの値とＥＩＰの値を必要があれば書き換えて（ステップＳ１２０９）、ステップＳ１２０２からの処理を繰り返す。
【０１２２】
ステップＳ１２０７において、取得した次命令が特定の命令でないと判断した場合には、さらにＯＳ−Ａ１００のデバッグ例外処理部１１０は、ＯＳ−Ｂ２００の初期化処理が終了したか否かを判断する（ステップＳ１２１０）。そして、初期化処理が終了していない場合には、ステップＳ１２０２からの処理を繰り返す。
【０１２３】
一方、ＯＳ−Ｂ２００の初期化処理が終了していると判断した場合には、ＯＳ−Ａ１００のデバッグ例外処理部１１０は、ＣＰＵ１１７のトレースモードを解除する（ステップＳ１２１１）。そして、ＯＳ−Ａ１００のデバッグ例外処理部１１０は、ＯＳ−Ａ１００のアイドルプロセスに移行する（ステップＳ１２１２）。なお、ＯＳ−Ａ１００のアイドルプロセスに移行する代わりに、ＣＰＵ１１７のＩＤＴＲレジスタ１１９にＯＳ−Ｂ２００の割り込みディスクリプタテーブル２０９の先頭アドレスを格納するとともに、ＣＰＵ１１７のＣＲ３レジスタ１１８にＯＳ−Ｂ２００のページテーブル２０６の先頭アドレスを格納し、ＯＳ−Ｂ２００の初期化終了後の次の命令に移行するように構成してもよい。
【０１２４】
このように、ＯＳ−Ｂ２００の初期化処理をトレースモードで実行し、当該初期化処理をＯＳ−Ａ１００側で監視することによって、起動済のＯＳ−Ａ１００の走行環境を破壊することなくＯＳ−Ｂ２００を起動することが可能となる。
【０１２５】
（ハードウェア構成）
次に、本実施の形態にかかるオペレーティングシステムＯＳ−Ａ１００を実行するコンピュータ（オペレーティングシステム起動装置）について説明する。図１８は、本実施の形態に係るＯＳ−Ａ１００を実行するコンピュータのハードウェア構成図である。
【０１２６】
図１８に示すように、このコンピュータ１８００は、オペレーティングシステムＯＳ−Ａ１００やＯＳ−Ｂ２００などのプログラムを実行するＣＰＵ１１７と、キーボードやマウスなどの入力装置１８２０と、各種データを記憶するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１８３０と、実行するプログラムや演算の一時結果などを記憶する物理メモリ（ＲＡＭ：Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１１６と、記録媒体１８９０からプログラムを読み取る読取装置１８５０と、ディスプレイやプリンタなどの出力装置１８６０と、装置各部を接続するバス１８７０とから構成される。なお、記録媒体１８９０としては、光ディスク、フレキシブルディスク、ハードディスクなどが挙げられる。
【０１２７】
このように実施の形態１のオペレーティングシステムＯＳ−Ａ１００およびオペレーティングシステム起動装置では、ＯＳ−Ａ１００の起動時にＯＳ−Ｂ２００が起動した場合に物理メモリ上でＯＳ−Ｂ２００がロードされるべきアドレスよりも高位のアドレスをロード位置として指定し、指定されたアドレスにＯＳ−Ａ１００がロードされて起動した場合に、ロード位置よりも低位のアドレス空間へのアクセスを許容するとともに、ＯＳ−Ａ１００のページテーブル１０６をストレートマッピングされるように変更しているので、ＯＳ−Ｂ２００に一切変更を加えずにＯＳ−Ａ１００とＯＳ−Ｂ２００を起動することが可能となる。
【０１２８】
また、実施の形態１のオペレーティングシステムＯＳ−Ａ１００およびオペレーティングシステム起動装置では、ＯＳ−Ａ１００とＯＳ−Ｂ２００間のデータのやりとりに共有メモリ領域を必要としないので、セキュリティを強化させた状態で、複数のオペレーティングシステムを起動することができる。
【０１２９】
なお、本実施の形態では、図１７に示すように最終的にＯＳ−Ａ１００を仮想メモリ空間上での高位アドレスに、ＯＳ−Ｂ２０００を仮想メモリ空間上の低位アドレスに配置させているが、図１５に示すように、物理メモリアドレスと仮想メモリアドレスとをストレートマッピングさせた状態でＯＳ−Ｂ１１０を起動してロードし、図１６に示すようにＯＳ−Ｂ２００の仮想メモリ空間上で移動させたときに、ＯＳ−Ａ１００を仮想メモリ空間上での低位アドレスに、ＯＳ−Ｂ２００を仮想メモリ空間上の高位アドレスに配置させるように構成することも可能である。物理メモリアドレスと仮想メモリアドレスとをストレートマッピングさせてＯＳ−Ｂ２００を物理メモリ空間上ＯＳ−Ａ１００より低位アドレスにロードする構成としておけば、ＯＳ−Ｂ２００の改造なしにＯＳ−Ａ１００とＯＳ−Ｂ２００とを起動することができ、本発明の効果を達成することができるからである。
【０１３０】
（実施の形態２）
実施の形態１にかかるオペレーティングシステムＯＳ−Ａ１００では、一時的に物理メモリアドレスの全ての空間においてＯＳ使用可能となる。しかし、ＯＳ−Ａ１００が一時的にも物理メモリの全範囲が使用可能な状態となった場合、その間物理メモリの全範囲において連続した領域が確保されてしまうため、自動的に最適化処理がおこなわれ、ＯＳ−Ｂ２００の起動処理が正常におこなわれない場合がある。
【０１３１】
このため、実施の形態２のＯＳ−Ａ１００では、物理メモリ領域の一部をＯＳ使用不可能に設定した状態で起動するものである。
【０１３２】
本実施の形態のＯＳ−Ａ１００の機能的構成は、実施の形態１で説明した構成と同様である。図１９は、本実施の形態にかかるＯＳ−Ａ１００の起動処理の手順を示すフローチャートである。
【０１３３】
ＯＳ−Ａ１００は、実施の形態１と同様に、がそのロード位置指定部１２１に９６ＭＢ番地が指定されて改造されている。
【０１３４】
ＢＩＯＳ１２０がブートローダ１１５を物理メモリ１１６にロードしてから、ＢＩＯＳ１２０がメモリマップ１０８を物理メモリ１１６に出力するまでの処理（ステップＳ１９０１〜Ｓ１９０６）は、実施の形態１におけるＯＳ−Ａ１００の処理（ステップＳ７０１〜Ｓ７０６）と同様である。
【０１３５】
次に、ＯＳ−Ａメモリマップ変更部１０２が、物理メモリアドレス０番地から９５ＭＢ番地をＯＳ使用可能に、９５ＭＢ番地から９６Ｍ番地までをＯＳ使用不可能に、および９６ＭＢ番地以降をＯＳ使用可能になるようにＯＳ−Ａメモリマップ１０８を変更する（ステップＳ１９０７）。なお、ＯＳ−Ａメモリマップ１０８の変更は、図３で説明した手法でおこなわれる。そして、ＯＳ−Ａ１００のｓｅｔｕｐプログラム１０１がページングＯＦＦのプロテクトモードに移行する（ステップＳ１９０８）。
【０１３６】
次に、展開・連結プログラム１１２によってＯＳ−Ａカーネル１１４を、物理メモリ１１６上にロードするが、かかる処理（ステップＳ１９０９〜Ｓ１９１３）についても、実施の形態１における処理（ステップＳ７０９〜Ｓ７１３）と同様におこなわれる。
【０１３７】
図２０は、ステップＳ１９１４実行時のＯＳ−Ａ１００が使用する物理メモリ空間の状態を示す説明図である。図２０に示すように、物理メモリアドレス９５ＭＢ番地から９６ＭＢ番地までがＯＳ使用不可能となっており、０ＭＢ番地から９５ＭＢ番地および９６ＭＢ番地以降がＯＳ使用可能となっている。
【０１３８】
ＯＳ−Ａカーネル１１４の物理メモリ１１６上へのロードがおこなわれると、ＯＳ−Ａ１００のＯＳ初期化処理部１０４に制御がわたる。そして、ＯＳ初期化処理部１０４が処理の実行をおこない（ステップＳ１９１４）、ＯＳ初期化処理部１０４のメモリ管理初期化部１０７は、物理メモリアドレス０番地から９５ＭＢ番地までをＯＳ使用不可能に、９５ＭＢ番地から９６ＭＢ番地をＯＳ使用不可能に、９６ＭＢ番地以降をＯＳ使用可能になるようにＯＳ−Ａメモリマップ１０８を変更する（ステップＳ１９１５）。そして、メモリ管理初期化部１０７がＯＳ−Ａメモリマップ１０８からページテーブル１０６を生成する（ステップＳ１９１６）。以降の処理（ステップＳ１９１７〜Ｓ１９１９）は、実施の形態１における処理（ステップＳ７１７〜Ｓ７１９）と同様である。
【０１３９】
このように実施の形態１のオペレーティングシステムＯＳ−Ａ１００およびオペレーティングシステム起動装置では、ＯＳ−Ａ１００を起動する際に物理メモリ上でＯＳ−Ｂ２０００がロードされるべきアドレスよりも高位のアドレスをロード位置として指定し、指定されたアドレスにロードされて起動した場合に、ロード位置よりも所定サイズだけ低位のアドレス空間へのアクセスを禁止し、低位のアドレス空間よりさらに低位のアドレス空間へのアクセスを許容するようにメモリマップを変更するので、物理メモリ上の最適化処理がおこなわれることを回避でき、ＯＳ−Ｂ２００の起動を確実におこなうことができる。
【０１４０】
なお、実施の形態１および２では、ＯＳ−Ａ１００とＯＳ−Ｂ２００の二つのオペレーティングシステムを同時に稼働させる場合を例にあげて説明したが、３つ以上のオペレーティングシステムを稼働させる場合にも本発明を適用することが可能である。
【０１４１】
また、実施の形態１および２で使用したアドレスの値は一例であり、かかるアドレス値に限定されるものではない。
【０１４２】
また、本実施の形態１および２では、ＨＤＤからＯＳをロードする場合を例に挙げて説明したが、ネットワーク上のサーバからＯＳをロードする、いわゆるネットワークブートの場合についても本発明を適用することが可能である。
【０１４３】
【発明の効果】
以上説明したように、請求項１にかかる発明によれば、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを起動することができる。また、複数のオペレーティングシステム間のデータのやりとりに共有メモリ領域を必要としないので、セキュリティを強化させた状態で、複数のオペレーティングシステムを起動することができるという効果を奏する。
【０１４４】
また、請求項２にかかる発明によれば、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを起動することができる。また、起動済のオペレーティングシステムの走行環境を破壊することなく他のオペレーティングシステムを安全に起動することができるという効果を奏する。
【０１４５】
また、請求項３にかかる発明によれば、単独で起動する際の物理メモリ領域以外の位置に起動することができる。また、オペレーティングシステムで使用する物理メモリ領域しかアクセスを許容しないので、セキュリティを強化させた状態で、複数のオペレーティングシステムを起動することができるという効果を奏する。
【０１４６】
また、請求項４にかかる発明によれば、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができるという効果を奏する。
【０１４７】
また、請求項５にかかる発明によれば、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができるという効果を奏する。
【０１４８】
また、請求項６にかかる発明によれば、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができる。また、各オペレーティングシステムで使用する物理メモリ領域しかアクセスを許容しないので、セキュリティを強化させた状態で、複数のオペレーティングシステムを起動することができるという効果を奏する。
【０１４９】
また、請求項７にかかる発明によれば、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができるという効果を奏する。
【０１５０】
また、請求項８にかかる発明によれば、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができるという効果を奏する。
【０１５１】
また、請求項９にかかる発明によれば、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができるという効果を奏する。
【０１５２】
また、請求項１０にかかる発明によれば、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができるという効果を奏する。
【０１５３】
また、請求項１１にかかる発明によれば、各オペレーティングシステムで使用する物理メモリ領域しかアクセスを許容しないので、セキュリティを強化させた状態で、複数のオペレーティングシステムを起動することができるという効果を奏する。
【０１５４】
また、請求項１２にかかる発明によれば、物理メモリ上の最適化処理がおこなわれることを回避でき、他のオペレーティングシステムの起動を確実におこなうことができる。
【０１５５】
また、請求項１３にかかる発明によれば、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを互いに独立した状態で実行させることができる。また、起動済のオペレーティングシステムの走行環境を破壊することなく他のオペレーティングシステムを安全に起動することができる。
【０１５６】
また、請求項１４にかかる発明によれば、他のオペレーティングシステムに一切変更を加えずに複数のオペレーティングシステムを起動することができる。また、起動済のオペレーティングシステムの走行環境を破壊することなく他のオペレーティングシステムを安全に起動することができるという効果を奏する。
【図面の簡単な説明】
【図１】実施の形態１のオペレーティングシステム（ＯＳ−Ａ）およびオペレーティングシステム起動装置の機能的構成を示すブロック図である。
【図２】通常のＯＳの機能的構成を示すブロック図である。
【図３】メモリマップの構造の一例を示す説明図である。
【図４】メモリマップのエントリの変更によってＯＳの使用可能なメモリ空間を制限する方式を示す説明図であり、図４（ａ）が変更前を示し、図４（ｂ）が変更後を示す。
【図５】通常のＯＳの起動処理の手順を示すフローチャートである。
【図６】ＯＳの起動処理における物理メモリの状態の遷移を示す説明図である。
【図７】ＯＳ−Ａの起動処理の手順を示すフローチャートである。
【図８】ＯＳ−Ａの起動処理における物理メモリの状態の遷移を示す説明図である。
【図９】ＯＳ−Ｂの起動処理の手順を示すフローチャートである。
【図１０】ＯＳ−Ｂの起動処理の手順を示すフローチャートである。
【図１１】ＯＳ−Ｂの起動処理における物理メモリの状態の遷移を示す説明図である。
【図１２】ＯＳ−ＡによるＯＳ−Ｂの監視処理の手順を示すフローチャートである。
【図１３】ＯＳ−Ａの起動した時の物理メモリ空間と仮想メモリ空間の状態を示す説明図である。
【図１４】ストレートマッピング終了後の物理メモリ空間と仮想メモリ空間の状態を示す説明図である。
【図１５】ＯＳ−Ｂのロード後の物理メモリ空間と仮想メモリ空間の状態を示す説明図である。
【図１６】ストレートマッピング解除後の物理メモリ空間と仮想メモリ空間の状態を示す説明図である。
【図１７】ＯＳ−Ｂの起動処理完了後の物理メモリ空間と仮想メモリ空間の状態を示す説明図である。
【図１８】ＯＳ−Ａを実行するコンピュータのハードウェア構成図である。
【図１９】実施の形態２にかかるＯＳ−Ａの起動処理の手順を示すフローチャートである。
【図２０】実施の形態２におけるＯＳ−Ａの起動処理のステップＳ１９１４実行時のＯＳ−Ａ１００が使用する物理メモリ空間の状態を示す説明図である。
【符号の説明】
１００  ＯＳ−Ａ
１０１，２０１  ｓｅｔｕｐプログラム
１０２  メモリマップ変更部
１０３，２０３  メモリマップ取得コマンド発行部
１０４，２０４  ＯＳ初期化処理部
１０５  ページテーブル変更部
１０６，２０６  ページテーブル
１０７，２０７  メモリ管理初期化部
１０８，２０８  メモリマップ
１０９，２０９  割り込みディスクリプタテーブル
１１０  デバッグ例外処理部
１１１  ｓｅｔｕｐプログラム
１１２  展開・連結プログラム
１１３，１２１  ロード位置指定部
１１５  ブートローダ
１１６  物理メモリ
１１８  ＣＲ３レジスタ
１１９  ＩＤＴＲレジスタ
１２１  ＨＤＤ
２００  ＯＳ−Ｂ
１８００  コンピュータ
１８２０  入力装置
１８５０  読取装置
１８６０  出力装置
１８７０  バス
１８９０  記録媒体
【図１】
2004303028.tif 000003
【図２】
2004303028.tif 000004
【図３】
2004303028.tif 000005
【図４】
2004303028.tif 000006
【図５】
2004303028.tif 000007
【図６】
2004303028.tif 000008
【図７】
2004303028.tif 000009
【図８】
2004303028.tif 000010
【図９】
2004303028.tif 000011
【図１０】
2004303028.tif 000012
【図１１】
2004303028.tif 000013
【図１２】
2004303028.tif 000014
【図１３】
2004303028.tif 000015
【図１４】
2004303028.tif 000016
【図１５】
2004303028.tif 000017
【図１６】
2004303028.tif 000018
【図１７】
2004303028.tif 000019
【図１８】
2004303028.tif 000020
【図１９】
2004303028.tif 000021
【図２０】
2004303028.tif 000022