(57)【要約】【課題】  同一装置種別の仮想装置を使用する業務を複数実行しても、エミュレータの負荷が高くならず、優先順位の高い業務のエミュレート処理を早く実行させても、優先順位の低い業務のエミュレート処理が高い優先順位で実行されることのないエミュレーション装置、方法及びプログラムを提供する。【解決手段】  仮想装置３０に対するＩ／Ｏをエミュレートするエミュレート手段を装置種別毎でなく、同一の装置種別であっても、Ｉ／Ｏを行う業務毎もしくは業務の優先順位などを考慮して仮想装置をグループ分けし、仮想装置グループ毎にエミュレート手段１７０を用意することにより、エミュレート処理の負荷を仮想装置グループ毎に分散させる。また、エミュレート手段１７０の実行優先順位に差をつけ、重要な業務や先に処理したい業務のＩ／Ｏ処理は、他の仮想装置グループよりも優先的に処理する。【選択図】  図１
2006285596.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションプログラムに接続される仮想装置を駆動するエミュレート手段を備え、
前記仮想装置の各々は、前記アプリケーションプログラムに基づいてグループ分けされており、
前記エミュレート手段は、優先順位に基づいて前記仮想装置を駆動することを特徴とするエミュレーション装置。
【請求項２】
前記仮想装置のグループ分けは、前記アプリケーションプログラムを実行する優先順位に基づいて行なわれることを特徴とする請求項１記載のエミュレーション装置。
【請求項３】
前記アプリケーションプログラムの入出力要求を入力するＩ／Ｏ処理手段をさらに備え、
前記アプリケーションプログラムに接続される入出力装置が実装置であるときは、前記Ｉ／Ｏ処理手段が前記実装置を駆動すると共に、
前記入出力装置が前記仮想装置であるときは、前記Ｉ／Ｏ処理手段からの入出力要求に基づいて前記エミュレート手段が前記仮想装置を駆動するようにしたことを特徴とする請求項１記載のエミュレーション装置。
【請求項４】
前記仮想装置の装置番号，それが属するグループ番号，及び前記アプリケーションプログラムの前記優先順位と，前記実装置の装置番号とを格納する装置管理テーブルを設けると共に、この装置管理テーブルを作成する装置管理テーブル作成手段をさらに備え、
前記Ｉ／Ｏ処理手段が、前記装置管理テーブルに基づいて前記実装置を駆動する機能を備えていることを特徴とする請求項３記載のエミュレーション装置。
【請求項５】
前記装置管理テーブルに基づいて前記仮想装置が属するグループ番号，前記仮想装置のＩ／Ｏ要求通知セマフォ，及び前記アプリケーションプログラムの前記優先順位とを格納する仮想装置グループ管理テーブルを設けると共に、この仮想装置グループ管理テーブルを作成する仮想装置グループ管理テーブル作成手段をさらに備え、
前記Ｉ／Ｏ処理手段からの入出力要求と前記仮想装置グループ管理テーブルとに基づいて前記エミュレート手段が前記仮想装置を駆動することを特徴とする請求項４記載のエミュレーション装置。
【請求項６】
前記装置管理テーブルから前記優先順位を取得する優先順位取得手段と、
前記仮想装置グループ管理テーブルから前記Ｉ／Ｏ要求通知セマフォを入力するエミュレート処理依頼手段とをさらに備え、
前記エミュレート処理依頼手段は、前記Ｉ／Ｏ処理手段からのＩ／Ｏ処理依頼があれば、前記Ｉ／Ｏ処理依頼に係る前記装置管理テーブルの前記優先順位及び前記仮想装置グループ番号の前記Ｉ／Ｏ要求通知セマフォとに基づいて、前記エミュレート手段を駆動する機能を備えていることを特徴とする請求項５記載のエミュレーション装置。
【請求項７】
前記優先順位を変更する優先順位変更手段をさらに備え、
前記装置管理テーブルと前記仮想装置グループ管理テーブルを変更後の優先順位に更新し、
前記エミュレート手段がエミュレートプロセスを動作させていると否とに係らず、該変更後の優先順位を有効とすることを特徴とする請求項５記載のエミュレーション装置。
【請求項８】
アプリケーションプログラムに接続される仮想装置を駆動するためにコンピュータを、
前記仮想装置の各々を、前記アプリケーションプログラムに基づいてグループ分けするグループ分け手段、及び
優先順位に基づいて前記仮想装置を駆動するエミュレート手段として機能させることを特徴とするエミュレーションプログラム。
【請求項９】
該グループ分けは、前記アプリケーションプログラムを実行する優先順位に基づいて行なわれることを特徴とする請求項８記載のエミュレーションプログラム。
【請求項１０】
前記コンピュータを、
前記アプリケーションプログラムの入出力要求を入力するＩ／Ｏ処理手段としてさらに機能させ、
前記アプリケーションプログラムに接続される入出力装置が実装置であるときは、前記Ｉ／Ｏ処理手段が前記実装置を駆動し、
前記入出力装置が前記仮想装置であるときは、前記Ｉ／Ｏ処理手段からの入出力要求に基づいて前記エミュレート手段が前記仮想装置を駆動することを特徴とする請求項８記載のエミュレーションプログラム。
【請求項１１】
前記コンピュータを、
前記仮想装置の装置番号、それが属するグループ番号、及び前記アプリケーションプログラムの前記優先順位と、前記実装置の装置番号とを格納する装置管理テーブルを作成する装置管理テーブル作成手段としてさらに機能させ、
前記Ｉ／Ｏ処理手段は前記装置管理テーブルに基づいて前記実装置を駆動することを特徴とする請求項１０記載のエミュレーションプログラム。
【請求項１２】
前記コンピュータを、
前記装置管理テーブルに基づいて前記仮想装置が属するグループ番号、前記仮想装置のＩ／Ｏ要求通知セマフォ、及び前記アプリケーションプログラムの前記優先順位とを格納する仮想装置グループ管理テーブルを作成する仮想装置グループ管理テーブル作成手段としてさらに機能させ、
前記Ｉ／Ｏ処理手段からの入出力要求と前記仮想装置グループ管理テーブルとに基づいて前記エミュレート手段が前記仮想装置を駆動することを特徴とする請求項１１記載のエミュレーションプログラム。
【請求項１３】
前記コンピュータを、
前記装置管理テーブルから前記優先順位を取得する優先順位取得手段、及び
前記仮想装置グループ管理テーブルから前記Ｉ／Ｏ要求通知セマフォを入力するエミュレート処理依頼手段としてさらに機能させ、
前記エミュレート処理依頼手段は、前記Ｉ／Ｏ処理手段からのＩ／Ｏ処理依頼があれば、前記Ｉ／Ｏ処理依頼に係る前記装置管理テーブルの前記優先順位及び前記仮想装置グループ番号の前記Ｉ／Ｏ要求通知セマフォとに基づいて、前記エミュレート手段を駆動することを特徴とする請求項１２記載のエミュレーションプログラム。
【請求項１４】
前記コンピュータを、
前記優先順位を変更する優先順位変更手段としてさらに機能させ、
前記装置管理テーブルと前記仮想装置グループ管理テーブルを変更後の優先順位に更新し、前記エミュレート手段がエミュレートプロセスを動作させていると否とに係らず、該変更後の優先順位を有効とすることを特徴とする請求項１２記載のエミュレーションプログラム。
【請求項１５】
アプリケーションプログラムに接続される仮想装置を駆動するエミュレーション方法において、
グループ分け手段により、前記仮想装置の各々を前記アプリケーションプログラムに基づいてグループ分けするステップと、
前記エミュレート手段により、前記装置管理テーブルの前記優先順位に基づいて前記仮想装置を駆動するステップとを含むことを特徴とするエミュレーション方法。
【請求項１６】
該グループ分けは、前記アプリケーションプログラムを実行する優先順位に基づいて行なわれることを特徴とする請求項１５記載のエミュレーション方法。
【請求項１７】
前記アプリケーションプログラムの入出力要求を入力するＩ／Ｏ処理手段により、前記アプリケーションプログラムに接続される入出力装置が実装置であるときは、前記Ｉ／Ｏ処理手段が前記実装置を駆動するステップと、
前記入出力装置が前記仮想装置であるときは、前記Ｉ／Ｏ処理手段からの入出力要求に基づいて前記エミュレート手段により前記仮想装置を駆動するステップとを含むことを特徴とする請求項１５記載のエミュレーション方法。
【請求項１８】
前記仮想装置の装置番号、それが属するグループ番号、及び前記アプリケーションプログラムの前記優先順位と、前記実装置の装置番号とを格納する装置管理テーブルを作成する装置管理テーブル作成手段により、
前記Ｉ／Ｏ処理手段は前記装置管理テーブルに基づいて前記実装置を駆動するステップとを含むことを特徴とする請求項１７記載のエミュレーション方法。
【請求項１９】
前記装置管理テーブルに基づいて前記仮想装置が属するグループ番号、前記仮想装置のＩ／Ｏ要求通知セマフォ、及び前記アプリケーションプログラムの前記優先順位とを格納する仮想装置グループ管理テーブルを作成する仮想装置グループ管理テーブル作成手段により、
前記Ｉ／Ｏ処理手段からの入出力要求と前記仮想装置グループ管理テーブルとに基づいて前記エミュレート手段が前記仮想装置を駆動するステップとを含むことを特徴とする請求項１８記載のエミュレーション方法。
【請求項２０】
前記装置管理テーブルから前記優先順位を取得する優先順位取得手段と、
前記仮想装置グループ管理テーブルから前記Ｉ／Ｏ要求通知セマフォを入力するエミュレート処理依頼手段とにより、
前記エミュレート処理依頼手段が、前記Ｉ／Ｏ処理手段からのＩ／Ｏ処理依頼があれば、前記Ｉ／Ｏ処理依頼に係る前記装置管理テーブルの前記優先順位及び前記仮想装置グループ番号の前記Ｉ／Ｏ要求通知セマフォとに基づいて、前記エミュレート手段を駆動するステップとを含むことを特徴とする請求項１９記載のエミュレーション方法。
【請求項２１】
前記優先順位を変更する優先順位変更手段により、
前記装置管理テーブルと前記仮想装置グループ管理テーブルを変更後の優先順位に更新し、
前記エミュレート手段がエミュレートプロセスを動作させていると否とに係らず、該変更後の優先順位を有効とするステップとを含むことを特徴とする請求項１９記載のエミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エミュレーション装置、プログラム及び方法に関し、特に、オペレーティングシステムにより生成された仮想入出力装置などの仮想装置を制御するためのエミュレーション装置、プログラム及び方法に関する。
【背景技術】
【０００２】
エミュレーションは、ハードウェアの機能を、構造の異なる別のハードウェアに模倣させて実行させることであり、エミュレーションを行うハードウェア、ソフトウェア（ミドルウェア）がエミュレータである。
【０００３】
例えば、特許文献１に開示された「外部記憶装置への入出力制御方式」では、情報処理装置側の主記憶装置（例えば可変長レコード形式）と外部記憶装置（例えば固定長レコード形式）との間でデータをやり取りするため、情報処理装置側にデータ形式変換機構を設け、可変長レコード形式中のカウント部、キー部、データ部を固定長データとして扱う。両レコード形式の変換テーブルは、外部記憶装置側に設ける。これにより、複数の種類の外部記憶装置をひとつのエミュレータ（データ形式変換機構）により制御することができる。
【０００４】
また、特許文献２に開示された「第２のシステム上での第１のシステムのプログラム実行装置及び方法」では、オペレーティングシステムの異なるコンピュータ同士であっても、アプリケーションプログラムが動作するように、ＣＰＵやメモリをエミュレートするインタプリタ、各種入出力デバイスをエミュレートする擬似デバイスドライバ（仮想デバイスドライバ）ＰＳＤＤを備えており、上記インタプリタや擬似デバイスドライバＰＳＤＤは、実装置であるＣＰＵ（ＨＥＣＰＵ）、メモリ（ＨＥＭＥＭ）、各種入出力ドライバＩＯＤを制御するプログラム（カーネル（オペレーションシステム内部においてハードウェアを操作できる権限が与えられたプログラム））の直上位に設けられ、第１システムのＣＰＵ、メモリ、入出力装置をエミュレートする。
【０００５】
【特許文献１】特開平７−４４３２４号公報（図３、段落００１７）
【特許文献２】特開平７−１８２１８０号公報（図２、段落００７１）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、入出力装置には、プリンタ、外部記憶装置、表示装置等があり、各々様々な種別のハードウェアを備えている。上述した従来技術では、装置種別毎に（特許文献１では外部記憶装置に対して、特許文献２ではＣＰＵ、メモリ、入出力装置の種別毎に）、エミュレータを１個用意し、入出力要求時に、装置種別を判断して、該当するエミュレータへエミュレート処理を依頼している。しかし、これでは、装置種別毎にエミュレート手段が１個しかないために、同一装置種別の仮想装置を使用する業務を複数実行すると、エミュレータの負荷が高くなり、仮想装置への入出力処理のスループットが低下するという問題がある。また、優先順位の高い業務のエミュレート処理を早く実行させるために、優先順位の低い業務のエミュレート処理も高い優先順位で実行されるという問題がある。
【０００７】
そこで、本発明の課題は、同一装置種別の仮想装置を使用する業務を複数実行しても、エミュレータの負荷が高くならず、仮想装置への入出力処理のスループットが低下することのないエミュレーション装置、方法及びプログラムを提供することである。また、本発明の課題は、優先順位の高い業務のエミュレート処理を早く実行させても、優先順位の低い業務のエミュレート処理が高い優先順位で実行されることのないエミュレーション装置、方法及びプログラムを提供することである。
【課題を解決するための手段】
【０００８】
本発明では、仮想装置に対するＩ／Ｏをエミュレートするエミュレート手段を装置種別毎にグループ化する。なお、同一の装置種別であっても、Ｉ／Ｏを行う業務を実行する優先順位を考慮してエミュレート手段の実行優先順位に差をつけ、重要な業務や先に処理したい業務のＩ／Ｏ処理を他の仮想装置グループに対するＩ／Ｏ処理よりも優先的に処理することとしてもよい。
【０００９】
そこで、上述した課題を解決するための手段としてのエミュレーション装置は、アプリケーションプログラムに接続される仮想装置と、上記仮想装置を駆動するエミュレート手段とを備え、上記仮想装置の各々は、上記アプリケーションプログラムに基づいてグループ分けされており、上記エミュレート手段は、上記優先順位に基づいて上記仮想装置を駆動する。なお、該グループ分けは、上記アプリケーションプログラムを実行する優先順位に基づいて行なわれてもよい。
【００１０】
また、上述した課題を解決するための手段としてのエミュレーションプログラムは、アプリケーションプログラムに接続される仮想装置を駆動するためにコンピュータを、上記仮想装置の各々を、上記アプリケーションプログラムに基づいてグループ分けするグループ分け手段、及び上記優先順位に基づいて上記仮想装置を駆動するエミュレート手段として機能させる。なお、該グループ分けは、上記アプリケーションプログラムを実行する優先順位に基づいて行なわれてもよい。
【００１１】
また、上述した課題を解決するための手段としてのエミュレーション方法は、アプリケーションプログラムに接続される仮想装置を駆動するエミュレーション方法において、グループ分け手段により、上記仮想装置の各々を上記アプリケーションプログラムに基づいてグループ分けするステップと、上記エミュレート手段により、上記優先順位に基づいて上記仮想装置を駆動するステップとを含む。なお、該グループ分けは、上記アプリケーションプログラムを実行する優先順位に基づいて行なわれてもよい。
【発明の効果】
【００１２】
本発明によれば、エミュレート処理を仮想装置グループ毎に負荷分散できる。その理由は、エミュレート手段を仮想装置グループ毎に分けて複数用意するため、他の仮想装置グループのエミュレート処理に影響されることなく別のエミュレート処理が行えるためである。また、仮想装置グループ数だけ、エミュレート処理を並列実行できるためである。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照して、本発明の実施形態について説明する。
［実施形態１］
（実施形態１のエミュレーション装置の構成）
図１は、実施形態１のエミュレーション装置のブロック図である。
【００１４】
実施形態１のエミュレーション装置１０には、装置管理定義情報入力装置２０と、仮想装置３０と、実装置４０とが接続されている。ここに、実装置４０は、仮想装置３０ではない装置（多重化等されていない装置であり、エミュレーションを要することなく駆動する事ができる入出力装置）である。
【００１５】
エミュレーション装置１０は、装置管理テーブル１０１を作成する装置管理テーブル作成手段１１０と、Ｉ／Ｏ要求通知セマフォ（以下「セマフォ」という）１０３を格納する仮想装置グループ管理テーブル１０２を作成する仮想装置グループ管理テーブル作成手段１２０と、エミュレート起動手段１３０と、Ｉ／Ｏ要求手段１４０と、Ｉ／Ｏ処理手段１５０と、エミュレート処理依頼手段１６０と、エミュレート手段１７０を含む。
【００１６】
装置管理定義情報入力装置２０は、実装置４０又は仮想装置３０の装置番号、装置情報、仮想装置フラグ（仮想装置３０と実装置４０を識別するフラグ）、仮想装置グループ番号（実装置４０に対してグループ番号は付与されない）、優先順位（実装置４０に対して優先順位は付与されない）を、後述する装置管理テーブル作成手段１１０に入力する。
【００１７】
装置管理テーブル作成手段１１０は、コンピュータに接続される全ての実装置４０および仮想装置３０に対して、装置番号と、装置情報と、仮想装置か否かを示す仮想装置フラグと、仮想装置グループ番号と、優先順位とが定義された情報を、装置管理定義情報入力装置２０から入力し、装置管理テーブル１０１を作成する。
【００１８】
仮想装置グループ管理テーブル作成手段１２０は、装置管理テーブル作成手段１１０が作成した装置管理テーブル１０１から、仮想装置３０の仮想装置グループ番号、優先順位を入力し、仮想装置グループ管理テーブル１０２を作成する。また仮想装置グループ毎にセマフォ（入出力資源を共有して使用するタスク間の動作の同期を取るためのフラグ又はそれを処理するツール。また、タスクは、オペレーションシステムから見たアプリケーションプログラムの１単位）を割り当て、セマフォのアドレスを仮想装置グループ管理テーブル１０２に格納する。
【００１９】
エミュレート起動手段１３０は、仮想装置グループ管理テーブル１０２に従って、エミュレート手段１７０を起動する。Ｉ／Ｏ要求手段１４０は、業務処理（アプリケーションプログラム）を実行するジョブであり、Ｉ／Ｏ要求を発行する。
【００２０】
Ｉ／Ｏ処理手段１５０は、Ｉ／Ｏ要求の装置番号を用いて装置管理テーブル１０１の中を検索し、装置番号に対応するエントリの仮想装置フラグを用いてＩ／Ｏ要求の装置が実装置４０か仮想装置３０かを判断する。そして、仮想装置フラグが立っていない実装置４０に対するＩ／Ｏの場合は、実装置４０に対してＩ／Ｏを実行する。仮想装置フラグが立っている仮想装置３０に対するＩ／Ｏであった場合は、エミュレート処理依頼手段１６０に処理を渡す。
【００２１】
エミュレート処理依頼手段１６０は、仮想装置グループ管理テーブル１０２を参照し、仮想装置グループ管理テーブル１０２中のセマフォ１０３のアドレスを取得し、仮想装置への入出力のエミュレート処理を依頼する。エミュレート手段１７０は、仮想装置３０への入出力のエミュレート処理を実行する。
【００２２】
ここで、図２は、装置管理定義情報入力装置２０から装置管理テーブル作成手段１１０に入力される装置管理定義情報の内容を示す図である。装置管理定義情報入力装置２０では、装置番号０、１、２、３などの各装置に対して、装置情報、仮想装置フラグのＯＮ又はＯＦＦ、仮想装置グループ番号（付かない場合もある）、優先順位（ない場合もある）が付与される。又、図３は、装置管理テーブル１０１の内容を示す図であり、装置管理定義情報入力装置２０と同様である。更に、図４は、仮想装置グループ管理テーブル１０２の内容を示す図である。仮想装置グループ管理テーブル１０２では、仮想装置グループ０、１、２、３などの各グループに対して、セマフォアドレスと優先順位が付与される。
【００２３】
［実施形態１のエミュレーション装置の動作］
図５に、エミュレーション装置立ち上げ時の動作を説明するためのフローチャートを示す。エミュレーション装置立ち上げ時には、Ｓ２１において装置管理テーブル作成手段１１０が動作し、次にＳ２２において仮想装置グループ管理テーブル作成手段１２０が動作し、最後にエミュレート起動手段１３０が動作する。
【００２４】
又、図６には、Ｉ／Ｏ要求発行時の動作を説明するためのフローチャートを示す。Ｉ／Ｏ要求発行時には、Ｓ３１においてＩ／Ｏ要求手段１４０が動作し、次にＳ３２においてＩ／Ｏ処理手段１５０が動作し、次にＳ３３においてエミュレート処理依頼手段１６０が動作し、最後にＳ３４においてエミュレート手段１７０が動作する。
【００２５】
更に、図７には、装置管理テーブル作成手段１１０の動作を説明するためのフローチャートを示す。まず、Ｓ４１において装置管理定義情報入力装置２０の中から１つの装置の装置番号と装置情報を格納して、装置管理テーブル１０１を作成する。次に、Ｓ４２において装置が仮想装置であるか否かが判定される。次に、Ｓ４２において装置が仮想装置３０であると判定されればＳ４３に進み仮想装置フラグを立てて、仮想装置グループ番号と優先順位を装置管理テーブル１０１のエントリに格納する。一方、Ｓ４２において装置が仮想装置３０ではないと判定されればＳ４４に進む。Ｓ４４では全装置に対してフラグ設定したか否かが判定され、全装置に対してフラグ設定を完了するまでＳ４１からＳ４３までを繰り返す。
【００２６】
そして、図８は、仮想装置グループ管理テーブル作成手段１２０の動作を説明するためのフローチャートである。まず、Ｓ５１において装置管理テーブル１０１から、仮想装置のフラグの立っている仮想装置の装置番号と仮想装置グループ番号と優先順位を入力する。次に、Ｓ５２において仮想装置グループ管理テーブル１０２を検索し、当該仮想装置グループ番号のエントリがあるか判定される。Ｓ５２において当該仮想装置グループ番号のエントリがないと判定されれば、Ｓ５５に進み当該仮想装置グループのエントリを追加し、Ｓ５６に進む。一方、Ｓ５２において当該仮想装置グループ番号のエントリがあると判定されれば、Ｓ５３からＳ５４の処理を実行する。つまり、Ｓ５３においてエントリの中の優先順位を取り出す。次に、Ｓ５４において、Ｓ５１で取り出した優先順位の方がＳ５３で取り出した優先順位より高いか否かが判定される。Ｓ５４において、Ｓ５１で取り出した優先順位の方が高いと判定されれば、Ｓ５６に進む。
【００２７】
一方、Ｓ５４において、Ｓ５１で取り出した優先順位の方が低い場合または同じ場合、Ｓ５７に進む。Ｓ５６では、Ｓ５１で取り出した優先順位を仮想装置グループ管理テーブル１０２の中の、仮想装置グループに対応するエントリ中の優先順位格納領域にセットする。一方、Ｓ５７では、全仮想装置に対して、優先順位の設定を行ったかが判定される。Ｓ５７において、全仮想装置に対して、優先順位の設定を行っていないと判定されれば、Ｓ５１に戻って、優先順位の設定を繰り返す。又、Ｓ５７において、全仮想装置に対して、優先順位の設定を行ったと判定されれば、Ｓ５８に進み、全仮想装置グループに対し、Ｉ／Ｏ要求通知のセマフォを１つずつ割り当て、仮想装置グループ管理テーブル１０２の中の、全エントリのセマフォアドレス格納領域に各々のセマフォアドレスをセットする。
【００２８】
図９は、エミュレート起動手段１３０の動作を説明するためのフローチャートである。Ｓ６１において、仮想装置グループ管理テーブル１０２中の各仮想装置グループの優先順位で、各エミュレート手段１７０が起動される。このとき引数として仮想装置グループ管理テーブル１０２中の各仮想装置グループのセマフォアドレスを受け渡す。
【００２９】
図１０は、各エミュレート手段１７０の動作を説明するためのフローチャートである。まず、Ｓ７１において、引数として渡されたセマフォアドレスでＩ／Ｏ要求のイベントを待ち合わせる。最後に、Ｓ７２において、セマフォから取得したＩ／Ｏ要求の内容に従ってＩ／Ｏのエミュレートが行なわれる。コンピュータが立ち上がり、業務が動作すると、装置への入出力要求が発生し、図３に示すようにＩ／Ｏ要求手段１４０、Ｉ／Ｏ処理手段１５０、エミュレート処理依頼手段１６０、エミュレート手段１７０の順にＩ／Ｏが処理されていく。Ｉ／Ｏ要求手段１４０は、業務処理の中で装置への入出力が必要になると、対象装置の装置番号とＩ／Ｏの内容を指定して、Ｉ／Ｏ処理手段１５０にＩ／Ｏ要求を発行する。Ｉ／Ｏ処理手段１５０は、Ｉ／Ｏ要求の装置番号で装置管理テーブル１０１の中を検索し装置番号に対応するエントリの仮想装置フラグでＩ／Ｏ要求の装置が実装置か仮想装置かを判断し、仮想装置フラグが立っていない実装置に対するＩ／Ｏの場合は、実装置に対してＩ／Ｏを実行する。仮想装置フラグが立っている仮想装置に対するＩ／Ｏであった場合は、エミュレート処理依頼手段１６０に処理を渡す。
【００３０】
図１１は、エミュレート処理依頼手段１６０の動作を説明するためのフローチャートである。まず、Ｓ８１において装置管理テーブル１０１を検索しＩ／Ｏ要求の装置のエントリから仮想装置グループ番号を取得する。次に、Ｓ８２において仮想装置グループ管理テーブル１０２を参照して、当該仮想装置グループのセマフォアドレスを取得する。最後に、Ｓ８３においてセマフォ１０３に対して、仮想装置３０の装置番号とＩ／Ｏの内容を通知する。エミュレート手段１７０は、仮想装置３０への入出力要求のイベントをセマフォ１０３から受け取ると、図１０に示したＳ７２の処理で、エミュレート処理を実行し、エミュレート処理が完了したらＳ７１に戻る。
【００３１】
図１２は、業務が複数同時に実行中で、Ｉ／Ｏを発行するＩ／Ｏ要求手段１４０が複数存在した場合のエミュレーション装置１０のブロック図である。１つのエミュレート手段１７０がエミュレート処理中であっても、別のＩ／Ｏ要求手段１４０が発行した後発のＩ／Ｏ要求が別の仮想装置グループであれば、別のエミュレート手段１７０がエミュレート処理を並行して実行できる。例えば図１２のケースで業務ジョブＡが装置番号１（仮想装置グループ番号１）に対してＩ／Ｏする場合、エミュレート手段１７０Ａでエミュレートし、同時に業務ジョブＢが装置番号２（仮想装置グループ番号２）に対してＩ／Ｏする場合、エミュレート手段１７０Ｂでエミュレートするというように、仮想装置グループを複数設定するとグループの数だけエミュレート手段が動作し、エミュレート手段の数だけＩ／Ｏ要求を同時に実行できる。
【００３２】
図１２のように、装置番号１の仮想装置グループ番号1の優先順位が１で装置番号２の仮想装置グループ番号２の優先順位が３の場合、業務ジョブＡの装置番号１に対するＩ／Ｏのエミュレート手段１７０Ａが優先して処理される。
【００３３】
（実施形態１のエミュレーションプログラム）
実施形態１のエミュレーションプログラムは、実施形態１のエミュレーション装置の構成及び動作から明らかなとおり、アプリケーションプログラムに接続される仮想装置を駆動するためにコンピュータを、上記仮想装置の各々を、上記アプリケーションプログラムに基づいてグループ分けするグループ分け手段、及び上記優先順位に基づいて上記仮想装置を駆動するエミュレート手段として機能させる。
【００３４】
ここに、該グループ分けは、上記アプリケーションプログラムを実行する優先順位に基づいて行なわれる。
【００３５】
さらに、上記コンピュータを、上記アプリケーションプログラムの入出力要求を入力するＩ／Ｏ処理手段としてさらに機能させ、上記アプリケーションプログラムに接続される入出力装置が実装置であるときは、上記Ｉ／Ｏ処理手段が上記実装置を駆動し、上記入出力装置が上記仮想装置であるときは、上記Ｉ／Ｏ処理手段からの入出力要求に基づいて上記エミュレート手段が上記仮想装置を駆動する。
【００３６】
さらに、上記コンピュータを、上記仮想装置の装置番号、それが属するグループ番号、及び上記アプリケーションプログラムの上記優先順位と、上記実装置の装置番号とを格納する装置管理テーブルを作成する装置管理テーブル作成手段としてさらに機能させ、上記Ｉ／Ｏ処理手段は上記装置管理テーブルに基づいて上記実装置を駆動してもよい。
【００３７】
さらに、上記コンピュータを、上記装置管理テーブルに基づいて上記仮想装置が属するグループ番号、上記仮想装置のセマフォ、及び上記アプリケーションプログラムの上記優先順位を格納する仮想装置グループ管理テーブルを作成する仮想装置グループ管理テーブル作成手段としてさらに機能させ、上記Ｉ／Ｏ処理手段からの入出力要求と上記仮想装置グループ管理テーブルとに基づいて上記エミュレート手段が上記仮想装置を駆動する。
【００３８】
（実施形態１のエミュレーション方法）
図１３は、実施形態１のエミュレーション方法を説明するためのフローチャートである。
【００３９】
まず、Ｓ１３１において、装置管理情報入力装置２０から装置管理テーブル作成手段１１０に入力すべき装置管理定義情報を定義する。次に、Ｓ１３２において、装置管理定義情報入力装置２０から入力された装置管理定義情報を、装置管理テーブル作成手段１１０により装置管理テーブル１０１の形に作成する。次に、Ｓ１３３において、仮想装置グループ管理テーブル作成手段１２０により、装置管理テーブル１０１の中から仮想装置グループを選択し、セマフォアドレスを付与し、優先順位とともに仮想装置グループ管理テーブル１０２に格納する。次に、Ｓ１３４において、アプリケーションプログラムからのＩ／Ｏ要求を待受ける。
【００４０】
次に、Ｓ１３５において、Ｉ／Ｏ処理手段１５０により、Ｉ／Ｏ要求に係る入出力装置が仮想装置３０であると判定されたときは、Ｓ１３６に進み、エミュレート処理依頼手段１６０により、仮想装置グループ管理テーブル１０２の中からＩ／Ｏ要求のセマフォアドレスを取得し、取得したセマフォをエミュレート手段１７０に送信する。これにより、Ｓ１３７において、エミュレーションが開始され、Ｓ１３８において仮想装置３０が駆動される。すなわち、Ｓ１３８において、実装置４０がエミュレートされ、Ｓ１４０において実装置４０が駆動され、エミュレーションの全過程が完了する。
【００４１】
一方、Ｓ１３５において、Ｉ／Ｏ処理手段１５０により、Ｉ／Ｏ要求に係る入出力装置が実装置４０であると判定されたときは、Ｓ１３９に進み、Ｉ／Ｏ処理手段１５０により直接Ｉ／Ｏ処理が行なわれるＳ１４０により実装置４０が駆動され、アプリケーションプログラムとの間のＩ／Ｏ処理が完了する。
【００４２】
（実施形態１の効果）
実施形態１によれば、エミュレート処理を仮想装置グループ毎に負荷分散できる。その理由は、エミュレート手段を仮想装置グループ毎に分けて複数用意するため、他の仮想装置グループのエミュレート処理に影響されることなく別のエミュレート処理が行えるためである。また、仮想装置グループ数だけ、エミュレート処理を並列実行できるためである。
【００４３】
［実施形態２］
（実施形態２のエミュレーション装置の構成）
図１４は、実施形態２のエミュレーション装置のブロック図である。実施形態２のエミュレーション装置１０は、装置管理定義情報入力装置２０と、仮想装置３０と、実装置４０に接続されている。エミュレーション装置１０は、装置管理テーブル作成手段１１０と、仮想装置グループ管理テーブル作成手段１２０と、エミュレート起動手段１３０と、Ｉ／Ｏ要求手段１４０と、Ｉ／Ｏ処理手段１５０と、エミュレート処理依頼手段１６０と、優先順位取得手段１６１と、エミュレート手段１７０を含む。実施形態２のエミュレーション装置は、優先順位取得手段１６１をさらに備える以外は実施形態１のエミュレーション装置と同じである。
【００４４】
装置管理テーブル作成手段１１０は、コンピュータに接続される全ての装置および仮想装置に対して、装置番号と、装置情報と、仮想装置か否かを示す仮想装置フラグと、仮想装置グループ番号と、優先順位とが定義された情報を、装置管理定義情報入力装置２０から入力し、装置管理テーブル１０１を作成する。仮想装置グループ管理テーブル作成手段１２０は、装置管理テーブル作成手段１１０が作成した装置管理テーブル１０１から、仮想装置の仮想装置グループ番号と、優先順位を入力し、仮想装置グループ管理テーブル１０２を作成する。また仮想装置グループ毎にセマフォを割り当てて、セマフォのアドレスを仮想装置グループ管理テーブル１０２に格納する。
【００４５】
エミュレート起動手段１３０は、仮想装置グループ管理テーブル１０２に従って、エミュレート手段１７０を起動する。Ｉ／Ｏ要求手段１４０は、業務処理を行うジョブであり、Ｉ／Ｏ要求を発行する。Ｉ／Ｏ処理手段１５０は、Ｉ／Ｏ要求の装置番号で装置管理テーブル１０１の中を検索し装置番号に対応するエントリの仮想装置フラグでＩ／Ｏ要求の装置が実装置４０か仮想装置３０かを判断する。そして、仮想装置フラグが立っていない実装置に対するＩ／Ｏの場合は、実装置４０に対してＩ／Ｏを実行する。仮想装置フラグが立っている仮想装置３０に対するＩ／Ｏであった場合は、エミュレート処理依頼手段１６０に処理を渡す。
【００４６】
エミュレート処理依頼手段１６０は、優先順位取得手段１６１を呼び出した後、仮想装置グループ管理テーブル１０２を参照し、セマフォ１０３のアドレスを取得し、優先順位取得手段１６１で取得した優先順位で仮想装置３０への入出力のエミュレート処理を依頼する。優先順位取得手段１６１は、装置管理テーブル１０１を参照し、優先順位を取得し、エミュレート処理依頼手段１６０に送付する。エミュレート手段１７０は、仮想装置３０への入出力のエミュレート処理を実行する。
【００４７】
（実施形態２のエミュレーション装置の動作）
図５に示したように、コンピュータの立ち上げ時は、装置管理テーブル作成手段１１０、仮想装置グループ管理テーブル作成手段１２０、エミュレート起動手段１３０が動作する。
【００４８】
図７に示したように、装置管理テーブル作成手段１１０は、Ｓ４１の処理で装置管理定義情報入力装置２０（図２）から装置番号と装置情報を入力して、装置管理テーブル１０１（図２）のエントリを作成する。次にＳ４２からＳ４３の処理で、装置が仮想装置である場合は、仮想装置か否かの仮想装置フラグを立てて、仮想装置グループ番号と優先順位を装置管理テーブル１０１のエントリに格納する。ステップＳ４４以降は、全装置に対してＳ４１からＳ４３を繰り返す。
【００４９】
図８に示したように、仮想装置グループ管理テーブル作成手段１２０は、Ｓ５１の処理で装置管理テーブル１０１から、仮想装置のフラグの立っている仮想装置の装置番号と仮想装置グループ番号と優先順位を入力する。Ｓ５２の処理では、仮想装置グループ管理テーブル１０２（図４）を検索し、当該仮想装置グループ番号のエントリがあるか検索し、ない場合はＳ５５を実行しエントリを追加し、Ｓ５６を実行する。当該仮想装置グループ番号のエントリがある場合はステップＳ５３からＳ５４の処理を実行する。つまりエントリの中の優先順位を取り出し、Ｓ５１とＳ５３で取り出した優先順位を比較し、Ｓ５１の優先順位の方が高い場合、Ｓ５６を実行し、Ｓ５１の優先順位の方が低い場合または同じ場合、Ｓ５７を実行し、Ｓ５６では、Ｓ５１で取り出した優先順位を仮想装置グループ管理テーブル１０２の中の、仮想装置グループに対応するエントリ中の優先順位格納領域にセットする。Ｓ５７では、装置管理テーブル１０１の中の全仮想装置に対してＳ５１〜Ｓ５６を繰り返す。Ｓ５８では、全仮想装置グループに対し、Ｉ／Ｏ要求通知セマフォを１つずつ割り当て、仮想装置グループ管理テーブル１０２の中の、全エントリのセマフォアドレス格納領域に各々のセマフォアドレスをセットする。
【００５０】
図９に示したように、エミュレート起動手段１３０は、Ｓ６１の処理で、仮想装置グループ管理テーブル１０２中の各仮想装置グループの優先順位で、各エミュレート手段１７０を起動する。このとき引数として仮想装置グループ管理テーブル１０２中の各仮想装置グループのセマフォアドレスを受け渡す。
【００５１】
図１０に示したように、各エミュレート手段のエミュレート手段１７０は、Ｓ７１の処理で、引数として渡されたセマフォアドレスでＩ／Ｏ要求のイベントを待ち合わせ、Ｓ７２でセマフォから取得したＩ／Ｏ要求のないように従ってＩ／Ｏのエミュレートを行う。
【００５２】
図１５に示すように、コンピュータが立ち上がり、業務が動作すると、装置への入出力要求が発生し、Ｓ１４０において／Ｏ要求手段１４０が動作し、続いてＳ１５０においてＩ／Ｏ処理手段１５０が動作し、続いてＳ１６０においてエミュレート処理依頼手段１６０が動作し、続いてＳ１６１において優先順位取得手段１６１が動作し、続いてＳ１７０においてエミュレート手段１７０が動作する。Ｉ／Ｏ要求手段１４０は、業務処理の中で装置への入出力が必要になると、対象装置の装置番号とＩ／Ｏの内容を指定して、Ｉ／Ｏ処理手段１５０にＩ／Ｏ要求を発行する。Ｉ／Ｏ処理手段１５０は、Ｉ／Ｏ要求の装置番号で装置管理テーブル１０１の中を検索し装置番号に対応するエントリの仮想装置フラグでＩ／Ｏ要求の装置が実装置か仮想装置かを判断し、仮想装置フラグが立っていない実装置に対するＩ／Ｏの場合は、実装置に対してＩ／Ｏを実行する。仮想装置フラグが立っている仮想装置に対するＩ／Ｏであった場合は、エミュレート処理依頼手段１６０に処理を渡す。
【００５３】
エミュレート処理依頼手段１６０は、図１６に示したＳ１８１の処理で装置管理テーブル１０１を検索しＩ／Ｏ要求の装置のエントリから仮想装置グループ番号を取得する。次に、Ｓ１８２の処理で装置管理テーブル１０１を検索してＩ／Ｏ要求の装置のエントリから優先順位を取得する。次に、Ｓ１８３の処理で仮想装置グループ管理テーブル１０２を参照して、当該仮想装置グループのセマフォアドレスを取得し、Ｓ１８４の処理でセマフォ１０３に対して、仮想装置３０の装置番号とＩ／Ｏの内容を通知する。このとき、エミュレート処理の依頼に加えて、優先順位取得手段１６１で取得した優先順位も受け渡し、エミュレート処理の依頼イベントが溜まっている場合には、イベントが優先順位順に並ぶようにキューイングする。このとき、既にキューイングされているＩ／Ｏ要求があったとしても、それよりも後発のＩ／Ｏ要求の優先順位が高い場合は、後発のＩ／Ｏ要求は、先発のＩ／Ｏ要求よりも前にキューイングされる。
【００５４】
図１７に示すように、装置番号１へ優先順位２のＩ／Ｏが既にセマフォにキューイングされていて、後発の装置番号２へ優先順位１のＩ／Ｏが発行されたときには、先発のＩ／Ｏの前に後発のＩ／Ｏ要求が割り込むことになり、優先順位の高い装置へのＩ／Ｏが先に処理されることになる。
【００５５】
最後に、エミュレート手段１７０は、セマフォ１０３から仮想装置３０への入出力要求のイベントをキューイングされている先頭の要求を受け取ると、図１０に示したＳ７２の処理で、エミュレート処理を実行し、エミュレート処理が完了したらＳ７１へ戻る。
【００５６】
（実施形態２のエミュレーションプログラム）
実施形態２のエミュレーションプログラムは、実施形態２のエミュレーション装置の構成及び動作から明らかなとおり、アプリケーションプログラムに接続される仮想装置を駆動するためにコンピュータを、上記仮想装置の各々を、上記アプリケーションプログラムに基づいてグループ分けするグループ分け手段、及び上記優先順位に基づいて上記仮想装置を駆動するエミュレート手段として機能させる。ここに、該グループ分けは、上記アプリケーションプログラムを実行する優先順位に基づいて行なわれる。
【００５７】
さらに、上記コンピュータを、上記アプリケーションプログラムの入出力要求を入力するＩ／Ｏ処理手段としてさらに機能させ、上記アプリケーションプログラムに接続される入出力装置が実装置であるときは、上記Ｉ／Ｏ処理手段が上記実装置を駆動し、上記入出力装置が上記仮想装置であるときは、上記Ｉ／Ｏ処理手段からの入出力要求に基づいて上記エミュレート手段が上記仮想装置を駆動する。
【００５８】
さらに、上記コンピュータを、上記仮想装置の装置番号、それが属するグループ番号、及び上記アプリケーションプログラムの上記優先順位と、上記実装置の装置番号とを格納する装置管理テーブルを作成する装置管理テーブル作成手段としてさらに機能させ、上記Ｉ／Ｏ処理手段は上記装置管理テーブルに基づいて上記実装置を駆動してもよい。
【００５９】
さらに、上記コンピュータを、上記装置管理テーブルに基づいて上記仮想装置が属するグループ番号、上記仮想装置のセマフォ、及び上記アプリケーションプログラムの上記優先順位を格納する仮想装置グループ管理テーブルを作成する仮想装置グループ管理テーブル作成手段としてさらに機能させ、上記Ｉ／Ｏ処理手段からの入出力要求と上記仮想装置グループ管理テーブルとに基づいて上記エミュレート手段が上記仮想装置を駆動する。ここまでは、実施形態２のエミュレーションプログラムの内容は実施形態１のものと同じである。
【００６０】
さらに、実施形態２のエミュレーションプログラムでは、上記コンピュータを、上記装置管理テーブルから上記優先順位を取得する優先順位取得手段、及び上記仮想装置グループ管理テーブルから上記セマフォを入力するエミュレート処理依頼手段としてさらに機能させ、上記エミュレート処理依頼手段は、上記Ｉ／Ｏ処理手段からのＩ／Ｏ処理依頼があれば、上記Ｉ／Ｏ処理依頼に係る上記装置管理テーブルの上記優先順位及び上記仮想装置グループ番号の上記セマフォとに基づいて、上記エミュレート手段を駆動する。
【００６１】
（実施形態２のエミュレーション方法）
図１８は、実施形態２のエミュレーション方法を説明するためのフローチャートである。実施形態２のエミュレーション方法は、図１３に示したＳ１３６がＳ１７１に変更されていることを除けば、実施形態１のもの（図１３）と同じである。
【００６２】
Ｓ１７１においては、エミュレート処理依頼手段１６０により、装置管理テーブルから優先順位が取得され、仮想装置グループ管理手段からセマフォが取得される。その理由は、エミュレート処理依頼手段１６０が優先順位取得手段１６１を呼び出した後、仮想装置グループ管理テーブル１０２を参照し、セマフォ１０３のアドレスを取得し、優先順位取得手段１６１で取得した優先順位で仮想装置３０への入出力のエミュレート処理を依頼するためである。
【００６３】
（実施形態２の効果）
実施形態２によれば、優先順位取得手段１６１で取得した優先順位で仮想装置３０への入出力のエミュレート処理を依頼することができるため、最優先のジョブを迅速に処理できる。各エミュレート手段は、仮想装置毎に設定された優先順位に従ってエミュレート処理を実行するように構成されているため、同一仮想装置グループの中でも仮想装置毎にエミュレート処理を優先順位づけできる。つまり、装置に設定した優先順位に従ってＩ／Ｏの処理順序が変わり、優先して処理したい業務（Ｉ／Ｏ）を先に処理できるようになる。
【００６４】
［実施形態３］
（実施形態３のエミュレーション装置の構成）
図１９は、実施形態３のエミュレーション装置のブロック図である。実施形態３のエミュレーション装置１０は、装置管理定義情報入力装置２０と、仮想装置３０と、実装置４０と、操作卓５０に接続されている。エミュレーション装置１０は、装置管理テーブル作成手段１１０と、仮想装置グループ管理テーブル作成手段１２０と、エミュレート起動手段１３０と、Ｉ／Ｏ要求手段１４０と、Ｉ／Ｏ処理手段１５０と、エミュレート処理依頼手段１６０と、エミュレート手段１７０と、優先順位変更手段１８１を含む。実施形態３のエミュレーション装置は、優先順位変更手段１８１をさらに含むことを除き、実施形態２のエミュレーション装置と同じである。
【００６５】
装置管理テーブル作成手段１１０は、エミュレーション装置１０に接続される全ての装置および仮想装置に対して、装置番号と、装置情報と、仮想装置か否かを示す仮想装置フラグと、仮想装置グループ番号と、優先順位とが定義された情報を装置管理定義情報入力装置２０から入力し、装置管理テーブル１０１を作成する。
【００６６】
仮想装置グループ管理テーブル作成手段１２０は、装置管理テーブル作成手段１１０が作成した装置管理テーブル１０１から、仮想装置の仮想装置グループ番号と、優先順位を入力し、仮想装置グループ管理テーブル１０２を作成する。また仮想装置グループ毎にセマフォを割り当てて、セマフォのアドレスを仮想装置グループ管理テーブル１０２に格納する。
【００６７】
エミュレート起動手段１３０は、仮想装置グループ管理テーブル１０２に従って、エミュレート手段１７０を起動する。Ｉ／Ｏ要求手段１４０は、業務処理を行うジョブであり、Ｉ／Ｏ要求を発行する。Ｉ／Ｏ処理手段１５０は、Ｉ／Ｏ要求の装置番号で装置管理テーブル１０１の中を検索し装置番号に対応するエントリの仮想装置フラグでＩ／Ｏ要求の装置が実装置か仮想装置かを判断し、仮想装置フラグが立っていない実装置に対するＩ／Ｏの場合は、実装置に対してＩ／Ｏを実行する。仮想装置フラグが立っている仮想装置に対するＩ／Ｏであった場合は、エミュレート処理依頼手段１６０に処理を渡す。
【００６８】
エミュレート処理依頼手段１６０は、優先順位取得手段１６１を呼び出した後、仮想装置グループ管理テーブル１０２を参照し、セマフォ１０３のアドレスを取得し、優先順位取得手段１６１で取得した優先順位で仮想装置への入出力のエミュレート処理を依頼する。優先順位取得手段１６１は、装置管理テーブル１０１を参照し、優先順位を取得し、エミュレート処理依頼手段１６０に送付する。エミュレート手段１７０は、仮想装置３０への入出力のエミュレート処理を実行する。優先順位変更手段１８１は、指定された仮想装置グループ番号に対応するエミュレート手段１７０の実行優先順位を変更する。
【００６９】
図５に示したように、コンピュータの立ち上げ時は、装置管理テーブル作成手段１１０、仮想装置グループ管理テーブル作成手段１２０、エミュレート起動手段１３０が動作する。
【００７０】
図７に示したように、装置管理テーブル作成手段１１０は、Ｓ４１の処理で装置管理定義情報入力装置２０（図２）から装置番号と装置情報を入力して、装置管理テーブル１０１（図３）のエントリを作成する。Ｓ４２からＳ４３の処理で、装置が仮想装置である場合は、仮想装置か否かの仮想装置フラグを立てて、仮想装置グループ番号と優先順位を装置管理テーブル１０１のエントリに格納する。Ｓ４４以降は、全装置に対してＳ４１からＳ４３を繰り返す。
【００７１】
図８に示したように、仮想装置グループ管理テーブル作成手段１２０は、Ｓ５１の処理で装置管理テーブル１０１から、仮想装置のフラグの立っている仮想装置の装置番号と仮想装置グループ番号と優先順位を入力するＳ５２の処理では、仮想装置グループ管理テーブル１０２（図１２）を検索し、当該仮想装置グループ番号のエントリがあるか検索し、ない場合はＳ５５を実行しエントリを追加し、Ｓ５６を実行する。当該仮想装置グループ番号のエントリがある場合はＳ５３からＳ５４の処理を実行する。つまりエントリの中の優先順位を取り出し、Ｓ５１とＳ５３で取り出した優先順位を比較し、Ｓ５１の優先順位の方が高い場合、Ｓ５６を実行し、Ｓ５１の優先順位の方が低い場合または同じ場合、Ｓ５７を実行し、Ｓ５６では、Ｓ５１で取り出した優先順位を仮想装置グループ管理テーブル１０２の中の、仮想装置グループに対応するエントリ中の優先順位格納領域にセットする。Ｓ５７では、装置管理テーブル１０１の中の全仮想装置に対してＳ５１〜Ｓ５６を繰り返す。Ｓ５８では、全仮想装置グループに対し、Ｉ／Ｏ要求通知セマフォを１つずつ割り当て、仮想装置グループ管理テーブル１０２の中の、全エントリのセマフォアドレス格納領域に各々のセマフォアドレスをセットする。
【００７２】
図９に示したように、エミュレート起動手段１３０は、Ｓ６１の処理で、仮想装置グループ管理テーブル１０２中の各仮想装置グループの優先順位で、各エミュレート手段１７０を起動する。このとき引数として仮想装置グループ管理テーブル１０２中の各仮想装置グループのセマフォアドレスを受け渡す。
【００７３】
図１０に示したように、各エミュレート手段のエミュレート手段１７０は、Ｓ７１の処理で引数として渡されたセマフォアドレスでＩ／Ｏ要求のイベントを待ち合わせ、Ｓ７２においてＩ／Ｏのエミュレートを行う。
【００７４】
図１５に示したように、コンピュータが立ち上がり、業務が動作すると、装置への入出力要求が発生し、Ｉ／Ｏ要求手段１４０、Ｉ／Ｏ処理手段１５０、エミュレート処理依頼手段１６０、優先順位取得手段１６１、エミュレート手段１７０の順にＩ／Ｏが処理されていく。
【００７５】
Ｉ／Ｏ要求手段１４０は、業務処理の中で装置への入出力が必要になると、対象装置の装置番号とＩ／Ｏの内容を指定して、Ｉ／Ｏ処理手段１５０にＩ／Ｏ要求を発行する。Ｉ／Ｏ処理手段１５０は、Ｉ／Ｏ要求の装置番号で装置管理テーブル１０１の中を検索し装置番号に対応するエントリからＩ／Ｏ要求の装置が実装置４０か仮想装置３０かを判断する。そして、実装置に対するＩ／Ｏの場合は、実装置４０に対してＩ／Ｏを実行する。仮想装置３０に対するＩ／Ｏであった場合は、エミュレート処理依頼手段１６０に処理を渡す。
【００７６】
図１６に示したように、エミュレート処理依頼手段１６０は、Ｓ１８１の処理で装置管理テーブル１０１を検索しＩ／Ｏ要求の装置のエントリから仮想装置グループ番号を取得する。次に、Ｓ１８２の処理で優先順位取得手段１６１を呼び出して、装置管理テーブル１０１を検索してＩ／Ｏ要求の装置のエントリから優先順位を取得する。次にＳ１８３の処理で仮想装置グループ管理テーブル１０２を参照して、当該仮想装置グループのセマフォアドレスを取得し、Ｓ１８４の処理でセマフォ１０３に対して、仮想装置３０の装置番号とＩ／Ｏの内容を通知する。このとき、エミュレート処理の依頼に加えて、優先順位取得手段１６１で取得した優先順位も受け渡し、エミュレート処理の依頼イベントが溜まっている場合には、イベントが優先順位順に並ぶようにキューイングする。エミュレート手段１７０は、セマフォ１０３から仮想装置３０への入出力要求のイベントをキューイングされている先頭の要求を受け取ると、図１０のＳ７２の処理で、エミュレート処理を実行し、エミュレート処理が完了したらＳ７１へ戻る。
【００７７】
操作卓５０から優先順位変更のコマンドが投入されたときには、優先順位変更手段１８１がコマンドを受け取って処理する。
【００７８】
すなわち、コマンドは装置番号と変更後の優先順位を指定され、対応する仮想装置グループの優先順位と、エミュレート手段１７０の優先順位を変更するものである。コマンドが投入されると、優先順位変更手段１８１はコマンドの内容を解析し、装置管理テーブル１０１を当該装置番号で検索しエントリ中の優先順位を更新し、さらに当該装置の仮想装置グループ番号を取り出し、装置管理テーブル１０１から同じ仮想装置グループ番号をもつエントリをサーチしてエントリの中で最も高い優先順位を取り出し、仮想装置グループ管理テーブル１０２中の当該仮想装置グループ番号のエントリの優先順位と比較し、一致しない場合には、仮想装置グループ管理テーブル１０２の当該エントリを最も高い優先順位に更新する。更新を行った場合は、さらに対応するエミュレート手段１７０が動作中であるか否かにかかわらず、指定された仮想装置グループ番号に対応するエミュレート手段１７０の優先順位を変更する。
【００７９】
このとき、同じ装置へのＩ／Ｏであっても、コマンド投入後は、変更後の優先順位でエミュレート手段１７０が動作するので、当該装置へのＩ／Ｏ優先順位が変わる。
【００８０】
例えば図２０に示すように、業務ジョブＡから発行された装置番号１へのＩ／Ｏは優先順位が３であり、業務ジョブＢから発行された装置番号２へのＩ／Ｏの優先順位が２で、業務ジョブＢから発行された装置番号２へのＩ／Ｏが優先されていたが、コマンド投入後は業務ジョブＣから発行された装置番号１へのＩ／Ｏは優先順位が１であり、業務ジョブＢから発行された装置番号２へのＩ／Ｏの優先順位は２であるため、装置番号１へのＩ／Ｏが優先される。
【００８１】
（実施形態３のエミュレーションプログラム）
実施形態３のエミュレーションプログラムは、実施形態３のエミュレーション装置の構成及び動作から明らかなとおり、アプリケーションプログラムに接続される仮想装置を駆動するためにコンピュータを、上記仮想装置の各々を、上記アプリケーションプログラムに基づいてグループ分けするグループ分け手段、及び上記優先順位に基づいて上記仮想装置を駆動するエミュレート手段として機能させる。ここに、該グループ分けは、上記アプリケーションプログラムを実行する優先順位に基づいて行なわれる。
【００８２】
さらに、上記コンピュータを、上記アプリケーションプログラムの入出力要求を入力するＩ／Ｏ処理手段としてさらに機能させ、上記アプリケーションプログラムに接続される入出力装置が実装置であるときは、上記Ｉ／Ｏ処理手段が上記実装置を駆動し、上記入出力装置が上記仮想装置であるときは、上記Ｉ／Ｏ処理手段からの入出力要求に基づいて上記エミュレート手段が上記仮想装置を駆動する。
【００８３】
さらに、上記コンピュータを、上記仮想装置の装置番号、それが属するグループ番号、及び上記アプリケーションプログラムの上記優先順位と、上記実装置の装置番号とを格納する装置管理テーブルを作成する装置管理テーブル作成手段としてさらに機能させ、上記Ｉ／Ｏ処理手段は上記装置管理テーブルに基づいて上記実装置を駆動してもよい。
【００８４】
さらに、上記コンピュータを、上記装置管理テーブルに基づいて上記仮想装置が属するグループ番号、上記仮想装置のセマフォ、及び上記アプリケーションプログラムの上記優先順位を格納する仮想装置グループ管理テーブルを作成する仮想装置グループ管理テーブル作成手段としてさらに機能させ、上記Ｉ／Ｏ処理手段からの入出力要求と上記仮想装置グループ管理テーブルとに基づいて上記エミュレート手段が上記仮想装置を駆動する。ここまでは、実施形態１のエミュレーションプログラムの内容は実施形態１のものと同じである。
【００８５】
さらに、実施形態３のエミュレーションプログラムでは、上記コンピュータを、上記装置管理テーブルから上記優先順位を取得する優先順位取得手段、及び上記仮想装置グループ管理テーブルから上記セマフォを入力するエミュレート処理依頼手段としてさらに機能させ、上記エミュレート処理依頼手段は、上記Ｉ／Ｏ処理手段からのＩ／Ｏ処理依頼があれば、上記Ｉ／Ｏ処理依頼に係る上記装置管理テーブルの上記優先順位及び上記仮想装置グループ番号の上記セマフォとに基づいて、上記エミュレート手段を駆動する。
【００８６】
（実施形態３のエミュレーション方法）
図２１は、実施形態３のエミュレーション方法を説明するためのフローチャートである。実施形態３のエミュレーション方法は、Ｓ２００が追加されていることを除き、実施形態２のもの（図１８）と同じである。
【００８７】
Ｓ２００においては、操作卓５０などから優先順位変更手段１８１に優先順位の変更が入力された時はＳ１３２に戻り装置管理テーブルが更新される。すなわち、エミュレート処理依頼手段１６０を介して直ちに装置管理テーブル１０１、仮想装置グループ管理テーブル１０２中の優先順位が更新される。
【００８８】
なお、Ｓ２００は、仮想装置グループ管理テーブル作成（Ｓ１３３）後とＩ／Ｏ要求（Ｓ１３４）前に置かれており、優先順位の変更がないときは、Ｓ１３４に戻る。なお、Ｓ２００は、仮想装置グループ管理テーブル作成（Ｓ１３３）後とＩ／Ｏ要求（Ｓ１３４）前に置かれているが、これに限らず、Ｓ１３２・Ｓ１３３間、Ｓ１３４・Ｓ１３５間、Ｓ１３５・Ｓ１３６間、Ｓ１３６・Ｓ１３７間、Ｓ１３７・Ｓ１３８間等に置かれてもよい。判定結果による分岐は、上述の例に準ずる。
【００８９】
（実施形態３の効果）
実施形態３によれば、優先順位変更手段１８１は、仮想装置の優先順位を動的に変更する機能を提供するため、いずれかの仮想装置を利用する業務を急遽優先処理したい場合や、仮想装置を利用する業務を急遽後回しするような場合に、一時的な急な変更が可能となり、業務運用の自由度が向上する。また、昼間の時間帯と夜間の時間帯では業務の内容が異なり、業務の優先順位が変わる場合においてもそれに応じた優先順位の変更が可能となり、業務にあわせた優先順位の設定が可能となる。
【産業上の利用可能性】
【００９０】
本発明の利用分野は、オペレーティングシステムにより生成された仮想入出力装置などの仮想装置を制御するためのエミュレーションを行うエミュレーション装置、これを利用するコンピュータである。
【図面の簡単な説明】
【００９１】
【図１】実施形態１のエミュレーション装置のブロック図
【図２】装置管理定義情報入力装置の一例
【図３】装置管理テーブルの一例
【図４】仮想装置グループ管理テーブルの一例
【図５】エミュレーション装置立ち上げのフローチャート
【図６】Ｉ／Ｏ要求発行のフローチャート
【図７】仮想装置グループ管理テーブルに優先順位をエントリするフローチャート
【図８】仮想装置グループ管理テーブルに仮想装置を追加するフローチャート
【図９】優先順位に従ってエミュレート手段を起動する実施形態１のフローチャート
【図１０】セマフォに従ってエミュレートを行うフローチャート
【図１１】エミュレート処理依頼手段の動作の実施形態１のフローチャート
【図１２】Ｉ／Ｏ要求手段が２つある実施形態１のエミュレーション装置のブロック図
【図１３】実施形態１のエミュレーション方法のフローチャート
【図１４】実施形態２のエミュレーション装置のブロック図
【図１５】優先順位に従ってエミュレート手段を起動する実施形態２のフローチャート
【図１６】エミュレート処理依頼手段の動作の実施形態２のフローチャート
【図１７】優先順位とセマフォキューの関係を示すブロック図
【図１８】実施形態２のエミュレーション方法のフローチャート
【図１９】実施形態３のエミュレーション装置のブロック図
【図２０】図１９のエミュレーション装置の具体的動作を説明するためのブロック図
【図２１】実施形態３のエミュレーション方法のフローチャート
【符号の説明】
【００９２】
１０  エミュレーション装置
２０  装置管理情報入力装置
３０  仮想装置
４０  実装置
１１０  装置管理テーブル作成手段
１２０  仮想装置グループ管理テーブル作成手段
１３０  エミュレート起動手段
１４０、１４０Ａ、１４０Ｂ  Ｉ／Ｏ要求手段
１５０  Ｉ／Ｏ処理手段
１６０  エミュレート処理依頼手段
１７０、１７０Ａ、１７０Ｂ  エミュレート手段
１８１  優先順位変更手段
【図１】
2006285596.tif 000003
【図２】
2006285596.tif 000004
【図３】
2006285596.tif 000005
【図４】
2006285596.tif 000006
【図５】
2006285596.tif 000007
【図６】
2006285596.tif 000008
【図７】
2006285596.tif 000009
【図８】
2006285596.tif 000010
【図９】
2006285596.tif 000011
【図１０】
2006285596.tif 000012
【図１１】
2006285596.tif 000013
【図１２】
2006285596.tif 000014
【図１３】
2006285596.tif 000015
【図１４】
2006285596.tif 000016
【図１５】
2006285596.tif 000017
【図１６】
2006285596.tif 000018
【図１７】
2006285596.tif 000019
【図１８】
2006285596.tif 000020
【図１９】
2006285596.tif 000021
【図２０】
2006285596.tif 000022
【図２１】
2006285596.tif 000023