(57)【要約】（課題）プログラムの実行タイミングを、他のプログラムに併せて制御できる情報処理装置および情報処理装置の制御方法を提供する。（解決手段）  複数のプログラムを格納した格納部、格納部に格納された複数のプログラムを実行する複数のプロセッサ、および、複数のプロセッサが実行する命令をエミュレートするエミュレート部を有し、エミュレート部に対し、格納部に格納されている複数のプログラムのうち、プロセッサに実行させるプログラムを指定すると共に、指定されたプログラムが実行されるとき、実行するプロセッサの実行を遅延させるよう指示する指示部と、エミュレート部によりエミュレートされた、複数のプロセッサの各々が処理したプログラムの実行タイミングを含む実行履歴を蓄積する履歴蓄積部と、を有する。
2013057769.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムを格納した格納部、前記格納部に格納された前記複数のプログラムを実行する複数のプロセッサ、および、前記複数のプロセッサが実行する命令をエミュレートするエミュレート部を有し、
前記エミュレート部に対し、前記格納部に格納されている前記複数のプログラムのうち、プロセッサに実行させるプログラムを指定すると共に、前記指定されたプログラムが実行されるとき、実行するプロセッサの実行を遅延させるよう指示する指示部と、
前記エミュレート部によりエミュレートされた、前記複数のプロセッサの各々が処理したプログラムの実行タイミングを含む実行履歴を蓄積する履歴蓄積部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記エミュレート部は、前記プロセッサが前記指定されたプログラムを実行するとき、前記プロセッサの起動を遅延することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記エミュレート部は、前記指定されたプログラムが割込み禁止設定または割込み禁止解除を行うとき、前記指定されたプログラムを実行する前記プロセッサの実行速度を遅延させることを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記エミュレート部は、前記指定されたプログラムが排他制御の獲得または排他制御の解放を行うとき、前記指定されたプログラムを実行するプロセッサの実行速度を遅延させることを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記エミュレート部は、前記プロセッサが前記指定されたプログラムを実行するとき、入出力装置からの割込みを遅延させることを特徴とする請求項１記載の情報処理装置。
【請求項６】
複数のプログラムを格納した格納部、前記格納部に格納された前記複数のプログラムを実行する複数のプロセッサ、および、前記複数のプロセッサが実行する命令をエミュレートするエミュレート部を有する情報処理装置の制御方法であって、
前記エミュレート部に対し、前記格納部に格納されている前記複数のプログラムのうち、プロセッサに実行させるプログラムを指定すると共に、前記指定されたプログラムが実行されるとき、実行するプロセッサの実行を遅延させるよう指示し、
前記エミュレート部によりエミュレートされた、前記複数のプロセッサの各々が処理したプログラムの実行タイミングを含む実行履歴を蓄積する
ことを特徴とする情報処理装置の制御方法。
【請求項７】
前記エミュレート部は、前記プロセッサが前記指定されたプログラムを実行するとき、前記プロセッサの起動を遅延することを特徴とする請求項６記載の情報処理装置の制御方法。
【請求項８】
前記エミュレート部は、前記指定されたプログラムが割込み禁止設定または割込み禁止解除を行うとき、前記指定されたプログラムを実行する前記プロセッサの実行速度を遅延させることを特徴とする請求項６記載の情報処理装置の制御方法。
【請求項９】
前記エミュレート部は、前記指定されたプログラムが排他制御の獲得または排他制御の解放を行うとき、前記指定されたプログラムを実行するプロセッサの実行速度を遅延させることを特徴とする請求項６記載の情報処理装置の制御方法。
【請求項１０】
前記エミュレート部は、前記プロセッサが前記指定されたプログラムを実行するとき、入出力装置からの割込みを遅延させることを特徴とする請求項６記載の情報処理装置の制御方法。
【請求項１１】
複数のプログラムを格納した格納部、前記格納部に格納された前記複数のプログラムを実行する複数のプロセッサ、および、前記複数のプロセッサが実行する命令をエミュレートするエミュレート部を有する情報処理装置の制御をコンピュータに実行させる情報処理装置の制御プログラムであって、
コンピュータに、
前記エミュレート部に対し、前記格納部に格納されている前記複数のプログラムのうち、プロセッサに実行させるプログラムを指定すると共に、前記指定されたプログラムが実行されるとき、実行するプロセッサの実行を遅延させるよう指示し、
前記エミュレート部によりエミュレートされた、前記複数のプロセッサの各々が処理したプログラムの実行タイミングを含む実行履歴を蓄積する
ことを特徴とする情報処理装置の制御プログラム。
【請求項１２】
前記エミュレート部は、前記プロセッサが前記指定されたプログラムを実行するとき、前記プロセッサの起動を遅延するように指示することを特徴とする請求項１１記載の情報処理装置の制御プログラム。
【請求項１３】
前記エミュレート部は、前記指定されたプログラムが割込み禁止設定または割込み禁止解除を行うとき、前記指定されたプログラムを実行する前記プロセッサの実行速度を遅延させることを特徴とする請求項１１記載の情報処理装置の制御プログラム。
【請求項１４】
前記エミュレート部は、前記指定されたプログラムが排他制御の獲得または排他制御の解放を行うとき、前記指定されたプログラムを実行する前記プロセッサの実行速度を遅延させることを特徴とする請求項１１記載の情報処理装置の制御プログラム。
【請求項１５】
前記エミュレート部は、前記プロセッサが前記指定されたプログラムを実行するとき、入出力装置からの割込みを遅延させるように指示することを特徴とする請求項１１記載の情報処理装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法および制御プログラムに関する。
【背景技術】
【０００２】
複数のプロセッサを有し、複数のプロセッサによりアクセスされる共有メモリを有するマルチプロセッサシステムが存在する。複数のプロセッサのそれぞれは、マルチプロセッサシステムが有する格納部に記憶された複数のプログラムのうち、割り当てられたプログラムを実行する。【０００３】
このようなマルチプロセッサシステムにおいては、個々のプロセッサに於いて、プログラムを実行することで、プログラムの並行実行を可能としている。このようなマルチプロセッサシステムに於いては、共有メモリを使用していることが多く、各プログラムには、あるプロセッサにより使用されている共有メモリ内の領域に対し、他のプロセッサがアクセスできないよう、排他制御が行われている。【０００４】
このため、新たなプログラムをマルチプロセッサシステムで実行させるには、その新たなプログラム単体の実行テストだけでなく、既に導入済みのプログラムと新たなプログラムとを並行に実行させた際、排他制御が正常に行われ、処理が正常に行われるかを検証する必要がある。これに対応し、新たなプログラムが個々のプログラムと割込み制御または排他制御を行う確率を上げるために、新たなプログラムの特定区間でプログラムの実行速度を遅らせることが、検討されている。このような検証では、個々のプログラムおよび新たなプログラムを並行に実行させることにより、初めて上記排他制御が正常かを確認することが可能である。【０００５】
ところで、上位のプログラムが、複数の下位のプログラムを複数のプロセッサに割り振り、各プロセッサで実行させるようになってきている。即ち、これらのプログラムの実行タイミングは、ＯＳの制御に依存している。このため、上記のような新たなプログラムの検証を行う際に、ユーザは、いつどのようなプログラムが実行されるか、その実行タイミングを確認することができない。このため、ユーザは、新たなプログラムをシステムで導入する際、新たなプログラムを、各プログラムの実行状態が不明なまま、任意のタイミングで実行させて実行履歴を蓄積していき、プログラムの不具合が発生した場合、その履歴を追っていくことによって過去の実行履歴を閲覧する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０９−３３０２７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記したように、従来の技術では、ユーザが、新たなプログラムをシステムで導入する際、該新たなプログラムを、各プログラムの実行状態が不明なまま、任意のタイミングで実行させて実行履歴を蓄積していき、プログラムの不具合が発生した場合、その履歴を追っていくことによって過去の実行履歴を閲覧していたために、新たなプログラムと、既存の個々のプログラムとの並行処理は、偶然的に発生する事となり、不具合を効率的に検出できない。【０００８】
１つの側面では、本発明は、プログラムの実行タイミングを、他のプログラムに併せて制御できる情報処理装置および情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の課題を解決するため、開示の技術の第１の側面によれば、
複数のプログラムを格納した格納部、前記格納部に格納された前記複数のプログラムを実行する複数のプロセッサ、および、前記複数のプロセッサが実行する命令をエミュレートするエミュレート部を有し、
前記エミュレート部に対し、前記格納部に格納されている前記複数のプログラムのうち、プロセッサに実行させるプログラムを指定すると共に、前記指定されたプログラムが実行されるとき、実行するプロセッサの実行を遅延させるよう指示する指示部と、
前記エミュレート部によりエミュレートされた、前記複数のプロセッサの各々が処理したプログラムの実行タイミングを含む実行履歴を蓄積する履歴蓄積部と、
を有することを特徴とする情報処理装置が提供される。【００１０】
本発明の課題を解決するため、開示の技術の第２の側面によれば、
複数のプログラムを格納した格納部、前記格納部に格納された前記複数のプログラムを実行する複数のプロセッサ、および、前記複数のプロセッサが実行する命令をエミュレートするエミュレート部を有する情報処理装置の制御方法であって、
前記エミュレート部に対し、前記格納部に格納されている前記複数のプログラムのうち、プロセッサに実行させるプログラムを指定すると共に、前記指定されたプログラムが実行されるとき、実行するプロセッサの実行を遅延させるよう指示し、
前記エミュレート部によりエミュレートされた、前記複数のプロセッサの各々が処理したプログラムの実行タイミングを含む実行履歴を蓄積する
ことを特徴とする情報処理装置の制御方法が提供される。
【発明の効果】
【００１１】
開示の技術は、個々のプログラムの実行タイミングを制御できない場合においても、プログラムの実行タイミングを、他のプログラムの動作に併せて制御できる情報処理装置および情報処理装置の制御方法を提供することを可能とする。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係る情報処理装置のハードウェア構成を示す図である。
【図２】図２は、実施例１に係る情報処理装置の機能構成を示す図である。
【図３】図３は、実施例１に係る情報処理装置のソフトウェア構成を示す図である。
【図４】図４は、実施例１に係るプログラムの起動遅延機能を実現するソフトウェア構成を示す図である。
【図５】図５は、実施例１に係るプログラムの起動遅延機能の動作イメージを示す図である。
【図６】図６は、実施例１に係るユーザからのプログラムの起動遅延機能に関する指示内容と情報処理装置１０の動作内容との関連を示す表である。
【図７】図７は、実施例１に係る実施例１に係るプログラムの起動遅延機能のフローチャートである。
【図８】図８は、実施例１に係る実施例１に係るプログラムの起動遅延機能のフローチャートである。
【図９】図９は、実施例１に係る遅延機能部のプログラム間の関連を示す図である。
【図１０】図１０は、各プロセッサ機能部と制御テーブル（プロセッサ機能部用データ域）との関連を示す図である。
【図１１】図１１は、実施例１に係る特定プログラム１７の実行速度の遅延処理を実現するソフトウェア構成を示す図である。
【図１２】図１２は、プログラムの実行遅延機能の処理内容を示す図である。
【図１３】図１３は、特定プログラムにおける割込み禁止および解除の状態の推移と、特定プログラムの実行速度の遅延処理との関係を示す表である。
【図１４】図１４は、特定プログラムにおける排他制御の獲得および解放の状態の推移と、特定プログラムの実行速度の遅延処理との関係を示す表である。
【図１５】図１５は、プログラムの実行速度を遅らせる範囲を決める処理のフローチャートである。
【図１６】図１６は、プログラムの実行速度を遅らせる範囲を決める処理のフローチャートである。
【図１７】図１７は、実施例２に係る割込みの遅延機能を実現するソフトウェア構成を示す図である。
【図１８】図１８は、ユーザからの指示内容と入出力装置からの割込み遅延機能の処理内容の関係を示す表である。
【図１９】図１９は、入出力装置６０からの割込み遅延機能の動作イメージを示す図である。
【図２０】図２０は、実施例２に係る情報処理装置の機能構成を示す図である。
【図２１】図２１は、プログラムの実行速度の遅延処理のフローチャートである。
【図２２】図２２は、プログラムの実行速度の遅延処理のフローチャートである。
【図２３】図２３は、入出力装置からの割込み遅延機能（第４遅延機能部４２）のフローチャートである。
【図２４】図２４は、入出力装置からの割込み遅延機能（第４遅延機能部４２）のフローチャートである。
【図２５】図２５は、再起動プロセス部４３のフローチャートである。
【図２６】図２６は、実施例３に係る特定プログラム１７の実行遅延機能を実現するソフトウェア構成を示す図である。
【図２７】図２７は、割込み制御（禁止・解除）を行うプログラムにおけるプログラムの実行速度を遅らせる範囲とプログラムの実行速度を遅らせない範囲を示す図である。
【図２８】図２８は、排他制御の獲得と解放の制御を行うプログラムにおけるプログラムの実行速度を遅らせる範囲とプログラムの実行速度を遅らせない範囲を示す図である。
【図２９】図２９は、割込み制御（禁止・解除）および、排他制御の獲得と解放の制御を行うプログラムにおけるプログラムの実行速度を遅らせる範囲とプログラムの実行速度を遅らせない範囲を示す図である。
【図３０】図３０は、割込み制御（禁止・解除）および、排他制御の獲得と解放の制御を行うプログラムにおけるプログラムの実行速度を遅らせる範囲とプログラムの実行速度を遅らせない範囲を示す図である。
【図３１】図３１は、プログラムの実行遅延機能の処理概要を示す表である。
【図３２】図３２は、プログラムの実行遅延機能の監視部４４のフローチャートである。
【図３３】図３３は、プログラムの実行遅延機能の監視部４４のフローチャートである。
【図３４】図３４は、プログラムの実行遅延機能の監視部４４のフローチャートである。
【図３５】図３５は、プログラムの実行遅延機能の監視部４４のフローチャートである。
【図３６】図３６は、プログラムの実行遅延機能の決定部４５のフローチャートである。
【図３７】図３７は、プログラムの実行遅延機能の決定部４５のフローチャートである。
【図３８】図３８は、ログ情報データの採取機能を構成するプログラム構造を示す図である。
【図３９】図３９は、ログ情報データの採取機能の採取部４８のフローチャートである。
【図４０】図４０は、プログラムの起動遅延機能、プログラムの実行遅延機能、入出力装置からの割込み遅延機能およびログ情報データの採取機能が使用する作業領域に対するポインタテーブルの構成を示す図である。
【図４１】図４１は、プログラムの起動遅延機能、プログラムの実行遅延機能、入出力装置からの割込み遅延機能およびログ情報データの採取機能が使用する各プロセッサ機能部の動作状態の格納領域に対するポインタテーブル８２の関連を示す図である。
【図４２】図４２は、情報処理装置のユーザから指示されたデータを格納する第１テーブル７０の内容を示す図である。
【図４３】図４３は、情報処理装置のユーザから指示された内容を格納する第１テーブル７０内のユーザから指示された機能の情報を示す第１メモリマップ７１である。
【図４４】図４４は、情報処理装置のユーザから指示された内容を格納する第１テーブル７０内の特定プログラム１７に関する情報を示す第２メモリマップ７２である。
【図４５】図４５は、各プロセッサ機能部に設けられた制御テーブルである第２テーブルである。第２テーブルは、プログラムの起動遅延機能、プログラムの実行遅延機能、入出力装置からの割込み遅延機能およびログ情報データの採取機能で、プログラムの状態を把握するために使用する。
【図４６】図４６は、各プロセッサ機能部に設けられた制御テーブルである第２テーブル７３内の実行中の特定プログラム１７の状態表示を示す第３メモリマップである。
【図４７】図４７は、各プロセッサ機能部に設けられた制御テーブルである第２テーブル７３内の特定プログラム１７に関する情報を示す第４メモリマップ７５である。
【図４８】図４８は、入出力装置からの割込みの情報を格納する第３テーブル７６である。第３テーブル７６は、入出力装置からの割込み遅延機能が入出力装置からの割込みの情報を保管するために使用する。
【図４９】図４９は、排他制御の内容を示す第４テーブル７７である。第４テーブル７７は、プログラムの実行遅延機能が排他制御の状態を把握するために使用する。
【図５０】図５０は、ログ情報データの管理情報を示す第５テーブル７８である。第５テーブル７８は、ログ情報データの採取機能がログ情報データの格納域を管理するために使用する。
【図５１】図５１は、ログ情報データの採取機能が使用する第５テーブル７８内のログ情報データを出力するプログラムの状態表示を示す第５メモリマップ７９である。
【図５２】図５２は、ログ情報データの格納域の内容を示す第６テーブル８０である。第６テーブル８０は、ログ情報データの採取機能が採取したログ情報データの格納域として使用する。
【発明を実施するための形態】
【００１３】
（実施例１）
実施例１は、ハードウェアの構成、ソフトウェアの構成およびプログラムの起動遅延機能、およびプログラムの実行遅延機能を記載する。
図１と図２はハードウェアの構成、図３はソフトウェアの構成、図４〜図１０はプログラムの起動遅延機能、図１１〜図１６はプログラムの実行遅延機能について、記載する。
【００１４】
図１は、実施例１における情報処理装置１０のハードウェア構成を示す図である。情報処理装置１０は、共有メモリ１１、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１３Ａ、ＣＰＵ１３Ｂ、ＣＰＵ１３Ｃ、ＣＰＵ１３Ｄ、ディスク装置１５、およびバス１９を有する。
【００１５】
共有メモリ１１は、ＣＰＵ１３Ａ、ＣＰＵ１３Ｂ、ＣＰＵ１３ＣおよびＣＰＵ１３Ｄが実行するＯＳプログラム、アプリケーションプログラム、エミュレートプログラム、および各プログラムが動作する際に使用するデータを格納する。
【００１６】
エミュレートプログラム１２は、各プロセッサが実行する命令をエミュレートするプログラムである。
【００１７】
各々のＣＰＵ１３Ａ、ＣＰＵ１３Ｂ、ＣＰＵ１３ＣおよびＣＰＵ１３Ｄは、共有メモリ１１およびディスク装置１５に接続している。
【００１８】
ＣＰＵ１３Ａについて説明する。なお、ＣＰＵ１３Ｂ、ＣＰＵ１３ＣおよびＣＰＵ１３Ｄは、ＣＰＵ１３Ａと同じ構成であるので、説明を省略する。
【００１９】
ＣＰＵ１３Ａは、バス１９を介してディスク装置１５と接続する。
ＣＰＵ１３Ａは、エミュレート部１４Ａを有し、他のＣＰＵ１３Ｂ、ＣＰＵ１３ＣおよびＣＰＵ１３Ｄと共有メモリ１１を共用する。
ＣＰＵ１３Ａは、他のＣＰＵ１３Ｂ、ＣＰＵ１３ＣおよびＣＰＵ１３Ｄと協働して、情報処理装置１０を制御する。
ＣＰＵ１３Ａは、処理結果データなどをディスク装置１５に出力する。
【００２０】
エミュレート部１４Ａは、各プロセッサにある機構であり、共有メモリ１１に格納されたエミュレートプログラムを実行する。
【００２１】
ディスク装置１５は、ＯＳプログラム、アプリケーションプログラム、エミュレートプログラム、および各プログラムが動作する際に使用するデータなどを格納する。
ＯＳプログラムには、特定プログラム（情報処理装置のユーザが指定したプログラム）、他のプログラム（情報処理装置のユーザが指定していないプログラム）、があり、格納するデータには、ログ情報ファイルなどがある。
【００２２】
入出力装置６０は、バス１９を介して情報処理装置１０と接続する。
入出力装置には、ディスク装置、テープ装置、プリンタ装置などの機器がある。
【００２３】
図２は、実施例１に係る情報処理装置１０内の機能構成を示す図である。図１で説明した構成物には同一符号を付し、説明を省略する。
【００２４】
格納機能部２０は、特定プログラム１７、他のプログラム１８などのプログラムを格納する。
【００２５】
共有メモリ機能部２１は、プロセッサ機能部２２Ａ、プロセッサ機能部２２Ｂなどで実行されるＯＳプログラム、アプリケーションプログラム、エミュレートプログラム１２などが実行するときに、必要とする各種データを格納する。
【００２６】
プロセッサ機能部２２Ａ、プロセッサ機能部２２Ｂなどは、格納機能部２０に格納されているＯＳプログラム、アプリケーションプログラム、エミュレートプログラム１２などを実行する。
【００２７】
指示部２３は、情報処理装置のユーザからの指示内容を解析して、情報処理装置のユーザからの指示内容を、共有メモリ機能部２１に格納する。
【００２８】
ログ情報データ９０は、特定のプログラムが起動または実行されるときに採取した他プロセッサの状態などを格納する。
【００２９】
図３は、実施例１に係る情報処理装置１０のソフトウェア構成を示す図である。なお、図３において、図１および図２で説明した構成と同じ構成には同一符号を付し、説明を省略する。
【００３０】
共有メモリ機能部２１は、アプリケーション層２５、ＯＳ層２７およびファーム層３０を有する。
【００３１】
アプリケーション層２５は、ユーザプログラム２６を有する。ユーザプログラム２６は、ユーザで使用される各種アプリケーションプログラムである。
【００３２】
ユーザプログラム２６が、ＯＳプログラムのサービスを要求する場合に、プログラム起動部２９Ａが介在する。（１）
【００３３】
ＯＳ層２７は、ＯＳプログラム２８Ａ、ＯＳプログラム２８Ｂ、ＯＳプログラム２８Ｃ、プログラム起動部２９Ａおよびプログラム起動部２９Ｂなどを有する。
ユーザプログラム２６からＯＳプログラムのサービスが要求された場合、プログラム起動部２９Ａおよび第１遅延機能部３２を介在して、ＯＳプログラム２８Ａを起動する。
（１）→（２）→（３）
ＯＳプログラム２８ＡからＯＳプログラム２８Ｂを起動する場合も、プログラム起動部２９Ａおよび第１遅延機能部３２を介在させる。
（４）→（５）→（６）
ディスク装置１５へのアクセスは、ファーム層３０のドライバプログラム３６を経由してアクセスを行う。
（６）→（７）
ディスク装置１５から通知されたアクセス結果は、ドライバプログラム３６とＯＳプログラム２８Ｃを介在させてユーザプログラム２６に通知する。
（Ａ）→（Ｂ）→（Ｃ）→（Ｄ）
【００３４】
ファーム層３０は、エミュレータプログラム３１、格納域３５およびドライバプログラム３６などを有する。
本技術によるプログラムの起動遅延機能、プログラムの実行遅延機能および入出力装置からの割込み遅延機能は、エミュレータプログラム３１として動作する。
プログラムの起動遅延機能は、第１遅延機能部３２で実現し、プログラムの実行遅延機能は、第３遅延機能部３４で実現し、入出力装置からの割込み遅延機能は、第２遅延機能部３３で実現する。
【００３５】
格納域３５は、プログラムの起動遅延機能、プログラムの実行遅延機能および入出力装置からの割込み遅延機能を実行したときの、自プロセッサおよび他プロセッサで実行中のプログラムに関する情報を格納する領域である。
【００３６】
ドライバプログラム３６は、ユーザプログラム２６およびＯＳプログラム２８Ａなどからの依頼によりディスク装置１５など各デバイスへのアクセスを行う。
【００３７】
ディスク装置１５は、ログ情報ファイル２４およびデータ格納部３７などを有する。ログ情報ファイル２４は、格納域３５に採取された各プログラムの動作履歴情報を格納する。データ格納部３７は、ユーザプログラム２６が使用するデータなどを格納する。
【００３８】
図４は、実施例１に係る情報処理装置１０のプログラム起動の遅延機能を実現するソフトウェア構成を示す図である。
図４は、特定プログラム１７が起動された場合のソフトウェア構成図である。
図４では、図１〜図３で説明した構成と同じ構成には同一符号を付し、説明を省略する。
【００３９】
ＯＳ層２７上で特定プログラム１７を起動する命令が実行されることにより、ファーム層３０上で第１遅延機能部３２が動作する。
第１遅延機能部３２は、プログラムの起動遅延機能が使用されている場合、第３遅延機能部３４を呼び出し、第３遅延機能部３４から復帰した後に、特定プログラム１７を起動する。（１）→（２）→（３）の順に処理する。
プログラムの起動遅延機能が使用されていない場合、特定プログラム１７を起動する。（１）→（３）の順に処理する。
【００４０】
（１）第１遅延機能部３２による処理
起動元プログラム３８で特定プログラム１７を起動する命令が実行される。起動命令の実行により第１遅延機能部３２が動作する。
第１遅延機能部３２は、共有メモリ機能部２１Ａに格納されている情報処理装置１０のユーザから指示された情報を参照して、特定プログラム１７の起動を遅らせるか否か判断する。
特定プログラム１７の起動を遅らせる場合、第３遅延機能部３４を呼び出し、第３遅延機能部３４で時間の経過を待つ。その後、第３遅延機能部３４から復帰した後に、特定プログラム１７を起動する（３）。
特定プログラム１７の起動を遅らせない場合、特定プログラム１７を起動する（３）。
なお、共有メモリ機能部２１Ａへの情報設定は、図１の指示部で処理する。
【００４１】
（２）第３遅延機能部３４による処理
第１遅延機能部３２から呼び出された場合、第３遅延機能部３４は、ある時間の経過を待ち、時間が経過した後、第１遅延機能部３２に復帰する。
第３遅延機能部３４は、共有メモリ機能部２１Ｂに格納されている情報を参照して、経過時間を認識する。詳しくは、図２１または図２２を参照。
【００４２】
（３）第１遅延機能部３２による特定プログラム１７の起動処理
プログラムの起動遅延機能が使用されていない場合、または、第３遅延機能部３４が復帰した場合、第１遅延機能部３２は、プログラムを起動する命令のエミュレートを行う。
【００４３】
上記（１）〜（３）の処理により情報処理装置１０は、特定プログラム１７の起動を遅らせられるため、特定プログラム１７と他のプログラム１８とを並行して動作させることが可能となる。
【００４４】
図５は、実施例１に係る情報処理装置１０のプログラムの起動遅延機能の動作イメージを示す図である。図５の右方向の実線の矢印は、プロセッサ機能部２２Ａおよびプロセッサ機能部２２Ｂの実行時間の流れを示す。
なお、図５では、プログラムの起動遅延機能を使用しており、プロセッサ機能部２２Ａで特定プログラム１７が起動され、プロセッサ機能部２２Ｂで他のプログラム１７が起動されるものとして記載している。
【００４５】
（１）特定プログラム１７の起動要因発生
情報処理装置１０において、プロセッサ機能部２２Ａで特定プログラム１７の起動要求が発生したとき、第１遅延機能部３２は、他のプロセッサ機能部で他のプログラム１８が実行中されているか否かを判断する。
図５の（１）の時点においては、他のプログラム１８は実行されていないので、第１遅延機能部３２は、特定プログラム１７の起動を遅延させることになり、時間の経過を待つ。
【００４６】
（２）他のプログラム１８の起動要因発生
情報処理装置１０において、プロセッサ機能部２２Ｂで他のプログラム１８の起動要求が発生したとき、他のプログラム１８が起動される。
【００４７】
（３）特定プログラム１７の起動要因発生から時間が経過
時間が経過したとき、プロセッサ機能部２２Ａで第１遅延機能部３２が起動される。第１遅延機能部３２は、プロセッサ機能部２２Ｂで他のプログラム１８が実行されているか否かを判断する。
図５の（３）の時点においては、プロセッサ機能部２２Ｂで他のプログラム１８が実行されているために、第１遅延機能部３２は、特定プログラム１７を起動する。
【００４８】
（４）特定プログラム１７の実行
第１遅延機能部３２が特定プログラム１７を起動することで、プロセッサ機能部２２Ａで、特定プログラム１７が起動される。
【００４９】
上記（１）〜（４）の手順により情報処理装置１０は、特定プログラム１７と他のプログラム１８を並行して動作させることが可能となる。
【００５０】
図６は、ユーザからのプログラムの起動遅延機能に関する指示内容と情報処理装置１０の動作内容との関係を示す表である。
図６では、図１〜図５で説明した構成と同じ構成には同一符号を付し、説明を省略する。
【００５１】
情報処理装置１０のユーザがプログラムの起動遅延機能を使用しない（特定プログラム１７を指定しない）場合、プログラムの起動を遅らせない。
情報処理装置１０のユーザがプログラムの起動遅延機能を使用して（特定プログラム１７を指定する）、かつ、並行して動作させるプログラムを指定しない場合、特定プログラム１７の起動を、ある時間遅らせる。（時間値は不定）
情報処理装置１０のユーザがプログラムの起動遅延機能を使用して（特定プログラム１７を指定する）、かつ、並行して動作させるプログラムを指定した場合、並行して動作させるプログラムが実行するまで、特定プログラム１７の起動を遅らせる。
上記の処理は、共有メモリ機能部２１Ａと共有メモリ機能部２１Ｂを参照して処理する。参照する制御テーブルの内容は、図４２および図４５を参照。
【００５２】
図７と図８は、情報処理装置１０のプログラムの起動遅延機能のフローチャートである。図７と図８は、図２に記載した第１遅延機能部３２に対応しており、図２に記載した用語を用いて記載する。
なお、説明を理解しやすくするために、遅延機能部３２はプロセッサ機能部２２Ａで動作すると仮定して記載する。
【００５３】
≪ＯＰ１１の処理≫
第１遅延機能部３２は、情報処理装置１０のユーザがプログラムの起動遅延機能の使用が指定されているかを判断する（ＯＰ１１）。
プログラムの起動遅延機能の使用が指定されていない場合（ＯＰ１１：ＮＯ）、何もせずにプログラムを起動（ＯＰ１８）し、処理を終了する。
【００５４】
≪ＯＰ１２の処理≫
プログラムの起動遅延機能の使用が指定されている（ＯＰ１１：ＹＥＳ）、第１遅延機能部３２は、起動するプログラムが指定された特定プログラム１７かを判断する（ＯＰ１２）。
指定された特定プログラム１７でない場合（ＯＰ１２：ＮＯ）、何もせずにプログラムを起動（ＯＰ１８）し、処理を終了する。
【００５５】
≪ＯＰ１３の処理≫
指定された特定プログラム１７であった場合（ＯＰ１２：ＹＥＳ）、第１遅延機能部３２は、共有メモリ機能部２１Ｂにあるプロセッサ機能部２２Ａ用の制御テーブルの実行中である特定プログラム１７の状態表示の更新を行う（ＯＰ１３）。
【００５６】
≪ＯＰ１４の処理≫
第１遅延機能部３２は、情報処理装置１０のユーザから並行して動作するプログラムが指定されているかを判断する（ＯＰ１４）。
並行して動作するプログラムが指定されていない場合（ＯＰ１４：ＮＯ）、時間の経過を待つために、プログラムの起動遅延処理を呼び出す。
プログラムの起動遅延処理から復帰した後に、  ≪ＯＰ２１の処理≫を行う。
【００５７】
≪ＯＰ１５の処理≫
ユーザから並行して動作するプログラムが指定されている場合（ＯＰ１４：ＹＥＳ）、第１遅延機能部３２は、ユーザから指定された並行して動作するプログラムが実行中かを判断する（ＯＰ１５）。
並行して動作するプログラムが実行中であった場合（ＯＰ１４：ＹＥＳ）、  ≪ＯＰ２１の処理≫を行う。
【００５８】
≪ＯＰ１６の処理≫
ユーザから指定された並行して動作するプログラムが実行中でなかった場合（ＯＰ１４：ＮＯ）、第１遅延機能部３２は、時間の経過を待つために、プログラムの起動遅延処理を呼び出す（ＯＰ１６）。
【００５９】
≪ＯＰ１７の処理≫
プログラムの起動遅延処理から復帰した後、第１遅延機能部３２は、遅延時間の限界値を超えたかを判断する（ＯＰ１７）。
遅延時間の限界値を超えた場合（ＯＰ１７：ＹＥＳ）、  ≪ＯＰ２１の処理≫を行う。
遅延時間の限界値を超えていない場合（ＯＰ１７：ＮＯ）、  ≪ＯＰ１５の処理≫から繰り返す。
【００６０】
≪ＯＰ２１の処理≫
第１遅延機能部３２は、共有メモリ機能部２１Ｂにあるプロセッサ機能部２２Ａ用の制御テーブルの実行中である特定プログラム１７の状態表示の更新を行う（ＯＰ２１）。
【００６１】
≪ＯＰ２２の処理≫
第１遅延機能部３２は、特定プログラム１７を起動（ＯＰ２２）し、処理を終了する。
なお、上記の処理は、共有メモリ機能部２１Ａと共有メモリ機能部２１Ｂを参照して処理する。参照する制御テーブルの内容は、図４２および図４５を参照。
第１遅延機能部３２とプログラムの起動遅延処理の関係は、図９を参照。
プログラムの起動遅延処理の詳細は、図２１および図２２を参照。
【００６２】
図９は、実施例１に係る遅延機能部のプログラム間の関連を示す図である。
【００６３】
第３遅延機能部３４は、プログラムの起動遅延処理の第１遅延機能部３２またはプログラムの実行遅延機能の第２遅延機能部３３から呼び出されて動作する。
第３遅延機能部３４は、他プロセッサ機能部の状態変化を元に時間の経過を認識し、他プロセッサ機能部の状態変化は、共有メモリ機能部４０に格納された各プロセッサ機能部の制御テーブルを参照して判断する。
詳しい処理内容は、図２１と図２２を参照。
【００６４】
図１０は、プログラムの実行遅延機能の制御に関わる各プロセッサ機能部と制御テーブル（プロセッサ機能部用データ域）との関連を示す図である。
第１データ域（プロセッサ機能部用）から第ｎデータ域（プロセッサ機能部用）は、プロセッサ機能部に対応して作成する。
プロセッサ機能部２２Ａは第１データ域４０Ａ、プロセッサ機能部２２Ｂは第２データ域４０Ｂ、プロセッサ機能部２２ｎは第ｎデータ域４０ｎのように対応し、各プロセッサ機能部は、対応する第ｎデータ域に動作状態情報を格納する。
他のプロセッサ機能部の状態を参照するときは、プロセッサ機能部２２Ａは第２データ域４０Ｂ、プロセッサ機能部２２Ｂは第３データ域４０Ｃ、プロセッサ機能部２２ｎは第１データ域４０Ａのように対応させて、各プロセッサ機能部は対応する第ｎデータ域を参照する。
なお、第１データ域（プロセッサ機能部用）から第ｎデータ域（プロセッサ機能部用）は、共有メモリ機能部４０に作成する。
【００６５】
図１１は、特定プログラム１７の実行速度の遅延処理を実現するソフトウェア構成を示す図である。
ＯＳ層２７上で実行中の特定プログラム１７が命令を実行すると、ファーム層３０上で動作する第２遅延機能部３３が起動される。
第２遅延機能部３３は、特定プログラム１７の実行速度を遅らせるか否かを判断する。実行速度を遅らせる場合、時間の経過を待つために、第３遅延機能部３４を呼び出す。
第３遅延機能部３４から復帰した後に、エミュレート部４７に制御を渡す。
（１）→（２）→（３）の手順で処理を行う。
実行速度を遅らせない場合、エミュレート部４７に制御を渡す。
（１）→（３）の手順で処理を行う。
エミュレート部４７は、特定プログラム１７が実行した命令のエミュレートを行う。
【００６６】
図１２は、プログラムの実行遅延機能の処理内容を示す図である。
情報処理装置１０のユーザがプログラムの実行遅延機能を使用しない（第２遅延機能部３３を使用しない）場合、プログラムの実行速度を遅らせない。
情報処理装置１０のユーザがプログラムの実行遅延機能を使用して（第２遅延機能部３３を使用する）場合、特定プログラム１７が以下の状態にあるとき、プログラムの実行速度を遅らせる。
・割込み禁止の解除〜割込み禁止の設定
・割込み禁止の解除〜テスト対象プログラムの終了
・排他制御の解放〜排他制御の再獲得
・排他制御の解放〜テスト対象プログラムの終了
・割込み禁止の設定〜排他制御の獲得
・排他制御の解放〜割込み禁止の解除
・排他制御の解放〜排他制御の獲得（割込み禁止の区間内）
上記の処理は、共有メモリ機能部２１Ａと共有メモリ機能部２１Ｂを参照して処理する。参照する制御テーブルの内容は、図４２および図４５を参照。
【００６７】
図１３は、プログラムの実行遅延機能における、特定プログラムの割込み禁止および解除の状態の推移と、特定プログラムの実行速度の遅延処理との関係を示す表である。
特定プログラムの割込み禁止および解除の推移から、以下の状態にあるとき、プログラムの実行速度を遅らせる。
・割込み禁止の解除〜割込み禁止の設定
・割込み禁止の解除〜テスト対象プログラムの終了
・割込み禁止の設定〜排他制御の獲得
【００６８】
図１４は、プログラムの実行遅延機能における、排他制御の獲得および解放の状態の推移と、特定プログラムの実行速度の遅延処理との関係を示す表である。
特定プログラムの排他制御の獲得および解放の推移から、以下の状態にあるとき、プログラムの実行速度を遅らせる。
・排他制御の解放〜排他制御の再獲得
・排他制御の解放〜テスト対象プログラムの終了
・排他制御の解放〜割込み禁止の解除
・排他制御の解放〜排他制御の獲得（割込み禁止の区間内）
【００６９】
図１５と図１６は、プログラムの実行速度を遅らせる範囲を決める処理のフローチャートであり、図１１に記載した第２遅延処理部３３の処理内容のフローチャートである。
なお、説明を理解しやすくするために、情報処理装置１０のユーザがプログラムの実行遅延機能を使用していると仮定して記載する。
この処理で、参照する制御テーブルの内容は、図４２および図４５を参照。
【００７０】
≪ＯＰ３１の処理≫
第２遅延機能部３３は、実行中のプログラムがユーザから指定された特定プログラム１７かをチェックする（ＯＰ３１）。
実行中のプログラムが指定された特定プログラム１７でない場合（ＯＰ３１：ＮＯ）、何もせず、終了する。この後、エミュレート部４７が動作し、特定プログラム１７が実行した命令のエミュレートが行われる。
【００７１】
≪ＯＰ３２の処理≫
実行中のプログラムが指定された特定プログラム１７であった場合（ＯＰ３１：ＹＥＳ）、第２遅延機能部３３は、特定プログラム１７が、過去に割り込み禁止と解除を行ったかをチェックする（ＯＰ３２）。
過去に割り込み禁止と解除を行っていた場合（ＯＰ３２：ＹＥＳ）、  ≪ＯＰ３８の処理≫を行う。
【００７２】
≪ＯＰ３３の処理≫
過去に割り込み禁止と解除を行っていない場合（ＯＰ３２：ＮＯ）、第２遅延機能部３３は、現在、割り込み禁止を行っているかをチェックする（ＯＰ３３）。
割り込み禁止を行っていない場合（ＯＰ３３：ＮＯ）、第２遅延機能部３３は、  ≪ＯＰ４１の処理≫を行う。
【００７３】
≪ＯＰ３４の処理≫
割り込み禁止を行っている場合（ＯＰ３３：ＹＥＳ）、第２遅延機能部３３は、現在、特定プログラム１７が排他制御を獲得しているかをチェックする（ＯＰ３４）。
排他制御を獲得している場合（ＯＰ３４：ＹＥＳ）、終了する。
この後、エミュレート部４７が動作し、特定プログラム１７が実行した命令のエミュレートが行われる。
【００７４】
≪ＯＰ３５の処理≫
排他制御を獲得していない場合（ＯＰ３４：ＮＯ）、第２遅延機能部３３は、特定プログラム１７が排他制御を行う可能性のあるプログラムか否かをチェックする（ＯＰ３５）。
排他制御を行う可能性がないプログラムの場合（ＯＰ３５：ＹＥＳ）、終了する。
この後、エミュレート部４７が動作し、特定プログラム１７が実行した命令のエミュレートが行われる。
【００７５】
≪ＯＰ３６の処理≫
排他制御を行う可能性があるプログラムの場合（ＯＰ３５：ＮＯ）、第２遅延機能部３３は、時間の経過を待つために、第３遅延機能部３４（プログラムの実行速度の遅延処理）を呼び出す。第３遅延機能部３４（プログラムの実行速度の遅延処理）から復帰した後で、終了する。
この後、エミュレート部４７が動作し、特定プログラム１７が実行した命令のエミュレートが行われる。
【００７６】
≪ＯＰ３８の処理≫
過去に割り込み禁止と解除を行っていた場合（ＯＰ３２：ＹＥＳ）、第２遅延機能部３３は、現在、割り込み禁止を行っているかをチェックする（ＯＰ３８）。
割り込み禁止を行っていない場合（ＯＰ３８：ＮＯ）、第２遅延機能部３３は、  ≪ＯＰ３６の処理≫を行う。
割り込み禁止を行っていた場合（ＯＰ３８：ＹＥＳ）、第２遅延機能部３３は、  ≪ＯＰ３４の処理≫を行う。
【００７７】
≪ＯＰ４１の処理≫
特定プログラム１７が、過去に排他制御の獲得と解放を行ったかをチェックする（ＯＰ４１）。
排他制御の獲得と解放を行っていない場合（ＯＰ４１：ＮＯ）、第２遅延機能部３３は終了する。
この後、エミュレート部４７が動作し、特定プログラム１７が実行した命令のエミュレートが行われる。
【００７８】
≪ＯＰ４２の処理≫
排他制御の獲得と解放を行っている場合（ＯＰ４１：ＹＥＳ）、第２遅延機能部３３は、現在、排他制御の獲得を行っているかをチェックする（ＯＰ４２）。
排他制御の獲得を行っている場合（ＯＰ４２：ＹＥＳ）、終了する。
この後、エミュレート部４７が動作し、特定プログラム１７が実行した命令のエミュレートが行われる。
【００７９】
≪ＯＰ４３の処理≫
排他制御の獲得を行っていない場合（ＯＰ４２：ＮＯ）、第２遅延機能部３３は、時間の経過を待つために、第３遅延機能部３４（プログラムの実行速度の遅延処理）を呼び出す。第３遅延機能部３４（プログラムの実行速度の遅延処理）から復帰した後で、終了する。
この後、エミュレート部４７が動作し、特定プログラム１７が実行した命令のエミュレートが行われる。
【００８０】
実施例１に係る情報処理装置１０の特定プログラム１７によるプログラム起動の遅延機能によれば、第１遅延機能部３２（プログラム起動遅延機能）、第２遅延機能部３３（プログラムの実行遅延機能）および第３遅延機能部３４により、特定プログラム１７の起動または実行を意図して遅らせることができる。
この機能により、特定プログラム１７と他のプログラム１８を並行して動作させることが可能となり、２つ以上のプログラムが並行して動作した場合に顕在化する、割込み制御、排他制御などのプログラムの不具合を発生させやすくなる。
このようなシステム環境で、テストを実施することにより、テスト対象プログラムに潜在しているプログラムの不具合が検出しやすくなる。
【００８１】
（実施例２）
実施例２は、情報処理装置における入出力装置からの割込み遅延機能について、図１７から図２５を用いて説明する。
なお、図３に記載した第２遅延機能部３３と第４遅延機能部４２は、同じ機能である。
入出力装置６０からの割込み遅延機能は、指定された入出力装置６０または指定された装置種別を持つ入出力装置６０の負荷が高くなった場合に、情報処理装置１０に生じる現象を調査するときにも使用できる。
【００８２】
図１７は、情報処理装置における割込み遅延機能を実現するソフトウェア構成を示す図である。
図１７において、図１〜図１６で説明したものは説明を省略する。
なお、入出力装置からの割込み遅延機能で参照および更新する制御テーブルの内容は、図４２および図４５を参照。
【００８３】
ＯＳ層２７上で、特定プログラム１７と割込み処理プログラム４１が動作する。
ファーム層３０上で、第４遅延機能部４２と再起動プロセス部４３が動作する。
【００８４】
（１）入出力装置６０からの割込み処理
入出力装置６０からの割込みが発生する（１）と、第４遅延機能部４２が起動される。
第４遅延機能部４２は、入出力装置６０からの割込みを遅らせるか否か判断する。
割り込みを遅らせない場合、入出力装置６０からの割り込みを発生させる（４）。この割り込みにより割込み処理プログラム４１が起動される。
（１）→（４）の順に処理を行う。
【００８５】
（２）再起動プロセスの起動処理
割り込みを遅らせる場合、第４遅延機能部４２は、時間の経過を待つために、再起動プロセス部４３を起動する（２）。
再起動プロセス部４３からの再起動（３）により第４遅延機能部４２は、入出力装置６０からの割り込みを発生させる（４）。この割り込みにより割込み処理プログラム４１が起動される。
（１）→（２）→（３）→（４）の順に処理を行う。
【００８６】
（３）再起動プロセスの処理
再起動プロセス部４３は、時間の経過を待ち、時間が経過した後に、第４遅延機能部４２を再度、起動する（３）。
【００８７】
上記（１）〜（４）の処理で、情報処理装置１０は、入出力装置６０による割り込みを遅らせることができる。
【００８８】
図１８は、ユーザからの指示内容と入出力装置からの割込み遅延機能の処理内容の関係を示す表である。
なお、図１８において、図１７で説明したものは説明を省略する。
【００８９】
情報処理装置１０のユーザから入出力装置からの割込み遅延機能の使用が指示されなかった場合、なにもしない（入出力装置からの割り込みを遅延機能させない）。
【００９０】
情報処理装置１０のユーザから入出力装置からの割込み遅延機能の使用が指示され、かつ、入出力装置が指定された場合、指定された入出力装置からの割り込みを遅延させる。
情報処理装置１０のユーザから入出力装置からの割込み遅延機能の使用が指示され、かつ、入出力装置の機種名が指定された場合、指定された機種名を持つ入出力装置からの割り込みを遅延させる。
情報処理装置１０のユーザから入出力装置からの割込み遅延機能の使用が指示され、入出力装置または機種名が指定され、かつ、動作中に割込みを発生させるプログラムが指定された場合、指定された入出力装置または機種名を持つ入出力装置からの割り込みを、指定したプログラムが実行されるまで遅延させる。
【００９１】
図１９は、実施例２に係る入出力装置６０からの割込み遅延機能の動作イメージを示す図である。入出力装置からの割込み遅延機能の動作イメージを説明する。
説明を理解しやすくするために、入出力装置６０からの割り込みは、プロセッサ機能部２２Ｂで動作し、特定プログラム１７はプロセッサ機能部２２Ａで動作すると仮定して記載する。
図１９の右方向の実線の矢印は、プロセッサ機能部２２Ａおよびプロセッサ機能部２２Ｂの実行時間の流れを示す。
【００９２】
（１）入出力装置６０からの割込み発生
入出力装置６０からの割り込みがプロセッサ機能部２２Ｂに発生し、第４遅延機能部４２（入出力装置からの割込み遅延機能）が動作する。
この時点では、他のプロセッサ機能部（プロセッサ機能部２２Ａ）で動作しているプログラムは存在しないので、第４遅延機能部４２は、入出力装置６０からの割り込みを遅らせるために、遅延時間（所定時間）の経過を待つ。
その後、他のプロセッサ機能部（プロセッサ機能部２２Ａ）で、特定プログラム１７の起動要求が発生し、特定プログラム１７が起動される。
【００９３】
（２）遅延時間（所定時間）が経過
遅延時間が経過し、再度第４遅延機能部４２が動作する。この時点では、他のプロセッサ機能部で特定プログラム１７が実行しているので、第４遅延機能部４２は、入出力装置６０からの割り込みを発生させる。
【００９４】
（３）入出力装置６０からの割り込みが発生
入出力装置６０からの割り込みがプロセッサ機能部２２Ａで発生すると、プロセッサ機能部２２Ａは、特定プログラム１７の処理を一時的に中断し、入出力装置６０からの割込み処理プログラムを実行する。割込み処理プログラムが終了した後に、特定プログラム１７の処理が再開される。
【００９５】
図２０は、実施例２に係る情報処理装置１０内の機能構成を示す図である。実施例２に係る情報処理装置１０は、図２で説明した構成物と同一なので、説明を省略する。
【００９６】
図２１と図２２は、プログラムの実行速度の遅延処理のフローチャートである。
プログラムの起動遅延機能およびプログラムの実行遅延機能が使用するプログラムの実行速度の遅延処理を説明する。
プログラムの実行遅延機能は、プログラムの起動遅延機能：第１遅延機能部（図４参照）または、プログラムの実行遅延機能：第２遅延機能部（図２６の決定部を参照）から呼び出される。
説明を理解しやすくするために、本処理はプロセッサ機能部２２Ａで動作すると仮定して記載する。
説明にあたって、用語は、図１１に記載したものを使用する。
【００９７】
図２１は、ハードウェア(ＣＰＵ)からの時間割込みを利用した方法である。
【００９８】
≪ＯＰ７１の処理≫
第３遅延機能部３４は、当処理を開始した時点のプロセッサ機能部２２Ｂの時間（時計）割込み回数を検出する（ＯＰ７１）。
プロセッサ機能部２２Ｂの時間割込み回数は、プロセッサ機能部２２Ｂが共有メモリ機能部４０に格納した時間割込み回数を参照する。
【００９９】
≪ＯＰ７２の処理≫
第３遅延機能部３４は、プロセッサ機能部２２Ｂの時間が一定時間経過したかを判断するために、現時点（ＯＰ７２）のプロセッサ機能部２２Ｂの時間割込み回数を検出する。現時点で検出した時間割込み回数とＯＰ７１の時点で検出した時間割込み回数の差が、一定数以上となった場合、一定時間が経過したと判断する（ＯＰ７２）。
経過時間が一定時間以上となった場合（ＯＰ７２：ＹＥＳ）、第４遅延機能部４２は、依頼元に復帰する（ＯＰ７３）。
【０１００】
≪ＯＰ７４の処理≫
経過時間が一定時間未満の場合（ＯＰ７２：ＮＯ）、第４遅延機能部４２は、プロセッサ機能部２２Ｂがループ状態になっているかを判断する（ＯＰ７４）。
プロセッサ機能部２２Ｂがループ状態の場合（ＯＰ７４：ＹＥＳ）、依頼元に復帰する（ＯＰ７３）。
プロセッサ機能部２２Ｂがループ状態でない場合（ＯＰ７４：ＮＯ）、  ≪ＯＰ７２の処理≫からの処理を繰り返す。
ＯＰ７４の処理は、参照したプロセッサ機能部２２Ｂがループ状態である場合、本処理も同様にループ状態になってしまうのを防ぐためのものである。
なお、参照するプロセッサ機能部の決定方法は、以下の方法が考えられる。
・プロセッサ機能部２２ＡのＣＰＵ番号の±（プラスマイナス）１番のＣＰＵ番号を有するプロセッサ機能部
・ＣＰＵ番号ｎを有するプロセッサ機能部
【０１０１】
図２２は、プロセッサ機能部で実行中命令アドレスを利用した方法である。
【０１０２】
≪ＯＰ８１の処理≫
第３遅延機能部３４は、当処理を開始した時点の他プロセッサ機能部（プロセッサ機能部２２Ｂ）の実行中命令アドレスを検出する（ＯＰ８１）。
実行中命令アドレスは、他プロセッサ機能部が共有メモリ機能部４０に格納した実行中命令アドレスとする。
【０１０３】
≪ＯＰ８２の処理≫
第３遅延機能部３４は、本処理（ＯＰ８２）の実行したときの、他プロセッサ機能部の実行中命令アドレスを検出する（ＯＰ８２）。
本処理（ＯＰ８２）で検出した他プロセッサ機能部の実行中命令アドレスと  ≪ＯＰ８１の処理≫で検出した他プロセッサ機能部の実行中命令アドレスとの差が、一定数以上になったかを判断する。
実行中命令アドレスの差が一定数以上となった場合（ＯＰ８２：ＹＥＳ）、一定時間が経過したと判断し、呼び出し元プログラムに復帰する（ＯＰ８３）。
【０１０４】
≪ＯＰ８４の処理≫
実行中命令アドレスの差が一定数未満となった場合（ＯＰ８２：ＮＯ）、第３遅延機能部３４は、一定時間が経過していないと判断し、他プロセッサ機能部がループ状態にあるかを判断する（ＯＰ８４）。
ループ状態にある場合（ＯＰ８４：ＹＥＳ）、一定時間が経過したと判断し、呼び出し元プログラムに復帰する（ＯＰ８３）。
ループ状態にない場合（ＯＰ８４：ＮＯ）、  ≪ＯＰ８２の処理≫から繰り返す。
なお、他プロセッサ機能部がループ状態であるか判断は、以下の方法がある。
・プロセッサ機能部２２Ｂ以外の状態をチェックする。または、
・本処理のループ回数をカウントする。
≪ＯＰ８４の処理≫は、他プロセッサ機能部がループ状態になった場合、本処理も同様にループ状態になることを防ぐための処理である。
【０１０５】
他プロセッサ機能部の決定方法は、以下の方法が考えられる。
・自プロセッサ機能部（本例では、プロセッサ機能部２２Ａ）のＣＰＵ番号の±（プラスマイナス）1番のＣＰＵ番号を有するプロセッサ機能部。
または、
・ＣＰＵ番号nを有するプロセッサ機能部。
【０１０６】
図２３と図２４は、入出力装置からの割込み遅延機能（第４遅延機能部４２）のフローチャートである。
図２３および図２４に関係するプログラム間の構成は、図１７を参照。
【０１０７】
≪ＯＰ９１の処理≫
図１７に記載の第４遅延機能部４２（入出力装置からの割込み遅延機能）は、情報処理装置のユーザから入出力装置からの割込み遅延機能が使用されているかを判断する（ＯＰ９１）。
割込み遅延機能が使用されていない場合（ＯＰ９１：ＮＯ）、入出力装置からの割り込みを発生させる（ＯＰ９６）。
【０１０８】
≪ＯＰ９２の処理≫
割込み遅延機能が使用されている場合（ＯＰ９１：ＹＥＳ）、第４遅延機能部４２は、割り込みが発生した入出力装置を認識する（ＯＰ９２）。
なお、入出力装置から通知された割込み情報内に、入出力装置の機番が存在する。
【０１０９】
≪ＯＰ９３の処理≫
第４遅延機能部４２は、割り込みが発生した入出力装置の種別と情報処理装置のユーザから指示された入出力装置の種別を比較する（ＯＰ９３）。
入出力装置の種別が等しい場合（ＯＰ９３：ＹＥＳ）、  ≪ＯＰ９５の処理≫を行う。
【０１１０】
≪ＯＰ９４の処理≫
入出力装置の種別が等しくない場合（ＯＰ９３：ＮＯ）、第４遅延機能部４２は、割り込みが発生した入出力装置の機番と情報処理装置のユーザから指示された入出力装置の機番を比較する。（ＯＰ９４）
入出力装置の機番が等しくない場合（ＯＰ９４：ＮＯ）、入出力装置からの割り込みを発生させる（ＯＰ９６）。
【０１１１】
≪ＯＰ９５の処理≫
入出力装置の種別が等しい場合（ＯＰ９３：ＹＥＳ）または、入出力装置の機番が等しい場合（ＯＰ９４：ＹＥＳ）、第４遅延機能部４２は、入出力装置からの割込み情報を格納する（ＯＰ９５）。
格納するテーブルは、図４８を参照。
【０１１２】
≪ＯＰ１１１の処理≫
第４遅延機能部４２は、情報処理装置１０のユーザから動作中に入出力装置からの割り込みを発生させるプログラムが指示されているかを判断する（ＯＰ１１１）。
動作中に入出力装置からの割り込みを発生させるプログラムが指示されている場合（ＯＰ１１１：ＹＥＳ）、  ≪ＯＰ１０３の処理≫を行う。
動作中に入出力装置からの割り込みを発生させるプログラムが指示されていない場合（ＯＰ１１１：ＮＯ）、  ≪ＯＰ１０４の処理≫を行う。
【０１１３】
≪ＯＰ１０１の処理≫
本処理は、再起動プロセス４３の再起動により起動される。第４遅延機能部４２は、  ≪ＯＰ１０５の処理≫で格納した入出力装置６０からの割込み情報を復元する（ＯＰ１０１）。
【０１１４】
≪ＯＰ１０２の処理≫
第４遅延機能部４２は、情報処理装置１０のユーザから動作中に入出力装置からの割り込みを発生させるプログラムが指示されているかを判断する（ＯＰ１０２）。
動作中に入出力装置からの割り込みを発生させるプログラムが指示されていない場合（ＯＰ１０２：ＮＯ）、  ≪ＯＰ１０８の処理≫を行う。
【０１１５】
≪ＯＰ１０３の処理≫
動作中に入出力装置からの割り込みを発生させるプログラムが指示されている場合（ＯＰ１１１：ＹＥＳ）または（ＯＰ１１１：ＹＥＳ）の場合、第４遅延機能部４２は、情報処理装置のユーザから指示された特定プログラムが実行中かを判断する（ＯＰ１０３）。
特定プログラム１７が実行中の場合（ＯＰ１０３：ＹＥＳ）、  ≪ＯＰ１０８の処理≫を行う。
【０１１６】
≪ＯＰ１０４の処理≫
特定プログラム１７が実行中でない場合（ＯＰ１０３：ＮＯ）、第４遅延機能部４２は、入出力装置の割込み遅延時間が限界値をオーバーしたかを判断する（ＯＰ１０４）。
割込み遅延時間が限界値をオーバーした場合（ＯＰ１０４：ＹＥＳ）、  ≪ＯＰ１０２の処理≫を行う。
ＯＰ１０４の処理は、以下のトラブル現象を防止するためのものである。
・システムの動作環境により、長時間、特定プログラムが動作しないケースも考えられる。
特定プログラムが長時間、動作しなかった場合、入出力装置からの割り込みが長時間、遅れることで、入出力装置のハードウェア障害と認識されることがある。
なお、限界値をオーバーしたかの判断方法は、以下のものがある。
・本処理の所用時間で判断する。
・本処理のループ回数で判断する。
【０１１７】
≪ＯＰ１０５の処理≫
割込み遅延時間が限界値をオーバーしていない場合（ＯＰ１０４：ＮＯ）、第４遅延機能部４２は、入出力装置からの割込み情報を図４８に記載したテーブル（第３テーブル７６）に格納し（ＯＰ１０５）、実行中である特定プログラム１７の状態表示の入出力装置６０からの割込みの遅延状態をオンにする。
【０１１８】
≪ＯＰ１０６の処理≫
第４遅延機能部４２は、遅延時間の経過を待つために、再起動プロセス部４３を起動する（ＯＰ１０６）。
【０１１９】
≪ＯＰ１０７の処理≫
第４遅延機能部４２は、処理を終了する（ＯＰ１０７）。
第４遅延機能部４２は、再起動プロセス部４３からの再起動を待つ。再起動プロセス部４３から再起動が行われたとき、第４遅延機能部４２は、  ≪ＯＰ１０１の処理≫から再開する。
【０１２０】
≪ＯＰ１０８の処理≫
ＯＰ１０８の処理は、情報処理装置１０のユーザから動作中に入出力装置からの割り込みを発生させるプログラムが指示されていない場合（ＯＰ１０２：ＮＯ）、動作中に入出力装置からの割り込みを発生させるプログラムが実行中の場合（ＯＰ１０３：ＹＥＳ）、または、入出力装置からの割込み遅延時間が限界値をオーバーした場合（ＯＰ１０４：ＹＥＳ）に動作する。
第４遅延機能部４２は、割込み遅延処理が完了したので、割込み遅延中の入出力装置６０の数を減算（−１）する。
【０１２１】
≪ＯＰ１０９の処理≫
割込み遅延中の入出力装置６０の数が０になった場合、第４遅延機能部４２は、実行中である特定プログラム１７の状態表示の入出力装置６０からの割込みの遅延状態をオフにする。
【０１２２】
第４遅延機能部４２は、入出力装置からの割り込みを発生させる（ＯＰ１１０）。
【０１２３】
図２５は、再起動プロセス部４３のフローチャートである。
入出力装置からの割込み遅延機能の再起動プロセス（再起動プロセス部４３）を説明する。図２５に関係するプログラム間の構成は、図１７を参照。
【０１２４】
≪ＯＰ１２１の処理≫
再起動プロセス部４３は、第４遅延機能部４２から起動され、作業域の獲得、初期化処理などを行う（ＯＰ１２１）。
【０１２５】
≪ＯＰ１２２の処理≫
再起動プロセス部４３は、第４遅延機能部４２からの要求内容を取り出す（ＯＰ１２２）。
【０１２６】
≪ＯＰ１２３の処理≫
再起動プロセス部４３は、取り出した要求内容に沿って休止時間を取る（ＯＰ１２３）。休止時間が経過したとき、再起動プロセス部４３が再起動される。
なお、時間の経過を待つ方法は、以下の方法がある。
・プロセスの実行優先度から生じる時間差（起動要求発生〜起動されるまでの時間）を使用。
・ＯＳから提供される経過時間の通知機能を使用。
【０１２７】
≪ＯＰ１２４の処理≫
再起動プロセス部４３は、第４遅延機能部４２へ通知する情報を生成する（ＯＰ１２４）。
【０１２８】
≪ＯＰ１２５の処理≫
再起動プロセス部４３は、第４遅延機能部４２を再起動する（ＯＰ１２５）。
【０１２９】
≪ＯＰ１６４の処理≫
再起動プロセス部４３は、獲得した作業域の返却などを行ったあとで、終了する（ＯＰ１２６）。
【０１３０】
入出力装置からの割込み制御などを行うプログラムの不具合は、当該のプログラムが実行中に、入出力装置、ハードウェア(ＣＰＵ)などの割り込みが発生した場合、顕在化する。入出力装置、ハードウェア(ＣＰＵ)などの割り込みが発生しない場合は、顕在化しない。
実施例２に係る入出力装置からの割込み遅延機能は、意図として入出力装置からの割り込みを、当該のプログラムが実行するまで遅らせることができる。
そのため、当該のプログラムが実行中に、入出力装置からの割り込みが発生する状況を作り出せるので、プログラムに潜在しているプログラムの不具合（割込み制御に関する不具合）の検出が容易となる。
【０１３１】
（実施例３）
実施例３は、情報処理装置におけるプログラムの実行遅延機能について、図２６から図３７を用いて説明する。
【０１３２】
図２６は、プログラムの実行遅延機能を実現するソフトウェア構成を示す図である。図２６に記載した監視部４４、決定部４５、第５遅延機能部４６および、エミュレート部４７は、図３に記載した第３遅延機能部３４をさらに分割したプログラムである。
ＯＳ層で、特定プログラム１７が命令を実行したとき、プログラムの実行遅延機能を構成する各プログラムは、以下の順で動作する。
・プログラムの実行速度を遅らせない場合
（１）監視部４４
（２）決定部４５
（４）エミュレート部４７
・プログラムの実行速度を遅らせる場合
（１）監視部４４
（２）決定部４５
（３）第５遅延機能部４６
（４）エミュレート部４７
プログラムの実行遅延機能を構成する各プログラムは、共有メモリ機能部２１Ｂを使用して、データの受け渡しを行う。
情報処理装置１０のユーザから指示された内容は、共有メモリ機能部２１Ａに設定される。
【０１３３】
（１）監視部４４
監視部４４は、特定プログラム１７が実行しているとき、プログラムの実行速度を遅らせる区間を決定するために必要な情報を生成するプログラムである。
特定プログラム１７が実行する命令コードを監視して、特定プログラム１７のプログラム論理の推移を把握する。
監視部４４が生成した情報を決定部４５が参照する。
【０１３４】
（２）決定部４５
決定部４５は、監視部４４が生成した情報を参照して、特定プログラム１７が実行する命令の実行速度を遅らせるか否かを判断する。
特定プログラム１７が、以下の状態にある場合、命令の実行速度を遅らせる。
・割込み禁止の解除〜割込み禁止の設定
・割込み禁止の解除〜テスト対象プログラムの終了
・排他制御の解放〜排他制御の再獲得
・排他制御の解放〜テスト対象プログラムの終了
・割込み禁止の設定〜排他制御の獲得
・排他制御の解放〜割込み禁止の解除
・排他制御の解放〜排他制御の獲得（割込み禁止の区間内）
命令の実行速度を遅らせない場合、決定部４５は、エミュレート部４７に制御を渡す。
命令の実行速度を遅らせる場合、決定部４５は時間の経過を待つために、第５遅延機能部４６を呼び出す。第５遅延機能部４６から復帰したあと、エミュレート部４７に制御を渡す。
【０１３５】
（３）第５遅延機能部４６
第５遅延機能部４６は、決定部４５から呼び出されて動作し、ある時間の経過を待ち、時間が経過した後に、呼び出し元に復帰する。
【０１３６】
（４）エミュレート部４７
エミュレート部４７は、決定部４５から制御が渡されて動作する。エミュレート部４７は、従来から存在し、命令を実行する。
【０１３７】
図２７〜図３０は、プログラムの実行遅延機能のプログラムの実行速度を遅らせる範囲を示す図である。
記号の意味は、以下のとおりである。
・実線の矢印：  時間の流れ
・白三角（△）：  割り込みを禁止したとき。
・白の逆三角（▽）：  割り込みを禁止を解除したとき。
・黒四角（■）：  プログラムが終了したとき。
・黒三角（▲）：  排他制御を獲得をしたとき。
・黒の逆三角（▼）：  排他制御の獲得を解放したとき。
【０１３８】
図２７は、割込み制御（禁止・解除）を行うプログラムにおけるプログラムの実行速度を遅らせる範囲とプログラムの実行速度を遅らせない範囲を図示する。
（イ）と（ロ）で示す範囲内で、プログラムの実行速度を遅らせる。
・（イ）割込み禁止の解除〜割込み禁止の設定
・（ロ）割込み禁止の解除〜テスト対象プログラムの終了
【０１３９】
図２８は、排他制御の獲得と解放を行うプログラムにおけるプログラムの実行速度を遅らせる範囲とプログラムの実行速度を遅らせない範囲を図示する。
（ハ）と（ニ）で示す範囲内で、プログラムの実行速度を遅らせる。
・（ハ）排他制御の解放〜排他制御の再獲得
・（ニ）排他制御の解放〜テスト対象プログラムの終了
【０１４０】
図２９と図３０は、割込み制御（禁止・解除）と排他制御の獲得と解放を行うプログラムにおけるプログラムの実行速度を遅らせる範囲とプログラムの実行速度を遅らせない範囲を図示する。
（ホ）、（ヘ）、（ト）で示す範囲内で、プログラムの実行速度を遅らせる。
・（ホ）割込み禁止の設定〜排他制御の獲得
・（ヘ）排他制御の解放〜割込み禁止の解除
・（ト）排他制御の解放〜排他制御の獲得（割込み禁止の区間内）
【０１４１】
図３１は、プログラムの実行遅延機能の処理概要を示す表である。
図３１では、図１〜図３０で説明した構成と同じ構成には同一符号を付し、説明を省略する。
情報処理装置のユーザがプログラムの実行遅延機能を使用しない場合、プログラムは本来の実行速度で動作する。
情報処理装置のユーザがプログラムの実行遅延機能を使用した場合、指定したプログラムが以下に示す状態の、どれかになったときに実行速度を遅らせる。
・割込み禁止の解除〜割込み禁止の設定
・割込み禁止の解除〜テスト対象プログラムの終了
・排他制御の解放〜排他制御の再獲得
・排他制御の解放〜テスト対象プログラムの終了
・割込み禁止の設定〜排他制御の獲得
・排他制御の解放〜割込み禁止の解除
・排他制御の解放〜排他制御の獲得（割込み禁止の区間内）
なお、指定したプログラム以外のプログラムは、本来の実行速度で動作する。
【０１４２】
図３２〜図３７は、プログラムの実行遅延機能を構成する各プログラムのフローチャートである。
図３２〜図３５は、監視部４４のフローチャートである。
図３６と図３７は、決定部４５のフローチャートである。
説明を理解しやすくするために、情報処理装置１０のユーザからテスト対象プログラムとして、特定プログラム１７が指定されていると仮定する。
プログラムの実行遅延機能は、図４２〜図４７と図４９に記載したテーブルを参照および更新を行う。
【０１４３】
≪ＯＰ１５１の処理≫
特定プログラム１７が命令を実行したとき、監視部４４（図２６を参照）が動作する。監視部４４は、情報処理装置のユーザがプログラムの起動遅延機能、入出力装置からの割込み遅延機能およびプログラムの実行遅延機能を、すべて使用していないかを判断する（ＯＰ１５１）。
すべての機能を使用していない場合（ＯＰ１５１：ＹＥＳ）、何もせずにエミュレート部４７に制御を渡す。（ＯＰ１５５）
【０１４４】
≪ＯＰ１５２の処理≫
どれかの機能を使用している場合（ＯＰ１５１：ＮＯ）、監視部４４は、特定プログラム１７が実行した命令コードを認識する。（ＯＰ１５３）。
【０１４５】
≪ＯＰ１５３の処理≫
監視部４４は、特定プログラム１７が実行した命令コードがプログラムを起動する命令コードであるかを判断する（ＯＰ１５３）。
命令コードがプログラムを起動する命令コードでない場合（ＯＰ１５３：ＮＯ）、≪ＯＰ１６１の処理≫を行う。
【０１４６】
≪ＯＰ１５４の処理≫
命令コードがプログラムを起動する命令コードの場合（ＯＰ１５３：ＹＥＳ）、監視部４４は、図４５に記載したテーブル（各プロセッサ機能部に設けられた制御テーブル）の初期設定を行う（ＯＰ１５５）。
初期化する領域は、以下のとおり。
・実行中である特定プログラム１７の実行状態表示
・実行中である特定プログラム１７の状態表示
・特定プログラム１７に関する情報
・特定プログラム１７の格納領域の先頭アドレス
・特定プログラム１７の格納領域の終了アドレス
・並行動作する他のプログラム１８の格納領域の先頭アドレス
・並行動作する他のプログラム１８の格納領域の最終アドレス
・動作中に割込みを発生させるプログラムの格納領域の先頭アドレス
・動作中に割込みを発生させるプログラムの格納領域の最終アドレス
・使用中の排他制御用の情報退避域の数
起動するプログラムが、情報処理装置のユーザが指定したプログラムであった場合、監視部４４は、以下の処理を行う。
・実行中である特定プログラム１７の状態表示域の特定プログラム１７の起動命令の実行状態をオンにする。
・特定プログラム１７に関する情報
・特定プログラム１７の格納領域の先頭アドレス
・特定プログラム１７の格納領域の終了アドレス
・並行動作する他のプログラム１８の格納領域の先頭アドレス
・並行動作する他のプログラム１８の格納領域の最終アドレス
ユーザが指定したプログラムでなかった場合、監視部４４は、何の処理も実施しない（特定プログラム１７の起動命令の実行状態はオフを維持する）。
そのあとで、監視部４４は、  ≪ＯＰ１８５の処理≫を行う。
【０１４７】
≪ＯＰ１６１の処理≫
特定プログラム１７が実行した命令コードがプログラムを起動する命令コードでない場合（ＯＰ１５３：ＮＯ）、監視部４４は、情報処理装置のユーザがプログラムの実行遅延機能を使用しているかを判断する（ＯＰ１６１）。
プログラムの実行遅延機能を使用していない場合（ＯＰ１６１：ＮＯ）、  ≪ＯＰ１８２の処理≫を行う。
【０１４８】
≪ＯＰ１６２の処理≫
プログラムの実行遅延機能を使用している場合（ＯＰ１６１：ＹＥＳ）、監視部４４は、実行中のプログラムが情報処理装置のユーザが指定したプログラムであるか判断する（ＯＰ１６２）。
情報処理装置のユーザが指定したプログラムが実行中でない場合（ＯＰ１６２：ＮＯ）、監視部４４は、  ≪ＯＰ１８２の処理≫を行う。
【０１４９】
≪ＯＰ１６３の処理≫
情報処理装置のユーザが指定したプログラムが実行中の場合（ＯＰ１６２：ＹＥＳ）、監視部４４は、特定プログラム１７が実行した命令コードを認識する（ＯＰ１６３）。
【０１５０】
≪ＯＰ１６４の処理≫
監視部４４は、特定プログラム１７が実行した命令コードが割込みを禁止または解除を行う命令コードであるかを判断する（ＯＰ１６４）。
割込みを禁止または解除を行わない命令コードの場合（ＯＰ１６４：ＮＯ）、  ≪ＯＰ１７１の処理≫を行う。
【０１５１】
≪ＯＰ１６５の処理≫
割込みを禁止または解除を行う命令コードの場合（ＯＰ１６４：ＹＥＳ）、監視部４４は、割込みを禁止または解除の命令コードに従って、図４５に記載したテーブルの特定プログラム１７の状態を更新する（ＯＰ１６５）。
割込みを禁止・解除の推移を過去の状態として記憶する。
【０１５２】
≪ＯＰ１６６の処理≫
監視部４４は、命令を実行したあとの割込みを禁止・解除の状態を現在の状態として記憶する（ＯＰ１６６）。図４５に記載したテーブルの特定プログラム１７の状態を更新する。
そのあとで、  ≪ＯＰ１８２の処理≫を行う。
【０１５３】
≪ＯＰ１７１の処理≫
実行する命令コードが割込みを禁止または解除を行わない命令コードの場合（ＯＰ１６４：ＮＯ）、監視部４４は、実行する命令コードが排他制御を獲得する命令コードであるかを判断する（ＯＰ１７１）。
命令コードが排他制御を獲得する命令コードでない場合（ＯＰ１７１：ＮＯ）、  ≪ＯＰ１７５の処理≫を行う。
【０１５４】
≪ＯＰ１７２の処理≫
命令コードが排他制御を獲得する命令コードの場合（ＯＰ１７１：ＹＥＳ）、監視部４４は、排他制御が獲得できる状態かを判断する（ＯＰ１７２）。
排他制御が獲得できない状態の場合（ＯＰ１７２：ＮＯ）、  ≪ＯＰ１７５の処理≫を行う。
【０１５５】
≪ＯＰ１７３の処理≫
排他制御が獲得できる状態の場合（ＯＰ１７２：ＹＥＳ）、監視部４４は、図４５に記載したテーブルの特定プログラム１７の状態を更新する。
図４９に記載したテーブルを獲得し、以下に示すような排他制御を獲得したプログラムを識別するための情報を格納する（ＯＰ１７３）。
例：・排他制御を獲得する命令のアドレス
・排他制御用のテーブルのアドレス
【０１５６】
≪ＯＰ１７４の処理≫
監視部４４は、排他制御の推移を過去の状態として記憶する。
また、命令を実行したあとの排他制御の状態を、現在の状態として記憶する（ＯＰ１７４）。
図４５に記載したテーブルの特定プログラム１７の状態を更新する。
そのあとで、  ≪ＯＰ１８２の処理≫を行う。
【０１５７】
≪ＯＰ１７５の処理≫
実行する命令コードが排他制御を獲得する命令コードでない場合（ＯＰ１７１：ＮＯ）、または、排他制御が獲得できない場合（ＯＰ１７２：ＮＯ）、監視部４４は、排他制御の獲得を解放する命令コードであるかを判断するために、メモリの内容を書き換える命令かを判断する（ＯＰ１７５）。
メモリの内容を書き換える命令でない場合（ＯＰ１７５：ＮＯ）、  ≪ＯＰ１８２の処理≫を行う。
【０１５８】
≪ＯＰ１７６の処理≫
メモリの内容を書き換える命令である場合（ＯＰ１７５：ＹＥＳ）、監視部４４は、排他制御の獲得を解放する命令コードであるかを判断するために、書き換えるメモリは、排他制御用のテーブルかを判断する（ＯＰ１７６）。
排他制御用のテーブルでない場合（ＯＰ１７６：ＮＯ）、  ≪ＯＰ１８２の処理≫を行う。
【０１５９】
≪ＯＰ１７７の処理≫
排他制御用のテーブルである場合（ＯＰ１７６：ＹＥＳ）、排他制御の獲得を解放する命令コードであるため、監視部４４は、ログ情報データを採取するために、排他制御用のテーブルの内容をログ情報データに複写する（ＯＰ１７７）。
【０１６０】
≪ＯＰ１７８の処理≫
監視部４４は  ≪ＯＰ１７３の処理≫で獲得した図４９に記載したテーブルを解放する（ＯＰ１７８）。
【０１６１】
≪ＯＰ１８１の処理≫
監視部４４は、排他制御の獲得・解放の推移を過去の状態として記憶する。
また、命令を実行したあとの排他制御の状態を、現在の状態として記憶する（ＯＰ１８１）。
図４５に記載したテーブルの特定プログラム１７の状態を更新する。
そのあとで、  ≪ＯＰ１８２の処理≫を行う。
【０１６２】
≪ＯＰ１８２の処理≫
監視部４４は、自プロセッサの状態を他プロセッサで参照可能とするために、現在のＰＳＷの内容を記録する（ＯＰ１８２）。
図４５に記載したテーブルに格納する。
【０１６３】
≪ＯＰ１８３の処理≫
決定部４５への受け渡しパラメタを必要とする場合は、監視部４４は、受け渡しパラメタを生成する（ＯＰ１８３）。
なお、現在は、監視部４４から決定部４５へ受け渡すパラメタはない。
【０１６４】
≪ＯＰ１８４の処理≫
監視部４４は、決定部４５へ制御を受け渡す。
【０１６５】
≪ＯＰ１８５の処理≫
プログラムにより、プログラムの起動時点から割込みを禁止した状態で動作するプログラムも存在する。このようなプログラムに対処するために、監視部４４はプログラムの起動時のパラメタの内容に従って、以下の処理を行う（ＯＰ１８５）。
・プログラムの起動時から割込みを禁止した状態で動作するプログラムの場合、監視部４４は、図４５に記載したテーブルの実行中である特定プログラム１７の状態表示の初期設定（注）を行う。
（注）実行中である特定プログラム１７の状態表示に存在する現在の割込み禁止状態（１ビット目）はオンが初期値となる。
【０１６６】
図３６および図３７は、プログラムの実行遅延機能の決定部４５のフローチャートである。
プログラムの実行遅延機能のソフトウェア構成は、図２６を参照。
説明を理解しやすくするために、情報処理装置１０のユーザからテスト対象プログラムとして、特定プログラム１７が指定されていると仮定する。
プログラムの実行遅延機能は、図４２〜図４７と図４９に記載したテーブルを参照および更新を行う。
【０１６７】
≪ＯＰ１９１の処理≫
決定部４５は、監視部４４から制御が受け渡されたときに動作し、１ステップごとに実行速度を遅らせるか否かを決定する。
決定部４５は、特定プログラム１７が、過去において割込み禁止と解除を行ったかを判断する（ＯＰ１９１）。
過去において割込み禁止と解除を行っている場合（ＯＰ１９１：ＹＥＳ）、  ≪ＯＰ１９７の処理≫を行う。
【０１６８】
≪ＯＰ１９２の処理≫
過去において割込み禁止と解除を行っていない場合（ＯＰ１９１：ＮＯ）、決定部４５は、現在、割込み禁止の状態かを判断する（ＯＰ１９２）。
割込み禁止の状態でない場合（ＯＰ１９２：ＮＯ）、決定部４５は、  ≪ＯＰ２０１の処理≫を行う。
【０１６９】
≪ＯＰ１９３の処理≫
割込み禁止の状態である場合（ＯＰ１９２：ＹＥＳまたはＯＰ１９７：ＹＥＳ）、決定部４５は、現在、排他制御を獲得しているかを判断する（ＯＰ１９３）。
排他制御を獲得している場合（ＯＰ１９３：ＹＥＳ）、決定部４５は、エミュレート部４７に制御を渡す。
【０１７０】
≪ＯＰ１９４の処理≫
排他制御を獲得していない場合（ＯＰ１９３：ＮＯ）、決定部４５は、実行中のプログラムが排他制御処理を持つプログラムかを判断する（ＯＰ１９４）。
プログラムが排他制御処理を持たないプログラムである場合（ＯＰ１９４：ＮＯ）、決定部４５は、エミュレート部４７に制御を受け渡す。
【０１７１】
≪ＯＰ１９５の処理≫
プログラムが排他制御処理を持つプログラム場合（ＯＰ１９４：ＹＥＳ）または、決定部４５は命令の実行を遅らせるためにプログラムの実行速度の遅延処理を呼び出す（ＯＰ１９５）。
【０１７２】
≪ＯＰ１９６の処理≫
プログラムの実行速度の遅延処理から復帰したとき、決定部４５は、エミュレート部４７に制御を受け渡す（ＯＰ１９６）。
【０１７３】
≪ＯＰ１９７の処理≫
過去において割込み禁止と解除を行っている場合（ＯＰ１９１：ＹＥＳ）、決定部４５は、現在、割込み禁止の状態かを判断する（ＯＰ１９７）。
割込み禁止の状態である場合（ＯＰ１９７：ＹＥＳ）、  ≪ＯＰ１９３の処理≫を行う。
割込み禁止の状態でない場合（ＯＰ１９７：ＮＯ）、命令の実行を遅らせるためにプログラムの実行速度の遅延処理を呼び出す（ＯＰ１９５）。
プログラムの実行速度の遅延処理から復帰したとき、決定部４５は、エミュレート部４７に制御を受け渡す（ＯＰ１９６）。
【０１７４】
≪ＯＰ２０１の処理≫
過去に一度も割込み禁止が行われていない場合（ＯＰ１９２：ＮＯ）、決定部４５は、過去に排他制御の獲得と解放が行われたかを判断する（ＯＰ２０１）。
排他制御の獲得と解放が行われていない場合（ＯＰ２０１：ＮＯ）、決定部４５は、エミュレート部４７に制御を渡す（ＯＰ２０４）。
【０１７５】
≪ＯＰ２０２の処理≫
過去に排他制御の獲得と解放が行われている場合（ＯＰ２０１：ＹＥＳ）、決定部４５は、現在、排他制御の獲得が行われているかを判断する（ＯＰ２０２）。
排他制御の獲得が行われている場合（ＯＰ２０２：ＹＥＳ）、決定部４５は、エミュレート部４７に制御を受け渡す（ＯＰ２０４）。
【０１７６】
≪ＯＰ２０３の処理≫
排他制御の獲得が行われていない場合（ＯＰ２０２：ＮＯ）、決定部４５は、命令の実行を遅らせるためにプログラムの実行速度の遅延処理を呼び出す（ＯＰ２０３）。
プログラムの実行速度の遅延処理から復帰したとき、決定部４５は、エミュレート部４７に制御を受け渡す（ＯＰ２０４）。
【０１７７】
実施例３に係る情報処理装置１０の特定プログラム１７の実行速度を遅らせる範囲を決定する処理によれば、割込み禁止または割込み禁止の解除、および排他制御の獲得または排他制御の解除の制御における特定プログラム１７の不具合は、割込み禁止を設定するタイミングが遅い、または割込み禁止解除するタイミングが早い。
排他制御の獲得するタイミングが遅い、または排他制御の解放するタイミングが早い。などのタイミングに関するものが多い。
そのため、割込み禁止または割込み禁止の解除、および排他制御の獲得または排他制御の解除の制御におけるプログラムの不具合は、複数のプログラムが並行して実行したときに、トラブル現象が顕在化する。
また、プログラムの不具合が顕在化する区間は非常に短いため、プログラムの不具合を検出することが難しい。
本処理は、図３６〜図３９に示す区間でプログラムの実行速度を遅くすることにより、特定プログラム１７の不具合が顕在化する区間を引き延ばすことができる。そして、その区間内に他のプログラムを並行して実行して動作させることで、特定プログラム１７に潜在している不具合が顕在化しやすくなる。
【０１７８】
図３８は、ログ情報データの採取機能を構成するプログラム構造を示す図である。
【０１７９】
第１データ域〜第ｎデータ域は、各プロセッサ機能部に対応して、共有メモリ機能部４０に作成する。第１データ域４０Ａ〜第ｎデータ域４０−ｎは、各プロセッサ機能部の情報を格納する（図４５を参照）。
【０１８０】
採取部４８は、第１データ域４０Ａ〜第ｎデータ域４０−ｎから有効な情報を取り出し、取り出したデータをデータ格納域４９へ複写する。
なお、有効な情報には、以下のような情報がある。
・トラブル現象が発生した場合の原因調査に使用できるデータ
例：テスト対象プログラムの状態が変化した時点における他のプロセッサ機能部（ＣＰＵ）の状態
・テスト対象プログラムのテスト状況を確認できるデータ
【０１８１】
格納データ域４９は、採取したログ情報データの集約と、ディスク装置１５に出力するための作業領域である。格納データ域４９は、共有メモリ機能部４０に作成される。
【０１８２】
出力部５０は、格納データ域４９に採取されたログ情報データをディスク装置１５に出力する。
【０１８３】
図３９は、ログ情報の採取機能の採取部４８のフローチャートである。
採取部４８は、各プロセッサ機能部の作業域（図３８に記載の第１データ域４０Ａ〜第ｎデータ域４０−ｎ）から有効な情報を取り出すプログラムである。
ログ情報の採取機能は、図４２〜図４７と図４９〜図５２に記載したテーブルを参照および更新を行う。
【０１８４】
≪ＯＰ２２１の処理≫
採取部４８は、情報処理装置のユーザからログ情報データの採取機能の停止が指示されたかを判断する（ＯＰ２２１）。
ログ情報データの採取機能の停止が指示されていない場合（ＯＰ２２１：ＮＯ）、  ≪ＯＰ２２２の処理≫を行う。
【０１８５】
≪ＯＰ２２７の処理≫
ログ情報データの採取機能の停止が指示されている場合（ＯＰ２２１：ＹＥＳ）、採取部４８は、採取した残りのログ情報データを完成させる（ＯＰ２２７）。
【０１８６】
≪ＯＰ２２８の処理≫
採取部４８は、完成させたログ情報データをディスク装置１５に出力するために、出力部５０に通知する（ＯＰ２２８）。
【０１８７】
≪ＯＰ２２２の処理≫
ログ情報データの採取機能の停止が指示されていない場合（ＯＰ２２１：ＮＯ）、採取部４８は、特定プログラム１７の状態が変化したかを判断する（ＯＰ２２２）。
特定プログラム１７の状態が変化していない場合（ＯＰ２２２：ＮＯ）、  ≪ＯＰ２２１の処理≫を行う。
【０１８８】
≪ＯＰ２２３の処理≫
特定プログラム１７の状態が変化した場合（ＯＰ２２２：ＹＥＳ）、採取部４８は、各プロセッサ機能部の作業域（図３８の第１データ域４０Ａ〜第ｎデータ域４０−ｎ）から有効な情報を取り出す（ＯＰ２２３）。
【０１８９】
≪ＯＰ２２４の処理≫
採取部４８は、各プロセッサ機能部の作業域から取り出したデータを、格納データ域４９に編集して格納する（ＯＰ２２４）。
【０１９０】
≪ＯＰ２２５の処理≫
採取部４８は、格納データ域４９に格納したデータ量がディスク装置１５に出力する単位量以上になったかを判断する（ＯＰ２２５）。
出力する単位量未満の場合（ＯＰ２２５：ＮＯ）、  ≪ＯＰ２２１の処理≫を行う。
【０１９１】
≪ＯＰ２２６の処理≫
格納データ域４９に格納したデータ量が、ディスク装置１５に出力する単位量以上になった場合（ＯＰ２２５：ＹＥＳ）、採取部４８は、ログ情報データをディスク装置１５に出力するために、出力部５０に通知する（ＯＰ２２６）。そのあと、  ≪ＯＰ２２１の処理≫を行う。
【０１９２】
図４０と図４１は、本技術によるプログラムの起動遅延機能、プログラムの実行遅延機能および入出力装置からの割込み遅延機能で使用するテーブルのリンク関係を示す図である。
【０１９３】
図４０の作業域に対するポインタテーブル８１は、ユーザから指示された機能の情報を示す第１メモリマップ７１（図４２）、ログ情報データの管理情報を示す第５テーブル７８（図５０）およびログ情報データの格納域４９の内容を示す第６テーブル８０（図５２）のアドレスを格納する。
ポインタテーブル８１を参照することで、各テーブルの存在場所を知ることができる。
なお、ログ情報データの管理情報を示す第５テーブル７８（図５０）とログ情報データの格納域４９の内容を示す第６テーブル８０（図５２）は、複数個持つことができる。
【０１９４】
図４１のポインタテーブル８２は、各プロセッサ機能部（ＣＰＵ）と各プロセッサ機能部に設けられた制御テーブルである第２テーブル７３の対応づけを行うテーブルである。
ポインタテーブル８２は、プロセッサ番号（ＣＰＵ番号）の順に作成する。
ポインタテーブル８２を参照することで、各プロセッサ機能部に設けられた制御テーブルの存在場所を知ることができる。
各プロセッサ機能部に設けられた制御テーブルである第２テーブル７３から割込みの遅延機能で使用される第３テーブル７６（図４８）および排他制御の内容を示す第４テーブル７７をリンクする。
割込みの遅延機能で使用される第３テーブル７６（図４８）と排他制御の内容を示す第４テーブル７７は、複数個、作成されることがある。
なお、割込みの遅延機能で使用される第３テーブル７６（図４８）は、入出力装置からの割込み遅延機能で作成し、排他制御の内容を示す第４テーブル７７は、プログラムの起動遅延機能で作成する。
【０１９５】
図４２と図４３は、ユーザから指示された機能の情報を示す第１メモリマップ７１の内容を示す図である。未記載の部分は未使用である。
本テーブルは、情報処理装置１０のユーザから指示されたデータを格納するテーブルである。主な内容を以下で説明する。
【０１９６】
<ユーザから指示された機能の情報（オフセット位置：X’00’） の０ビット目>
本ビットは、情報処理装置１０のユーザからプログラムの起動遅延機能の使用が指示された場合、オンにする。
本ビットは、情報処理装置１０のユーザからプログラムの起動遅延機能の使用が指示されたか否かの判断に使用する。
【０１９７】
<ユーザから指示された機能の情報（オフセット位置：X’00’） の１ビット目>
本ビットは、情報処理装置１０のユーザから入出力装置からの割込み遅延機能の使用が指示された場合、オンにする。
本ビットは、情報処理装置１０のユーザから入出力装置からの割込み遅延機能の使用が指示されたか否かの判断に使用する。
【０１９８】
<ユーザから指示された機能の情報（オフセット位置：X’00’） の２ビット目>
本ビットは、情報処理装置１０のユーザからプログラムの実行遅延機能の使用が指示された場合、オンにする。
本ビットは、情報処理装置１０のユーザからプログラムの実行遅延機能の使用が指示されたか否かの判断に使用する。
【０１９９】
<ユーザから指示された機能の情報（オフセット位置：X’00’） の８ビット目>
本ビットは、情報処理装置１０のユーザからプログラムの起動遅延機能の使用の指示で、並行して動作させるプログラムが指定された場合、オンにする。
本ビットは、プログラムの起動遅延機能で並行して動作させるプログラムが指定されたか否かの判断に使用する。
【０２００】
<ユーザから指示された機能の情報（オフセット位置：X’00’） の９ビット目>
本ビットは、情報処理装置１０のユーザから入出力装置からの割込み遅延機能の使用の指示で、動作中に割込みを発生させるプログラムが指定された場合、オンにする。
本ビットは、入出力装置からの割込み遅延機能で動作中に割込みを発生させるプログラムが指定されたか否かの判断に使用する。
【０２０１】
<ユーザから指示された機能の情報（オフセット位置：X’00’） の１５ビット目>
本ビットは、情報処理装置１０のユーザからログ情報データの採取が停止された場合、オンにする。
本ビットは、ログ情報データの採取機能で停止が指示されたか否かの判断に使用する。
【０２０２】
図４２と図４４は、特定プログラム１７に関する情報の内容を示す図である。未記載の部分は未使用である。
<特定プログラム１７に関する情報（オフセット位置：X’02’） の０ビット目>
本ビットは、情報処理装置１０のユーザからプログラムの実行遅延機能の使用の指示で、指定されたプログラムが排他制御を行うロジックを持っていた場合、オンにする。
本ビットは、プログラムの実行遅延機能で、プログラムが排他制御を行う可能性があるか否かの判断に使用する。
【０２０３】
特定プログラム１７が存在する領域の先頭アドレスと特定プログラム１７が存在する領域の最終アドレスは、プログラムの実行遅延機能が対象とするプログラムか否かの判断で使用する。
【０２０４】
並行して動作させる他のプログラム１８が存在する領域の先頭アドレスと並行して動作させる他のプログラム１８が存在する領域の最終アドレスは、プログラムの起動遅延機能が、プログラムの起動を遅らせるか否かの判断で使用する。
【０２０５】
動作中に割込みを発生させるプログラムが存在する領域の先頭アドレスと動作中に割込みを発生させるプログラムが存在する領域の最終アドレスは、入出力装置からの割り込みが発生したとき、入出力装置からの割込み遅延機能が割り込みを発生させるか、遅らせるかの判断で使用する。
【０２０６】
図４５〜図４７は、各プロセッサ機能部に設けられた制御テーブルの内容である。
本テーブルは、当該プロセッサ機能部の状態を格納したテーブルである。
主な内容を以下で説明する。
【０２０７】
図４５と図４６は、実行中である特定プログラム１７の状態表示の内容を示す図である。未記載の部分は未使用である。
<実行中である特定プログラム１７の状態表示（オフセット位置：X’00’） の０ビット目>
本ビットは、対象プログラムが過去に割込み禁止・解除を行った場合、オンにする。
本ビットは、プログラムの実行遅延機能で、対象プログラムが過去に割込み禁止・解除を行ったか否かの判断に使用する。
【０２０８】
<実行中である特定プログラム１７の状態表示（オフセット位置：X’00’） の１ビット目>
本ビットは、現在、対象プログラムが割込み禁止を行った場合、オンにする。
本ビットは、プログラムの実行遅延機能で、対象プログラムが現在、割込み禁止を行っているか否かの判断に使用する。
【０２０９】
<実行中である特定プログラム１７の状態表示（オフセット位置：X’00’） の２ビット目>
本ビットは、過去に排他制御の獲得・解放を行った場合、オンにする。
本ビットは、プログラムの実行遅延機能で、対象プログラムが過去に排他制御の獲得・解放を行ったか否かの判断に使用する。
【０２１０】
<実行中である特定プログラム１７の状態表示（オフセット位置：X’00’） の３ビット目>
本ビットは、現在、対象プログラムが排他制御の獲得を行った場合、オンにする。
本ビットは、プログラムの実行遅延機能で、対象プログラムが現在、排他制御の獲得を行っているか否かの判断に使用する。
【０２１１】
<実行中である特定プログラム１７の状態表示（オフセット位置：X’00’） の８ビット目>
本ビットは、当プロセッサがプログラムの起動遅延機能を開始したとき、オンにする。
【０２１２】
<実行中である特定プログラム１７の状態表示（オフセット位置：X’00’） の９ビット目>
本ビットは、当プロセッサが入出力装置からの割込み遅延機能を開始したとき、オンにする。
【０２１３】
<実行中である特定プログラム１７の状態表示（オフセット位置：X’00’） の１０ビット目>
本ビットは、当プロセッサがプログラムの実行遅延機能を開始したとき、オンにする。
【０２１４】
<実行中である特定プログラム１７の状態表示（オフセット位置：X’00’） の１５ビット目>
本ビットは、当プロセッサでプログラムを起動する命令が実行されたとき、オンにする。
本ビットは、プロセッサ機能部に設けられた制御テーブルの初期化処理を行うときに、参照する。
【０２１５】
図４５と図４７は、特定プログラム１７に関する情報の内容を示す図である。未記載の部分は未使用である。
主な内容を以下で説明する。
<特定プログラム１７に関する情報（オフセット位置：X’02’） の０ビット目>
本ビットは、図４２の特定プログラム１７に関する情報と同じ内容であり、特定プログラム１７に関する情報を複写して使用する。
【０２１６】
プロセッサ機能部の時間割込み回数は、ハードウェアからの時間割り込みの回数を格納する。プロセッサ機能部の時間割込み回数は時間の経過を認識するために使用する。
【０２１７】
プロセッサ機能部のＰＳＷの内容は、自プロセッサ機能部の状態を他プロセッサ機能部から参照させるために格納する。
他プロセッサ機能部の状態を参照するときに使用する。
他プロセッサ機能部の状態を認識するために使用する。
ＰＳＷ：  Ｐｒｏｇｒａｍ  Ｓｔａｔｕ  Ｗｏｒｄ（プログラム状態語）
【０２１８】
特定プログラム１７の格納領域の先頭アドレスと特定プログラム１７の格納領域の最終アドレスは、自プロセッサ機能部が対象としているプログラムがローディングされている先頭アドレスと最終アドレスを格納する。
プログラムの実行遅延機能が自プロセッサ機能部で動作している対象プログラムを認識するために、使用する。
例：プロセッサ機能部のＰＳＷの内容の中のアドレス部が、特定プログラム１７の格納領域の先頭アドレスと特定プログラム１７の格納領域の最終アドレスの範囲内にある場合、特定プログラム１７が実行中と判断する。
【０２１９】
並行動作する他のプログラム１８の格納領域の先頭アドレスと並行動作する他のプログラム１８の格納領域の最終アドレスは、プログラムの起動遅延機能が、他のプロセッサ機能部で並行動作する他のプログラム１８が実行中か否かの判断で使用する。
【０２２０】
動作中に割込みを発生させるプログラムの先頭アドレスと動作中に割込みを発生させるプログラムの最終アドレスは、入出力装置からの割り込みが発生したとき、他のプロセッサ機能部で割込みを発生させるプログラムが実行中か否かの判断で使用する。
【０２２１】
割込み遅延中の入出力装置６０の数は、当プロセッサ機能部で割り込みを遅らせている入出力装置の数を格納する。
【０２２２】
使用中の排他制御用の情報退避域の数は、当プロセッサ機能部でプログラムの実行遅延機能が対象としているプログラムが獲得した排他制御の数を格納する。
【０２２３】
入出力装置６０からの割込み情報退避域のアドレスは、当プロセッサ機能部で割り込みを遅らせている入出力装置からの割込み情報を退避した領域（図４８を参照）の位置を示す。割込み遅延中の入出力装置６０の数だけ存在する。
【０２２４】
排他制御用の情報退避域のアドレスは、当プロセッサ機能部でプログラムの実行遅延機能が対象としているプログラムが獲得した排他制御の情報退避域（図４９を参照）の位置を示す。プログラムの実行遅延機能が対象としているプログラムが獲得した排他制御の数だけ存在する。
【０２２５】
図４８は、入出力装置からの割り込みが発生して、入出力装置からの割込み遅延機能が割り込みを遅らせるときの、入出力装置からの割込み情報の退避域である。
割り込みが発生した入出力装置の機番、入出力装置からの割込み情報および管理情報で構成する。管理情報には、本テーブルが使用中か否かの情報を設ける。
【０２２６】
図４９は、プログラムの実行遅延機能が対象とするプログラムが獲得した排他制御の情報の退避域である。
排他制御を獲得したプログラムを識別するための情報、排他制御用のテーブルアドレスおよび管理情報で構成する。管理情報には、本テーブルが使用中か否かの情報を設ける。
なお、排他制御を獲得したプログラムを識別するための情報は、ＯＳの種類によって異なる。
【０２２７】
図５０と図５１は、ログ情報データの採取機能が採取したログ情報データを管理するための、管理テーブルである。
図５０は、全体図を記載し、図５１は、ログ情報データを出力するプログラムの状態表示情報の内容を示す。
主な内容を以下で説明する。
【０２２８】
ログ情報データを出力するプログラムの状態表示情報の内容を説明する。
<ログ情報データを出力するプログラムの状態表示情報（オフセット位置：X’00’） の０ビット目>
本ビットは、ログ情報データを出力するプログラムが起動済みの場合、ＯＮにする。出力プログラムが起動されているか否かの判断に使用する。
<ログ情報データを出力するプログラムの状態表示情報（オフセット位置：X’00’） の８ビット目>
本ビットは、ログ情報データを出力するディスク装置に異常が発生した場合、ＯＮにする。
ログ情報データを出力するディスク装置が正常か、異常かの判断に使用する。
【０２２９】
図５２は、ログ情報データの格納域の内容を示す図である。
本テーブルは、出力バッファ内の次のデータ格納アドレス、プロセッサ機能部の番号（ＣＰＵ番号）、データを採取した時間、変化する前のプログラムの動作状態および変化した後のプログラムの動作状態を格納する。
【産業上の利用可能性】
【０２３０】
開示の技術は、個々のプログラムの実行タイミングを制御できない場合においても、プログラムの実行タイミングを、他のプログラムの動作に併せて制御できる情報処理装置および情報処理装置の制御方法を提供することを可能とする。
【符号の説明】
【０２３１】
１０  情報処理装置
１１  共有メモリ
１２  エミュレートプログラム
１３Ａ〜１３Ｄ  ＣＰＵ
１４Ａ〜１４Ｄ  エミュレート部
１５  ディスク装置
１６  ログ情報ファイル
１７  特定プログラム
１８  他のプログラム
１９  バス
２０  格納機能部
２１  共有メモリ機能部
２１Ａ〜２１Ｃ  共有メモリ機能部
２２Ａ、２２Ｂ、２２ｎ  プロセッサ機能部
２３  指示部
２４  ログ情報ファイル
２５  アプリケーション層
２６  ユーザプログラム
２７  ＯＳ層
２８Ａ〜２８Ｃ  ＯＳプログラム
２９Ａ、２９Ｂ  プログラム起動部
３０  ファーム層
３１  エミュレータプログラム
３２  第１遅延機能部
３３  第２遅延機能部
３４  第３遅延機能部
３５  格納域
３６  ドライバプログラム
３７  データ格納部
３８  起動元プログラム
３９  呼出し元プログラム
４０  共有メモリ機能部
４１  割込み処理プログラム
４２  第４遅延機能部
４３  再起動プロセス部
４４  監視部
４５  決定部
４６  第５遅延機能部
４７  エミュレート部
４８  採取部
４９  データ格納域
５０  出力部
６０  入出力装置
【図１】
2013057769.tif 000003
【図２】
2013057769.tif 000004
【図３】
2013057769.tif 000005
【図４】
2013057769.tif 000006
【図５】
2013057769.tif 000007
【図６】
2013057769.tif 000008
【図７】
2013057769.tif 000009
【図８】
2013057769.tif 000010
【図９】
2013057769.tif 000011
【図１０】
2013057769.tif 000012
【図１１】
2013057769.tif 000013
【図１２】
2013057769.tif 000014
【図１３】
2013057769.tif 000015
【図１４】
2013057769.tif 000016
【図１５】
2013057769.tif 000017
【図１６】
2013057769.tif 000018
【図１７】
2013057769.tif 000019
【図１８】
2013057769.tif 000020
【図１９】
2013057769.tif 000021
【図２０】
2013057769.tif 000022
【図２１】
2013057769.tif 000023
【図２２】
2013057769.tif 000024
【図２３】
2013057769.tif 000025
【図２４】
2013057769.tif 000026
【図２５】
2013057769.tif 000027
【図２６】
2013057769.tif 000028
【図２７】
2013057769.tif 000029
【図２８】
2013057769.tif 000030
【図２９】
2013057769.tif 000031
【図３０】
2013057769.tif 000032
【図３１】
2013057769.tif 000033
【図３２】
2013057769.tif 000034
【図３３】
2013057769.tif 000035
【図３４】
2013057769.tif 000036
【図３５】
2013057769.tif 000037
【図３６】
2013057769.tif 000038
【図３７】
2013057769.tif 000039
【図３８】
2013057769.tif 000040
【図３９】
2013057769.tif 000041
【図４０】
2013057769.tif 000042
【図４１】
2013057769.tif 000043
【図４２】
2013057769.tif 000044
【図４３】
2013057769.tif 000045
【図４４】
2013057769.tif 000046
【図４５】
2013057769.tif 000047
【図４６】
2013057769.tif 000048
【図４７】
2013057769.tif 000049
【図４８】
2013057769.tif 000050
【図４９】
2013057769.tif 000051
【図５０】
2013057769.tif 000052
【図５１】
2013057769.tif 000053
【図５２】
2013057769.tif 000054
【手続補正書】
【提出日】平成26年7月18日(2014.7.18)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のプログラムを格納した格納部、前記格納部に格納された前記複数のプログラムを実行する複数のプロセッサ、および、前記複数のプロセッサによりアクセスされる共有メモリの機能をエミュレートするエミュレート部と、
前記エミュレート部に対し、前記格納部に格納されている前記複数のプログラムのうち、特定のプログラムを指定すると共に、前記特定のプログラムが実行されるとき、実行するプロセッサの実行を遅延させるよう指示する指示部と、
前記エミュレート部によりエミュレートされた、前記複数のプロセッサの各々が処理したプログラムの実行タイミングを含む実行履歴を蓄積する履歴蓄積部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記エミュレート部は、前記プロセッサが前記特定のプログラムを実行するとき、前記プロセッサの起動を遅延することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記エミュレート部は、前記特定のプログラムが割込み禁止設定または割込み禁止解除を行うとき、前記特定のプログラムを実行する前記プロセッサの実行速度を遅延させることを特徴とする請求項１記載の情報処理装置。
【請求項４】
前記エミュレート部は、前記特定のプログラムが排他制御の獲得または排他制御の解放を行うとき、前記特定のプログラムを実行する前記プロセッサの実行速度を遅延させることを特徴とする請求項１記載の情報処理装置。
【請求項５】
前記エミュレート部は、前記プロセッサが前記特定のプログラムを実行するとき、入出力装置からの割込みを遅延させることを特徴とする請求項１記載の情報処理装置。
【請求項６】
複数のプログラムを格納した格納部、前記格納部に格納された前記複数のプログラムを実行する複数のプロセッサ、および、前記複数のプロセッサによりアクセスされる共有メモリの機能をエミュレートするエミュレート部を有する情報処理装置の制御方法であって、
前記エミュレート部に対し、前記格納部に格納されている前記複数のプログラムのうち、特定のプログラムを指定すると共に、前記特定のプログラムが実行されるとき、実行するプロセッサの実行を遅延させるよう指示し、
前記エミュレート部によりエミュレートされた、前記複数のプロセッサの各々が処理したプログラムの実行タイミングを含む実行履歴を蓄積する
ことを特徴とする情報処理装置の制御方法。
【請求項７】
前記エミュレート部は、前記プロセッサが前記特定のプログラムを実行するとき、前記プロセッサの起動を遅延することを特徴とする請求項６記載の情報処理装置の制御方法。
【請求項８】
前記エミュレート部は、前記特定のプログラムが割込み禁止設定または割込み禁止解除を行うとき、前記特定のプログラムを実行する前記プロセッサの実行速度を遅延させることを特徴とする請求項６記載の情報処理装置の制御方法。
【請求項９】
前記エミュレート部は、前記特定のプログラムが排他制御の獲得または排他制御の解放を行うとき、前記特定のプログラムを実行する前記プロセッサの実行速度を遅延させることを特徴とする請求項６記載の情報処理装置の制御方法。
【請求項１０】
複数のプログラムを格納した格納部、前記格納部に格納された前記複数のプログラムを実行する複数のプロセッサ、および、前記複数のプロセッサによりアクセスされる共有メモリの機能をエミュレートするエミュレート部を有する情報処理装置の制御をコンピュータに実行させる情報処理装置の制御プログラムであって、
コンピュータに、
前記エミュレート部に対し、前記格納部に格納されている前記複数のプログラムのうち、特定のプログラムを指定すると共に、前記特定のプログラムが実行されるとき、実行するプロセッサの実行を遅延させるよう指示し、
前記エミュレート部によりエミュレートされた前記複数のプロセッサの各々が処理したプログラムの実行タイミングを含む実行履歴を蓄積する
ことを特徴とする情報処理装置の制御プログラム。
【国際調査報告】
2013057769.tif 000055
2013057769.tif 000056