(57)【要約】【課題】資源アクセス中断によるロック残留の発生を低減する。【解決手段】ユーザプログラム４００が実行中のユーザＡＰプロセス２００の資源へのアクセスが閉塞しているか否かという情報を示す値を備える資源アクセス閉塞フラグ１３０と、任意のユーザＡＰスレッド３００で障害が発生した場合に発せられるシグナルを捕捉するシグナル捕捉処理１１０と、シグナル捕捉処理１１０がシグナルを捕捉した場合に、資源アクセス閉塞フラグ１３０の値をアクセスが閉塞していることを示す情報の値に設定する資源アクセス閉塞設定手段１１１と、実行中のプロセス内のスレッドがプロセスの資源へアクセスする際に、資源アクセス閉塞フラグ１３０の値を調べることによって、資源へのアクセスが閉塞しているか否かを判定する資源アクセス閉塞判定手段１２１と、を有することを特徴とする。【選択図】図１
2009199166.tif 000002
【特許請求の範囲】
【請求項１】
実行中のプロセスの資源へのアクセスが閉塞しているか否かという情報を示す値を備える資源アクセス閉塞フラグと、
前記プロセス中の任意のスレッドで障害が発生した場合に発せられるシグナルを捕捉するシグナル捕捉処理手段と、
該シグナル捕捉処理手段がシグナルを捕捉した場合に、前記資源アクセス閉塞フラグの値をアクセスが閉塞していることを示す情報の値に設定する資源アクセス閉塞設定手段と、
実行中のプロセス内のスレッドが前記プロセスの資源へアクセスする際に、前記資源アクセス閉塞フラグの値を調べることによって、前記資源へのアクセスが閉塞しているか否かを判定する資源アクセス閉塞判定手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記資源アクセス閉塞判定手段により前記資源へのアクセスが閉塞していると判定された場合、前記情報処理装置のオペレーティングシステムが前記プロセスのアボートを実行することを、所定の時間待たせるプロセスアボート遅延手段を、さらに有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
実行中のプロセスの資源へのアクセスが閉塞しているか否かという情報を示す値を備える資源アクセス閉塞フラグを有する情報処理装置の制御方法であって、
前記プロセス中の任意のスレッドで障害が発生した場合に発せられるシグナルを捕捉するシグナル捕捉処理工程と、
該シグナル捕捉処理工程によりシグナルが捕捉された場合に、前記資源アクセス閉塞フラグの値をアクセスが閉塞していることを示す情報の値に設定する資源アクセス閉塞設定工程と、
実行中のプロセス内のスレッドが前記プロセスへアクセスする際に、前記資源アクセス閉塞フラグの値を調べることによって、前記資源へのアクセスが閉塞しているか否かを判定する資源アクセス閉塞判定工程と、
を含むことを特徴とする情報処理装置の制御方法。
【請求項４】
前記資源アクセス閉塞判定手段により前記資源へのアクセスが閉塞していると判定された場合、前記情報処理装置のオペレーティングシステムが前記プロセスのアボートを実行することを、所定の時間待たせるプロセスアボート遅延工程を、さらに含むことを特徴とする請求項３記載の情報処理装置の制御方法。
【請求項５】
実行中のプロセスの資源へのアクセスが閉塞しているか否かという情報を示す値を備える資源アクセス閉塞フラグを有する情報処理装置に、
前記プロセス中の任意のスレッドで障害が発生した場合に発せられるシグナルを捕捉するシグナル捕捉処理と、
該シグナル捕捉処理によりシグナルが捕捉された場合に、前記資源アクセス閉塞フラグの値をアクセスが閉塞していることを示す情報の値に設定する資源アクセス閉塞設定処理と、
実行中のプロセス内のスレッドが前記プロセスへアクセスする際に、前記資源アクセス閉塞フラグの値を調べることによって、前記資源へのアクセスが閉塞しているか否かを判定する資源アクセス閉塞判定処理と、
を実行させることを特徴とするプログラム。
【請求項６】
前記情報処理装置に、
前記資源アクセス閉塞判定処理により前記資源へのアクセスが閉塞していると判定された場合、前記情報処理装置のオペレーティングシステムが前記プロセスのアボートを実行することを、所定の時間待たせるプロセスアボート遅延処理を、さらに実行させることを特徴とする請求項５記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法及びプログラムに関し、特に、実行中のスレッドが中断された際の処理に関する。
【背景技術】
【０００２】
一般に、プログラムカウンタやスタックといった、実行状態に関連する情報を持つプログラムの実行制御単位をスレッドと呼ぶ。また、プログラムコードやグローバルデータといった、プログラム全体で使われるリソースを持った実行制御単位をプロセスと呼ぶ。１つのプロセスには、１つもしくは複数のスレッドが存在する。
【０００３】
ある１つのスレッドがプログラム実行中に、不正アドレス参照など該当スレッドの実行を中断せざる得ないシグナル事象をＯＳ（オペレーティングシステム）が検出した場合、通常、ＯＳは該当スレッドの属するプロセス配下の全スレッドの実行を中断して、プロセスを終了させる。また、利用者からＯＳに対してプロセスの停止が要求された場合も同様である。
【０００４】
ここで、複数のスレッドが並行して動作することが可能な計算機システムにおいて、複数のスレッドが同一の共有資源をアクセスする場合、共有資源の一貫性を保証するために、一貫性が保証されない危険領域（クリティカルセクション）の区間を複数のスレッドが同時に実行しないように、通常、共有資源に対応するロックを取得する。ＯＳが提供する代表的なロック機能としては、セマフォ、Mutex Lock (Mutual exclusion lock)などがあげられる。
【０００５】
正常にスレッドがプログラムを実行している間は、危険領域に直前でロックを取得し、危険領域を抜けた直後でロックを解放する。しかし、スレッドが危険領域の区間を実行中に、該当スレッド自身もしくは同一プロセスに属する他スレッドの実行を中断せざる得ないシグナル事象が検出された場合、該当スレッドの実行が中断され、ロックが解放されることなく残ってしまう。こうしたロックの残留が発生すると、以降、同一の共有資源のロックを取得しようとする全てのスレッドがロック取得待ちで停止してしまい、致命的なシステム障害に及ぶ可能性がある。
【０００６】
本発明に関連する技術としては、特許文献１，２に記載のものがある。
特許文献１は、共有サブルーチン（プログラム）の動的置換に関する発明を開示する。特許文献１には、共有サブルーチンの置き換え中に該当共有サブルーチン（プログラムアドレス）を呼び出さないように、交換要求フラグをＯＮとすることが記載されている。しかしながら、正常にアクセスできない資源に対する不正アクセスを防止するために、アクセス防止用フラグを設けるという技術に関するものであって、ロック残留の低減を課題としたものではなく、本発明との関連性は低い。
【０００７】
特許文献２は、複数の相互に連係して動作するプロセス群における、運用指示若しくは一部プロセスの異常終了に伴って、全プロセスを終了させる場合の終了同期処理に関する発明を開示する。特許文献２に記載の発明は、関連する全プロセスの状態を管理し、特定の管理プロセスが残りの全プロセスを停止する際の同期手順を新規に設けることを特徴としている。また、特許文献２には、関連したプロセス群の制御の改善に関する記載もある。
【特許文献１】特開平０４−０３９７３９号公報
【特許文献２】特開平０４−２４１６３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来のシステムにおいては、上記のロック残留に伴うシステム障害を回避する方法として、アボートしたプロセスを再起動する際、アボートした時点でロックしていた可能性のある全ロックに関してロックの取得を試み、一定時間以内にロックの取得が完了しない場合、該当ロックが残留していると判断し、該当ロックに対応する共有資源を使用不可とする、もしくは共有資源を再作成し直す機構が用いられる。しかし、この方式の場合、ロック残留が発生したロックの数に応じてロックの検査に必要とする時間が延びるため、プロセス再起動によるシステム復旧に長時間を要する可能性がある。
【０００９】
そこで本発明は、上記実情に鑑みて、資源アクセス中断によるロック残留の発生を低減することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために本発明は、以下の特徴を有する。
【００１１】
本発明に係る情報処理装置は、実行中のプロセスの資源へのアクセスが閉塞しているか否かという情報を示す値を備える資源アクセス閉塞フラグと、前記プロセス中の任意のスレッドで障害が発生した場合に発せられるシグナルを捕捉するシグナル捕捉処理手段と、該シグナル捕捉処理手段がシグナルを捕捉した場合に、前記資源アクセス閉塞フラグの値をアクセスが閉塞していることを示す情報の値に設定する資源アクセス閉塞設定手段と、実行中のプロセス内のスレッドが前記プロセスの資源へアクセスする際に、前記資源アクセス閉塞フラグの値を調べることによって、前記資源へのアクセスが閉塞しているか否かを判定する資源アクセス閉塞判定手段と、を有することを特徴とする。
【００１２】
本発明に係る情報処理装置の制御方法は、実行中のプロセスの資源へのアクセスが閉塞しているか否かという情報を示す値を備える資源アクセス閉塞フラグを有する情報処理装置の制御方法であって、前記プロセス中の任意のスレッドで障害が発生した場合に発せられるシグナルを捕捉するシグナル捕捉処理工程と、該シグナル捕捉処理工程によりシグナルが捕捉された場合に、前記資源アクセス閉塞フラグの値をアクセスが閉塞していることを示す情報の値に設定する資源アクセス閉塞設定工程と、実行中のプロセス内のスレッドが前記プロセスへアクセスする際に、前記資源アクセス閉塞フラグの値を調べることによって、前記資源へのアクセスが閉塞しているか否かを判定する資源アクセス閉塞判定工程と、を含むことを特徴とする。
【００１３】
本発明に係るプログラムは、実行中のプロセスの資源へのアクセスが閉塞しているか否かという情報を示す値を備える資源アクセス閉塞フラグを有する情報処理装置に、前記プロセス中の任意のスレッドで障害が発生した場合に発せられるシグナルを捕捉するシグナル捕捉処理と、該シグナル捕捉処理によりシグナルが捕捉された場合に、前記資源アクセス閉塞フラグの値をアクセスが閉塞していることを示す情報の値に設定する資源アクセス閉塞設定処理と、実行中のプロセス内のスレッドが前記プロセスへアクセスする際に、前記資源アクセス閉塞フラグの値を調べることによって、前記資源へのアクセスが閉塞しているか否かを判定する資源アクセス閉塞判定処理と、を実行させることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、資源アクセス中断によるロック残留の発生を低減することが可能となる。
【発明を実施するための最良の形態】
【００１５】
まず、本実施形態におけるロック残留発生低減方式の概要について説明する。
複数のスレッドが平行して動作することが可能な計算機システムにおいて、複数のスレッドが同一の共有資源をアクセスする場合、共有資源の一貫性を保障するために、一貫性が保障されない危険領域（クリティカルセクション）の区間を複数のスレッドが同時に実行しないように、通常、共有資源に対応するロックを取得する。
【００１６】
しかしながら、何らかの理由により、ロックを取得している最中に該当スレッドが中断された場合、ロックが解放されることなく残ってしまい、以降、同一の共有資源のロックを取得しようとする全てのスレッドがロック取得待ちで停止してしまう。ここで、スレッドが中断されるケースとしては、以下の３パターンが考えられる。
【００１７】
第１に、ロックを取得している処理自身の不具合が原因で、ＯＳ（オペレーティングシステム）により打ち切られるケース。第２に、ロックを取得している処理自身には問題がなく、同一プロセス内の他スレッドでの処理の不具合を原因とした打ち切りに伴って、ＯＳの仕様として、巻き添えの形で、前スレッドが打ち切られるケース。第３に、ロックを取得している処理自身には問題がなく、他スレッド（／他プロセス）のプログラムの意志により明示的に打ち切られるケース。
【００１８】
上記のうち、本実施形態が対象とするのは、第２のケースである。本実施形態は、ＯＳの仕様により、不具合により打ち切らざるを得ないスレッド以外に、不具合のない同一プロセスの他スレッドが即時打ち切られ、それによりロックが残ることを課題とする。上記課題を解決するために、本実施形態は、プロセス内の全スレッドがＯＳに強制打ち切りされるのを検知し、強制打ち切りに伴うロック残留の発生を抑制する。
【００１９】
次に、本実施形態に係る情報処理装置の構成について図面を参照しながら説明する。
本実施形態に係る情報処理装置は、図１に示すように、資源アクセスライブラリ１００を有し、ユーザＡＰプロセス２００を実行中である。ユーザＡＰプロセス２００は、ユーザプログラム４００を実行する複数のユーザＡＰスレッド３００からなる。
【００２０】
資源アクセスライブラリ１００は、資源アクセス閉塞判定手段１２１と資源アクセス手段１２２を有する資源アクセス処理１２０と、資源アクセス閉塞設定手段１１１とプロセスアボート遅延手段１１２を有するシグナル捕捉処理１１０と、資源アクセス閉塞フラグ１３０を備える。また、シグナル捕捉処理１１０は、本実施形態に係る情報処理装置が起動している間、予めＯＳに登録されている。
【００２１】
ここで、資源アクセス閉塞フラグ１３０は、ユーザＡＰプロセス２００毎に固有の記憶領域であり、初期値は０である。資源アクセス閉塞フラグ１３０の値が初期値である場合、フラグはＯＦＦであり（言い換えれば、フラグが立っていない）、初期値でない値である場合、フラグはＯＮである（言い換えれば、フラグが立っている）。資源アクセス閉塞フラグ１３０の値は、ユーザＡＰプロセス２００の資源へのアクセスが閉塞しているか否かという情報を示すものであり、本実施形態では、初期値の場合アクセスが閉塞しておらず、初期値でない場合アクセスが閉塞している情報を示すこととする。
【００２２】
次に、このように構成された本実施形態におけるロック残留発生低減方式の動作について説明する。図２は、本実施形態におけるシグナル捕捉処理の流れを示すフローチャートである。
【００２３】
図２において、ユーザプログラム４００を実行する複数のユーザＡＰスレッド３００を含むユーザＡＰプロセス２００が起動された後（ステップＳ２０１）、任意のユーザＡＰスレッド３００上で動作するユーザプログラム４００に関して（ステップＳ２０２）、ＯＳが不正アドレス参照などスレッドの実行を中断せざる得ない状況を検出した場合（ステップＳ２０３）、該当するユーザＡＰスレッド３００の延長でＯＳから予めＯＳに登録しておいたシグナル捕捉処理１１０が呼び出される（ステップＳ２０４）。
【００２４】
シグナル捕捉処理１１０では、まず資源アクセス閉塞設定手段１１１に制御が渡される。資源アクセス閉塞設定手段１１１は、資源アクセス閉塞フラグ１３０に１を設定し（ステップＳ２０５）、プロセスアボート遅延手段１１２に制御を渡す。なお、資源アクセス閉塞設定手段１１１が資源アクセス閉塞フラグ１３０に１を設定することは、「資源アクセス閉塞フラグ１３０をＯＮにする（又は、フラグを立てる）」と言い換えてもよい。
【００２５】
プロセスアボート遅延手段１１２は、予め決められた時間だけスレッドの実行を待ち合わせた後（ステップＳ２０６）、ＯＳに制御を戻す（ステップＳ２０７）。その結果、ＯＳは、ユーザＡＰプロセス２００に含まれる全てのユーザＡＰスレッド３００の実行を中断し、ユーザＡＰプロセス２００を終了する。
【００２６】
一方で、本実施形態における資源アクセス処理は、図３のフローチャートに示す流れで実行される。図３において、ユーザプログラム４００を実行する複数のユーザＡＰスレッド３００を含むユーザＡＰプロセス２００が起動された後（ステップＳ３０１）、任意のユーザＡＰスレッド３００上で動作するユーザプログラム４００（ステップＳ３０２）から、資源アクセス処理１２０が呼び出される（ステップＳ３０３）。
【００２７】
資源アクセス処理１２０では、まず資源アクセス閉塞判定手段１２１に制御が渡される。資源アクセス閉塞判定手段１２１は、資源アクセス閉塞フラグ１３０の値を判定する（ステップＳ３０４）。資源アクセス閉塞フラグ１３０の値が０の場合は（ステップＳ３０５／Ｙｅｓ）、資源アクセス手段１２２に制御を渡す（ステップＳ３０６）。資源アクセス閉塞フラグ１３０の値が０以外の場合は（ステップＳ３０５／Ｎｏ）、資源アクセス不可と判断し、ユーザプログラム４００に制御を戻す（ステップＳ３０７）。
【００２８】
次に、本実施形態における資源アクセス手段１２２の動作について図４のフローチャートを参照して説明する。図４において、資源アクセス手段１２２は、対象となる資源のロックを取得し（ステップＳ４０１）、要求されたアクセス処理を実行した後（ステップＳ４０２／Ｙｅｓ）、資源のロックを解放して（ステップＳ４０３）、ユーザプログラム４００に制御を戻す（ステップＳ４０４）。
【００２９】
本実施形態は、複数のスレッドで構成されたプロセス（マルチスレッドプロセス）において、プロセス中のあるスレッドで回復不可能なシグナル事象が発生した場合、予めＯＳに登録しておいたシグナル捕捉処理がＯＳから呼び出された延長で、プロセス内の資源アクセス閉塞フラグをＯＮにして、以降プロセス内での新たな資源アクセス処理の実行を抑止するとともに、プロセス内の他スレッドにおいて既に実行中の資源アクセス処理の完了を待つために、シグナル事象が発生したスレッドがアボート（中断）するのを一定時間待ち合わせることにより、ロック取得中の資源アクセス処理中断によるロック残留の発生を低減する。
【００３０】
これにより、アボートしたプロセスを再起動する際に、アボートした時点でロックしていた可能性のある全ロックの検査に必要とする時間を短縮し、プロセス再起動によるシステム復旧に要する時間を短縮する。
【００３１】
以上、本発明の好適な実施の形態について説明したが、本発明はこれに限定されるものではなく、要旨を逸脱しない範囲内で種々の変形実施が可能である。上述した本実施形態における制御動作は、ハードウェア、または、ソフトウェア、あるいは、両者の複合構成を用いて実行することも可能である。
【００３２】
なお、ソフトウェアを用いて処理を実行する場合には、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれているコンピュータ内のメモリにインストールして実行させることが可能である。あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。
【００３３】
例えば、プログラムは、記録媒体としてのハードディスクやROM（Read Only Memory）に予め記録しておくことが可能である。あるいは、プログラムは、リムーバブル記録媒体に、一時的、あるいは、永続的に格納（記録）しておくことが可能である。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウエアとして提供することが可能である。なお、リムーバブル記録媒体としては、フロッピー（登録商標）ディスク、CD-ROM（Compact Disc Read Only Memory）、MO（Magneto optical）ディスク、DVD（Digital Versatile Disc）、磁気ディスク、半導体メモリなどが挙げられる。
【００３４】
なお、プログラムは、上述したようなリムーバブル記録媒体からコンピュータにインストールすることになる。また、ダウンロードサイトから、コンピュータに無線転送することになる。また、ネットワークを介して、コンピュータに有線で転送することになる。
【図面の簡単な説明】
【００３５】
【図１】本発明の実施形態の構成を示すブロック図である。
【図２】本実施形態のシグナル捕捉処理を示すフローチャートである。
【図３】本実施形態の資源アクセス処理を示すフローチャートである。
【図４】本実施形態の資源アクセス手段の動作を示すフローチャートである。
【符号の説明】
【００３６】
１００    資源アクセスライブラリ
１１０    シグナル捕捉処理
１１１    資源アクセス閉塞設定手段
１１２    プロセスアボート遅延手段
１２０    資源アクセス処理
１２１    資源アクセス閉塞判定手段
１２２    資源アクセス手段
１３０    資源アクセス閉塞フラグ
２００    ユーザＡＰプロセス
３００    ユーザＡＰスレッド
４００    ユーザプログラム
【図１】
2009199166.tif 000003
【図２】
2009199166.tif 000004
【図３】
2009199166.tif 000005
【図４】
2009199166.tif 000006