(57)【要約】【課題】マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができるマルチオペレーティングシステム制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにマルチオペレーティングシステム制御装置を提供すること。【解決手段】ＯＳ２０１  からＯＳ２０２  へデータを送信する場合に、ＯＳ２０１  のレジスタデータ読書き処理部２４１  がＯＳ間データ通信用レジスタ１８に送信するデータを書き込み、ＯＳ切り替え処理部２８１  により、ＯＳ２０１  からＯＳ２０２  への切り替えが実行された後、ＯＳ２０２  のレジスタデータ読書き処理部２４２  がＯＳ間データ通信用レジスタ１８からデータを読み出す。【選択図】      図１
2004259106.tif 000002
【特許請求の範囲】
【請求項１】
一つの計算機で稼動する第１のオペレーティングシステムおよび第２のオペレーティングシステムを切り替え制御するマルチオペレーティングシステム制御方法であって、
前記第１のオペレーティングシステムの実行中に所定のレジスタに通信対象となるデータを格納するデータ格納工程と、
前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替えがなされた場合に、前記所定のレジスタから前記通信対象となるデータを取得するデータ取得工程と、
を含んだことを特徴とするマルチオペレーティングシステム制御方法。
【請求項２】
前記データ格納工程により前記所定のレジスタに通信対象となるデータが格納された際に、前記第１のオペレーティングシステムに対応する第１の仮想メモリ空間の論理アドレスＮにあらかじめ仮想記憶された、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムへ切り替える第１の切り替え命令により、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替え、前記データ取得工程により、前記第２のオペレーティングシステムに対応する第２の仮想メモリ空間の論理アドレスＮ＋１にあらかじめ記憶されたデータ取得命令、または、該論理アドレスＮ＋１にあらかじめ記憶された命令以降に実行されるデータ取得命令を実行して、前記所定のレジスタから前記通信対象となるデータを取得することを特徴とする請求項１に記載のマルチオペレーティングシステム制御方法。
【請求項３】
前記第２のオペレーティングシステムは、前記データ取得命令を実行した後、あらかじめ仮想記憶された前記第２のオペレーティングシステムから前記第１のオペレーティングシステムへ切り替えるための第２の切り替え命令により、前記第２のオペレーティングシステムから前記第１のオペレーティングシステムに切り替えることを特徴とする請求項２に記載のマルチオペレーティングシステム制御方法。
【請求項４】
所定のレジスタに格納されているデータをバックアップするデータバックアップ工程と、バックアップされた前記データを該データが格納されていた前記所定のレジスタに復元するデータ復元工程とをさらに含み、前記データ格納工程では、前記データバックアップ工程によりデータがバックアップされたレジスタに通信対象となるデータを格納し、前記第２の切り替え命令により、前記第２のオペレーティングシステムから前記第１のオペレーティングシステムに切り替えがおこなわれた際に、前記データ復元工程により、バックアップされた前記データを該データが格納されていた前記所定のレジスタに復元することを特徴とする請求項３に記載のマルチオペレーティングシステム制御方法。
【請求項５】
前記所定のレジスタは、前記第１のオペレーティングシステムの実行中に第１のオペレーティングシステムにより使用されていないレジスタであることを特徴とする請求項１〜４のいずれか一つに記載のマルチオペレーティングシステム制御方法。
【請求項６】
前記所定のレジスタは、前記第１のオペレーティングシステムの実行中に第１のオペレーティングシステムにより使用されていないデバッグレジスタおよび／または汎用レジスタであることを特徴とする請求項５に記載のマルチオペレーティングシステム制御方法。
【請求項７】
前記データ格納工程は、前記通信対象となるデータのサイズが前記所定のレジスタに格納できるサイズかどうかを判定するデータサイズ判定工程をさらに含み、格納できる場合には該所定のレジスタにデータを格納し、格納できない場合には、前記所定のレジスタ以外の格納手段により前記通信対象となるデータを格納し、格納されたデータを前記第２のオペレーティングシステムが取得することを特徴とする請求項１〜６のいずれか一つに記載のマルチオペレーティングシステム制御方法。
【請求項８】
前記格納手段は、ネットワークインターフェースカードに備えられた格納手段であり、前記第２のオペレーティングシステム宛の前記通信対象となるデータが該格納手段に格納された場合に、該格納手段の接続を、前記第１のオペレーティングシステムを中継して前記第２のオペレーティングシステムに設定することを特徴とする請求項７に記載のマルチオペレーティングシステム制御方法。
【請求項９】
請求項１〜８のいずれか一つに記載されたマルチオペレーティングシステム制御方法をコンピュータに実行させるプログラム。
【請求項１０】
一つの計算機で稼動する第１のオペレーティングシステムおよび第２のオペレーティングシステムを切り替え制御するマルチオペレーティングシステム制御装置であって、
前記第１のオペレーティングシステムの実行中に所定のレジスタに通信対象となるデータを格納するデータ格納手段と、
前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替えがなされた場合に、前記所定のレジスタから前記通信対象となるデータを取得するデータ取得手段と、
を備えたことを特徴とするマルチオペレーティングシステム制御装置。
【請求項１１】
前記データ格納手段により前記所定のレジスタに通信対象となるデータが格納された際に、前記第１のオペレーティングシステムに対応する第１の仮想メモリ空間の論理アドレスＮにあらかじめ仮想記憶された、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムへ切り替える第１の切り替え命令により、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替え、前記データ取得手段は、前記第２のオペレーティングシステムに対応する第２の仮想メモリ空間の論理アドレスＮ＋１にあらかじめ記憶されたデータ取得命令、または、該論理アドレスＮ＋１にあらかじめ記憶された命令以降に実行されるデータ取得命令を実行して、前記所定のレジスタから前記通信対象となるデータを取得することを特徴とする請求項１０に記載のマルチオペレーティングシステム制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一台の計算機上で稼動する複数のオペレーティングシステムを切り替え制御するためのマルチオペレーティングシステム制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにマルチオペレーティングシステム制御装置に関するものであり、特に、セキュリティ、信頼性を向上させることができるマルチオペレーティングシステム制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにオペレーティングシステム制御装置に関するものである。
【０００２】
【従来の技術】
通常の計算機では、１つのオペレーティングシステムが動作し、それが計算機のプロセッサ、メモリ、二次記憶装置等の計算機資源を管理し、計算機が効率良く動作できるように資源スケジュールを実施している。オペレーティングシステムには、様々な種類がある。バッチ処理に優れるものや、ＴＳＳ（Ｔｉｍｅ  Ｓｈａｒｉｎｇ  Ｓｙｓｔｅｍ）に優れるもの、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）に優れているものなど様々である。
【０００３】
一方で、これら複数あるオペレーティングシステムを１台の計算機で同時に実行したいというニーズがある。例えば、大型計算機においては、実際の業務に伴うオンライン処理を実行するオペレーティングシステムと、開発用のオペレーティングシステムとを一台の計算機で動作させたいという要求がある。あるいは、ＧＵＩの整っているオペレーティングシステムと、実時間性に優れているオペレーティングシステムとを同時に稼働させたい等という要求もある。
【０００４】
しかしながら、個々のオペレーティングシステムは、単独で計算機資源の管理を実施することを前提として設計されている。従って、複数のオペレーティングシステムの共存は、何らかの機構なしには不可能である。
【０００５】
一台の計算機上で複数のオペレーティングシステムを動作させる機構としては、大型計算機で実現されている仮想計算機方式がある。図２１は、上記仮想計算機方式による従来のマルチオペレーティングシステムの構成例１を示すブロック図である。
【０００６】
同図に示したマルチオペレーティングシステムは、ハードウェア１、基盤ＯＳ２、ＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）モニタ３、仮想ＯＳ（オペレーティングシステム）４１  、仮想ＯＳ４２  および仮想ＯＳ４３  から構成されている。
【０００７】
ハードウェア１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、物理メモリ、入出力機器等である。基盤ＯＳ２およびＶＭモニタ３は、ハードウェア１の全てを制御している。ＶＭモニタ３は、仮想ＯＳ４１  〜４３  のそれぞれのハードウェア１に対するインタフェースをエミュレートする。仮想ＯＳ４１  〜４３  は、基盤ＯＳ２の上で走行する。すなわち、基盤ＯＳ２と仮想ＯＳ４１  〜４３  とは、主従関係にある。
【０００８】
同図に示したマルチオペレーティングシステムにおいて、例えば、仮想ＯＳ間でデータの通信を行う場合、基盤ＯＳ２や、仮想ＯＳ４１  〜４３  から同時に参照可能な共有メモリ（図示略）を経由する方法が採られる。
【０００９】
例えば、仮想ＯＳ４１  から仮想ＯＳ４２  へデータを送信する場合には、仮想ＯＳ４１  がデータを共有メモリに格納した後、仮想ＯＳ４２  が共有メモリからデータを取得する。なお、仮想ＯＳ間以外に、仮想ＯＳと他装置との間においても、共有メモリや基盤ＯＳ２を経由して通信が行われる。
【００１０】
また、一台の計算機で複数のオペレーティングシステムのインタフェースを提供する技術として、マイクロカーネル方式がある。図２２は、上記マイクロカーネル方式による従来のマルチオペレーティングシステムの構成例２を示すブロック図である。
【００１１】
同図に示したマルチオペレーティングシステムは、ハードウェア５、マイクロカーネル（制御プログラム）６、ＯＳ７１  、ＯＳ７２  およびＯＳ７３  から構成されている。
【００１２】
マイクロカーネル方式では、マイクロカーネル６の上に、ユーザに見せるオペレーティングシステム機能を提供するＯＳ７１  〜７３  が構築されている。ユーザはＯＳ７１  〜７３  を経由してハードウェア５（計算機資源）を利用する。マイクロカーネル６は、ＯＳ７１  〜７３  を制御する。
【００１３】
同図に示したマルチオペレーティングシステムにおいて、例えば、ＯＳ間でデータの通信を行う場合にも、マイクロカーネルや、ＯＳ７１  〜７３  から同時に参照可能な共有メモリ（図示略）を経由する方法が採られる。
【００１４】
例えば、ＯＳ７１  からＯＳ７２  へデータを送信する場合には、ＯＳ７１  がデータを共有メモリに格納した後、ＯＳ７２  が共有メモリからデータを取得する。なお、ＯＳ間以外に、ＯＳと他装置との間においても、共有メモリやマイクロカーネル６を経由して通信が行われる。
【００１５】
【特許文献１】
特開平１１−１４９３８５号公報
【特許文献２】
特開２００１−２１６１７２号公報
【特許文献３】
特開２０００−２０７２３２号公報
【特許文献４】
特開平８−２１２０８９号公報
【特許文献５】
特開２００１−２９０６６１号公報
【特許文献６】
特開平１１−８５５４６号公報
【特許文献７】
特開２００１−２８２５５８号公報
【特許文献８】
特開平１１−８５５４６号公報
【００１６】
【発明が解決しようとする課題】
ところで、前述したように、図２１に示した従来のマルチオペレーティングシステムにおいては、仮想ＯＳ間や仮想ＯＳと他装置との間で共用メモリを経由して通信を行っているため、セキュリティが低いという問題があった。
【００１７】
すなわち、上記共用メモリが複数の仮想ＯＳ４１  〜４３  のそれぞれから同時に参照可能であるため、通信時に共用メモリに外部から不正アクセスされた場合には、仮想ＯＳ４１  〜４３  が同時に攻撃される。
【００１８】
また、図２２に示した従来のマルチオペレーティングシステムにおいても、共用メモリが複数のＯＳ７１  〜７３  のそれぞれから同時に参照可能であるため、通信時に共用メモリに外部から不正アクセスされた場合に、ＯＳ７１  〜７３  が同時に攻撃され、セキュリティ上問題がある。
【００１９】
本発明は、上記に鑑みてなされたものであり、マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができるマルチオペレーティングシステム制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにマルチオペレーティングシステム制御装置を提供することを目的とする。
【００２０】
【課題を解決するための手段】
上記目的を達成するために、本発明に係るマルチオペレーティングシステム制御方法にあっては、一つの計算機で稼動する第１のオペレーティングシステムおよび第２のオペレーティングシステムを切り替え制御するマルチオペレーティングシステム制御方法であって、前記第１のオペレーティングシステムの実行中に所定のレジスタに通信対象となるデータを格納するデータ格納工程と、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替えがなされた場合に、前記所定のレジスタから前記通信対象となるデータを取得するデータ取得工程と、を含んだことを特徴とする。
【００２１】
この発明によれば、第１のオペレーティングシステムの実行中に所定のレジスタに通信対象となるデータを格納し、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替えがなされた場合に、所定のレジスタから通信対象となるデータを取得することとしたので、共有メモリを介さずに、格納できるデータのサイズが制限されたレジスタをオペレーティングシステム間の通信に用いることで、不正なデータの通信による各オペレーティングシステムの異常動作の可能性を回避することができ、マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができる。
【００２２】
つぎの発明に係るマルチオペレーティングシステム制御方法にあっては、前記データ格納工程により前記所定のレジスタに通信対象となるデータが格納された際に、前記第１のオペレーティングシステムに対応する第１の仮想メモリ空間の論理アドレスＮにあらかじめ仮想記憶された、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムへ切り替える第１の切り替え命令により、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替え、前記データ取得工程により、前記第２のオペレーティングシステムに対応する第２の仮想メモリ空間の論理アドレスＮ＋１にあらかじめ記憶されたデータ取得命令、または、該論理アドレスＮ＋１にあらかじめ記憶された命令以降に実行されるデータ取得命令を実行して、前記所定のレジスタから前記通信対象となるデータを取得することを特徴とする。
【００２３】
この発明によれば、所定のレジスタに通信対象となるデータが格納された際に、第１のオペレーティングシステムに対応する第１の仮想メモリ空間の論理アドレスＮにあらかじめ仮想記憶された、第１のオペレーティングシステムから第２のオペレーティングシステムへ切り替える第１の切り替え命令により、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替え、第２のオペレーティングシステムに対応する第２の仮想メモリ空間の論理アドレスＮ＋１にあらかじめ記憶されたデータ取得命令、または、該論理アドレスＮ＋１にあらかじめ記憶された命令以降に実行されるデータ取得命令を実行して、所定のレジスタから通信対象となるデータを取得することとしたので、従来の基盤ＯＳやＶＭモニタ等の共通部分が不要で、第１および第２のオペレーティングシステムが共存され、マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができる。
【００２４】
つぎの発明に係るマルチオペレーティングシステム制御方法にあっては、前記第２のオペレーティングシステムは、前記データ取得命令を実行した後、あらかじめ仮想記憶された前記第２のオペレーティングシステムから前記第１のオペレーティングシステムへ切り替えるための第２の切り替え命令により、前記第２のオペレーティングシステムから前記第１のオペレーティングシステムに切り替えることを特徴とする。
【００２５】
この発明によれば、第２のオペレーティングシステムは、データ取得命令を実行した後、あらかじめ仮想記憶された第２のオペレーティングシステムから第１のオペレーティングシステムへ切り替えるための第２の切り替え命令により、第２のオペレーティングシステムから第１のオペレーティングシステムに切り替えることとしたので、高いセキュリティと信頼性を維持したまま、オペレーティングシステムの切り替えおよび切り戻しを円滑におこなうことができる。
【００２６】
つぎの発明に係るマルチオペレーティングシステム制御方法にあっては、所定のレジスタに格納されているデータをバックアップするデータバックアップ工程と、バックアップされた前記データを該データが格納されていた前記所定のレジスタに復元するデータ復元工程とをさらに含み、前記データ格納工程では、前記データバックアップ工程によりデータがバックアップされたレジスタに通信対象となるデータを格納し、前記第２の切り替え命令により、前記第２のオペレーティングシステムから前記第１のオペレーティングシステムに切り替えがおこなわれた際に、前記データ復元工程により、バックアップされた前記データを該データが格納されていた前記所定のレジスタに復元することを特徴とする。
【００２７】
この発明によれば、所定のレジスタに格納されているデータをバックアップし、データがバックアップされたレジスタに通信対象となるデータを格納し、第２の切り替え命令により、第２のオペレーティングシステムから第１のオペレーティングシステムに切り替えがおこなわれた際に、バックアップされたデータをデータが格納されていた所定のレジスタに復元することとしたので、第１のオペレーティングシステムの実行中に使用されているレジスタにオペレーティングシステム間で通信するデータを格納することができ、そのレジスタを利用して通信をおこなうことにより、マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができる。
【００２８】
つぎの発明に係るマルチオペレーティングシステム制御方法にあっては、前記所定のレジスタは、前記第１のオペレーティングシステムの実行中に第１のオペレーティングシステムにより使用されていないレジスタであることを特徴とする。
【００２９】
この発明によれば、所定のレジスタは、第１のオペレーティングシステムの実行中に第１のオペレーティングシステムにより使用されていないレジスタであることとしたので、オペレーティングシステム間で通信するデータを格納することができ、そのレジスタを利用して通信をおこなうことにより、マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができる。
【００３０】
つぎの発明に係るマルチオペレーティングシステム制御方法にあっては、前記所定のレジスタは、前記第１のオペレーティングシステムの実行中に第１のオペレーティングシステムにより使用されていないデバッグレジスタおよび／または汎用レジスタであることを特徴とする。
【００３１】
この発明によれば、所定のレジスタは、第１のオペレーティングシステムの実行中に第１のオペレーティングシステムにより使用されていないデバッグレジスタおよび／または汎用レジスタであることとしたので、デバッグレジスタおよび／または汎用レジスタにオペレーティングシステム間で通信するデータを格納することができ、そのレジスタを利用して通信をおこなうことにより、マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができる。
【００３２】
つぎの発明に係るマルチオペレーティングシステム制御方法にあっては、前記データ格納工程は、前記通信対象となるデータのサイズが前記所定のレジスタに格納できるサイズかどうかを判定するデータサイズ判定工程をさらに含み、格納できる場合には該所定のレジスタにデータを格納し、格納できない場合には、前記所定のレジスタ以外の格納手段により前記通信対象となるデータを格納し、格納されたデータを前記第２のオペレーティングシステムが取得することを特徴とする。
【００３３】
この発明によれば、通信対象となるデータのサイズが所定のレジスタに格納できるサイズかどうかを判定し、格納できる場合には所定のレジスタにデータを格納し、格納できない場合には、所定のレジスタ以外の格納手段により通信対象となるデータを格納し、格納されたデータを第２のオペレーティングシステムが取得することとしたので、データのサイズに応じて適切な格納手段を選択することができ、高いセキュリティおよび信頼性を有する効率的なオペレーティングシステム間のデータの通信をおこなうことができる。
【００３４】
つぎの発明に係るマルチオペレーティングシステム制御方法にあっては、前記格納手段は、ネットワークインターフェースカードに備えられたものであり、前記第２のオペレーティングシステム宛の前記通信対象となるデータが該格納手段に格納された場合に、該格納手段の接続を、前記第１のオペレーティングシステムを中継して前記第２のオペレーティングシステムに設定することを特徴とする。
【００３５】
この発明によれば、ネットワークインターフェースカードに備えられた格納手段に第２のオペレーティングシステム宛の前記通信対象となるデータが格納された場合に、格納手段の接続を、第１のオペレーティングシステムを中継して第２のオペレーティングシステムに設定することとしたので、通信対象となるデータのサイズが所定のレジスタに格納できないサイズであっても、高いセキュリティおよび信頼性を有する効率的なオペレーティングシステム間のデータの通信をおこなうことができる。
【００３６】
つぎの発明に係るプログラムは、上記発明のいずれか一つに記載されたマルチオペレーティングシステム制御方法をコンピュータに実行させるプログラムであり、そのプログラムがコンピュータ読み取り可能となり、これによって、上記発明のいずれか一つの動作をコンピュータによって実行することができる。
【００３７】
つぎの発明に係るマルチオペレーティングシステム制御装置にあっては、一つの計算機で稼動する第１のオペレーティングシステムおよび第２のオペレーティングシステムを切り替え制御するマルチオペレーティングシステム制御装置であって、前記第１のオペレーティングシステムの実行中に所定のレジスタに通信対象となるデータを格納するデータ格納手段と、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替えがなされた場合に、前記所定のレジスタから前記通信対象となるデータを取得するデータ取得手段と、を備えたことを特徴とする。
【００３８】
この発明によれば、第１のオペレーティングシステムの実行中に所定のレジスタに通信対象となるデータを格納し、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替えがなされた場合に、所定のレジスタから通信対象となるデータを取得することとしたので、共有メモリを介さずに、格納できるデータのサイズが制限されたレジスタをオペレーティングシステム間の通信に用いることで、不正なデータの通信による各オペレーティングシステムの異常動作の可能性を回避することができ、マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができる。
【００３９】
つぎの発明に係るマルチオペレーティングシステム制御装置にあっては、前記データ格納手段により前記所定のレジスタに通信対象となるデータが格納された際に、前記第１のオペレーティングシステムに対応する第１の仮想メモリ空間の論理アドレスＮにあらかじめ仮想記憶された、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムへ切り替える第１の切り替え命令により、前記第１のオペレーティングシステムから前記第２のオペレーティングシステムに切り替え、前記データ取得手段は、前記第２のオペレーティングシステムに対応する第２の仮想メモリ空間の論理アドレスＮ＋１にあらかじめ記憶されたデータ取得命令、または、該論理アドレスＮ＋１にあらかじめ記憶された命令以降に実行されるデータ取得命令を実行して、前記所定のレジスタから前記通信対象となるデータを取得することを特徴とする。
【００４０】
この発明によれば、所定のレジスタに通信対象となるデータが格納された際に、第１のオペレーティングシステムに対応する第１の仮想メモリ空間の論理アドレスＮにあらかじめ仮想記憶された、第１のオペレーティングシステムから第２のオペレーティングシステムへ切り替える第１の切り替え命令により、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替え、第２のオペレーティングシステムに対応する第２の仮想メモリ空間の論理アドレスＮ＋１にあらかじめ記憶されたデータ取得命令、または、該論理アドレスＮ＋１にあらかじめ記憶された命令以降に実行されるデータ取得命令を実行して、所定のレジスタから通信対象となるデータを取得することとしたので、従来の基盤ＯＳやＶＭモニタ等の共通部分が不要で、第１および第２のオペレーティングシステムが共存され、マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができる。
【００４１】
【発明の実施の形態】
以下、図面を参照して本発明にかかるマルチオペレーティングシステム制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにマルチオペレーティングシステム制御装置の実施の形態１および２について詳細に説明する。
【００４２】
（実施の形態１）
図１は、本発明に係る実施の形態１の概略構成を示すブロック図である。この図に示したマルチオペレーティングシステムは、ハードウェア１０、ＯＳ２０１  、ＯＳ２０２  およびＡＰ（アプリケーションプログラム）３０１  〜３０４  から構成されている。
【００４３】
また、ＯＳ２０１  およびＯＳ２０２  は、レジスタデータ読書き処理部２４１  および２４２  、ＯＳ切替え処理部２８１  および２８２  をそれぞれ有する。そして、ハードウェア１０は、ＯＳ間データ通信用レジスタ１８を有する。
【００４４】
ＯＳ間データ通信用レジスタ１８は、ＯＳ２０１  からＯＳ２０２  へ、またはＯＳ２０２  からＯＳ２０１  へデータを通信する際に、通信するデータを格納するレジスタであり、実行中のＯＳ２０１  またはＯＳ２０２  により使用されていないレジスタである。通信するデータには、送信先のＯＳに対するコマンド等も含まれる。
【００４５】
例えば、インテル社製ペンティアム（登録商標）プロセッサのデバッグレジスタは、デバッグモード時以外では使用されていないレジスタであり、ＯＳ間データ通信用レジスタ１８として利用できる。
【００４６】
同じくインテル社製ペンティアム（登録商標）プロセッサの汎用レジスタＥＣＸは、ループの回数をカウントするために用いられるが、ループ処理をおこなっていない場合には使用されておらず、ＯＳ間データ通信用レジスタ１８として利用できる。
【００４７】
ＯＳ間データ通信用レジスタ１８として利用することができるレジスタは、上記のレジスタに限定されず、実行中のＯＳ２０１  またはＯＳ２０２  により使用されていないレジスタであればよい。
【００４８】
また、実行中のＯＳ２０１  またはＯＳ２０２  により使用されているレジスタであっても、レジスタに格納されているデータをメモリなどにバックアップすれば、そのレジスタをＯＳ間データ通信用レジスタ１８として利用することができる。
【００４９】
ただしこの場合は、データの通信終了後、バックアップされたデータをレジスタに復元する。このようにすることで、データ通信をおこなう以前の状態と同様に、データの通信終了後のレジスタへのアクセスを正常におこなうことができるようになる。
【００５０】
同マルチオペレーティングシステムでは、ＯＳ２０１  からＯＳ２０２  へ、またはＯＳ２０２  からＯＳ２０１  への切り替えがＯＳ切替え処理部２８１  および２８２  によりそれぞれ実行される。割り込みの発生要因としては、ＯＳ間データ通信用レジスタ１８を介してのデータの通信要求、タイマ（図示略）による定期的な切り替え要求等が挙げられる。
【００５１】
データの通信要求による割り込みが発生し，ＯＳ２０１  からＯＳ２０２  へデータを送信する場合には、ＯＳ２０１  のレジスタデータ読書き処理部２４１  によりＯＳ間データ通信用レジスタ１８に送信するデータが書き込まれる（格納される）。
【００５２】
そして、ＯＳ切替え処理部２８１  により、ＯＳ２０１  からＯＳ２０２  への切り替えが実行された後、ＯＳ２０２  のレジスタデータ読書き処理部２４２  によりＯＳ間データ通信用レジスタ１８からデータが読み出されて（取得されて）、ＯＳ間のデータ通信が完了する。
【００５３】
ＯＳ２０２  からＯＳ２０１  へデータを送信する場合には、ＯＳ２０２  のレジスタデータ読書き処理部２４２  によりＯＳ間データ通信用レジスタ１８に送信するデータが書き込まれる。そして、ＯＳ切替え処理部２８２  により、ＯＳ２０２  からＯＳ２０１  への切り替えが実行された後、ＯＳ２０１  のレジスタデータ読書き処理部２４１  によりＯＳ間データ通信用レジスタ１８からデータが読み出される。
【００５４】
ここで、ＯＳ間データ通信用レジスタ１８のサイズは１６ビット〜８０ビット程度と限定されているので、不正なデータやウィルスプログラムがＯＳ２０１  とＯＳ２０２  との間で伝播しにくく、ＯＳのセキュリティおよび信頼性を向上させることができる。
【００５５】
このように、同マルチオペレーティングシステムは、従来のように共通の制御プログラムや、共用メモリ等を介さずに、ＯＳ間データ通信用レジスタ１８を用いて、高いセキュリティを保持した状態でＯＳ２０１  とＯＳ２０２  との間でデータの受け渡しを実現する点に特徴がある。
【００５６】
図２は、実施の形態１の具体的構成を示すブロック図である。この図において、図１の各部に対応する部分には同一の符号を付ける。また、本実施の形態１では、ＯＳ間データ通信用レジスタ１８として、インテル社製ペンティアム（登録商標）プロセッサのデバッグレジスタ１５を用いた場合について説明する。
【００５７】
図２において、ハードウェア１０は、計算機資源であり、制御部１１、物理メモリ１２、割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４、デバッグレジスタ１５、その他のレジスタ１６、プログラムカウンタ１７や、図示しないキーボード、ディスプレイ等から構成されている。
【００５８】
ハードウェア１０には、マルチ構成のＯＳ２０１  およびＯＳ２０２  が存在している。ＯＳ２０１  およびＯＳ２０２  のそれぞれは、ハードウェア１０の計算機資源を管理し、割り込み処理ルーチンの中で切り替えられる。すなわち、ある時間を考えると、ハードウェア１０は、一つのＯＳ（ＯＳ２０１  またはＯＳ２０２  ）により占有される。
【００５９】
ＯＳ２０１  は、データチェック処理部２１１  、割り込み振分処理部２２１  、割り込み処理部２３１  、レジスタデータ読書き処理部２４１  、割り込みベクタテーブル２５１  、ページテーブル２６１  、レジスタ退避領域２７１  等から構成されている。
【００６０】
図１に示したＯＳ切り替え処理部２８１  は、データチェック処理部２１１  、割り込み振分処理部２２１  、割り込み処理部２３１  、割り込みベクタテーブル２５１  、ページテーブル２６１  、レジスタ退避領域２７１  等に対応するものである。ＡＰ３０１  およびＡＰ３０２  は、ＯＳ２０１  上で走行するアプリケーションプログラムである。
【００６１】
一方、ＯＳ２０２  は、ＯＳ２０１  に併設されており、データチェック処理部２１２  、割り込み振分処理部２２２  、割り込み処理部２３２  、レジスタデータ読書き処理部２４２  、割り込みベクタテーブル２５２  、ページテーブル２６２  、レジスタ退避領域２７２  等から構成されている。
【００６２】
図１に示したＯＳ切り替え処理部２８２  は、データチェック処理部２１２  、割り込み振分処理部２２２  、割り込み処理部２３２  、割り込みベクタテーブル２５２  、ページテーブル２６２  、レジスタ退避領域２７２  等に対応するものである。ＡＰ３０３  およびＡＰ３０４  は、ＯＳ２０２  上で走行するアプリケーションプログラムである。
【００６３】
ハードウェア１０において、制御部１１は、ＣＰＵ等であり、プログラム実行により各部を制御する。物理メモリ１２は、物理的に実在する大容量の記憶装置であり、図３に示したように、仮想記憶制御方式に用いられ、各種命令やデータ等を実際に記憶する。
【００６４】
すなわち、本実施の形態１においては、物理メモリ１２に対応して、仮想メモリ空間４０１  および仮想メモリ空間４０２  が仮想的に構築されている。仮想メモリ空間４０１  は、ＯＳ２０１  側に対応して設けられており、物理メモリ１２のＯＳ用物理メモリ領域１２ａ１  およびＡＰ用物理メモリ領域１２ｂ１  にマッピングされている。
【００６５】
具体的には、ＯＳ用仮想メモリ空間４０ａ１  は、ＯＳ２０１  で利用されるメモリ空間であり、ＯＳ用物理メモリ領域１２ａ１  にマッピングされている。ＡＰ用仮想メモリ空間４０ｂ１  は、ＡＰ３０１  およびＡＰ３０２  で利用されるメモリ空間であり、ＡＰ用物理メモリ領域１２ｂ１  にマッピングされている。
【００６６】
一方、仮想メモリ空間４０２  は、ＯＳ２０２  側に対応して設けられており、物理メモリ１２のＯＳ用物理メモリ領域１２ａ２  およびＡＰ用物理メモリ領域１２ｂ２  にマッピングされている。
【００６７】
具体的には、ＯＳ用仮想メモリ空間４０ａ２  は、ＯＳ２０２  で利用されるメモリ空間であり、ＯＳ用物理メモリ領域１２ａ２  にマッピングされている。ＡＰ用仮想メモリ空間４０ｂ２  は、ＡＰ３０３  およびＡＰ３０４  で利用されるメモリ空間であり、ＡＰ用物理メモリ領域１２ｂ２  にマッピングされている。
【００６８】
物理メモリ１２では、物理的な記憶単位に物理アドレスが付与されている。一方、仮想メモリ空間４０１  および仮想メモリ空間４０２  では、プログラム中で用いられる論理アドレスによって命令やデータが特定される。仮想記憶制御方式では、ページング方式、セグメンテーション方式、ページング／セグメンテーション方式により、論理アドレスを物理アドレスに変換している。
【００６９】
ページング方式では、アドレス変換がページと呼ばれるブロック単位（４キロバイト）で行われる。このため、ＯＳ２０１  においては、仮想メモリ空間４０１  の仮想ページが、物理メモリ１２のどの物理ページに対応しているかを表すページテーブル（変換テーブル）２６１  が設けられている。同様にして、ＯＳ２０２  においても、仮想メモリ空間４０２  のページが、物理メモリ１２のどのページに対応しているかを表すページテーブル（変換テーブル）２６２  が設けられている。
【００７０】
また、図４（ｂ）に示したように、仮想メモリ空間４０１  のＺ番地（論理アドレス）には、ＯＳ２０１  からＯＳ２０２  へ通信するデータをデバッグレジスタ１５に書き込むデータ書込命令Ａが記憶されている。さらに、仮想メモリ空間４０１  のＮ番地には、ＯＳ２０１  からＯＳ２０２  へ切り替えるための切替命令Ａが記憶されている。
【００７１】
一方、仮想メモリ空間４０２  において、仮想メモリ空間４０１  のＮ番地と同一のＮ番地には、ＯＳ２０２  からＯＳ２０１  へ切り替えるための切替命令Ｂが記憶されている。また、仮想メモリ空間４０２  のＮ＋１番地には、デバッグレジスタ１５に書き込まれたデータを読み出すデータ読出命令Ｂが記憶されている。
【００７２】
図２に戻り、割り込みベクタテーブルレジスタ１３は、割り込みに応じた割込番号を格納するレジスタである。この割込番号は、後述する割り込みベクタテーブル２５１  または割り込みベクタテーブル２５２  での割り込み処理ルーチンの論理アドレスに対応している。
【００７３】
ページテーブルレジスタ１４は、後述するページテーブル２６１  またはページテーブル２６２  へのページインデックスを格納するレジスタである。デバッグレジスタ１５は、実行中のＯＳ２０２  またはＯＳ２０１  により使用されていない、ＯＳ間データ通信用レジスタ１８として利用されるレジスタである。その他レジスタ１６は、汎用レジスタ、フラグレジスタ等である。プログラムカウンタ１７は、仮想メモリ空間から命令をフェッチする論理アドレスを１インクリメントする。
【００７４】
ＯＳ２０１  において、データチェック処理部２１１  は、ＯＳ２０１  からＯＳ２０２  へ通信するデータについて、不正なものであるかどうか等のチェックを実行する。このチェック結果が異常なものである場合には、アラームがあがり、一連の処理が中断される。
【００７５】
割り込み振分処理部２２１  は、割り込み発生時に、割り込みベクタテーブルレジスタ１３の割込番号に基づき、割り込みベクタテーブル２５１  を参照して、所定の割り込み処理ルーチンへジャンプさせる。なお、実際には、割り込み振分処理部２２１  の処理は、割り込み発生時に制御部１１内部で実行される。
【００７６】
割り込み処理部２３１  は、割り込み処理ルーチン、ＯＳ切り替え処理（ＯＳ２０１  からＯＳ２０２  ）を実行する。レジスタデータ読書き処理部２４１  は、ＯＳ１  がＯＳ２  に通信するデータをデバッグレジスタ１５に書き込む処理（データを格納する処理）と、ＯＳ２  からの通信データをデバッグレジスタ１５から読み出す処理（データを取得する処理）とを実行する。
【００７７】
割り込みベクタテーブル２５１  は、上述した割込番号毎の、割り込み処理に対応する論理アドレスを格納している。ページテーブル２６１  は、仮想メモリ空間４０１  （図３参照）の各仮想ページと、物理メモリ１２の各物理ページとの対応関係を表すテーブルである。
【００７８】
レジスタ退避領域２７１  は、ＯＳ切り替え時に、切り替え前のＯＳに対応するレジスタ（割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４、その他レジスタ１６）の内容を退避するための領域である。具体的には、ＯＳ２０１  からＯＳ２０２  へ切り替えられる場合、レジスタ退避領域２７１  には、ＯＳ２０１  に対応するレジスタの内容が退避される。
【００７９】
一方、ＯＳ２０２  において、データチェック処理部２１２  は、ＯＳ２０２  からＯＳ２０１  へ通信するデータについて、不正なものであるかどうか等のチェックを実行する。このチェック結果が異常なものである場合には、アラームがあがり、一連の処理が中断される。
【００８０】
割り込み振分処理部２２２  は、割り込み発生時に、割り込みベクタテーブルレジスタ１３の割込番号に基づき、割り込みベクタテーブル２５２  を参照して、所定の割り込み処理ルーチンへジャンプさせる。なお、実際には、割り込み振分処理部２２２  の処理は、割り込み発生時に制御部１１内部で実行される。
【００８１】
割り込み処理部２３２  は、割り込み処理ルーチン、ＯＳ切り替え処理（ＯＳ２０２  からＯＳ２０１  ）を実行する。レジスタデータ読書き処理部２４２  は、ＯＳ２  がＯＳ１  に通信するデータをデバッグレジスタ１５に書き込む処理（データを格納する処理）と、ＯＳ１  からの通信データをデバッグレジスタ１５から読み出す処理（データを取得する処理）とを実行する。
【００８２】
割り込みベクタテーブル２５２  は、上述した割込番号毎の、割り込み処理に対応する論理アドレスを格納している。ページテーブル２６２  は、仮想メモリ空間４０２  （図３参照）の各仮想ページと、物理メモリ１２の各物理ページとの対応関係を表すテーブルである。
【００８３】
レジスタ退避領域２７２  は、ＯＳ切り替え時に、切り替え前のＯＳに対応するレジスタ（割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４、その他レジスタ１６）の内容を退避するための領域である。具体的には、ＯＳ２０２  からＯＳ２０１  へ切り替えられる場合、レジスタ退避領域２７２  には、ＯＳ２０２  に対応するレジスタの内容が退避される。
【００８４】
つぎに、図５を参照して、本実施の形態１の動作原理について説明する。同図の例では、ＯＳ２０１  が動作状態にあり、ＯＳ２０２  が待機状態にあるものとする。この状態で、ＯＳ２０１  側で割り込みが発生すると、割り込みベクタテーブルレジスタ１３の割込番号に基づいて、割り込みベクタテーブル２５１  が参照され、仮想メモリ空間４０１  のＬ番地より、割り込み処理ルーチンが実行される。
【００８５】
以後、プログラムカウンタ１７（図２参照）が１インクリメントされる毎に、仮想メモリ空間４０１  の番地が１つ移行し、当該番地の命令が順次実行される。そして、仮想メモリ空間４０１  のＺ番地でデータ書込命令Ａが実行され、ＯＳ２０２  に通信するデータがデバッグレジスタ１５に書き込まれる。その後、Ｎ番地で切替命令Ａが実行され、ＯＳ２０１  からＯＳ２０２  へ切り替えられる。
【００８６】
そして、プログラムカウンタ１７が１インクリメントされ、論理アドレスがＮ＋１番地になると、仮想メモリ空間４０２  のＮ＋１番地のデータ読込命令Ｂが実行され、デバッグレジスタ１５からデータが読み出される。なお、このデータ読込命令Ｂは、Ｎ＋１番地以外のアドレスに記憶され、Ｎ＋１番地の命令が実行された後に実行されることとしてもよい。
【００８７】
以後、プログラムカウンタ１７（図２参照）が１インクリメントされる毎に、仮想メモリ空間４０２  の番地が１つ移行し、当該番地の命令が順次実行される。そして、仮想メモリ空間４０２  のＳ番地でジャンプ命令が実行され、仮想メモリ空間４０２  のＮ−Ｍ番地へジャンプされる。
【００８８】
以後、プログラムカウンタ１７（図２参照）が１インクリメントされる毎に、仮想メモリ空間４０２  の番地が１つ移行し、当該番地の命令が順次実行される。そして、仮想メモリ空間４０２  のＰ番地でデータ書込命令Ｂが実行され、ＯＳ２０１  に通信するデータがデバッグレジスタ１５に書き込まれる。その後、Ｎ番地で切替命令Ｂが実行され、ＯＳ２０２  からＯＳ２０１  へ切り替えられる（切り戻される）。
【００８９】
そして、プログラムカウンタ１７が１インクリメントされ、論理アドレスがＮ＋１番地になると、仮想メモリ空間４０１  のＮ＋１番地のデータ読込命令Ａが実行され、デバッグレジスタ１５からデータが読み出される。なお、このデータ読込命令Ａは、Ｎ＋１番地以外のアドレスに記憶され、Ｎ＋１番地の命令が実行された後に実行されることとしてもよい。
【００９０】
その後、プログラムカウンタ１７が１インクリメントされ、論理アドレスがＮ＋２番地になると、ＩＲＥＴが実行され、割り込みから復帰される。なお、ＯＳ２０２  側で割り込みが発生した場合も、上述と同様に動作する。
【００９１】
つぎに、図６〜図８を参照して、本実施の形態１の動作例について説明する。図６は、本実施の形態１の動作例を説明する図である。この動作例では、仮想メモリ空間４０１  および仮想メモリ空間４０２  の各論理アドレスには、同図に示した処理に対応する各種命令が割り当てられている。
【００９２】
同図の例では、ＯＳ２０１  が動作状態にあり、ＯＳ２０２  が待機状態にあるものとする。この状態で、ＯＳ２０１  側で割り込みが発生すると、割り込み振分処理部２２１  は、▲１▼で、割り込みベクタテーブルレジスタ１３の割込番号に基づいて、割り込みベクタテーブル２５１  を参照し、当該割り込み処理へジャンプする。
【００９３】
これにより、割り込み処理部２３１  は、▲２▼で、仮想メモリ空間４０１  のＬ番地より割り込み処理ルーチンを実行する。以後、プログラムカウンタ１７（図２参照）が１インクリメントされる毎に、仮想メモリ空間４０１  の番地が１つ移行し、当該番地の命令が順次実行される。
【００９４】
そして、仮想メモリ空間４０１  のＹ番地においては、仮想メモリ空間４０１  におけるＯＳ切り替え処理の前に割り込み禁止命令が実行される。割り込み禁止命令が実行されると、他の割り込みを受け付けない状態となる。この割り込み禁止命令は、ＯＳ切り替え処理を実行中に、より優先度が高い割り込みが多重的に入ることを防止するために実行されるものである。
【００９５】
そして、ＯＳ切り替え処理（レジスタをレジスタ退避領域に退避）では、Ｙ＋１番地で、ＯＳ２０１  に対応する割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４およびその他レジスタ１６の内容がレジスタ退避領域２７１  に退避される。
【００９６】
続いてのＺ−１番地におけるＯＳ切替え処理（ＯＳ間通信データチェック）では、ＯＳ２０１  からＯＳ２０２  へ通信するデータの不正チェック等をおこなう。チェック結果が異常である場合には、アラームがあがり、一連の処理が中断される。
【００９７】
この場合、チェック結果が正常であるものとし、Ｚ番地のＯＳ切替え処理（ＯＳ間通信データチェック）では、デバッグレジスタ１５にＯＳ２０１  からＯＳ２０２  へ通信するデータを書き込む。
【００９８】
そして、ＯＳ切り替え処理（ＩＤＴＲ切り替え命令）では、割り込みベクタテーブルレジスタ１３が、ＯＳ２０１  用からＯＳ２０２  用に切り替えられる。つぎのＯＳ切り替え処理（ページテーブルレジスタ変更命令）では、仮想メモリ空間４０１  のＮ番地で、ページテーブルレジスタ１４がＯＳ２０１  用からＯＳ２０２  用に変更される。これにより、ＯＳ２０１  からＯＳ２０２  へ切り替えられる（▲３▼）。
【００９９】
続いてのＯＳ切り替え処理（レジスタからＯＳ間通信データを読み込む）では、仮想メモリ空間４０２  のＮ＋１番地で、デバッグレジスタ１５からデータを読み込む。
【０１００】
その後のＯＳ切り替え処理（レジスタ退避領域からレジスタを復帰）では、Ｎ＋２番地において、以前にレジスタ退避領域２７２  に退避されていたＯＳ２０２  用のレジスタの内容が割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４およびその他レジスタ１６にそれぞれ復帰される。そして、Ｎ＋３番地において、割り込み許可命令が実行される。割り込み許可命令が実行されると、他の割り込みを受け付ける状態となる（▲４▼）。
【０１０１】
そして、割り込み処理部２３２  は、割り込み処理ルーチンを順次実行する。そして、仮想メモリ空間４０２  のＳ番地でジャンプ命令が実行され、仮想メモリ空間４０２  のＮ−Ｍ番地へジャンプされる（▲５▼）。
【０１０２】
その後、仮想メモリ空間４０２  のＮ−Ｍ番地における割り込み禁止命令が実行され、他の割込みを受け付けない状態となる。そして、Ｎ−Ｍ＋１番地のＯＳ切り替え処理（レジスタをレジスタ退避領域に退避）では、ＯＳ２０２  に対応する割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４およびその他レジスタ１６の内容がレジスタ退避領域２７２  に退避される。
【０１０３】
続いてのＰ−１番地のＯＳ切り替え処理（ＯＳ間通信データチェック）では、ＯＳ２０２  からＯＳ２０１  へ通信するデータの不正チェック等をおこなう。チェック結果が異常である場合には、アラームがあがり、一連の処理が中断される。
【０１０４】
この場合、チェック結果が正常であるものとし、Ｐ番地のＯＳ切替え処理（レジスタにＯＳ間通信データを書き込む）では、デバッグレジスタ１５にＯＳ２０２  からＯＳ２０１  へ通信するデータを書き込む。そして、ＯＳ切り替え処理（ＩＤＴＲ切り替え命令）では、割り込みベクタテーブルレジスタ１３が、ＯＳ２０２  用からＯＳ２０１  用に切り替えられる（▲６▼）。
【０１０５】
続いてのＯＳ切り替え処理（ページテーブルレジスタ変更命令）では、仮想メモリ空間４０２  のＮ番地で、ページテーブルレジスタ１４がＯＳ２０２  用からＯＳ２０１  用に変更される。これにより、ＯＳ２０２  からＯＳ２０１  へ切り替えられる（▲７▼）。
【０１０６】
その後のＯＳ切り替え処理（レジスタからＯＳ間通信データを読み込む）では、仮想メモリ空間４０１  のＮ＋１番地において、デバッグレジスタ１５からデータを読み込む。
【０１０７】
そして、ＯＳ切り替え処理（レジスタ退避領域からレジスタを復帰）では、仮想メモリ空間４０１  のＮ＋２番地において、先にレジスタ退避領域２７１  に退避されていたＯＳ２０１  用のレジスタの内容が割り込みベクタテーブルレジスタ１３、ページテーブルレジスタ１４およびその他レジスタ１６にそれぞれ復帰される。そして、Ｎ＋３番地において、割り込み許可命令が実行される。割り込み許可命令が実行されると、他の割り込みを受け付ける状態となる。
【０１０８】
つぎに、割り込み処理部２３１  は、割り込み処理ルーチンを順次実行する。そして、仮想メモリ空間４０１  のＸ番地でＩＲＥＴ（割り込み復帰命令）が実行され、処理ルーチンが割り込み処理ルーチンから通常処理ルーチンへ復帰される（▲８▼）。
【０１０９】
図７および図８は、上記動作例を説明するフローチャートである。同図において、割り込みが発生すると、ステップＳＡ１では、ＯＳ２０１  のアプリケーション走行が中止され、割り込み振分処理部２２１  が起動される。ステップＳＡ２では、ＯＳ２０１  の割り込み振分処理部２２１  が割り込みに対応する割込番号を割り込みベクタテーブルレジスタ１３から取得する。
【０１１０】
ステップＳＡ３では、割り込み振分処理部２２１  により、割り込みベクタテーブル２５１  が参照され、仮想メモリ空間４０１  における割り込み処理ルーチンのある論理アドレスにジャンプされる（図６の▲１▼）。ステップＳＡ４では、割り込み処理ルーチンが実行される（図６の▲２▼）。
【０１１１】
ステップＳＡ５では、割り込み禁止命令が実行される（図６のＹ番地）。ステップＳＡ６では、ＯＳ切り替え処理（レジスタをレジスタ退避領域に退避）が実行される。ステップＳＡ７では、ＯＳ切り替え処理（ＯＳ間通信データチェック）が実行され、ＯＳ２０２  へ通信するデータのチェックがおこなわれる（図６のＺ−１番地）。なお、チェック結果が異常である場合には、アラームがあがり、一連の処理が中断される。
【０１１２】
この場合、チェック結果が正常であるものとし、ステップＳＡ８では、ＯＳ切り替え処理（レジスタにＯＳ間通信データを書き込む）が実行され、デバッグレジスタ１５にＯＳ２０２  へ通信するデータを書き込む（図６のＺ番地）。
【０１１３】
ステップＳＡ９では、ＯＳ切り替え処理（ＩＤＴＲ切り替え命令）が実行される。ステップＳＡ１０では、ＯＳ切り替え処理（ページテーブルレジスタ変更命令）が実行され（図６の▲３▼）、ＯＳ２０１  からＯＳ２０２  へ切り替わる。
【０１１４】
ステップＳＡ１１では、ＯＳ２０２  でＯＳ切り替え処理（レジスタからＯＳ間通信データを読み込む）が実行される（図６のＮ＋１番地）。ステップＳＡ１２では、ＯＳ切り替え処理（レジスタ退避領域からレジスタを復帰）が実行される（図６のＮ＋２番地）。
【０１１５】
ステップＳＡ１３では、割り込み許可命令が実行される（図６のＮ＋３番地）。ステップＳＡ１４では、割り込み処理ルーチンが実行される。ステップＳＡ１５では、ジャンプ命令が実行され、Ｎ−Ｍ番地にジャンプされる（図６の▲５▼）。
【０１１６】
図８に示したステップＳＡ１６では、割り込み禁止命令が実行される（図６のＮ−Ｍ番地）。ステップＳＡ１７では、ＯＳ切り替え処理（レジスタをレジスタ退避領域に退避）が実行される。ステップＳＡ１８では、ＯＳ切り替え処理（ＯＳ間通信データチェック）が実行され、ＯＳ２０１  へ通信するデータのチェックがおこなわれる（図６のＰ−１番地）。なお、チェック結果が異常である場合には、アラームがあがり、一連の処理が中断される。
【０１１７】
この場合、チェック結果が正常であるものとし、ステップＳＡ１９では、ＯＳ切り替え処理（レジスタにＯＳ間通信データを書き込む）が実行され、デバッグレジスタ１５にＯＳ２０２  へ通信するデータを書き込む（図６のＰ番地）。
【０１１８】
ステップＳＡ２０では、ＯＳ切り替え処理（ＩＤＴＲ切り替え命令）が実行される。ステップＳＡ２１では、ＯＳ切り替え処理（ページテーブルレジスタ変更命令）が実行され（図６の▲７▼）、ＯＳ２０２  からＯＳ２０１  へ切り替わる。
【０１１９】
ステップＳＡ２２では、ＯＳ２０１  でＯＳ切り替え処理（レジスタからＯＳ間通信データを読み込む）が実行される（図６のＮ＋１番地）。ステップＳＡ２３では、ＯＳ切り替え処理（レジスタ退避領域からレジスタを復帰）が実行される（図６のＮ＋２番地）。
【０１２０】
ステップＳＡ２４では、割り込み許可命令が実行される（図６のＮ＋３番地）。ステップＳＡ２５では、割り込み処理ルーチンが実行される。ステップＳＡ２６では、ＩＲＥＴ（割り込み復帰命令）が実行され、割り込みから復帰される。
【０１２１】
以上説明したように、本実施の形態１によれば、ＯＳ２０１  からＯＳ２０２  へ（または、ＯＳ２０２  からＯＳ２０１  へ）通信するデータをデバッグレジスタ１５に格納し、ＯＳ２０１  からＯＳ２０２  へ（または、ＯＳ２０２  からＯＳ２０１  へ）切り替えが実行された場合に、ＯＳ２０２  （または、ＯＳ２０１  ）がデバッグレジスタ１５からデータを読み込むこととしたので、デバッグレジスタ１５に格納されるデータサイズが制限されているため、不正なデータやウィルスプログラムがＯＳ２０１  とＯＳ２０２  との間で伝播しにくく、マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができる。
【０１２２】
また、本実施の形態１によれば、通信対象のデータの正常性をデータチェック処理部２１１  およびデータチェック処理部２１２  でチェックし、正常である場合にのみ通信処理を継続させることとしたので、マルチオペレーティングシステムのセキュリティ、信頼性をさらに向上させることができる。
【０１２３】
また、本実施の形態１によれば、ＯＳにより使用されていないレジスタを利用するだけであるので、何ら特別な装置や回路を必要とせず、市販のパーソナルコンピュータでも用意に実現することができる。
【０１２４】
（実施の形態２）
さて、前述した実施の形態１では、ＯＳ２０１  とＯＳ２０２  との間でレジスタを介してデータを通信する場合を示したが、データを通信する際に、データサイズがレジスタに格納できるサイズである場合には、レジスタを利用したデータ通信をおこない、レジスタに格納できないサイズである場合には、別の方法でそのデータを通信するよう構成してもよい。
【０１２５】
以下では、レジスタに格納できないデータサイズである場合に、レジスタによる通信からＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）を利用する通信に切り替えて通信をおこなう構成例について説明する。
【０１２６】
図９は、本実施の形態２の構成を示すブロック図である。この図に示したマルチオペレーティングシステムは、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）６０、ＮＩＣデバイスドライバ７０１  、ＮＩＣデバイスドライバ７０２  、ＯＳ２０１  、ＯＳ２０２  、ＡＰ３０１  〜３０４  、ネットワーク５０および図２に示したハードウェア１０を有している（図示は省略）。
【０１２７】
ここで、ＯＳ２０１  およびＯＳ２０２  は、図２に示したＯＳ２０１  およびＯＳ２０２  と同様のものであり、さらにデータサイズ判定部２９１  およびデータサイズ判定部２９２  をそれぞれ有している。
【０１２８】
また、ＯＳ切り替え処理部２８１  は、図２に示したデータチェック処理部２１１  、割り込み振分処理部２２１  、割り込み処理部２３１  、割り込みベクタテーブル２５１  、ページテーブル２６１  、レジスタ退避領域２７１  等に対応するものである。ＯＳ切り替え処理部２８２  は、図２に示したデータチェック処理部２１２  、割り込み振分処理部２２２  、割り込み処理部２３２  、割り込みベクタテーブル２５２  、ページテーブル２６２  、レジスタ退避領域２７２  等に対応するものである。
【０１２９】
同マルチオペレーティングシステムでは、ＯＳ２０１  からＯＳ２０２  へ、またはＯＳ２０２  からＯＳ２０１  への切り替えが割り込み処理ルーチンの中で実行される。割り込みの発生要因としては、ＯＳ間のデータの通信要求、タイマ（図示略）による定期的な切り替え要求等が挙げられる。
【０１３０】
このマルチオペレーティングシステムでは、従来のように共通の制御プログラムや、共用メモリ等を介さずに、ＯＳ間データ通信用レジスタ１８あるいはＮＩＣ６０を用いて、高いセキュリティを保持した状態でＯＳ２０１  とＯＳ２０２  との間でデータの受け渡しを実現する点に特徴がある。
【０１３１】
以下、各構成要素について詳述する。ＮＩＣ６０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）カードであり、通信インタフェース機能を備えている。このＮＩＣ６０は、後述するＮＩＣデバイスドライバ７０１  およびＮＩＣデバイスドライバ７０２  により制御される。
【０１３２】
ＮＩＣ６０において、ＮＩＣ送信処理部６１は、パケットを送信する機能を備えている。送信バッファ６２は、ＮＩＣ送信処理部６１から送信されるパケットを一時的に格納する。ＮＩＣ受信処理部６３は、ネットワーク５０よりパケットを受信する機能を備えている。受信バッファ６４は、ＮＩＣ受信処理部６３により受信されたパケットを一時的に格納する。
【０１３３】
送信バッファレジスタ６５は、後述する送信バッファ７２１  または送信バッファ７２２  のいずれかに対応する値（アドレス）を格納するレジスタである。受信バッファレジスタ６６は、後述する受信バッファ７４１  または受信バッファ７４２  のいずれかに対応する値（アドレス）を格納するレジスタである。
【０１３４】
ＮＩＣデバイスドライバ７０１  は、ＯＳ２０１  の一部の機能を実現するものであり、通信時にＮＩＣ６０を制御する機能、送信バッファレジスタ６５や受信バッファレジスタ６６の値を書き換える機能等を備えている。
【０１３５】
ＮＩＣデバイスドライバ７０１  において、送信処理部７１１  は、ＯＳ２０１  からのデータを送信する機能を備えている。送信バッファ７２１  は、ＯＳ２０１  からのデータを一時的に格納する。受信処理部７３１  は、ＯＳ２０１  宛のデータを受信する機能を備えている。受信バッファ７４１  は、ＯＳ２０１  宛のデータを一時的に格納する。
【０１３６】
一方、ＮＩＣデバイスドライバ７０２  は、ＯＳ２０２  の一部の機能を実現するものであり、通信時にＮＩＣ６０を制御する機能、送信バッファレジスタ６５や受信バッファレジスタ６６の値を書き換える機能等を備えている。
【０１３７】
ここで、ＯＳ２０１  には、ＩＰアドレスとして、例えば、１９２．１６８．１．３が付与されている。一方、ＯＳ２０２  には、別のＩＰアドレスとして、例えば、１９２．１６８．１．４が付与されている。
【０１３８】
つぎに、ＮＩＣ６０を利用してデータの通信をおこなう場合の動作原理について、図１０に示したブロック図を参照して説明する。ここでは、ＮＩＣ６０を介して、ＯＳ２０１  からＯＳ２０２  へ通信する場合について説明する。
【０１３９】
同図においては、ＯＳ２０１  が実行中であって、送信バッファレジスタ６６に送信バッファ７２１  に対応する値が格納されており、かつ受信バッファレジスタ６５に受信バッファ７４１  に対応する値が格納されている状態にあるものとする。
【０１４０】
この状態で、（１）では、ＮＩＣデバイスドライバ７０１  の送信処理部７１１  は、ＯＳ２０１  からのデータを送信バッファ７２１  に格納する。このデータは、ＯＳ２０１  からＯＳ２０２  へ送信される。従って、当該データの送信先ＩＰアドレスは、ＯＳ２０２  に付与された１９２．１６８．１．４である。
【０１４１】
（２）では、送信処理部７１１  は、ＮＩＣ６０の受信バッファレジスタ６５の値を受信バッファ７４１  から受信バッファ７４２  に書き換える。（３）では、ＮＩＣ送信処理部６１は、送信バッファレジスタ６６を参照して、送信バッファ７２１  にアクセスした後、送信バッファ７２１  から送信バッファ６２へデータをコピーする。
【０１４２】
（４）では、ＮＩＣ送信処理部６１は、送信バッファ６２からデータを読み出し、これをネットワーク５０へ送信する。そして、当該データは、ＮＩＣ受信処理部６３に受信された後、受信バッファ６４に格納される。
【０１４３】
（５）では、ＮＩＣ受信処理部６３は、受信バッファレジスタ６５を参照して、受信バッファ７４２  にアクセスした後、受信バッファ６４から受信バッファ７４２  へデータをコピーする。
【０１４４】
（６）では、ＯＳ切替え処理部２８１  は、ＯＳをＯＳ２０１  からＯＳ２０２  へ切り替える。（７）では、受信処理部７３２  は、受信バッファ７４２  からデータを読み出し、このデータを切り替え後のＯＳ２０２  へ渡す。
【０１４５】
このように、ＮＩＣ６０を介しての通信の動作では、従来のようにＯＳ間で共通の制御プログラムや共有メモリ等を介さずに、高いセキュリティを保持した状態で、ＯＳ間通信を実現することができる。
【０１４６】
つぎに、本実施の形態２のＯＳ間データ通信の動作例を説明する。図１１および図１２は、本実施の形態２のＯＳ間データ通信の動作例を示すフローチャートである。この動作例では、ＯＳ間データ通信用レジスタ１８またはＮＩＣ６０による通信をデータのサイズにより切り替えておこなう。なお、以下では実施の形態１と同様、デバッグレジスタ１５をＯＳ間データ通信用レジスタ１８として利用する場合について説明する。
【０１４７】
図１１において、割り込みが発生すると、ステップＳＢ１では、ＯＳ２０１  のアプリケーション走行が中止され、割り込み振分処理部２２１  が起動される。ステップＳＢ２では、ＯＳ２０１  の割り込み振分処理部２２１  が割り込みに対応する割込番号を割り込みベクタテーブルレジスタ１３から取得する。
【０１４８】
ステップＳＢ３では、割り込み振分処理部２２１  により、割り込みベクタテーブル２５１  が参照され、仮想メモリ空間４０１  における割り込み処理ルーチンのある論理アドレスにジャンプされる。ステップＳＢ４では、割り込み処理ルーチンが実行される。
【０１４９】
ステップＳＢ５では、割り込み禁止命令が実行される。ステップＳＢ６では、ＯＳ切り替え処理（レジスタをレジスタ退避領域に退避）が実行される。ステップＳＢ７では、ＯＳ切り替え処理（ＯＳ間通信データチェック）が実行され、ＯＳ２０２  へ通信するデータのチェックがおこなわれる。なお、チェック結果が異常である場合には、アラームがあがり、一連の処理が中断される。
【０１５０】
この場合、チェック結果が正常であるものとし、ステップＳＢ８では、ＯＳ切り替え処理（ＯＳ間通信データのデータサイズチェック）が実行され、デバッグレジスタ１５にＯＳ２  へ通信するデータを書き込みできるかどうかを調べる。
【０１５１】
ステップＳＢ９の判定結果が「Ｙｅｓ」で、書き込み可能である場合には、ステップＳＢ１０で、ＯＳ切り替え処理（レジスタにＯＳ間通信データを書き込む）が実行され、デバッグレジスタ１５にＯＳ２０２  へ通信するデータを書き込む。ステップＳＢ１２では、ＯＳ切り替え処理（ＩＤＴＲ切り替え命令）が実行される。
【０１５２】
ステップＳＢ９の判定結果が「Ｎｏ」で、書き込み不可能である場合には、ステップＳＢ１１で、ＯＳ切り替え処理（ＮＩＣ６０を用いた通信データ送信処理）が実行される。この処理では、図１０に示した（１）から（５）までの処理がおこなわれ、その後、ステップＳＢ１２に移行する。
【０１５３】
ステップＳＢ１３では、ＯＳ切り替え処理（ページテーブルレジスタ変更命令）が実行され、ＯＳ２０１  からＯＳ２０２  へ切り替わる。ステップＳＢ１４では、デバッグレジスタ１５を用いた通信であるかどうかを判定する。
【０１５４】
例えば、ＮＩＣ６０を用いて通信する場合には、通信データとともに判定フラグを送信し、その判定フラグをＯＳ２０２  が受信してＮＩＣ６０による通信を検出する。判定フラグが受信されない場合には、デバッグレジスタ１５を用いた通信であるとの判定をおこなう。なお、これに限らず他の判定方法を用いてもよい。
【０１５５】
ステップＳＢ１４の判定結果が「Ｙｅｓ」である場合には、ステップＳＢ１５では、ＯＳ２０２  でＯＳ切り替え処理（レジスタからＯＳ間通信データを読み込む）が実行される。ステップＳＢ１７では、ＯＳ切り替え処理（レジスタ退避領域からレジスタを復帰）が実行される。
【０１５６】
ステップＳＢ１４の判定結果が「Ｎｏ」である場合には、ステップＳＢ１６で、ＯＳ切り替え処理（ＮＩＣ６０を用いた通信データ受信処理）が実行される。この処理では、図１０に示した（７）の処理がおこなわれ、その後、ステップＳＢ１７に移行する。
【０１５７】
ステップＳＢ１８では、割り込み許可命令が実行される。ステップＳＢ１９では、割り込み処理ルーチンが実行される。ステップＳＢ２０では、ジャンプ命令が実行され、Ｎ−Ｍ番地にジャンプされる。
【０１５８】
図１２に示したステップＳＢ２１では、割り込み禁止命令が実行される。ステップＳＢ２２では、ＯＳ切り替え処理（レジスタをレジスタ退避領域に退避）が実行される。ステップＳＢ２３では、ＯＳ切り替え処理（ＯＳ間通信データチェック）が実行され、ＯＳ２０１  へ通信するデータのチェックをおこなう。なお、チェック結果が異常である場合には、アラームがあがり、一連の処理が中断される。
【０１５９】
この場合、チェック結果が正常であるものとし、ステップＳＢ２４では、ＯＳ切り替え処理（ＯＳ間通信データのデータサイズチェック）が実行され、デバッグレジスタ１５にＯＳ１  へ通信するデータを書き込みできるかどうかを調べる。
【０１６０】
ステップＳＢ２５の判定結果が「Ｙｅｓ」で、書き込み可能である場合には、ステップＳＢ２６で、ＯＳ切り替え処理（レジスタにＯＳ間通信データを書き込む）が実行され、デバッグレジスタ１５にＯＳ２０１  へ通信するデータを書き込む。ステップＳＢ２８では、ＯＳ切り替え処理（ＩＤＴＲ切り替え命令）が実行される。
【０１６１】
ステップＳＢ２５の判定結果が「Ｎｏ」で、書き込み不可能である場合には、ステップＳＢ２７で、ＯＳ切り替え処理（ＮＩＣ６０を用いた通信データ送信処理）が実行される。この処理では、図１０に示した（１）から（５）までの処理と同様の方法で、ＯＳ２０２  からＯＳ２０１  への通信データの送信処理がおこなわれ、その後、ステップＳＢ２８に移行する。
【０１６２】
ステップＳＢ２９では、ＯＳ切り替え処理（ページテーブルレジスタ変更命令）が実行され、ＯＳ２０２  からＯＳ２０１  へ切り替わる。ステップＳＢ３０では、デバッグレジスタ１５を用いた通信であるかどうかを判定する。
【０１６３】
例えば、ＮＩＣ６０を用いて通信する場合には、通信データとともに判定フラグを送信し、その判定フラグをＯＳ２０１  が受信してＮＩＣ６０による通信を検出する。判定フラグが受信されない場合には、デバッグレジスタ１５を用いた通信であるとの判定をおこなう。なお、これに限らず他の判定方法を用いてもよい。
【０１６４】
ステップＳＢ３０の判定結果が「Ｙｅｓ」である場合には、ステップＳＢ３１では、ＯＳ２０１  でＯＳ切り替え処理（レジスタからＯＳ間通信データを読み込む）が実行される。ステップＳＢ３３では、ＯＳ切り替え処理（レジスタ退避領域からレジスタを復帰）が実行される。
【０１６５】
ステップＳＢ３０の判定結果が「Ｎｏ」である場合には、ステップＳＢ３２で、ＯＳ切り替え処理（ＮＩＣ６０を用いた通信データ受信処理）が実行される。この処理では、図１０に示した（７）の処理と同様の方法で、ＯＳ２０１  が通信データの受信処理をおこない、その後、ステップＳＢ３３に移行する。
【０１６６】
ステップＳＢ３４では、割り込み許可命令が実行される。ステップＳＢ３５では、割り込み処理ルーチンが実行される。ステップＳＢ３６では、ＩＲＥＴ（割り込み復帰命令）が実行され、割り込みから復帰される。
【０１６７】
以上説明したように、本実施の形態２によれば、データを通信する際に、データサイズがデバッグレジスタ１５に格納できるサイズである場合には、デバッグレジスタ１５を利用したデータ通信をおこない、デバッグレジスタ１５に格納できないサイズである場合には、ＮＩＣ６０を用いてそのデータを通信することとしたので、従来のように共通の制御プログラムや、共用メモリ等を介さずに、ＯＳ間データ通信用レジスタ１８あるいはＮＩＣ６０を用いて、高いセキュリティを保持した状態でＯＳ２０１  とＯＳ２０２  との間でデータの受け渡しをおこなうことができる。
【０１６８】
また、本実施の形態２によれば、通信対象のデータの正常性をチェックし、正常である場合にのみ通信処理を継続させることとしたので、マルチオペレーティングシステムのセキュリティ、信頼性をさらに向上させることができる。
【０１６９】
ここで、本実施の形態２では、データサイズが大きく、デバッグレジスタ１５に格納できない場合に、ＮＩＣ６０を用いて通信をおこなうこととしたが、それに限定されず、従来のように共通の制御プログラムや、共用メモリ等を介してデータ通信をおこなうこととしてもよい。
【０１７０】
上記において、共通の制御プログラムや共用メモリ等を介してデータ通信をおこなう場合には、セキュリティが低下してしまうものの、データサイズが小さく、デバッグレジスタ１５を用いて通信する場合には、依然高いセキュリティを保持した状態でＯＳ２０１  とＯＳ２０２  との間でデータの受け渡しをおこなうことができる。
【０１７１】
図１３（ａ）〜図１３（ｄ）は、前述した実施の形態１または２の応用例１〜４を説明する図である。図１３（ａ）に示した応用例１は、新旧ＯＳを共存させ、システム更改時に利用する例である。新ＯＳは、例えば、ＯＳ２０１  に対応している。一方、旧ＯＳは、ＯＳ２０１  に対応している。
【０１７２】
図１３（ｂ）に示した応用例２は、ソース公開ＯＳを活用し、ソース非公開ＯＳのリリースを待たずに、ソース公開ＯＳ側で新機能をスピード開発する例である。ソース非公開ＯＳは、ソースコードが公開されていないオペレーティングシステムであり、例えば、ＯＳ２０１  に対応している。一方、ソース公開ＯＳは、ソースコードが公開されているオペレーティングシステムであり、ＯＳ２０２  に対応している。
【０１７３】
図１３（ｃ）に示した応用例３は、専用ＯＳと汎用ＯＳとを共存させる例である。専用ＯＳは、リアルタイム性等に特化する機能を分担し、例えば、ＯＳ２０１  に対応している。一方、汎用ＯＳは、マイクロソフト社のＷｉｎｄｏｗｓ（登録商標）等であり、ＧＵＩ機能を分担し、ＯＳ２０２  に対応している。
【０１７４】
図１３（ｄ）に示した応用例４は、資源を分割する例であり、ＯＳ１とＯＳ２の使用目的により使用方法が異なる例である。ＯＳ１は、例えば、ＯＳ２０１  に対応している。一方、ＯＳ２は、ＯＳ２０２  に対応している。
【０１７５】
図１４は、実施の形態１または２をシステム移行に適用した場合を説明する図である。同図において、従来の移行作業では、一度に、旧端末に実装されている旧ＯＳの全モジュールを新端末の新ＯＳに移行させる必要があり、安全面で不安が残る。
【０１７６】
これに対して、マルチオペレーティングシステムがあると、旧端末に実装されている旧ＯＳの各モジュールを中間端末の旧ＯＳに安全を確認しながら移行させる。つぎに、中間端末において、旧ＯＳの各モジュールを新ＯＳに安全を確認しながら移行させる。
【０１７７】
つぎに、中間端末の新ＯＳの全モジュールを、新端末の新ＯＳに一度に移行させる。この場合、新ＯＳ間での移行であるため、問題が発生しない。マルチＯＳによる移行は、ある特定のモジュールに急いで新機能をつける場合に有効である。
【０１７８】
図１５は、実施の形態１または２を高セキュリティゲートウェイに適用した場合を説明する図である。同図において、ハードウェアは、マルチオペレーティングシステム（ＯＳ１およびＯＳ２）を備えており、ＮＩＣ（ネットワークインタフェースカード）を経由してインターネットに接続されている。このハードウェアは、高セキュリティゲートウェイとして機能する。
【０１７９】
ＯＳ１は、ユーザが使用するＡＰ（アプリケーションプログラム）１を管理するとともに、通信ログをＤＫ（ディスク）１に蓄積する。一方、ＯＳ２は、インターネットからの通信パケットを監視し、監視ログをＤＫ２に蓄積する。
【０１８０】
また、ＯＳ２では、ＮＩＣを直接制御し、通信を行う。このため、ＯＳ２は、ＯＳ１の通信を支援するため、ＮＩＣの対ソフトウェア提供インタフェースを疑似した疑似ＮＩＣ−Ｉ／ＦをＯＳ１に提供している。ＡＰ２は、パケット監視ログ収集用のアプリケーションプログラムであり、ＯＳ２上で動作する。
【０１８１】
また、ＡＰ２は、通信パケットを外から見るだけで、通信パケットに含まれる実行コードを処理しないため、ウイルスに感染しない。ＤＫ２に蓄積される監視ログは、悪意の第三者による改竄がなされないようになっている。従って、攻撃の痕跡を残すことが可能となる。
【０１８２】
ここで、ユーザの環境（ＯＳ１等）に対して、セキュリティの攻撃が行われた場合、ＯＳ１の通信ログが改竄されることが考えられる。しかしながら、実施の形態１または２では、マルチオペレーティングシステムにより、ＯＳ１とＯＳ２の監視ログが別々に管理されるため、攻撃者の追跡を行うことが可能となる。これにより、当該セキュリティゲートウェイへの攻撃を抑止する効果が期待できる。
【０１８３】
図１６は、実施の形態１または２をデスクトップＧｒｉｄ端末に適用した場合を説明する図である。同図において、ハードウェアは、マルチオペレーティングシステム（ＯＳ１およびＯＳ２）を備えており、ＮＩＣを経由してインターネットに接続されている。インターネットには、Ｇｒｉｄサーバが接続されている。ハードウェアは、デスクトップＧｒｉｄ端末として機能する。
【０１８４】
デスクトップＧｒｉｄ端末は、ユーザが計算機を利用しない間に、大きな計算の一部を割り当てて計算を実現しようとするデスクトップＧｒｉｄ計算を行うための端末である。ここで、ユーザ側から見ると、内容が不明な上記計算が自身の計算機環境に及ぼす悪影響が心配となる。
【０１８５】
そこで、同図では、自身の計算機環境をＯＳ１で管理し、Ｇｒｉｄ計算の処理環境をＯＳ２で管理することにより、上記悪影響を排除できる。つまり、Ｇｒｉｄ計算で利用されるデータやプログラムは、全てＯＳ２の制御下のみで管理され実行される。一方、ＯＳ１の制御下にあるＤＫ１やＭＥＭ（メモリ）１という計算機資源には、アクセスが許可されない。従って、Ｇｒｉｄ計算のプログラムからの悪影響が排除される。
【０１８６】
図１７は、実施の形態１または２を遠隔管理端末に適用した場合を説明する図である。同図において、ハードウェアは、マルチオペレーティングシステム（ＯＳ１およびＯＳ２）を備えており、ＮＩＣを経由してネットワークに接続されている。ネットワークには、システム管理者マシンや他のマシンが接続されている。ハードウェアは、遠隔管理端末として機能する。
【０１８７】
同図において、ユーザが管理できる範疇をＯＳ１に制限し、ＯＳ２の管理をネットワークを介してシステム管理者マシンで行うように構成されている。これにより、オフィス環境などで利用するパーソナルコンピュータのデフォルト環境を、システム管理者がＯＳ２の管理下で構築し、一方、ユーザ個人の好みや状況に応じて利用する環境を、ユーザがＯＳ１の管理下で構築することができる
【０１８８】
したがって、ユーザ個人の環境設定により、システム側で用意した環境が動作不具合になることが防止される。ＯＳ２は、システム管理者マシンでシステム管理者により管理され、システム側で設計された環境を提供する。ユーザは、該環境を利用する場合、ＯＳ２のファイル情報をＯＳ１に読み込んで起動するか、または、ＯＳ２に起動を依頼してクライアント／サーバの形態で実行する。
【０１８９】
図１８は、実施の形態１または２を高効率ネットサービス提供端末に適用した場合を説明する図である。同図において、ハードウェアは、マルチオペレーティングシステム（ＯＳ１およびＯＳ２）を備えており、ＮＩＣを経由してネットワークに接続されている。ネットワークには、コンテンツプロバイダサーバや他のマシンが接続されている。ハードウェアは、高効率ネットサービス提供端末として機能する。
【０１９０】
同図においては、高効率ネットサービス提供端末は、遠隔管理端末（図１７参照）と同様にして、一方のＯＳ１をユーザの管理下、他方のＯＳ２をネットサービスの管理下として、例えば、封切り前のコンテンツを事前にＯＳ２の管理下（ＤＫ２）に配信しておき、封切り時刻にＯＳ１の管理下のＤＫ１からのコンテンツの即時利用を実現する端末である。
【０１９１】
コンテンツは、ネットワークを介して、コンテンツプロバイダサーバからＯＳ２の管理下のＤＫ２に配信された後、ユーザの希望により、ＤＫ２からＯＳ１の管理下のＤＫ１へ当該コンテンツが提供され、即時利用が可能となる。このように、コンテンツプロバイダサーバでは、事前配信により、ダウンロードアクセスの集中が防止される。
【０１９２】
図１９は、実施の形態１または２を高セキュリティＷｅｂサービス提供サーバに適用した場合を説明する図である。同図において、ハードウェアは、マルチオペレーティングシステム（ＯＳ１およびＯＳ２）を備えており、ＮＩＣを経由してネットワークに接続されている。ネットワークには、Ｗｅｂ閲覧端末が接続されている。ハードウェアは、高セキュリティＷｅｂサービス提供サーバとして機能する。
【０１９３】
同図の高セキュリティＷｅｂサービス提供サーバにおいては、外部からアクセスできる環境がＯＳ２で、ローカルユーザだけがアクセスできる環境がＯＳ１で構築される。
【０１９４】
例えば、Ｗｅｂ公開コンテンツや利用ログは、ＯＳ２の管理下のＤＫ２に格納される。一方、公開したくないデータ等は、ＯＳ１の管理下のＤＫ１に格納される。この場合、設定ミス等により、公開したくない情報を誤ってＷｅｂ上で公開してしまうという事態が回避される。また、外部から悪意の第三者による攻撃をＯＳ２側が受けた場合であっても、ＯＳ１では、ネットワーク機能を除き、動作することが可能となる。
【０１９５】
以上本発明にかかる実施の形態１および２について図面を参照して詳述してきたが、具体的な構成例はこれらの実施の形態１および２に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等があっても本発明に含まれる。
【０１９６】
例えば、前述した実施の形態１および２においては、前述したマルチオペレーティングシステム制御、制御等を実現するためのプログラムを図２０に示したコンピュータ読み取り可能な記録媒体２００に記録して、この記録媒体２００に記録されたプログラムを同図に示したコンピュータ１００に読み込ませ、実行することにより各機能を実現してもよい。
【０１９７】
同図に示したコンピュータ１００は、上記プログラムを実行するＣＰＵ１１０と、キーボード、マウス等の入力装置１２０と、各種データを記憶するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１３０と、演算パラメータ等を記憶するＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１４０と、記録媒体２００からプログラムを読み取る読取装置１５０と、ディスプレイ、プリンタ等の出力装置１６０と、装置各部を接続するバス１７０とから構成されている。
【０１９８】
ＣＰＵ１１０は、読取装置１５０を経由して記録媒体２００に記録されているプログラムを読み込んだ後、プログラムを実行することにより、前述した機能を実現する。なお、記録媒体２００としては、光ディスク、フレキシブルディスク、ハードディスク等が挙げられる。
【０１９９】
また、実施の形態１および２においては、２つのオペレーティングシステム間の切り替え方法として、仮想メモリ空間の論理アドレスを適切に設定し、割り込みベクタテーブルレジスタとページテーブルレジスタを変更することによりオペレーティングシステムを切り替える方法について説明したが、本発明はこれに限られるものではなく、従来の仮想計算機方式あるいはマイクロカーネル方式によりオペレーティングシステムを切り替えてもよい。
【０２００】
また、実施の形態１および２においては、マルチオペレーティングシステムとして、図１に示した二つのＯＳ２０１  、ＯＳ２０２  を有する構成例について説明したが、三つ以上のＯＳを有する構成例も本発明に含まれる。
【０２０１】
例えば、ＯＳ１、ＯＳ２、ＯＳ３、・・・、ＯＳｎというｎ個のＯＳを有する構成の場合には、ＯＳ１走行中に割り込み（１）が発生した場合にＯＳ１からＯＳ２に切り替え、ＯＳ１走行中に割り込み（２）が発生した場合にＯＳ１からＯＳ３に切り替え、以下同様にして、ＯＳ１走行中に割り込み（ｎ−１）が発生した場合にＯＳ１からＯＳｎに切り替えるように制御すればよい。
【０２０２】
【発明の効果】
以上説明したように、本発明によれば、第１のオペレーティングシステムの実行中に所定のレジスタに通信対象となるデータを格納し、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替えがなされた場合に、所定のレジスタから通信対象となるデータを取得することとしたので、共有メモリを介さずに、格納できるデータのサイズが制限されたレジスタをオペレーティングシステム間の通信に用いることで、不正なデータの通信による各オペレーティングシステムの異常動作の可能性を回避することができ、マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができるという効果を奏する。
【０２０３】
また、本発明によれば、所定のレジスタに通信対象となるデータが格納された際に、第１のオペレーティングシステムに対応する第１の仮想メモリ空間の論理アドレスＮにあらかじめ仮想記憶された、第１のオペレーティングシステムから第２のオペレーティングシステムへ切り替える第１の切り替え命令により、第１のオペレーティングシステムから第２のオペレーティングシステムに切り替え、第２のオペレーティングシステムに対応する第２の仮想メモリ空間の論理アドレスＮ＋１にあらかじめ記憶されたデータ取得命令、または、該論理アドレスＮ＋１にあらかじめ記憶された命令以降に実行されるデータ取得命令を実行して、所定のレジスタから通信対象となるデータを取得することとしたので、従来の基盤ＯＳやＶＭモニタ等の共通部分が不要で、第１および第２のオペレーティングシステムが共存され、マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができるという効果を奏する。
【０２０４】
また、本発明によれば、第２のオペレーティングシステムは、データ取得命令を実行した後、あらかじめ仮想記憶された第２のオペレーティングシステムから第１のオペレーティングシステムへ切り替えるための第２の切り替え命令により、第２のオペレーティングシステムから第１のオペレーティングシステムに切り替えることとしたので、高いセキュリティと信頼性を維持したまま、オペレーティングシステムの切り替えおよび切り戻しを円滑におこなうことができるという効果を奏する。
【０２０５】
また、本発明によれば、所定のレジスタに格納されているデータをバックアップし、データがバックアップされたレジスタに通信対象となるデータを格納し、第２の切り替え命令により、第２のオペレーティングシステムから第１のオペレーティングシステムに切り替えがおこなわれた際に、バックアップされたデータをデータが格納されていた所定のレジスタに復元することとしたので、第１のオペレーティングシステムの実行中に使用されているレジスタにオペレーティングシステム間で通信するデータを格納することができ、そのレジスタを利用して通信をおこなうことにより、マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができるという効果を奏する。
【０２０６】
また、本発明によれば、所定のレジスタは、第１のオペレーティングシステムの実行中に第１のオペレーティングシステムにより使用されていないレジスタであることとしたので、オペレーティングシステム間で通信するデータを格納することができ、そのレジスタを利用して通信をおこなうことにより、マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができるという効果を奏する。
【０２０７】
また、本発明によれば、所定のレジスタは、第１のオペレーティングシステムの実行中に第１のオペレーティングシステムにより使用されていないデバッグレジスタおよび／または汎用レジスタであることとしたので、デバッグレジスタおよび／または汎用レジスタにオペレーティングシステム間で通信するデータを格納することができ、そのレジスタを利用して通信をおこなうことにより、マルチオペレーティングシステムのセキュリティ、信頼性を向上させることができるという効果を奏する。
【０２０８】
また、本発明によれば、通信対象となるデータのサイズが所定のレジスタに格納できるサイズかどうかを判定し、格納できる場合には所定のレジスタにデータを格納し、格納できない場合には、所定のレジスタ以外の格納手段により通信対象となるデータを格納し、格納されたデータを第２のオペレーティングシステムが取得することとしたので、データのサイズに応じて適切な格納手段を選択することができ、高いセキュリティおよび信頼性を有する効率的なオペレーティングシステム間のデータの通信をおこなうことができるという効果を奏する。
【０２０９】
また、本発明によれば、ネットワークインターフェースカードに備えられた格納手段に第２のオペレーティングシステム宛の前記通信対象となるデータが格納された場合に、格納手段の接続を、第１のオペレーティングシステムを中継して第２のオペレーティングシステムに設定することとしたので、通信対象となるデータのサイズが所定のレジスタに格納できないサイズであっても、高いセキュリティおよび信頼性を有する効率的なオペレーティングシステム間のデータの通信をおこなうことができるという効果を奏する。
【０２１０】
また、本発明によれば、上記発明のいずれか一つに記載されたマルチオペレーティングシステム制御方法をコンピュータに実行させるようにしたので、プログラムがコンピュータ読み取り可能となり、これによって、上記発明のいずれか一つの動作をコンピュータによって実行することができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明に係る実施の形態１の概略構成を示すブロック図である。
【図２】実施の形態１の具体的構成を示すブロック図である。
【図３】実施の形態１におけるマルチオペレーティングシステム間のメモリマッピングを説明する図である。
【図４】実施の形態１の動作原理を説明する図である。
【図５】実施の形態１の動作原理を説明する図である。
【図６】実施の形態１の動作例を説明する図である。
【図７】実施の形態１の動作例を説明するフローチャートである。
【図８】実施の形態１の動作例を説明するフローチャートである。
【図９】本発明に係る実施の形態２の構成を示すブロック図である。
【図１０】実施の形態２の動作例を説明するブロック図である。
【図１１】実施の形態２の動作例を説明するフローチャートである。
【図１２】実施の形態２の動作例を説明するフローチャートである。
【図１３】本発明に係る実施の形態１または２の応用例１〜４を説明する図である。
【図１４】実施の形態１または２をシステム移行に適用した場合を説明する図である。
【図１５】実施の形態１または２を高セキュリティゲートウェイに適用した場合を説明する図である。
【図１６】実施の形態１または２をデスクトップＧｒｉｄ端末に適用した場合を説明する図である。
【図１７】実施の形態１または２を遠隔管理端末に適用した場合を説明する図である。
【図１８】実施の形態１または２を高効率ネットサービス提供端末に適用した場合を説明する図である。
【図１９】実施の形態１または２を高セキュリティＷｅｂサービス提供サーバに適用した場合を説明する図である。
【図２０】実施の形態１または２の変形例の構成を示すブロック図である。
【図２１】従来のマルチオペレーティングシステムの構成例１を示すブロック図である。
【図２２】従来のマルチオペレーティングシステムの構成例２を示すブロック図である。
【符号の説明】
１０    ハードウェア
１１    制御部
１２    物理メモリ
１２ａ１  ，１２ａ２      ＯＳ用物理メモリ領域
１２ｂ１  ，１２ｂ２      ＡＰ用物理メモリ領域
１３    割り込みベクタテーブルレジスタ
１４    ページテーブルレジスタ
１５    デバッグレジスタ
１６    その他のレジスタ
１７    プログラムカウンタ
１８    ＯＳ間データ通信用レジスタ
２０１  ，２０２      ＯＳ
２１１  ，２１２      データチェック処理部
２２１  ，２２２      割り込み振り分け処理部
２３１  ，２３２      割り込み処理部
２４１  ，２４２      レジスタデータ読書き処理部
２５１  ，２５２      割り込みベクタテーブル
２６１  ，２６２      ページテーブル
２７１  ，２７２      レジスタ退避領域
２８１  ，２８２      ＯＳ切り替え処理部
２９１  ，２９２      データサイズ判定部
３０１  ，３０２      ＡＰ
４０１  ，４０２      仮想メモリ空間
４０ａ１  ，４０ａ２      ＯＳ用仮想メモリ空間
４０ｂ１  ，４０ｂ２      ＡＰ用仮想メモリ空間
５０    ネットワーク
６０    ＮＩＣ
６１    ＮＩＣ送信処理部
６２    送信バッファ
６３    ＮＩＣ受信処理部
６４    受信バッファ
６５    受信バッファレジスタ
６６    送信バッファレジスタ
７０１  ，７０２      ＮＩＣデバイスドライバ
７１１  ，７１２      送信処理部
７２１  ，７２２      送信バッファ
７３１  ，７３２      受信処理部
７４１  ，７４２      受信バッファ
１００    コンピュータ
１１０    ＣＰＵ
１２０    入力装置
１３０    ＲＯＭ
１４０    ＲＡＭ
１５０    読取装置
１６０    出力装置
１７０    バス
２００    記録媒体
【図１】
2004259106.tif 000003
【図２】
2004259106.tif 000004
【図３】
2004259106.tif 000005
【図４】
2004259106.tif 000006
【図５】
2004259106.tif 000007
【図６】
2004259106.tif 000008
【図７】
2004259106.tif 000009
【図８】
2004259106.tif 000010
【図９】
2004259106.tif 000011
【図１０】
2004259106.tif 000012
【図１１】
2004259106.tif 000013
【図１２】
2004259106.tif 000014
【図１３】
2004259106.tif 000015
【図１４】
2004259106.tif 000016
【図１５】
2004259106.tif 000017
【図１６】
2004259106.tif 000018
【図１７】
2004259106.tif 000019
【図１８】
2004259106.tif 000020
【図１９】
2004259106.tif 000021
【図２０】
2004259106.tif 000022
【図２１】
2004259106.tif 000023
【図２２】
2004259106.tif 000024