(57)【要約】【課題】多重化のために専用のＩ／Ｏデバイスを作成しなくても、Ｉ／Ｏデバイスに対してＩ／Ｏアクセスの信頼性を向上させる。【解決手段】この発明に係る多重化装置は、複数のオペレーティングシステム（ＯＳ）を起動してそれぞれに共通のアプリケーションを実行させ、デバイスとのＩ／Ｏ入出力を管理して、複数のＯＳの各動作を制御する同期実行管理手段と、複数のＯＳからの各Ｉ／Ｏ出力値に基づいて、デバイスへＩ／Ｏ出力するＩ／Ｏ出力同期手段と、デバイスからのＩ／Ｏ入力値を複数のＯＳからの各Ｉ／Ｏ入力要求に基づいて、Ｉ／Ｏ入力要求したＯＳにＩ／Ｏ入力するＩ／Ｏ入力同期手段とを備えた。【選択図】          図１
2014078186.tif 000002
【特許請求の範囲】
【請求項１】
複数のオペレーティングシステム（ＯＳ）を起動してそれぞれに共通のアプリケーションを実行させ、デバイスとの信号入出力を管理して、前記複数のＯＳの各動作を制御する同期実行管理手段と、
前記複数のＯＳからの各信号出力値に基づいて、前記デバイスへ信号出力する信号出力同期手段と、
前記デバイスからの信号入力値を前記複数のＯＳからの各信号入力要求に基づいて、前記信号入力要求したＯＳに信号入力する信号入力同期手段と
を備えた多重化装置。
【請求項２】
前記デバイスからの割込みを通知されると、前記複数のＯＳに割込みに対応した処理を実行させる割込み通知同期手段
を有し、
前記同期実行管理手段は、前記デバイスからの割込みを検知すると、割込みがあったことを前記割込み通知同期手段に通知する
請求項１記載の多重化装置。
【請求項３】
前記信号出力同期手段は、
前記複数のＯＳからの各信号出力値を保持する信号出力テーブル
を有し、
前記複数のＯＳのそれぞれが前記信号出力テーブルに信号出力値を登録して、すべての信号出力値が揃ったとき、前記信号出力値が一致する場合に、前記デバイスへ信号出力する
請求項１または請求項２記載の多重化装置。
【請求項４】
前記信号出力同期手段は、前記信号出力テーブルに登録した信号出力値のうち、少なくとも１つの前記信号出力値が一致しない場合、前記信号出力値を多数決で決定して前記デバイスへ信号出力する
請求項３記載の多重化装置。
【請求項５】
前記信号出力同期手段は、前記信号出力テーブルに登録した信号出力値のうち、少なくとも１つの前記信号出力値が一致しない場合、異常発生時に行う所定の処理を実行する
請求項３記載の多重化装置。
【請求項６】
前記同期実行管理手段は、
前記信号出力同期手段の前記信号出力テーブルに信号出力値を登録したＯＳの動作を前記デバイスへ信号出力するまで一時停止させ、信号出力後に再開させる
請求項３または請求項４記載の多重化装置。
【請求項７】
前記信号入力同期手段は、
前記複数のＯＳからの各信号入力要求を保持する信号入力テーブル
を有し、
前記複数のＯＳのそれぞれが前記信号入力テーブルに信号入力要求を登録して、すべての信号入力要求が揃ったとき、前記デバイスからの入力値を要求し、前記信号入力要求したＯＳに信号入力する
請求項１または請求項２記載の多重化装置。
【請求項８】
前記同期実行管理手段は、
前記信号入力同期手段の前記信号入力テーブルに信号入力要求を登録したＯＳの動作を前記デバイスへ信号入力するまで一時停止させ、信号入力後に再開させる
請求項７記載の多重化装置。
【請求項９】
前記信号入力同期手段は、
前記複数のＯＳからの各信号入力要求と前記デバイスからの入力値を保持する信号入力テーブル
を有し、
前記複数のＯＳのいずれかから最初に前記信号入力テーブルに信号入力要求が登録されたとき、前記デバイスからの入力値を要求して前記信号入力テーブルに保持し、前記信号入力要求したＯＳに前記信号入力テーブルに保持した前記入力値を信号入力する
請求項１または請求項２記載の多重化装置。
【請求項１０】
複数のオペレーティングシステム（ＯＳ）を起動してそれぞれに共通のアプリケーションを実行させ、デバイスとの信号入出力を管理して、前記複数のＯＳの各動作を制御する同期実行管理ステップと、
前記複数のＯＳからの各信号出力値に基づいて、前記デバイスへ信号出力する信号出力同期ステップと、
前記デバイスからの信号入力値を前記複数のＯＳからの各信号入力要求に基づいて、前記信号入力要求したＯＳに信号入力する信号入力同期ステップと
を有する多重化方法。
【請求項１１】
前記デバイスからの割込みを検知すると、割込みがあったことを通知する割込み検知ステップと、
前記デバイスからの割込みを通知されると、前記複数のＯＳに割込みに対応した処理を実行させる割込み通知同期ステップ
を有する請求項１０記載の多重化方法。
【請求項１２】
複数のオペレーティングシステム（ＯＳ）を起動してそれぞれに共通のアプリケーションを実行させ、デバイスとの信号入出力を管理して、前記複数のＯＳの各動作を制御する同期実行管理ステップと、
前記複数のＯＳからの各信号出力値に基づいて、前記デバイスへ信号出力する信号出力同期ステップと、
前記デバイスからの信号入力値を前記複数のＯＳからの各信号入力要求に基づいて、前記信号入力要求したＯＳに信号入力する信号入力同期ステップと
をコンピュータに実行させる多重化プログラム。
【請求項１３】
前記デバイスからの割込みを検知すると、割込みがあったことを通知する割込み検知ステップと、
前記デバイスからの割込みを通知されると、前記複数のＯＳに割込みに対応した処理を実行させる割込み通知同期ステップと
をコンピュータに実行させる請求項１２記載の多重化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つの物理ハードウェア上でソフトウェア実行を多重化する多重化装置、多重化方法および多重化プログラムに関するものである。
【背景技術】
【０００２】
従来の多重化装置は、仮想マシンを用いて仮想マシンモニタによりソフトウェア実行を多重化するとともに、複数の仮想インタフェースを持ち、複数の仮想マシンから同時にアクセス可能な専用のＩ／Ｏデバイスを用いることにより、Ｉ／Ｏデバイスに対するＩ／Ｏアクセスの信頼性を向上させていた（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−２３８０６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の多重化装置では、多重化のために専用のＩ／Ｏデバイスを作成する必要があるため、既存のＩ／Ｏデバイス等計算機システムに備えられたすべてのＩ／Ｏデバイスに対してＩ／Ｏアクセスの信頼性を向上させることができないという問題点があった。また、専用のＩ／Ｏデバイスを動作させるため、仮想マシンモニタやその上で動作するオペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）、デバイスドライバ等のソフトウェアを、専用のＩ／Ｏデバイスごとに追加、変更しなければならないという問題点があった。
【０００５】
この発明は、上記のような問題点を解決するためになされたもので、多重化のために専用のＩ／Ｏデバイスを作成しなくても、Ｉ／Ｏデバイスに対してＩ／Ｏアクセスの信頼性を向上させることができる多重化装置を提供することを目的とする。
【０００６】
また、多重化して動作するオペレーティングシステム（ＯＳ）、デバイスドライバ等のソフトウェアを、専用のＩ／Ｏデバイスごとに追加、変更しなくてもよい多重化装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
この発明に係る多重化装置は、前記複数のオペレーティングシステム（ＯＳ）を起動してそれぞれに共通のアプリケーションを実行させ、デバイスとの信号入出力を管理して、前記複数のＯＳの各動作を制御する同期実行管理手段と、前記複数のＯＳからの各信号出力値に基づいて、前記デバイスへ信号出力する信号出力同期手段と、前記デバイスからの信号入力値を前記複数のＯＳからの各信号入力要求に基づいて、前記信号入力要求したＯＳに信号入力する信号入力同期手段とを備える。
【発明の効果】
【０００８】
この発明に係る多重化装置によれば、複数のオペレーティングシステム（ＯＳ）を起動してそれぞれに共通のアプリケーションを実行させ、デバイスとの信号入出力を管理して、複数のＯＳの各動作を制御する同期実行管理部（同期実行管理手段）と、複数のＯＳからの各信号出力値に基づいて、デバイスへ信号出力するＩ／Ｏ出力同期部（信号出力同期手段）と、デバイスからの信号入力値を複数のＯＳからの各Ｉ／Ｏ入力要求（信号入力要求）に基づいて、信号入力要求したＯＳに信号入力するＩ／Ｏ入力同期部（信号入力同期手段）とを備えたので、多重化のために専用のＩ／Ｏデバイスを作成しなくても、Ｉ／Ｏデバイスに対してＩ／Ｏアクセスの信頼性を向上させることができる。
【０００９】
また、この発明に係る多重化装置によれば、多重化して動作するオペレーティングシステム（ＯＳ）、デバイスドライバ等のソフトウェアを、専用のＩ／Ｏデバイスごとに追加、変更しなくてもよい多重化装置を得ることができる。
【図面の簡単な説明】
【００１０】
【図１】この発明の実施の形態１に係る多重化装置の一例を示す構成図である。
【図２】この発明の実施の形態１に係る多重化装置による初期化の一例を示すフローチャートである。
【図３】この発明の実施の形態１に係る多重化装置のＩ／Ｏ出力テーブルに登録する情報の一例を示す説明図である。
【図４】この発明の実施の形態１に係る多重化装置によるＩ／Ｏ出力処理の一例を示す状態遷移図である。
【図５】この発明の実施の形態１に係る多重化装置のＩ／Ｏ出力処理の状態遷移に伴うＩ／Ｏ出力テーブルの推移の一例を示す説明図である。
【図６】この発明の実施の形態１に係る多重化装置のＩ／Ｏ入力テーブルに登録する情報の一例を示す説明図である。
【図７】この発明の実施の形態１に係る多重化装置によるＩ／Ｏ入力処理の一例を示す状態遷移図である。
【図８】この発明の実施の形態１に係る多重化装置のＩ／Ｏ入力処理の状態遷移に伴うＩ／Ｏ入力テーブルの推移の一例を示す説明図である。
【図９】この発明の実施の形態１に係る多重化装置による割込み処理の一例を示すフローチャートである。
【図１０】この発明の実施の形態２に係る多重化装置のＩ／Ｏ入力テーブルに登録する情報の一例を示す説明図である。
【図１１】この発明の実施の形態２に係る多重化装置によるＩ／Ｏ入力処理の一例を示す状態遷移図である。
【図１２】この発明の実施の形態２に係る多重化装置のＩ／Ｏ入力処理の状態遷移に伴うＩ／Ｏ入力テーブルの推移の一例を示す説明図である。
【発明を実施するための形態】
【００１１】
この発明は、Ｉ／Ｏデバイスに対してＩ／Ｏアクセスの信頼性を向上させる多重化装置に関するものである。以下に、この発明に係る多重化装置について構成例、動作例を用いて説明する。
【００１２】
実施の形態１．
図１は、この発明の実施の形態１に係る多重化装置の一例を示す構成図である。
【００１３】
図において、ハードウェア１は、多重化装置を動作させるための物理ハードウェアであり、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ。中央処理装置）、メモリなどを備える。デバイス２（デバイスＸ２ｘ〜デバイスＺ２ｚ）は、ハードウェア１に内蔵、もしくはハードウェア１とＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）等のバスで接続された周辺装置である。仮想マシンモニタ３は、ハードウェア１上で複数のＯＳを動作させるためのソフトウェアである。オペレーティングシステム（ＯＳ）４（ここではＯＳ−Ａ４ａ〜ＯＳ−Ｃ４ｃ）は、仮想マシンモニタ３上で動作するＯＳであり、例えばＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）やＬｉｎｕｘ（登録商標）といった汎用ＯＳや、ＶｘＷｏｒｋｓ（登録商標）やμＩＴＲＯＮ（登録商標）といったリアルタイムＯＳである。デバイスドライバ５（デバイスドライバＡ５ａ〜デバイスドライバＣ５ｃ）は、ＯＳ４内で動作するものであり、デバイス２をＯＳ４に認識させ、ＯＳ４上のアプリケーションプログラムからデバイス２の操作を可能にするソフトウェアである。ここで、デバイス２、デバイスドライバ５の数は任意とする。
【００１４】
また、仮想マシンモニタ３は、同期実行管理部６、Ｉ／Ｏ出力同期部７、Ｉ／Ｏ入力同期部８、割込み通知同期部９から構成される。同期実行管理部６は、複数のオペレーティングシステム（ＯＳ４）を起動してそれぞれに共通のアプリケーションソフトウェアを実行させ、デバイス２とのＩ／Ｏ入出力（信号入出力）、デバイス２からの割込みを管理して、複数のＯＳの各動作を制御する。複数のＯＳ４の実行を同時に開始させ、これらＯＳ４の一時停止や実行再開を制御することで多重化を管理するものである。Ｉ／Ｏ出力同期部７は、複数のＯＳ４からの各Ｉ／Ｏ出力値（信号出力値）に基づいて、デバイス２へＩ／Ｏ出力（信号出力）する。ＯＳ４からの対象デバイスのＩ／Ｏ出力時に呼び出され、多重化された複数のＯＳ４からのＩ／Ｏ出力に基づいて、Ｉ／Ｏ出力値を照合し、実際にＩ／Ｏ出力を実施するものである。Ｉ／Ｏ入力同期部８は、デバイス２からのＩ／Ｏ入力値（信号入力値）を複数のＯＳ４からの各Ｉ／Ｏ入力要求（信号入力要求）に基づいて、Ｉ／Ｏ入力要求したＯＳ４にＩ／Ｏ入力（信号入力）する。ＯＳ４からの対象デバイスのＩ／Ｏ入力時に呼び出され、多重化された複数のＯＳ４からのＩ／Ｏ入力要求に基づいて、デバイスからのＩ／Ｏ入力値を複数のＯＳ４へ受け渡して、実際にＩ／Ｏ入力を実施するものである。割込み通知同期部９は、デバイス２からの割込みを通知されると、複数のＯＳ４に割込みに対応した処理を実行させる。対象デバイス２の割込み通知が発生した時に呼び出され、多重化された複数のＯＳ４にその割込み通知を実施するものである。Ｉ／Ｏ出力テーブル（信号出力テーブル）１０は、Ｉ／Ｏ出力同期部７がＩ／Ｏ出力する前にＩ／Ｏ出力値を照合するため、ＯＳ４ごとにＩ／Ｏ出力値を保持するテーブルである。Ｉ／Ｏ入力テーブル（信号入力テーブル）１１は、Ｉ／Ｏ入力同期部８がＩ／Ｏ入力する前にＩ／Ｏ入力要求の有無を確認するため、ＯＳ４ごとにＩ／Ｏ入力要求フラグを保持するテーブルである。
【００１５】
ここで、仮想マシンモニタ３を構成する同期実行管理部６、Ｉ／Ｏ出力同期部７、Ｉ／Ｏ入力同期部８、割込み通知同期部９は、同期実行管理手段、Ｉ／Ｏ出力同期手段（信号出力同期手段）、Ｉ／Ｏ入力同期手段（信号入力同期手段）、割込み通知同期手段として機能する。仮想マシンモニタ３は、複数のＯＳおよびそれらＯＳ上で動作するアプリケーションソフトウェアの多重化手段として動作する。この発明の多重化装置は、コンピュータで構成し、各手段として動作する多重化プログラムとして実装することができる。
【００１６】
なお、多重化されるＯＳ４以外に少なくとも一つのＯＳが動作することで、仮想マシンモニタ３を実行して、多重化されるＯＳ４の起動、Ｉ／Ｏ入出力、割込みなどの処理を制御するが、以下では、仮想マシンモニタ３を実行させる多重化対象外であるＯＳについては説明に取り上げないものとする。
【００１７】
図２は、この発明の実施の形態１に係る多重化装置による初期化の一例を示すフローチャートである。この図により、初期化について説明する。
【００１８】
（Ｓ１０１）
仮想マシンモニタ３は、この多重化装置の利用者や起動スクリプトなどの指示により、同期実行管理部６に多重化起動情報を通知する。多重化起動情報は、例えば、多重化して起動するＯＳ４（ＯＳのファイル名や識別番号など）、多重化の数（２以上）、対象とするＩ／Ｏ入出力（Ｉ／Ｏアドレスとサイズ）と割込み通知（割込み番号）などである。多重化起動情報の通知方法は特に言及しないが、例えば仮想マシンモニタ３が提供するサービスコール（これを一般的にはハイパーコールという）を利用するものとする。
【００１９】
（Ｓ１０２）
次に、同期実行管理部６は、対象とするデバイスについてＩ／Ｏ出力の場合はＩ／Ｏ出力同期部７を、Ｉ／Ｏ入力の場合はＩ／Ｏ入力同期部８を実行するようにＩ／Ｏ入出力発生時の処理を予め設定する。
【００２０】
（Ｓ１０３）
同期実行管理部６は、多重化の数の分、ＯＳ４を起動し、実行を開始させる。ここでは、多重化の数を３とし、ＯＳ−Ａ４ａからＯＳ−Ｃ４ｃを起動するものとする。この設定方法としては、例えばメモリ管理ユニット（ＭＭＵ：Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）や、ＣＰＵの特権モード、もしくは例えばＩｎｔｅｌ社製ＣＰＵのＩｎｔｅｌ  ＶＴ機能やＡＭＤ社製ＣＰＵのＡＭＤ−Ｖ機能のようなＩ／Ｏアクセス保護機能を用いて当該Ｉ／Ｏアドレスへのアクセス保護を設定し、Ｉ／Ｏ入出力を検知するようにしてもよい。ここで、ハードウェア１がマルチＣＰＵやマルチコアＣＰＵを持つ場合、複数の異なるＣＰＵまたはコアにＯＳ４の実行をそれぞれ割り当てることにより並列にＯＳ４を実行してもよい。
【００２１】
以下、ＯＳ−ｎ（ここではＯＳ−Ａ４ａ〜ＯＳ−Ｃ４ｃ）からのＩ／Ｏ出力処理、ＯＳ−ｎへのＩ／Ｏ入力処理および割込み処理について、具体的な例を示して説明する。なお、Ｉ／Ｏ出力処理、Ｉ／Ｏ入力処理および割込み処理は、説明順序によらず、システム運用時の発生状況によって適宜処理されるものとする。
【００２２】
図３は、この発明の実施の形態１に係る多重化装置のＩ／Ｏ出力テーブルに登録する情報の一例を示す説明図である。
【００２３】
図において、Ｉ／Ｏ出力テーブル（信号出力テーブル）１０に登録する情報は、例えば（ａ）Ｉ／Ｏアドレス１０１、（ｂ）Ｉ／Ｏ出力サイズ１０２、（ｃ）多重化したＯＳ４ごとのＩ／Ｏ出力値１０３ａ〜１０３ｃである。なお、Ｉ／Ｏ出力値１０３の格納エリアは、ＯＳ４の多重化の数によってＯＳ対応に同数用意する。また、Ｉ／Ｏ出力テーブル１０への各情報１０１から１０３の格納順序は、この例示した順序に限らない。また、Ｉ／Ｏ出力テーブル１０は、他の情報を含んでもよい。
【００２４】
図４は、この発明の実施の形態１に係る多重化装置によるＩ／Ｏ出力処理の一例を示す状態遷移図である。この図により、各状態で行われる処理と次の状態への遷移条件を関連付けながらＩ／Ｏ出力処理について説明する。
【００２５】
（Ｓ２０１）
まず、最初にＩ／Ｏ出力処理は、ＯＳ−ｎ（ｎはＡ、ＢまたはＣ）からのＩ／Ｏ出力を待ち合せるＳ２０１の状態にある。このＳ２０１の状態で、仮想マシンモニタ３の同期実行管理部６が、ＯＳ−ｎから対象とするデバイス（以下、対象デバイスという）へのＩ／Ｏ出力を検知することで、Ｓ２０２の状態に遷移する。
【００２６】
（Ｓ２０２）
Ｓ２０２の状態に遷移すると、同期実行管理部６がＩ／Ｏ出力をしてきたＯＳ−ｎの実行を一時中断させ、Ｉ／Ｏ出力同期部７がＩ／Ｏ出力テーブル１０に今回のＩ／Ｏ出力の対象（Ｉ／Ｏアドレスとサイズ）を格納するとともに当該ＯＳ−ｎの該当部分にＩ／Ｏ出力値を格納する。なお、Ｉ／Ｏアドレスとサイズは、最初にＩ／Ｏ出力したＯＳ−ｎのいずれかが既に格納している場合には、格納は不要とし、Ｉ／Ｏ出力するＯＳ−ｎ間の対応が確認される。
【００２７】
このＳ２０２の状態の処理が終了すると、Ｉ／Ｏ出力同期部７は、Ｉ／Ｏ出力テーブル１０を参照し、当該Ｉ／Ｏアドレスの部分に多重化しているＯＳ−ｎ（ここではＯＳ−Ａ４ａ〜ＯＳ−Ｃ４ｃ）のＩ／Ｏ出力値がすべて揃っているかチェックする。
【００２８】
一部のＩ／Ｏ出力値がまだ揃っていない（Ｉ／Ｏ出力がまだ行われていない他のＯＳ−ｎが存在する）場合は、他のＯＳ−ｎが同一のＩ／Ｏアドレスに対するＩ／Ｏ出力を実施するまで待ち合わせを行うため、Ｓ２０１の待ち状態に戻る。待ち合わせ時、特にシングルＣＰＵの場合は、仮想マシンモニタ３上で動作する他のＯＳ−ｎを動作させる。
【００２９】
一方、すべてのＩ／Ｏ出力値が揃っている（すべてのＯＳ−ｎからのＩ／Ｏ出力が行われた）場合は、Ｉ／Ｏ出力テーブル１０に格納した各ＯＳ−ｎのＩ／Ｏ出力値を参照し、内容の比較を行う。Ｉ／Ｏ出力値の比較の結果、すべてのＯＳ−ｎのＩ／Ｏ出力値が同一であれば、Ｓ２０３の状態に遷移する。少なくとも一つのＯＳ−ｎのＩ／Ｏ出力値が同一でなければ、Ｓ２０５の状態に遷移する。
【００３０】
（Ｓ２０３）
Ｓ２０３の状態に遷移すると、Ｉ／Ｏ出力同期部７は、当該Ｉ／ＯアドレスにＩ／Ｏテーブル１０に格納されたＩ／Ｏ出力値を用いてＩ／Ｏ出力を実施し、Ｓ２０４の状態に遷移する。
【００３１】
（Ｓ２０４）
Ｓ２０４の状態に遷移すると、Ｉ／Ｏ出力テーブル１０から当該Ｉ／Ｏアドレスの部分を各ＯＳ−ｎのＩ／Ｏ出力値とともに削除し、多重化されたすべてのＯＳ−ｎの実行を再開して、Ｓ２０１の待ち状態に遷移する。
【００３２】
（Ｓ２０５）
Ｓ２０５の状態に遷移すると、多重化の数が３以上であれば多数決などの方法により正しいものが選択できればその内容でＳ２０３と同様の処理を実施し、Ｓ２０４の状態を経て、Ｓ２０１の待ち状態に遷移して、動作を継続する。
【００３３】
なお、多重化の数が２であれば、各ＯＳ−ｎにその旨を通知するか、もしくは仮想マシンモニタ３や本システムそのものの動作を停止するなどの異常発生時に予め決められた処理や動作を行うものとする。多重化の数が３以上であっても、ＯＳ−ｎへの通知や動作停止などの異常発生時に予め決められた処理や動作を行っても構わない。
【００３４】
図５は、この発明の実施の形態１に係る多重化装置のＩ／Ｏ出力処理の状態遷移に伴うＩ／Ｏ出力テーブルの推移の一例を示す説明図である。ＯＳ−Ａ、ＯＳ−Ｂ、ＯＳ−ＣのＩ／Ｏ出力値ＶＡＬ−Ａ、ＶＡＬ＿Ｂ、ＶＡＬ＿Ｃが発生した場合のＩ／Ｏ出力処理例を示している。ここでは、Ｉ／Ｏ出力値ＶＡＬ−Ａ、ＶＡＬ＿Ｂ、ＶＡＬ＿Ｃの順に発生するものとし、テーブル情報の推移のみ示して、図４の説明中のＯＳ−ｎの一時停止および再開の記載は省略する。
【００３５】
図において、第１の例は、Ｉ／Ｏ出力値ＶＡＬ−Ａ、ＶＡＬ＿Ｂ、ＶＡＬ＿Ｃが全一致する（ＶＡＬ−Ａ＝ＶＡＬ＿Ｂ＝ＶＡＬ＿Ｃ）場合である。また、第２の例は、Ｉ／Ｏ出力値ＶＡＬ−Ａ、ＶＡＬ＿Ｂ、ＶＡＬ＿Ｃ内に不一致がある（例えばＶＡＬ−Ａ＝ＶＡＬ＿Ｂ≠ＶＡＬ＿Ｃ）場合である。いずれの例も図４に基づく状態遷移を示している。なお、ＯＳ−Ａ、ＯＳ−Ｂ、ＯＳ−ＣのＩ／Ｏ出力値ＶＡＬ−Ａ、ＶＡＬ＿Ｂ、ＶＡＬ＿Ｃの発生順序は、この例に示した順序に限らない。
【００３６】
このように、Ｉ／Ｏ出力処理では、各ＯＳ−ｎからの対象デバイスへのＩ／Ｏ出力がＩ／Ｏ出力テーブル１０に揃ってから、Ｉ／Ｏ出力値が一致する正常な動作状況であれば、実際に対象デバイスへのＩ／Ｏ出力が行われる。一方、一致しないＩ／Ｏ出力値があるときは、例えば多数決による訂正、ＯＳ−ｎへの通知、システム停止など、異常時に取るように設定された所定の処理を行うことになる。
【００３７】
図６は、この発明の実施の形態１に係る多重化装置のＩ／Ｏ入力テーブルに登録する情報の一例を示す説明図である。
【００３８】
図において、このＩ／Ｏ入力テーブル（信号入力テーブル）１１に登録する情報は、例えば（ａ）Ｉ／Ｏアドレス１１１、（ｂ）Ｉ／Ｏ入力サイズ１１２、（ｃ）多重化したＯＳ４ごとのＩ／Ｏ入力要求があったことを示すフラグ（Ｉ／Ｏ入力要求フラグ）１１３ａ〜１１３ｃである。なお、Ｉ／Ｏ入力要求フラグ１１３の格納エリアは、ＯＳ４の多重化の数によってＯＳ対応に同数用意する。また、Ｉ／Ｏ入力テーブル１１への各情報１１１から１１３の格納順序は、この例示した順序に限らない。また、Ｉ／Ｏ入力テーブル１１は、他の情報を含んでもよい。
【００３９】
図７は、この発明の実施の形態１に係る多重化装置によるＩ／Ｏ入力処理の一例を示す状態遷移図である。この図により、各状態で行われる処理と次の状態への遷移条件を関連付けながらＩ／Ｏ入力処理について説明する。
【００４０】
（Ｓ３０１）
まず、最初にＩ／Ｏ入力処理は、ＯＳ−ｎからのＩ／Ｏ入力要求を待ち合せるＳ３０１の状態にある。このＳ３０１の状態で、仮想マシンモニタ３の同期実行管理部６が、ＯＳ−ｎからＩ／Ｏ入力要求を検知することで、Ｓ３０２の状態に遷移する。
【００４１】
（Ｓ３０２）
Ｓ３０２の状態に遷移すると、同期実行管理部６がＩ／Ｏ入力を要求してきたＯＳ−ｎの実行を一時中断させ、Ｉ／Ｏ入力同期部８は、Ｉ／Ｏ入力テーブル１１に今回のＩ／Ｏ入力の対象（Ｉ／Ｏアドレスとサイズ）を格納するとともに当該ＯＳ−ｎの該当部分にＩ／Ｏ入力要求があったことを示すフラグを設定する（ＯＮ）する。なお、Ｉ／Ｏアドレスとサイズは、最初にＩ／Ｏ入力要求したＯＳ−ｎのいずれかが既に格納している場合には、格納は不要とし、既にＩ／Ｏ入力要求しているＯＳ−ｎ間の対応が確認される。
【００４２】
このＳ３０２の状態の処理が終了すると、Ｉ／Ｏ入力同期部８は、Ｉ／Ｏ入力テーブル１１を参照し、当該Ｉ／Ｏアドレスの部分に多重化しているＯＳ−ｎ（ここではＯＳ−Ａ４ａ〜ＯＳ−Ｃ４ｃ）のＩ／Ｏ入力要求フラグがすべて設定されているかチェックする。
【００４３】
一部のＩ／Ｏ入力要求フラグがまだ設定されていない（一部のＯＳ−ｎからＩ／Ｏ入力要求が揃わない）場合は、他のＯＳ−ｎが同一のＩ／Ｏアドレスに対するＩ／Ｏ入力要求を実施するまで待ち合わせを行うため、Ｓ３０１の待ち状態に戻る。待ち合わせ時、特にシングルＣＰＵの場合は、仮想マシンモニタ３上で動作する他のＯＳ−ｎを動作させる。
【００４４】
一方、すべてのＩ／Ｏ入力要求フラグが設定されている（すべてのＯＳ−ｎからＩ／Ｏ入力要求が揃っている）場合は、Ｓ３０３の状態に遷移する。
【００４５】
（Ｓ３０３）
このＳ３０３の状態に遷移すると、Ｉ／Ｏ入力同期部８は、対象デバイスからのＩ／Ｏ入力を要求し、Ｉ／Ｏ入力値を得た後、Ｓ３０４の状態に遷移する。
【００４６】
（Ｓ３０４）
Ｓ３０４の状態に遷移すると、各ＯＳ−ｎに対象デバイスからのＩ／Ｏ入力を実施し、Ｉ／Ｏ入力テーブル１１から当該Ｉ／Ｏアドレスとサイズの部分を削除して、各ＯＳ−ｎのＩ／Ｏ入力要求を示すフラグをリセットして未設定（ＯＦＦ）にするとともに、Ｉ／Ｏ入力によって得られたデータ（Ｉ／Ｏ入力値）を用いて、Ｉ／Ｏ入力要求で一時中断していたすべてのＯＳ−ｎの実行を再開させて、Ｓ３０１の待ち状態に遷移する。
【００４７】
図８は、この発明の実施の形態１に係る多重化装置のＩ／Ｏ入力処理の状態遷移に伴うＩ／Ｏ入力テーブルの推移の一例を示す説明図である。ＯＳ−Ａ、ＯＳ−Ｂ、ＯＳ−ＣのＩ／Ｏ入力要求フラグＦＬＧ−Ａ、ＦＬＧ＿Ｂ、ＦＬＧ＿Ｃ、対象デバイスからのＩ／Ｏ入力値ＶＡＬの発生順序のＩ／Ｏ入力処理例を示している。ここでは、テーブル情報の推移のみ示して、図７の説明中のＯＳ−ｎの一時停止および再開の記載は省略する。
【００４８】
図において、例えばＩ／Ｏ入力要求フラグＦＬＧ−Ａ、ＦＬＧ＿Ｂ、ＦＬＧ＿Ｃ、Ｉ／Ｏ入力値ＶＡＬの順に発生した場合で、図７に基づく状態遷移を示している。対象デバイスからのＩ／Ｏ入力値ＶＡＬは、すべてのＯＳ−ｎにＩ／Ｏ入力されるまで保持される。また、すべてのＯＳ−ｎからＩ／Ｏ入力要求され、Ｉ／Ｏ入力値が入力されることで、Ｉ／Ｏ入力テーブルの当該エントリはリセットされる。なお、対象デバイスからのＩ／Ｏ入力値ＶＡＬ、Ｉ／Ｏ入力要求フラグＦＬＧ−Ａ、ＦＬＧ＿Ｂ、ＦＬＧ＿Ｃの発生順序は、この例に示した順序に限らない。
【００４９】
このように、Ｉ／Ｏ入力処理では、すべてのＯＳ−ｎからのＩ／Ｏ入力要求がＩ／Ｏ入力テーブル１１に揃ってから、実際に対象デバイスからのＩ／Ｏ入力が行われる。
【００５０】
この発明の実施の形態１に係る多重化装置のＩ／Ｏ出力処理およびＩ／Ｏ入力処理において、Ｉ／Ｏ出力処理で、各ＯＳ−ｎがＩ／Ｏ出力して、すべてのＯＳ−ｎからのＩ／Ｏ出力が揃うまで、また、Ｉ／Ｏ入力処理で、各ＯＳ−ｎがＩ／Ｏ入力要求して、すべてのＯＳ−ｎからのＩ／Ｏ入力要求が揃うまで、ＯＳ−ｎの動作を一時停止させることで、他の動作中のＯＳ−ｎへのＣＰＵの実行時間の配分が高まり、効率的に処理を実行できる。
【００５１】
図９は、この発明の実施の形態１に係る多重化装置による割込み処理の一例を示すフローチャートである。次に割込み処理について説明する。
【００５２】
（Ｓ４０１）
まず、仮想マシンモニタ３の同期実行管理部６は、ＯＳ４（ＯＳ−Ａ４ａ〜ＯＳ−Ｃ４ｃ）の対象とするＩ／Ｏデバイスからの割込みを検知し、割込み同期通知部９に通知する。
【００５３】
（Ｓ４０２）
割込み同期通知部９は、多重化しているすべてのＯＳ４（ＯＳ−Ａ４ａ〜ＯＳ−Ｃ４ｃ）に対し、割込み発生を通知する。
【００５４】
（Ｓ４０３）
各ＯＳ４（ＯＳ−Ａ４ａ〜ＯＳ−Ｃ４ｃ）もしくはそれらのデバイスドライバ５（５ａ〜５ｃ）は、対象デバイスから割込みが発生したことを通知されることで、当該デバイスに対応した割込み処理を実行する。
【００５５】
以上のように、この発明の実施の形態１に係る多重化装置によれば、仮想マシンモニタやその上で動作するＯＳ、デバイスドライバ等のソフトウェアを、専用のＩ／Ｏデバイスごとに追加、変更する必要がないので、多重系を意識して作成していない従来のアプリケーションやＯＳに対しても、簡単に多重系を構成し、信頼性を高めることができる。
【００５６】
また、この発明の実施の形態１に係る多重化装置によれば、仮想マシンモニタ内でＩ／Ｏ出力値を照合することにより、専用のＩ／Ｏデバイスを作成しなくても既に利用しているＩ／Ｏデバイスに対してＩ／Ｏアクセスの信頼性を向上させることが可能になる。
【００５７】
また、この発明の実施の形態１に係る多重化装置によれば、マルチＣＰＵやマルチコアＣＰＵを持つハードウェアを用いることにより、実行性能を向上させることができる上、ＣＰＵの動作異常によりＩ／Ｏ出力値が異常になった場合も検出、訂正が可能になり、信頼性を高めることができる。
【００５８】
実施の形態２．
先に説明したこの発明の実施の形態１に係る多重化装置では、Ｉ／Ｏ入力同期部８は、Ｉ／Ｏ入力する前にＩ／Ｏ入力要求の有無を確認するため、ＯＳ４ごとにＩ／Ｏ入力要求フラグを保持するＩ／Ｏ入力テーブル１１を有し、デバイス２からのＩ／Ｏ入力値を複数のＯＳ４からの各Ｉ／Ｏ入力要求に基づいて、Ｉ／Ｏ入力要求したＯＳ４にＩ／Ｏ入力する。ＯＳ４からの対象デバイスのＩ／Ｏ入力時に呼び出され、多重化された複数のＯＳ４からのＩ／Ｏ入力要求が揃うのを待って、デバイスからのＩ／Ｏ入力値を複数のＯＳ４へ受け渡して、実際にＩ／Ｏ入力を実施するものであった。
【００５９】
この発明の実施の形態２に係る多重化装置では、Ｉ／Ｏ入力同期部８は、対象デバイスからのＩ／Ｏ入力値をさらに保持するＩ／Ｏ入力テーブル１１を有し、ＯＳ４からＩ／Ｏ入力要求があっても、デバイス２からのＩ／Ｏ入力値が得られていないときには、デバイス２にＩ／Ｏ入力要求してＩ／Ｏ入力値を得ることで、Ｉ／Ｏ入力要求があったＯＳ−ｎに対して実際にデバイス２からのＩ／Ｏ入力を行い、以降他のＯＳ４からＩ／Ｏ入力要求があれば格納しておいたＩ／Ｏ入力値によりＩ／Ｏ入力を行うものであって、すべてのＩ／Ｏ入力要求が揃うのを待たずに逐次Ｉ／Ｏ入力を行えるものである。ここでは、Ｉ／Ｏ入力処理のみを変更し、Ｉ／Ｏ出力処理、割込み処理は、この発明の実施の形態１に係る多重化装置と同一の処理を行うものとする。
【００６０】
図１０は、この発明の実施の形態２に係る多重化装置のＩ／Ｏ入力テーブルに登録する情報の一例を示す説明図である。
【００６１】
図において、このＩ／Ｏ入力テーブル（信号入力テーブル）１１に登録する情報は、例えば図６のＩ／Ｏ入力テーブルと同様の（ａ）Ｉ／Ｏアドレス１１１、（ｂ）Ｉ／Ｏ入力サイズ１１２、（ｃ）多重化したＯＳ４ごとのＩ／Ｏ入力要求フラグ１１３ａ〜１１３ｃに、（ｄ）Ｉ／Ｏ入力値１１４を加えた一連の情報を１エントリとして、複数のエントリが用意される。なお、Ｉ／Ｏ入力テーブル１１への各情報１１１から１１４の格納順序は、この例示した順序に限らない。また、Ｉ／Ｏ入力テーブル１１は、他の情報を含んでもよい。
【００６２】
図１１は、この発明の実施の形態２に係る多重化装置によるＩ／Ｏ入力処理の一例を示す状態遷移図である。この図により、Ｉ／Ｏ入力テーブル１１に実際にＩ／Ｏ入力した値（Ｉ／Ｏ入力値）を複数個格納することができる場合に、各状態で行われる処理と次の状態への遷移条件を関連付けながらＩ／Ｏ入力動作について説明する。
【００６３】
（Ｓ５０１）
まず、最初にＩ／Ｏ入力処理は、ＯＳ−ｎからのＩ／Ｏ入力要求を待ち合せるＳ５０１の状態にある。このＳ５０１の状態で、仮想マシンモニタ３の同期実行管理部６が、ＯＳ−ｎからＩ／Ｏ入力要求を検知することで、Ｓ５０２の状態に遷移する。
【００６４】
（Ｓ５０２）
Ｓ５０２の状態に遷移すると、同期実行管理部６がＩ／Ｏ入力を要求してきたＯＳ−ｎの実行を一時中断させ、Ｉ／Ｏ入力同期部８は、Ｉ／Ｏ入力テーブル１１に今回のＩ／Ｏ入力の対象（Ｉ／Ｏアドレスとサイズ）を格納するとともに当該ＯＳ−ｎの該当部分にＩ／Ｏ入力要求があったことを示すフラグを設定（ＯＮ）する。なお、Ｉ／Ｏアドレスとサイズは、最初にＩ／Ｏ入力要求したＯＳ−ｎのいずれかが既に格納している場合には、格納は不要とし、既にＩ／Ｏ入力要求しているＯＳ−ｎ間の対応が確認される。
【００６５】
このＳＳ５０２の状態の処理が終了すると、Ｉ／Ｏ入力同期部８は、Ｉ／Ｏ入力テーブル１１を参照し、当該Ｉ／ＯアドレスのエントリにＯＳ−ｎの対象デバイスからのＩ／Ｏ入力値が格納されているかチェックする。
【００６６】
Ｉ／Ｏ入力値が格納されていない場合は、Ｓ５０３の状態に遷移する。一方、Ｉ／Ｏ入力値が格納されている場合は、Ｓ５０４の状態に遷移する。
【００６７】
（Ｓ５０３）
このＳ５０３の状態に遷移すると、Ｉ／Ｏ入力同期部８は、対象デバイスからのＩ／Ｏ入力を要求し、当該Ｉ／Ｏアドレスのエントリに対象デバイスから得たＩ／Ｏ入力値を格納した後、Ｓ５０４の状態に遷移する。
【００６８】
（Ｓ５０４）
Ｓ５０４の状態に遷移すると、同期実行管理部６が今回Ｉ／Ｏ入力要求して一時中断しているＯＳ−ｎに対してＩ／Ｏ入力値を入力して実行を再開させる。
【００６９】
このＳ５０４の状態の処理が終了すると、Ｉ／Ｏ入力同期部８は、Ｉ／Ｏ入力テーブル１１のエントリを参照し、当該Ｉ／Ｏアドレスの部分に多重化しているすべてのＯＳ−ｎ（ここではＯＳ−Ａ４ａ〜ＯＳ−Ｃ４ｃ）のＩ／Ｏ入力要求フラグが設定されているかチェックする。
【００７０】
一部のＩ／Ｏ入力要求フラグがまだ設定されていない（一部のＯＳ−ｎからＩ／Ｏ入力要求されていない）場合は、Ｓ５０１の待ち状態に戻る。一方、すべてのＩ／Ｏ入力要求フラグが設定されている（すべてのＯＳ−ｎからＩ／Ｏ入力要求が揃っている）場合は、Ｓ５０５の状態に遷移する。
【００７１】
（Ｓ５０５）
Ｓ５０５の状態に遷移すると、Ｉ／Ｏ入力テーブル１１から当該Ｉ／Ｏアドレスとサイズの部分を削除して、各ＯＳ−ｎのＩ／Ｏ入力要求を示すフラグをリセットして未設定（ＯＦＦ）にして、Ｓ５０１の待ち状態に遷移する。
【００７２】
図１２は、この発明の実施の形態２に係る多重化装置のＩ／Ｏ入力処理の状態遷移に伴うＩ／Ｏ入力テーブルの推移の一例を示す説明図である。ＯＳ−ＡのＩ／Ｏ入力要求フラグＦＬＧ−Ａ、対象デバイスからのＩ／Ｏ入力値ＶＡＬ、ＯＳ−Ｂ、ＯＳ−ＣのＩ／Ｏ入力要求フラグＦＬＧ＿Ｂ、ＦＬＧ＿Ｃ、の発生順序のＩ／Ｏ入力処理例を示している。ここでは、テーブル情報の推移のみ示して、図１１の説明中のＯＳ−ｎの一時停止および再開の記載は省略する。
【００７３】
図において、例えばＩ／Ｏ入力要求フラグＦＬＧ−Ａ、Ｉ／Ｏ入力値ＶＡＬ、Ｉ／Ｏ入力要求フラグＦＬＧ＿Ｂ、ＦＬＧ＿Ｃの順に発生した場合で、図１１に基づく状態遷移を示している。対象デバイスからのＩ／Ｏ入力値ＶＡＬは、発生してからすべてのＯＳ−ｎにＩ／Ｏ入力されるまで保持される。また、すべてのＯＳ−ｎからＩ／Ｏ入力要求され、Ｉ／Ｏ入力値が入力されることで、Ｉ／Ｏ入力テーブルの当該エントリはリセットされる。なお、対象デバイスからのＩ／Ｏ入力値ＶＡＬ、Ｉ／Ｏ入力要求フラグＦＬＧ−Ａ、ＦＬＧ＿Ｂ、ＦＬＧ＿Ｃの発生順序は、この例に示した順序に限らない。
【００７４】
このように、Ｉ／Ｏ入力処理では、すべてのＯＳ−ｎからのＩ／Ｏ入力要求がＩ／Ｏ入力テーブル１１に揃わなくても、Ｉ／Ｏ入力要求があったＯＳ−ｎに対して実際に対象デバイスからのＩ／Ｏ入力が逐次行える。Ｉ／Ｏ入力要求があっても、対象デバイスからのＩ／Ｏ入力値が得られていないときには、対象デバイスにＩ／Ｏ入力要求してＩ／Ｏ入力値を得ることで、Ｉ／Ｏ入力要求があったＯＳ−ｎに対して実際に対象デバイスからのＩ／Ｏ入力を行える。
【００７５】
ここで、Ｉ／Ｏ入力テーブル１１のエントリの数は任意に設定できるが、一部のＯＳ−ｎからＩ／Ｏ入力要求がないか、またはＩ／Ｏ入力要求があっても対象デバイスからＩ／Ｏ入力がないことで、Ｉ／Ｏ入力テーブル１１のエントリがリセットされずに保持され、エントリが足りなくなるときには、ＯＳ−ｎへの通知や動作停止などの異常発生時に予め決められた処理や動作を行うようにしても構わない。正常に動作しているＯＳ−ｎの多重化の数が２または３以上残せる場合には、長い期間Ｉ／Ｏ入力要求がないＯＳ−ｎのみ切り離して、システムの処理を継続するか、または当該ＯＳ−ｎを再起動した後、多重化し直すようにしてもよい。
【００７６】
この発明の実施の形態２に係る多重化装置のＩ／Ｏ入力処理で、すべてのＯＳ−ｎからのＩ／Ｏ入力要求が揃うまで待たずに、各ＯＳ−ｎがＩ／Ｏ入力要求した時点で、Ｉ／Ｏ入力値がＩ／Ｏ入力テーブルに格納されていれば逐次実行していき、またデバイスはＩ／Ｏ入力値をＩ／Ｏ入力テーブルに格納していくことで、デバイスやＩ／Ｏ入力要求した後の各ＯＳ−ｎは、停止せずにＩ／Ｏ入力を継続していくことができる。また、Ｉ／Ｏ出力処理において、Ｉ／Ｏ出力処理で、各ＯＳ−ｎがＩ／Ｏ出力して、すべてのＯＳ−ｎからのＩ／Ｏ出力が揃うまで、ＯＳ−ｎの動作を一時停止させることで、この発明の実施の形態１に係る多重化装置と同様に、他の動作中のＯＳ−ｎへのＣＰＵの実行時間の配分が高まり、効率的に処理を実行できる。
【００７７】
以上のように、この発明の実施の形態２に係る多重化装置によれば、この発明の実施の形態１に係る多重化装置と同様に、仮想マシンモニタやその上で動作するＯＳ、デバイスドライバ等のソフトウェアを、専用のＩ／Ｏデバイスごとに追加、変更する必要がないので、多重系を意識して作成していない従来のアプリケーションやＯＳに対しても、簡単に多重系を構成し、信頼性を高めることができる。
【００７８】
また、この発明の実施の形態２に係る多重化装置によれば、この発明の実施の形態１に係る多重化装置と同様に、仮想マシンモニタ内でＩ／Ｏ出力値を照合することにより、専用のＩ／Ｏデバイスを作成しなくても既に利用しているＩ／Ｏデバイスに対してＩ／Ｏアクセスの信頼性を向上させることが可能になる。
【００７９】
また、この発明の実施の形態２に係る多重化装置によれば、この発明の実施の形態１に係る多重化装置と同様に、マルチＣＰＵやマルチコアＣＰＵを持つハードウェアを用いることにより、実行性能を向上させることができる上、ＣＰＵの動作異常によりＩ／Ｏ出力値が異常になった場合も検出、訂正が可能になり、信頼性を高めることができる。
【００８０】
また、この発明の実施の形態２に係る多重化装置によれば、Ｉ／Ｏ入力テーブル１１に複数のＩ／Ｏ入力値を保持することにより、仮想マシンモニタが他のＯＳ−ｎのＩ／Ｏ入力を待ち合わせる回数を削減でき、実行性能を向上させることができる。
【００８１】
以上のように、この発明に係る多重化装置によれば、複数のオペレーティングシステム（ＯＳ）を起動してそれぞれに共通のアプリケーションを実行させ、デバイスとの信号入出力を管理して、複数のＯＳの各動作を制御する同期実行管理部（同期実行管理手段）と、複数のＯＳからの各信号出力値に基づいて、デバイスへ信号出力するＩ／Ｏ出力同期部（信号出力同期手段）と、デバイスからの信号入力値を複数のＯＳからの各Ｉ／Ｏ入力要求（信号入力要求）に基づいて、信号入力要求したＯＳに信号入力するＩ／Ｏ入力同期部（信号入力同期手段）とを備えたので、専用のＩ／Ｏデバイスを作成しなくても、Ｉ／Ｏデバイスに対してＩ／Ｏアクセスの信頼性を向上させることができる。
【００８２】
また、この発明に係る多重化装置によれば、多重化して動作するオペレーティングシステム（ＯＳ）、デバイスドライバ等のソフトウェアを、専用のＩ／Ｏデバイスごとに追加、変更しなくてもよい多重化装置を得ることができる。
【符号の説明】
【００８３】
１  ハードウェア、２  デバイス（Ｉ／Ｏデバイス）、２ｘ  デバイスＸ、２ｙ  デバイスＹ、２ｚ  デバイスＺ、３  仮想マシンモニタ、４  ＯＳ（オペレーティングシステム）、４ａ  ＯＳ−Ａ、４ｂ  ＯＳ−Ｂ、４ｃ  ＯＳ−Ｃ、５  デバイスドライバ、５ａ  デバイスドライバＡ、５ｂ  デバイスドライバＢ、５ｃ  デバイスドライバＣ、６  同期実行管理部（同期実行管理手段）、７  Ｉ／Ｏ出力同期部（信号出力同期手段）、８  Ｉ／Ｏ入力同期部（信号入力同期手段）、９  割込み通知同期部（割込み通知同期手段）、１０  Ｉ／Ｏ出力テーブル（信号出力テーブル）、１１  Ｉ／Ｏ入力テーブル（信号入力テーブル）。
【図１】
2014078186.tif 000003
【図２】
2014078186.tif 000004
【図３】
2014078186.tif 000005
【図４】
2014078186.tif 000006
【図５】
2014078186.tif 000007
【図６】
2014078186.tif 000008
【図７】
2014078186.tif 000009
【図８】
2014078186.tif 000010
【図９】
2014078186.tif 000011
【図１０】
2014078186.tif 000012
【図１１】
2014078186.tif 000013
【図１２】
2014078186.tif 000014