(57)【要約】【課題】特定の情報処理部のみが頻繁に競合資源の獲得及び解放を行う場合に、競合資源の獲得の排他性を保証しつつ、競合資源の獲得を高速化する。【解決手段】情報処理部に、他の情報処理部と排他的に競合資源を獲得させる排他制御装置１０は、競合資源５０を獲得する候補を示す非優先排他権を、第１の処理により互いに排他的に獲得する複数の非優先情報処理部１６０と、非優先排他権を獲得した非優先情報処理部１６０との間で、第１の処理より処理時間が短い第２の処理により、競合資源５０を排他的に獲得する優先情報処理部１５０とを備える【選択図】  図１
2004152185.tif 000002
【特許請求の範囲】
【請求項１】
情報処理部に、他の情報処理部と排他的に競合資源を獲得させる排他制御装置であって、
前記競合資源を獲得する候補を示す非優先排他権を、第１の処理により互いに排他的に獲得する複数の非優先情報処理部と、
前記非優先排他権を獲得した前記非優先情報処理部との間で、前記第１の処理より処理時間が短い第２の処理により、前記競合資源を排他的に獲得する優先情報処理部と
を備えることを特徴とする排他制御装置。
【請求項２】
前記優先情報処理部が前記競合資源の獲得を試みている旨を示す優先排他権情報を格納する優先排他権格納領域と、
前記複数の非優先情報処理部のうち何れが、前記非優先排他権を獲得しているかを識別する非優先排他権情報を格納する非優先排他権格納領域と
を更に備え、
前記非優先情報処理部のそれぞれは、前記第１の処理として、他の前記非優先情報処理部と排他的に、前記非優先排他権情報が既に格納されていない場合において当該非優先情報処理部が前記予約排他権を獲得していることを示す前記非優先排他権情報を格納し、
前記優先情報処理部は、前記第２の処理として、前記優先排他権情報を格納した後に前記非優先排他権格納領域を読み出し、前記非優先排他権情報が既に格納されている場合において前記競合資源を獲得せず、前記非優先排他権情報が格納されていない場合において前記競合資源を獲得することを特徴とする請求項１記載の排他制御装置。
【請求項３】
前記非優先排他権格納領域は、前記複数の情報処理部のうち何れが前記優先情報処理部かを示す優先情報処理部情報と、前記非優先排他権情報との何れか一方を格納し、
前記非優先排他権格納領域が前記非優先排他権情報及び前記優先情報処理部情報の何れを格納するかを示す情報を格納する領域利用種別格納領域を更に備え、
前記非優先排他権格納領域が前記非優先排他権情報を格納する場合に、前記優先情報処理部及び前記複数の非優先情報処理部のそれぞれは、前記第１の処理により前記非優先排他権を獲得し、前記非優先排他権を獲得した場合に、前記競合資源を獲得することを特徴とする請求項２記載の排他制御装置。
【請求項４】
前記第２の処理において、前記非優先排他権情報が既に格納されると判断された場合に、当該優先情報処理部を非優先情報処理部に変更する優先情報処理部変更部を更に備えることを特徴とする請求項２記載の排他制御装置。
【請求項５】
前記第１の処理又は前記第２の処理により前記競合資源の獲得が失敗したか否かを判断する獲得可否判断部と、
前記競合資源の獲得が失敗したと判断された場合に、当該競合資源の獲得を待機する全ての前記情報処理部を予め記録し、前記競合資源を解放した情報処理部が、当該競合資源の獲得を待機する情報処理部に、前記競合資源を解放した旨を通知するモニター方式により排他制御を行うモニター制御部と
を更に備えることを特徴とする請求項２記載の排他制御装置。
【請求項６】
何れの前記情報処理部が、前記優先情報処理部かを示す優先情報処理部情報を格納する優先情報処理部情報格納領域と、
複数の前記情報処理部の何れかに、他の前記情報処理部と排他的に、前記優先情報処理部情報が既に格納されていない場合において当該情報処理部が前記優先情報処理部である旨を示す前記優先情報処理部情報を格納する処理を行わせる優先情報処理部設定部と
を備えることを特徴とする請求項１記載の排他制御装置。
【請求項７】
前記競合資源を初めて獲得した前記情報処理部を、前記優先情報処理部に設定し、当該優先情報処理部を除く他の前記情報処理部を前記非優先情報処理部と設定する優先情報処理部設定部と
を更に備えることを特徴とする請求項１記載の排他制御装置。
【請求項８】
前記非優先情報処理部の何れかを、前記優先情報処理部に変更する優先情報処理部変更部を更に備えることを特徴とする請求項１記載の排他制御装置。
【請求項９】
全ての前記複数の情報処理部を停止させる全停止部を更に備え、
前記優先情報処理部変更部は、停止された時点で前記競合資源を獲得している前記非優先情報処理部を、前記優先情報処理部に変更することを特徴とする請求項８記載の排他制御装置。
【請求項１０】
前記複数の情報処理部のいずれかにより前記競合資源が獲得されているか否かを示す資源情報を、前記優先情報処理部が存在する旨を示す優先権情報に対応付けて格納する資源情報格納領域を更に備え、
前記優先情報処理部は、前記第２の処理として、前記資源情報格納領域から情報を読み出す処理と、前記優先権情報が格納されている場合に前記資源情報を前記資源情報格納領域に書き込む処理とを行い、
前記非優先情報処理部のそれぞれは、
前記優先情報処理部を停止させる優先情報処理部停止部と、
前記優先情報処理部を停止させた場合に、前記第１の処理により他の情報処理部とは排他的に、前記優先権情報を前記資源情報格納領域から取り除く優先権除去部と、
停止させた前記優先情報処理部が、前記第２の処理を実行中であるか否かを判断する過渡状態判断部と、
前記第２の処理を実行中と判断された場合に、前記優先情報処理部の実行状態を、当該第２の処理により前記競合資源を獲得しない状態に設定する実行状態設定部と
を有することを特徴とする請求項１記載の排他制御装置。
【請求項１１】
前記実行状態設定部は、前記優先情報処理部を実現するプログラムの実行位置を示す実行位置情報を、前記資源情報格納領域を読み出す前の状態に設定することにより前記実行状態を設定することを特徴とする請求項１０記載の排他制御装置。
【請求項１２】
前記実行状態設定部は、前記第２の処理における前記資源情報格納領域への書き込み処理を無効化することを特徴とする請求項１０記載の排他制御装置。
【請求項１３】
前記資源情報格納領域に前記優先情報処理部が存在しない旨の情報が格納された場合に、
当該競合資源の獲得を待機する全ての前記情報処理部を予め記録し、前記競合資源を解放した情報処理部が、当該競合資源の獲得を待機する情報処理部に、前記競合資源を解放した旨を通知するモニター方式により排他制御を行うモニター制御部を備えることを特徴とする請求項１０記載の排他制御装置。
【請求項１４】
同一の競合資源を獲得し得る複数のスレッドの何れかに、当該スレッドとは異なる他のスレッドと排他的に前記競合資源を獲得させる排他制御装置であって、
第１の前記スレッドにおけるプログラムの実行位置を示す実行位置情報を取得し、前記第１のスレッドとは異なる第２のスレッドに通知する実行状態取得通知部と、
前記実行位置情報が前記競合資源に獲得する旨を示す場合において、前記第２のスレッドによって、前記競合資源に獲得しない実行位置情報を前記第１のスレッドに設定する処理を行わせる実行状態設定部と
を備えることを特徴とする排他制御装置。
【請求項１５】
情報処理部に、他の情報処理部と排他的に競合資源を獲得させる排他制御方法であって、
前記競合資源を獲得する候補を示す非優先排他権を、第１の処理により互いに排他的に獲得する複数の非優先情報処理段階と、
前記非優先排他権を獲得した前記非優先情報処理部との間で、前記第１の処理より処理時間が短い第２の処理により、前記競合資源を排他的に獲得する優先情報処理段階と
を備えることを特徴とする排他制御方法。
【請求項１６】
同一の競合資源を獲得し得る複数のスレッドの何れかに、当該スレッドとは異なる他のスレッドと排他的に前記競合資源を獲得させる排他制御方法であって、
第１の前記スレッドにおけるプログラムの実行位置を示す実行位置情報を取得し、前記第１のスレッドとは異なる第２のスレッドに通知する実行状態取得通知段階と、
前記実行位置情報が前記競合資源に獲得する旨を示す場合において、前記第２のスレッドによって、前記競合資源に獲得しない実行位置情報を前記第１のスレッドに設定する処理を行わせる実行状態設定段階と
を備えることを特徴とする排他制御方法。
【請求項１７】
情報処理部に、他の情報処理部と排他的に競合資源を獲得させる排他制御装置としてコンピュータを機能させるプログラムであって、
前記コンピュータを、
前記競合資源を獲得する候補を示す非優先排他権を、第１の処理により互いに排他的に獲得する複数の非優先情報処理部と、
前記非優先排他権を獲得した前記非優先情報処理部との間で、前記第１の処理より処理時間が短い第２の処理により、前記競合資源を排他的に獲得する優先情報処理部と
して機能させることを特徴とするプログラム。
【請求項１８】
同一の競合資源を獲得し得る複数のスレッドの何れかに、当該スレッドとは異なる他のスレッドと排他的に前記競合資源を獲得させる排他制御装置としてコンピュータを機能させるプログラムであって、
前記コンピュータを、
第１の前記スレッドにおけるプログラムの実行位置を示す実行位置情報を取得し、前記第１のスレッドとは異なる第２のスレッドに通知する実行状態取得通知部と、
前記実行位置情報が前記競合資源に獲得する旨を示す場合において、前記第２のスレッドによって、前記競合資源に獲得しない実行位置情報を前記第１のスレッドに設定する処理を行わせる実行状態設定部と
して機能させることを備えることを特徴とするプログラム。
【請求項１９】
情報処理部に、他の情報処理部と排他的に競合資源を獲得させる排他制御装置としてコンピュータを機能させるプログラムを記録した記録媒体であって、
前記プログラムは、前記コンピュータを、
前記競合資源を獲得する候補を示す非優先排他権を、第１の処理により互いに排他的に獲得する複数の非優先情報処理部と、
前記非優先排他権を獲得した前記非優先情報処理部との間で、前記第１の処理より処理時間が短い第２の処理により、前記競合資源を排他的に獲得する優先情報処理部と
して機能させることを特徴とする記録媒体。
【請求項２０】
同一の競合資源を獲得し得る複数のスレッドの何れかに、当該スレッドとは異なる他のスレッドと排他的に前記競合資源を獲得させる排他制御装置としてコンピュータを機能させるプログラムを記録した記録媒体であって、
前記プログラムは、前記コンピュータを、
第１の前記スレッドにおけるプログラムの実行位置を示す実行位置情報を取得し、前記第１のスレッドとは異なる第２のスレッドに通知する実行状態取得通知部と、
前記実行位置情報が前記競合資源に獲得する旨を示す場合において、前記第２のスレッドによって、前記競合資源に獲得しない実行位置情報を前記第１のスレッドに設定する処理を行わせる実行状態設定部と
して機能させることを備えることを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、排他制御装置、排他制御方法、プログラム、及び記録媒体に関する。特に本発明は、所定の情報処理部に対して優先的に競合資源を獲得させる排他制御装置、排他制御方法、プログラム、及び記録媒体に関する。
【０００２】
【従来の技術】
近年、コンピュータに複数のタスクを並行して実行させたり、複数のプロセッサが協業してタスクを高速に実行させたりする技術として、マルチプロセッサやマルチスレッドが用いられている。これらの技術において、プロセッサやスレッド等の複数の情報処理部は、メモリや入出力装置等の競合資源を共有する。
従来、競合資源の調停を行う場合に、競合の程度が比較的低い場合と、競合の程度が比較的高い場合とで、競合の調停に用いるアルゴリズムを切り替えることにより競合資源の獲得及び解放を高速化する方法が提案されている（非特許文献１参照。）。本文献に開示された方法によると、他の方法と比べ、特に競合資源の獲得及び解放を高速に行うことができる。
【０００３】
【非特許文献１】
小野寺  民也、河内谷  清久仁  著、「バイモーダルフィールドによるオブジェクトのロック方法の研究」（英題：Ａ  Ｓｔｕｄｙ  ｏｆ  Ｌｏｃｋｉｎｇ  Ｏｂｊｅｃｔｓ  ｗｉｔｈ  Ｂｉｍｏｄａｌ  Ｆｉｅｌｄｓ）  ＯＯＰＳＬＡ’９９会議録
【０００４】
【発明が解決しようとする課題】
しかしながら、複数の情報処理部のうち、特定の情報処理部のみが頻繁に競合資源の獲得及び解放を行う場合がある。従来の技術によると、このような場合であっても、競合資源を獲得する場合に他の情報処理部と排他的に動作する処理を行う必要があり、処理速度の向上が困難であった。
そこで本発明は、上記の課題を解決することのできる排他制御装置、排他制御方法、プログラム、及び記録媒体を提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
【０００５】
【課題を解決するための手段】
即ち、本発明の第１の形態によると、情報処理部に、他の情報処理部と排他的に競合資源を獲得させる排他制御装置であって、競合資源を獲得する候補を示す非優先排他権を、第１の処理により互いに排他的に獲得する複数の非優先情報処理部と、非優先排他権を獲得した非優先情報処理部との間で、第１の処理より処理時間が短い第２の処理により、競合資源を排他的に獲得する優先情報処理部とを備えることを特徴とする排他制御装置、排他制御方法、当該方法を実現するプログラム、及び当該プログラムを記録した記録媒体を提供する。
また、本発明の第２の形態によると、同一の競合資源を獲得し得る複数のスレッドの何れかに、当該スレッドとは異なる他のスレッドと排他的に競合資源を獲得させる排他制御装置であって、第１のスレッドにおけるプログラムの実行位置を示す実行位置情報を取得し、第１のスレッドとは異なる第２のスレッドに通知する実行状態取得通知部と、実行位置情報が競合資源に獲得する旨を示す場合において、第２のスレッドによって、競合資源に獲得しない実行位置情報を第１のスレッドに設定する処理を行わせる実行状態設定部とを備えることを特徴とする排他制御装置、排他制御方法、当該方法を実現するプログラム、及び当該プログラムを記録した記録媒体を提供する。
なお上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションも又発明となりうる。
【０００６】
【発明の実施の形態】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、又実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【０００７】
（第１実施形態）
図１は、第１実施形態における排他制御装置１０の機能ブロック図を示す。排他制御装置１０は、互いに並行して動作する複数の情報処理部、例えば優先情報処理部１５０及び非優先情報処理部１６０−１〜Ｎの何れかに、他の情報処理部と排他的に競合資源５０を獲得させることにより、競合資源５０の獲得を調停することを目的とする。
【０００８】
排他制御装置１０は、複数の情報処理部の何れかに獲得される競合資源５０と、競合資源５０への競合程度が比較的低い場合に用いられるフラットロック格納部１００と、複数の情報処理部の中から優先情報処理部１５０を設定する優先情報処理部設定部１４０と、優先的に競合資源５０を獲得する優先情報処理部１５０と、非優先情報処理部１６０−１〜Ｎと、競合資源の競合程度を判断する獲得可否判断部１７０と、優先情報処理部１５０を変更する優先情報処理部変更部１８０と、競合資源５０への競合程度が比較的高い場合に用いられるモニター制御部１９０と、ファットロック格納部２００と、全ての情報処理部の動作を一時的に停止する全停止部２１０とを備える。
【０００９】
非優先情報処理部１６０−１〜Ｎのそれぞれは、第１の処理の一例として、他の非優先情報処理部と排他的にフラットロック格納部１００へ書き込む処理により、競合資源５０を獲得する候補となる権利である非優先排他権の獲得及び解放を行う。例えば、非優先情報処理部１６０−１〜Ｎは、比較的処理時間の長いＣｏｍｐａｒｅ  Ａｎｄ  Ｓｗａｐ命令により、排他的な書き込みを行う。一方、優先情報処理部設定部１４０により設定された優先情報処理部１５０は、第１の処理より処理時間の短い第２の処理の一例として、フラットロック格納部１００へ、例えば通常の書き込み命令により書き込む処理により、競合資源５０の獲得及び解放を行う。排他制御装置１０は、優先情報処理部１５０及び非優先排他権を獲得した非優先情報処理部１６０の何れかに競合資源５０を獲得させる。
【００１０】
このように、排他制御装置１０は、第１の処理より高速な第２の処理により優先情報処理部１５０に競合資源５０を獲得させることができるので、優先情報処理部１５０に競合資源５０を非優先情報処理部１６０と比較して高速に獲得させることができる。例えば、優先情報処理部１５０による競合資源５０の獲得頻度が他の情報処理部による獲得頻度より高いことが予め予測される場合において、排他制御装置１０は、競合資源５０の獲得の調停処理を高速に行うことができる。
【００１１】
競合資源５０は、非同期的に動作する優先情報処理部１５０及び非優先情報処理部１６０−１〜Ｎの何れかから排他的に獲得される資源であり、例えば、優先情報処理部１５０及び非優先情報処理部１６０−１〜Ｎから共有され、当該資源が獲得された合計回数を格納するメモリ領域である。以下、このメモリ領域が排他的にアクセスされる必要性について説明する。
【００１２】
優先情報処理部１５０及び非優先情報処理部１６０−１〜Ｎの何れか１つが、競合資源を獲得した場合に、このメモリ領域からカウンタを読み出し、読み出したカウンタに１を加えた新たな値を生成し、当該新たな値をこのメモリ領域に書き込むインクリメント処理を行う場合に、このメモリ領域は、競合資源５０が獲得された合計回数を格納することができる。
しかし、このインクリメント処理と並行に、競合資源を獲得していない他の情報処理部にインクリメント処理を許可してしまうと、このメモリ領域は、競合資源５０が獲得された合計回数より少ない値を格納する場合がある。即ち、競合資源を獲得した情報処理部がカウンタを読み出した後、かつ新たな値を書き込む前に、他の情報処理部がインクリメント処理を開始し終了した場合に、他の情報処理部による書き込み結果は、競合資源を獲得した情報処理部による新たな値により上書され破棄されてしまう。従って、競合資源５０は、競合資源５０が獲得された合計回数を正しく保持するために、複数の情報処理部のそれぞれから排他的に獲得される必要がある。
なお、これに代えて、競合資源５０は、コンピュータ等に設けられた入出力デバイスであってもよいし、通信装置に接続された通信路であってもよいし、排他的に実行されるべき命令列であってもよい。即ち、競合資源５０は、複数の情報処理部から同時並行的に指示を受けた場合に、動作に障害を生ずる装置等であってもよい。
【００１３】
フラットロック格納部１００は、競合資源５０に対応付けて設けられ、何れの情報処理部が競合資源５０を獲得しているかを示す情報を格納している。フラットロック格納部１００は、優先情報処理部情報格納領域１１０と、優先排他権格納領域１２０と、非優先排他権格納領域１３０とを有する。
【００１４】
優先情報処理部情報格納領域１１０は、何れの情報処理部が優先情報処理部１５０かを示す優先情報処理部識別情報を格納する。例えば、優先情報処理部情報格納領域１１０は、何れの情報処理部も優先情報処理部１５０でない旨を示す匿名状態情報と、優先情報処理部１５０を識別する識別情報との何れか一方を格納する。
【００１５】
優先排他権格納領域１２０は、優先情報処理部１５０が競合資源５０の獲得を試みている旨を示す優先排他権情報として「ＬＯＣＫＥＤ」を格納する。一方、優先排他権格納領域１２０は、優先情報処理部１５０が競合資源５０の獲得を試みていない場合には、「ＵＮＬＯＣＫＥＤ」を格納する。
【００１６】
非優先排他権格納領域１３０は、非優先情報処理部１６０−１〜Ｎのうち何れが非優先排他権を獲得しているかを識別する非優先排他権情報として、非優先情報処理部１６０を識別する識別情報を格納する。一方、非優先排他権格納領域１３０は、非優先情報処理部１６０−１〜Ｎのうち何れも非優先排他権を獲得していない場合には、「ＮＯＢＯＤＹ」を格納する。
【００１７】
優先情報処理部設定部１４０は、優先情報処理部１５０及び非優先情報処理部１６０−１〜Ｎの何れかから優先情報処理部に設定する旨の指示を受けた場合に、当該指示の送信元でない他の情報処理部と排他的に、次の処理を行う。優先情報処理部設定部１４０は、優先情報処理部情報格納領域１１０に優先情報処理部１５０を識別する識別情報が格納されていない場合、即ち匿名状態情報が格納されている場合に、優先情報処理部設定部１４０に指示した当該情報処理部を識別する識別情報を優先情報処理部情報格納領域１１０に格納する。
【００１８】
非優先情報処理部１６０−１〜Ｎのそれぞれは、例えば、オペレーティングシステムや言語処理系により管理され互いに非同期的に動作し得る処理単位、即ちスレッド又はプロセスである。他の例として、非優先情報処理部１６０−１〜Ｎのそれぞれは、コンピュータの中央処理装置であってもよい。
非優先情報処理部１６０−１〜Ｎは、利用者により作成されたプログラム等から競合資源５０を獲得する旨の指示を受け取ると、競合資源５０を獲得する候補を示す非優先排他権を、第１の処理により互いに排他的に獲得する。例えば、非優先情報処理部１６０−１は、第１の処理として、非優先情報処理部１６０−２〜Ｎと排他的に次の処理を行う。非優先情報処理部１６０−１は、非優先排他権格納領域１３０に非優先排他権情報が未だ格納されていない場合、即ち、「ＮＯＢＯＤＹ」が格納されている場合において、非優先情報処理部１６０−１が予約排他権を獲得していることを示す非優先排他権情報を非優先排他権格納領域１３０に書き込む。
【００１９】
より詳細には、非優先情報処理部１６０−１は、上記第１の処理を、読み出し、判断、及び書き込みを他の情報処理部による処理の割り込みを受けることなく排他的に実行するＣｏｍｐａｒｅ  Ａｎｄ  Ｓｗａｐ命令などの不可分命令（アトミック命令）により行う。これに代えて、非優先情報処理部１６０−１は、第１の処理を、Ｔｅｓｔ  Ａｎｄ  Ｓｅｔ命令により実行してもよいし、メモリ書き込みに用いるバスをロックするＬＯＣＫ命令により実行してもよいし、読み出した値を格納していたメモリに他の情報処理部による書き込みが行われたか否かを判断する、例えばＭＩＰＳ（登録商標）プロセッサが備えるＬＬ命令及びＳＣ命令により実行してもよい。
【００２０】
また、非優先情報処理部１６０−１は、優先情報処理部情報格納領域１１０に匿名状態が格納されている場合に、非優先情報処理部１６０−１を優先情報処理部に設定する旨の指示を優先情報処理部設定部１４０に送る。非優先情報処理部１６０−２〜Ｎの動作は、非優先情報処理部１６０−１の動作と略同一であるので説明を省略する。
【００２１】
また、非優先情報処理部１６０−１は、利用者により作成されたプログラム等から競合資源５０を解放する旨の指示を受け取ると、非優先排他権格納領域１３０に「ＮＯＢＯＤＹ」を書き込むことにより、競合資源５０を解放する。なお、後述するモニター方式において競合資源５０を獲得するファット状態に移行中の場合、非優先情報処理部１６０−１は、必要に応じて、モニター方式により競合資源５０を一旦獲得し、解放する処理を行う。
【００２２】
また、非優先情報処理部１６０−１は、ファット状態の場合、競合資源５０を獲得する指示をモニター制御部１９０に送ることにより、競合資源５０を獲得する。同様に、非優先情報処理部１６０−１は、ファット状態において、競合資源５０を解放する指示をモニター制御部１９０に送ることにより、競合資源５０を解放する。
【００２３】
優先情報処理部１５０は、非優先情報処理部１６０−１〜Ｎのそれぞれと同様に、スレッド又はプロセス等の処理単位である。これらの優先情報処理部１５０の実現例は、非優先情報処理部１６０の実現例と略同一であるので説明を省略する。
優先情報処理部１５０は、非優先排他権を獲得した非優先情報処理部１６０と排他的に、第１の処理より処理時間が短い第２の処理を以下のように行うことにより、競合資源５０を獲得する。まず、優先情報処理部１５０は、「ＬＯＣＫＥＤ」を優先排他権格納領域１２０に格納する。そして、優先情報処理部１５０は、非優先排他権格納領域１３０に格納されている非優先排他権情報を読み出す。優先情報処理部１５０は、非優先排他権情報が既に格納されている場合、即ち、非優先情報処理部１６０−１〜Ｎの何れかが既に非優先排他権を獲得している場合に、優先排他権格納領域１２０から「ＬＯＣＫＥＤ」を取り除き「ＵＮＬＯＣＫＥＤ」とし、他の処理（例えば、競合資源５０の獲得を再び試みる処理）を行う。一方、優先情報処理部１５０は、非優先排他権情報が未だ格納されていない場合、即ち、非優先情報処理部１６０−１〜Ｎのうち何れも非優先排他権を獲得していない場合に、競合資源５０を獲得して競合資源５０を用いた処理を行う。
【００２４】
優先情報処理部１５０は、利用者により作成されたプログラム等から競合資源５０を解放する旨の指示を受け取ると、優先排他権格納領域１２０から「ＬＯＣＫＥＤ」を取り除き、「ＵＮＬＯＣＫＥＤ」にすることにより、競合資源５０を解放する。なお、ファット状態における競合資源５０の解放処理は、非優先情報処理部１６０−１と略同一であるので説明を省略する。
【００２５】
獲得可否判断部１７０は、情報処理部が行った第１の処理又は第２の処理により競合資源５０の獲得が失敗したか否かを判断する。獲得可否判断部１７０は、優先排他権格納領域１２０に「ＬＯＣＫＥＤ」が格納された場合に、非優先排他権格納領域１３０に非優先排他権が格納されているか否かを判断する。獲得可否判断部１７０は、非優先排他権格納領域１３０に非優先排他権が格納されていると判断した場合に、第１の処理による競合資源５０の獲得が失敗したと判断する。そして、獲得可否判断部１７０は、競合資源５０の獲得が失敗した旨を示す情報を優先情報処理部変更部１８０及びモニター制御部１９０に送る。
【００２６】
優先情報処理部変更部１８０は、競合資源５０の獲得が失敗した旨を示す情報を獲得可否判断部１７０から受け取ると、匿名状態情報を優先情報処理部情報格納領域１１０に格納することにより、優先情報処理部１５０を非優先情報処理部１６０に変更する。また、優先情報処理部変更部１８０は、優先情報処理部を変更する旨の指示を全停止部２１０から受け取ると、競合資源５０を獲得している情報処理部を、フラットロック格納部１００を参照することにより特定し、特定された当該情報処理部を優先情報処理部とする旨の情報をフラットロック格納部１００に書き込むことにより、当該情報処理部を優先情報処理部に変更する。優先情報処理部変更部１８０は、全停止部２１０により情報処理部の動作を停止した状態において、優先情報処理部に変更すべき情報処理部を決定するが、これに代えて、情報処理部の動作を停止することなく、定期的にフラットロック格納部１００を参照することにより、優先情報処理部に変更すべき情報処理部を決定してもよい。
【００２７】
モニター制御部１９０は、競合資源５０の獲得が失敗した旨を示す情報を獲得可否判断部１７０から受け取ると、以下に一例を示すモニター方式により、競合資源５０の獲得に対するその後の調停処理を行う。モニター方式において、ファットロック格納部２００は、競合資源５０を獲得すべく他の情報処理部による競合資源５０の解放を待機する全ての情報処理部の識別情報を記録している。即ち、モニター制御部１９０は、優先情報処理部１５０及び非優先情報処理部１６０−１〜Ｎの何れかから競合資源５０を獲得する指示を受け取ると、指示の送信元の情報処理部を識別する情報を、競合資源５０の解放を待機する情報処理部の識別情報としてファットロック格納部２００に登録する。排他制御装置１０は、待機しているこれらの情報処理部にＣＰＵ等の計算資源を割り当てないので、全体として効率的に計算資源を活用している状態にある。
そして、モニター制御部１９０は、競合資源５０を解放する旨の指示を情報処理部から受け取った場合に、競合資源５０を獲得すべく待機していた情報処理部のうち、所定の条件を満たす情報処理部、例えば、最初に待機を開始した情報処理部を選択して、選択した当該情報処理部に競合資源５０を獲得させる。
なお、モニター制御部１９０は、競合資源５０の獲得が失敗した旨を示す情報を獲得可否判断部１７０から受け取った場合に、以上で示した処理に代えて、他の任意のロック方式により競合資源５０の獲得に対するその後の調停処理を行ってもよい。例えば、排他制御装置１０を管理するオペレーティングシステムに標準で設けられているロック方式を用いてもよい。
【００２８】
このように、モニター制御部１９０は、情報処理部に競合資源５０の獲得を試みさせる場合に、ファットロック格納部２００内に待機状態等を登録するので、フラットロック格納部１００を用いた競合資源５０の獲得と比較して、獲得を試行してから獲得の可否判断の終了まで長い処理時間を要する。しかしながら、モニター制御部１９０は、競合資源５０を獲得すべく待機する情報処理部が比較的多い場合において、待機するこれらの情報処理部に計算資源を割り当てないので、全体として計算資源の使用効率を高めることができる。
【００２９】
以降の説明において、これらの特性に応じた名称として、フラットロック格納部１００を用いた競合資源５０の獲得をフラットロックと、ファットロック格納部２００を用いた競合資源５０の獲得をファットロックと呼称する。また、全ての情報処理部が競合資源５０を獲得すべくファットロックを用いる状態をファット状態又は重量モードと呼称し、全ての情報処理部が競合資源５０を獲得すべくフラットロックを用いる状態をフラット状態又は優先モードと呼称する。
なお、ファット状態において用いるロック方式は、上記のモニター方式に限定されない。モニター制御部１９０は、フラットロック格納部１００を用いた競合資源５０の獲得と比較して、競合の程度が所定以上高い場合、例えば競合の発生頻度が所定値以上の場合において、より高速に動作する方式により、競合資源５０を獲得させてもよい。
【００３０】
ファットロック格納部２００は、モニター制御部１９０により用いられるモニター方式に必要なデータを獲得する。ファットロック格納部２００は、代表的には、競合資源５０を獲得中の情報処理部を識別する情報と、何れの情報処理部が競合資源５０を獲得すべく待機しているかを示す情報とを格納している。例えば、ファットロック格納部２００は、競合資源５０を獲得すべく待機している情報処理部を示す情報を、待機を開始した順に、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）方式のキューに接続して管理してもよい。この場合、ファットロック格納部２００は、モニター制御部１９０からの指示に応じて、当該キューから情報処理部を示す情報を除いてもよいし、当該キューに情報処理部を示す情報を新たに追加してもよい。
【００３１】
全停止部２１０は、定期的に優先情報処理部１５０及び非優先情報処理部１６０−１〜Ｎの動作を停止する。例えば、排他制御装置１０がガーベージコレクション（ＧＣと略す）機能を用いてメモリ管理されている場合において、全停止部２１０は、ストップザワールド型ＧＣを行うために、定期的に優先情報処理部１５０及び非優先情報処理部１６０−１〜Ｎの動作を停止する。そして、全停止部２１０は、ＧＣを行わせると伴に、優先情報処理部の変更を行う旨の指示を優先情報処理部変更部１８０に送る。
【００３２】
このように、排他制御装置１０は、優先情報処理部１５０に競合資源５０を高速に獲得させることができるので、優先情報処理部１５０による競合資源５０の獲得頻度が他の情報処理部による獲得頻度より高い場合において、競合資源５０の獲得の調停処理を高速に行うことができる。
【００３３】
図２は、第１実施形態におけるフラットロック格納部１００の詳細を示す。フラットロック格納部１００は、優先情報処理部を識別する情報を格納する優先情報処理部情報格納領域１１０と、優先排他権情報を格納する優先排他権格納領域１２０と、非優先排他権情報を格納する非優先排他権格納領域１３０とを含む。優先情報処理部を識別する情報及び非優先排他権情報は、例えば、オペレーティングシステムにより管理される情報処理部のスレッドＩＤであってもよいし、排他制御装置１０を動作させる言語処理系により管理される情報処理部のスレッドＩＤであってもよい。また、優先排他権情報は、例えば、優先情報処理部１５０が競合資源５０の獲得を試行しているか否かを示す２値情報である。
【００３４】
図２（Ａ）は、競合資源５０が初期化された時点におけるフラットロック格納部１００の一例を示す。優先情報処理部情報格納領域１１０は、何れの情報処理部も優先情報処理部１５０でない旨を示す「匿名状態」を格納している。そして、優先排他権格納領域１２０は、優先情報処理部１５０が競合資源５０の獲得を試行していない旨を示す「ＵＮＬＯＣＫＥＤ」を格納している。そして、非優先排他権格納領域１３０は、何れの情報処理部も非優先排他権を獲得していない旨を示す「ＮＯＢＯＤＹ」を格納している。
【００３５】
図２（Ｂ）は、図２（Ａ）において、優先情報処理部設定部１４０により優先情報処理部１５０が設定された状態を示す。優先情報処理部情報格納領域１１０は、優先情報処理部１５０を識別する情報であるＩＤ１を格納している。図２（Ｃ）は、図２（Ｂ）において、優先情報処理部１５０により競合資源５０の獲得が試行された状態を示す。優先排他権格納領域１２０は、優先情報処理部１５０により競合資源５０の獲得が試行された旨を示す「ＬＯＣＫＥＤ」を格納している。図２（Ｄ）は、図２（Ｂ）において、非優先情報処理部１６０−１により非優先排他権が獲得された状態を示す。非優先排他権格納領域１３０は、ＩＤ２を格納している。このＩＤ２は、ＩＤ２という識別情報で識別される情報処理部、例えば、非優先情報処理部１６０−１によって、非優先排他権が獲得されている旨を示している。
【００３６】
図２（Ｅ）は、図２（Ｄ）において、優先情報処理部１５０により競合資源５０の獲得が試行された状態であり、図２（Ｃ）に示した状態において、非優先情報処理部１６０−１により非優先排他権が獲得された状態でもある。優先排他権格納領域１２０は、「ＬＯＣＫＥＤ」を格納しており、非優先排他権格納領域１３０は、非優先情報処理部１６０−１により非優先排他権が獲得されている旨を示す「ＩＤ２」を格納している。図２（Ｅ）の状態に至る２つの場合について順に説明する。
【００３７】
図２（Ｄ）に示した状態において、優先情報処理部１５０は、ユーザプログラムからの指示等に応じ、競合資源５０を獲得すべく、「ＬＯＣＫＥＤ」を優先排他権格納領域１２０に格納する。この時点での状態が図２（Ｅ）である。その後、優先情報処理部１５０は、非優先排他権格納領域１３０に格納されている非優先排他権情報を読み出す。優先情報処理部１５０は、非優先排他権情報が既に格納されている、即ち、非優先情報処理部１６０−１が既に非優先排他権を獲得していると判断する。そして、優先情報処理部１５０は、優先排他権格納領域１２０から「ＬＯＣＫＥＤ」を取り除き「ＵＮＬＯＣＫＥＤ」とすることにより、競合資源５０の獲得試行を撤回する（図２（Ｄ）の状態に戻る）。
【００３８】
図２（Ｃ）に示した状態において、非優先情報処理部１６０−１は、ユーザプログラム等から競合資源５０を獲得する旨の指示を受け取ると、非優先情報処理部１６０−２〜Ｎと排他的に、「ＩＤ２」を非優先排他権格納領域１３０に格納する。この時点での状態が図２（Ｅ）である。その後、非優先情報処理部１６０−１は、非優先排他権格納領域１３０に格納した「ＩＤ２」を取り除くことにより、非優先排他権を解放する（図２（Ｃ）の状態に戻る）。
【００３９】
このように、フラットロック格納部１００は、優先情報処理部１５０のみから書き込まれる優先排他権格納領域１２０と、非優先情報処理部１６０−１〜Ｎから書き込まれる非優先排他権格納領域１３０とをそれぞれ別個に有している。従って、優先情報処理部１５０は、他の情報処理部と排他的に優先排他権格納領域１２０への書き込みを行う必要がないので、高速に動作することができる。
【００４０】
図３は、第１実施形態において優先情報処理部１５０又は非優先情報処理部１６０が競合資源の獲得を試みる動作フローを示す。優先情報処理部１５０及び非優先情報処理部１６０−１〜Ｎのそれぞれは、本図から図６に示す動作フローに従い、同時並行的に動作し得る。また、本図において優先情報処理部１５０及び非優先情報処理部１６０−１〜Ｎは略同一に動作するので、以下の説明において、優先情報処理部１５０及び非優先情報処理部１６０−１〜Ｎを情報処理部と総称する。
【００４１】
情報処理部は、競合資源５０を獲得すべく、第１の処理及び／又は第２の処理により、フラットロックの獲得を試行する（Ｓ１００Ａ）。詳細については後述する。情報処理部は、フラットロックの獲得に成功した場合に（Ｓ１１０：ＹＥＳ）、競合資源５０を獲得し競合資源５０を用いた処理を行う（Ｓ１２０）。
【００４２】
一方、獲得可否判断部１７０が、フラットロックの獲得に失敗した場合に（Ｓ１１０：ＮＯ）、モニター制御部１９０は、ファットロックを獲得させるまで情報処理部を待機させる（Ｓ１３０）。情報処理部は、ファットロックを獲得した後に、ファット状態に移行したか否かを判断する（Ｓ１４０）。ファット状態に移行したか否かの判断の詳細は、Ｓ１７０の説明において後述する。情報処理部は、ファット状態に移行したと判断した場合に（Ｓ１４０：ＹＥＳ）、ファットロックにより競合資源５０を獲得し競合資源５０を用いた処理を行う（Ｓ１２０）。
【００４３】
一方、情報処理部は、ファット状態に未だ移行していないと判断した場合に（Ｓ１４０：ＮＯ）、フラットロックの獲得が失敗し、かつファット状態への移行が完了していない旨を示すフラットロック競合状態に設定する（Ｓ１５０）。例えば、情報処理部は、全ての情報処理部からアクセス可能なメモリ上の所定の領域に、フラットロック競合状態である旨の情報を書き込むことにより、フラットロック競合状態に設定する。
【００４４】
続いて、情報処理部は、第１の処理及び／又は第２の処理により、フラットロックの獲得を試行する（Ｓ１００Ｂ）。情報処理部は、フラットロックの獲得に成功した場合に（Ｓ１６０：ＹＥＳ）、ファット状態に設定し（Ｓ１７０）、Ｓ１４０に戻る。Ｓ１７０の詳細については後述する。
【００４５】
一方、情報処理部は、フラットロックの獲得に失敗した場合に（Ｓ１６０：ＮＯ）、ロックの状態変更通知を他の情報処理部から受け取るまで、既にＳ１３０で獲得していたファットロックを解放し待機する（Ｓ１８０）。その後、情報処理部は、ロックの状態変更通知を他の情報処理部から受け取った場合に、ファットロックを再び獲得してＳ１４０の処理に戻る。
【００４６】
このように、排他制御装置１０は、フラットロック及びファットロックの双方を獲得した情報処理部により、フラット状態からファット状態への移行処理を行わせる。従って、排他制御装置１０は、フラットロックからファットロックへの移行過程において、フラットロック及びファットロックの双方が競合資源５０を獲得するためのロックとして共存する混乱等を避けることができる。
【００４７】
図４は、図３におけるＳ１００Ａ及びＢの詳細を示す動作フローを示す。Ｓ１００を実行する情報処理部は、当該情報処理部が優先情報処理部１５０であると判断した場合に（Ｓ２００：ＹＥＳ）、優先排他権格納領域１２０に「ＬＯＣＫＥＤ」を格納する（Ｓ２１０）。そして、優先情報処理部１５０は、非優先排他権情報が非優先排他権格納領域１３０に格納されていない場合、即ち、「ＮＯＢＯＤＹ」が格納されている場合に（Ｓ２２０：ＮＯ）、競合資源５０を獲得し（Ｓ２４０）、処理を終了する。
【００４８】
一方、非優先排他権情報が既に非優先排他権格納領域１３０に格納されている場合（Ｓ２２０：ＹＥＳ）、即ち、非優先情報処理部１６０−１〜Ｎの何れかが既に非優先排他権を獲得している場合に、獲得可否判断部１７０は、優先排他権格納領域１２０に格納した「ＬＯＣＫＥＤ」を取り除く（Ｓ２５０）。そして、優先情報処理部変更部１８０は、匿名状態情報を優先情報処理部情報格納領域１１０に格納することにより匿名状態に設定し（Ｓ２６０）、競合資源５０を獲得させず（Ｓ２７０）、処理を終了する。
【００４９】
一方、Ｓ１００を実行する情報処理部は、当該情報処理部が非優先情報処理部の何れか（例えば、非優先情報処理部１６０−１）であると判断した場合に（Ｓ２００：ＮＯ）、優先情報処理部情報格納領域１１０に格納される優先情報処理部情報が匿名状態を示すか否かを判断する（Ｓ２８０）。優先情報処理部情報が匿名状態を示す場合に（Ｓ２８０：ＹＥＳ）、優先情報処理部設定部１４０は、他の非優先情報処理部とは排他的に、非優先情報処理部１６０−１を優先情報処理部に設定する処理、即ち、非優先情報処理部１６０−１が優先情報処理部である旨の優先情報処理部情報を、優先情報処理部情報格納領域１１０に書き込む処理を行い（Ｓ２９０）、Ｓ２００に戻る。即ち、優先情報処理部設定部１４０は、初期化されてから初めて競合資源５０を獲得した情報処理部を、優先情報処理部１５０に設定し、優先情報処理部１５０を除く他の情報処理部を非優先情報処理部１６０と設定する。
【００５０】
優先情報処理部情報が匿名状態でない場合に（Ｓ２８０：ＮＯ）、非優先情報処理部１６０−１は、他の非優先情報処理部と排他的に、非優先排他権を獲得する処理を行う（Ｓ３００）。
【００５１】
非優先排他権の獲得に失敗した場合に（Ｓ３１０：ＮＯ）、非優先情報処理部１６０−１は、競合資源５０を獲得できず（Ｓ２７０）、処理を終了する。一方、非優先排他権の獲得に成功した場合に（Ｓ３１０：ＹＥＳ）、非優先情報処理部１６０−１は、優先排他権格納領域１２０に「ＬＯＣＫＥＤ」が既に格納されているか否かを判断する（Ｓ３２０）。「ＬＯＣＫＥＤ」が格納されていない場合に（Ｓ３２０：ＮＯ）、非優先情報処理部１６０−１は、競合資源５０を獲得し（Ｓ２４０）、処理を終了する。一方、「ＬＯＣＫＥＤ」が格納されている場合に（Ｓ３２０：ＹＥＳ）、非優先情報処理部１６０−１は、非優先排他権を示す情報を優先排他権格納領域１２０から除去し（Ｓ３３０）、競合資源５０を獲得できず（Ｓ２７０）、処理を終了する。
【００５２】
このように、非優先情報処理部１６０−１は、第１の処理として、他の非優先情報処理部と排他的に、非優先排他権情報が既に格納されていない場合において当該非優先情報処理部が予約排他権を獲得していることを示す非優先排他権情報を格納する処理（例えば、Ｓ２００、Ｓ２８０、Ｓ３００、Ｓ３１０、Ｓ３２０、及びＳ２４０）を行う。一方、優先情報処理部１５０は、第１の処理より処理時間の短い第２の処理として、「ＬＯＣＫＥＤ」を優先排他権格納領域１２０に格納する処理（例えば、Ｓ２００、Ｓ２１０、Ｓ２２０、及びＳ２４０）により、競合資源５０を獲得することができる。
【００５３】
図５は、図３におけるＳ１７０の詳細を示す動作フローを示す。情報処理部は、フラットロック競合状態をリセットする（Ｓ４００）。そして、情報処理部は、ロック状態変更通知が届くのを待っている（例えば、図３のＳ１８０）全ての情報処理部に、ロックの状態変更を通知する（Ｓ４１０）。そして、情報処理部は、競合資源５０をファット状態に設定する（Ｓ４２０）。
【００５４】
ファット状態に設定する処理とは、例えば、競合資源５０を獲得し得る全ての情報処理装置からアクセス可能な、競合資源５０に対応付けて設けられたメモリ上の所定の領域（例えばフラットロック格納部１００内）に、ファット状態を示す情報を書き込む処理である。したがって、他の情報処理装置は、当該所定の領域を参照することによって、現在ファット状態であるか否かを判断することができる（例えば、図３のＳ１４０）。
【００５５】
図６は、優先情報処理部１５０又は非優先情報処理部１６０が競合資源５０を解放する動作フローを示す。まず、情報処理部は、フラットロック格納部１００を参照することにより、フラット状態であるか否かを判断する（Ｓ５００）。フラット状態でないと判断した場合に（Ｓ５００：ＮＯ）、情報処理部は、ファット状態からフラット状態に移行する条件を満たすか否か、例えば、競合資源５０を獲得すべく待機する情報処理部がないか否かを判断する（Ｓ５１０）。
【００５６】
ファット状態からフラット状態に移行する条件を満たさない場合に（Ｓ５１０：ＮＯ）、情報処理部は、モニター制御部１９０を用いて、ファットロックを解放する処理を行う（Ｓ５２０）。一方、ファット状態からフラット状態に移行する条件を満たす場合に（Ｓ５１０：ＹＥＳ）、情報処理部は、フラットロック格納部１００を初期化し（Ｓ５３０）、競合資源５０の獲得状態をフラット状態に設定する（Ｓ５４０）。
なお、情報処理部は、フラットロック格納部１００を初期化する場合に、優先情報処理部を匿名状態に設定してもよい。この場合、情報処理部は、フラットロックに移行した後初めて競合資源５０を獲得する情報処理部を、優先情報処理部１５０とすることができる。
【００５７】
一方、フラット状態であると判断した場合に（Ｓ５００：ＹＥＳ）、情報処理部は、フラットロックを解放する処理、例えば、競合資源５０を解放した旨の情報を優先排他権格納領域１２０又は非優先排他権格納領域１３０に格納する処理を行う（Ｓ５５０）。続いて、情報処理部は、フラットロック競合状態に設定されているか否かを判断する（Ｓ５６０）。フラットロック競合状態に設定されていない場合に（Ｓ５６０：ＮＯ）、解放処理を終了する。一方、フラットロック競合状態に設定されている場合に、情報処理部は、ファットロックの獲得を試行する。そして、情報処理部は、ファットロックを獲得した場合に（Ｓ５７０：ＹＥＳ）、再び、フラットロック競合状態に設定されているか否かを判断する（Ｓ５８０）。フラットロック競合状態に設定されている場合に（Ｓ５８０：ＹＥＳ）、情報処理部は、ロック状態変更通知が届くのを待っている他の情報処理部の何れかに、ロックの状態変更を通知する（Ｓ５９０）。続いて、情報処理部は、ファットロックを解放する（Ｓ５２０）。
【００５８】
このように、排他制御装置１０は、フラットロックからファットロックへの移行過程であるフラットロック競合状態の場合には、フラットロック及びファットロックの双方を一旦獲得してから、双方のロックを解放する。したがって、フラットロック及びファットロックの双方が競合資源５０を獲得するためのロックとして共存する過渡状態であっても、適切に競合資源５０を解放することができる。
【００５９】
（変形例）
図７は、第１実施形態の変形例における排他制御装置１０の機能ブロック図を示す。本図における排他制御装置１０は、図１に示した排他制御装置１０と略同一の構成をとるので、相違点のみを説明する。排他制御装置１０は、図１に示した排他制御装置１０とは異なり、優先情報処理部設定部１４０、優先情報処理部変更部１８０、モニター制御部１９０、ファットロック格納部２００、及び全停止部２１０を備えなくともよい。また、本図におけるフラットロック格納部１００は、図１のフラットロック格納部１００における、優先情報処理部情報格納領域１１０に代えて領域利用種別格納領域１１５を、優先排他権格納領域１２０に代えて排他権格納領域１２５を、予備排他権格納領域１３０に代えて情報処理部識別情報格納領域１３５を、それぞれ有してもよい。ここで、排他権格納領域１２５とは、本発明に係る優先排他権格納領域の一例であり、情報処理部識別情報格納領域１３５とは、本発明に係る非優先排他権格納領域の一例である。
【００６０】
情報処理部識別情報格納領域１３５は、優先情報処理部情報及び非優先排他権情報の何れか一方を格納する。そして、領域利用種別格納領域１１５は、情報処理部識別情報格納領域１３５が優先情報処理部情報及び非優先排他権情報の何れを格納するかを示す領域利用種別情報を格納する。なお、領域利用種別情報が２値情報であるので、領域利用種別格納領域１１５は、図１における優先情報処理部情報格納領域１１０に比べサイズが小さい。
【００６１】
優先情報処理部１５０は、「ＬＯＣＫＥＤ」を排他権格納領域１２５に格納することにより競合資源５０を獲得し、「ＬＯＣＫＥＤ」を排他権格納領域１２５から取り除くことにより競合資源５０を解放する。優先情報処理部１５０が「ＬＯＣＫＥＤ」を排他権格納領域１２５に格納した場合に、情報処理部識別情報格納領域１３５が優先情報処理部１５０の識別情報を格納していない場合には、獲得可否判断部１７０は、排他権格納領域１２５に「ＵＮＬＯＣＫＥＤ」を書き込むことにより、優先情報処理部１５０による競合資源５０の獲得を撤回する。
【００６２】
非優先情報処理部１６０は、他の情報処理装置と排他的にフラットロック格納部１００へのアクセス権を獲得し、次の処理を行う。非優先情報処理部１６０は、排他権格納領域１２５に「ＬＯＣＫＥＤ」が格納されていない場合に、情報処理部識別情報格納領域１３５に非優先情報処理部１６０の識別情報を格納し、排他権格納領域１２５に「ＬＯＣＫＥＤ」を格納する。そして、非優先情報処理部１６０は、非優先排他権情報が格納される旨を示す領域利用種別情報を、領域利用種別格納領域１１５に格納する。
【００６３】
このように、優先情報処理部１５０は、優先情報処理部１５０のみが競合資源５０を獲得する場合においては、排他権格納領域１２５への書き込みにより高速に競合資源５０を獲得する。一方、非優先情報処理部１６０は、一旦競合資源５０の獲得に成功すると、情報処理部識別情報格納領域１３５に非優先排他権情報を格納させることにより、他の非優先情報処理部と排他的に競合資源５０を獲得する。この場合、優先情報処理部１５０は、当初有していた優先的な競合資源５０の獲得権を失い、非優先情報処理部１６０と同様、非優先排他権を獲得することにより競合資源５０を獲得する。
【００６４】
図８は、第１実施形態の変形例におけるフラットロック格納部１００の詳細を示す。フラットロック格納部１００は、領域利用種別を格納する領域利用種別格納領域１１５と、優先排他権情報を格納する排他権格納領域１２５と、非優先排他権情報を格納する情報処理部識別情報格納領域１３５とを含む。領域利用種別情報は、情報処理部識別情報格納領域１３５が優先情報処理部情報及び非優先排他権情報の何れを格納するかを示す２値情報である。即ち、領域利用種別格納領域１１５のサイズは、例えば１ビットである。
【００６５】
図８（Ａ）は、競合資源５０が初期化された時点におけるフラットロック格納部１００の一例を示す。領域利用種別格納領域１１５は、情報処理部識別情報格納領域１３５が優先情報処理部情報を格納する旨を示す「優先情報処理部」を格納している。そして、排他権格納領域１２５は、優先情報処理部１５０が競合資源５０の獲得を試行していない旨を示す「ＵＮＬＯＣＫＥＤ」を格納している。そして、情報処理部識別情報格納領域１３５は、優先情報処理部１５０を識別する情報として「ＩＤ１」を格納している。
【００６６】
図８（Ｂ）は、図８（Ａ）において、優先情報処理部１５０により競合資源５０の獲得が試行された状態を示す。排他権格納領域１２５は、優先情報処理部１５０により競合資源５０の獲得が試行された旨を示す「ＬＯＣＫＥＤ」を格納している。
【００６７】
図８（Ｃ）は、図８（Ａ）において、非優先情報処理部１６０−１により非優先排他権が獲得された後の状態を示す。領域利用種別格納領域１１５は、情報処理部識別情報格納領域１３５が非優先排他権情報を格納する旨を示す「非優先排他権」を格納している。情報処理部識別情報格納領域１３５は、非優先情報処理部１６０−１により非優先排他権が獲得された旨を示すべく、非優先情報処理部１６０−１を識別する情報であるＩＤ２を格納している。
ここで、非優先情報処理部１６０−１は、図８（Ａ）から図８（Ｃ）の状態に変化させるべく、他の情報処理部と排他的に以下の処理を行う。まず、非優先情報処理部１６０−１は、情報処理部識別情報格納領域１３５に、何れの情報処理部も競合資源５０を獲得していない旨を示す「ＮＯＢＯＤＹ」が格納され、かつ排他権格納領域１２５に「ＵＮＬＯＣＫＥＤ」が格納されているか判断する。そして、当該判断が正しい場合に、情報処理部識別情報格納領域１３５にＩＤ２を格納し、排他権格納領域１２５に「ＬＯＣＫＥＤ」を格納する。これらの一連の処理は、Ｃｏｍｐａｒｅ  Ａｎｄ  Ｓｗａｐ命令等を用いて他の情報処理部と排他的に行われることが望ましい。Ｃｏｍｐａｒｅ  Ａｎｄ  Ｓｗａｐ  命令が、メモリ上の１ワードに対してのみ適用可能であっても、本実施形態に示すように、排他権格納領域１２５及び情報処理部識別情報格納領域１３５を連続した領域とすることにより、非優先情報処理部１６０−１は、適切に非優先排他権の獲得処理を行うことができる。
【００６８】
図８（Ｄ）は、図８（Ｃ）において、非優先情報処理部１６０−１により非優先排他権が解放された後の状態を示す。情報処理部識別情報格納領域１３５は、「ＮＯＢＯＤＹ」を格納している。
【００６９】
このように、本例におけるフラットロック格納部１００は、図１におけるフラットロック格納部１００と比べて、サイズが小さい。従って、排他制御装置１０は、図１と同様に、優先情報処理部１５０を非優先情報処理部１６０より高速に動作させつつ、図１における排他制御装置１０と比べてサイズの小さい記憶領域を用いて、競合資源５０の獲得を適切に調停できる。
【００７０】
図９は、第１実施形態の変形例において優先情報処理部１５０又は非優先情報処理部１６０が競合資源の獲得を試みる動作フローを示す。本フローにおいては、優先情報処理部１５０及び非優先情報処理部１６０の双方が略同一に動作する部分があるので、当該部分においては、優先情報処理部１５０及び非優先情報処理部１６０を情報処理部と総称する。
【００７１】
競合資源５０の獲得を試みる場合に、情報処理部は、情報処理部識別情報格納領域１３５が当該情報処理部を識別するＩＤを格納するか否かを判断する（Ｓ６００）。情報処理部識別情報格納領域１３５が当該情報処理部を識別するＩＤを格納する場合に（Ｓ６００：ＹＥＳ）、優先情報処理部１５０は、「ＬＯＣＫＥＤ」を排他権格納領域１２５に格納する。そして、優先情報処理部１５０は、情報処理部識別情報格納領域１３５を再び読出し、情報処理部識別情報格納領域１３５内の情報がＳ６００の時点と比較して不変であると判断した場合に（Ｓ６２０：ＹＥＳ）、競合資源５０の獲得に成功し（Ｓ６３０）、処理を終了する。一方、優先情報処理部１５０は、情報処理部識別情報格納領域１３５内の情報がＳ６００の時点と比較して変化したと判断した場合に（Ｓ６２０：ＮＯ）、「ＬＯＣＫＥＤ」を排他権格納領域１２５から取り除き「ＵＮＬＯＣＫＥＤ」とし、競合資源５０の獲得に失敗し（Ｓ６５０）、処理を終了する。
【００７２】
情報処理部識別情報格納領域１３５が当該情報処理部を識別するＩＤを格納しない場合に（Ｓ６００：ＮＯ）、非優先情報処理部１６０は、情報処理部識別情報格納領域１３５に「ＮＯＢＯＤＹ」以外のＩＤが格納されているか否かを判断する（Ｓ６６０）。非優先情報処理部１６０は、情報処理部識別情報格納領域１３５に「ＮＯＢＯＤＹ」以外のＩＤが格納されている場合に（Ｓ６６０：ＹＥＳ）、他の非優先情報処理部と排他的に、非優先排他権の獲得を試行する（Ｓ６７０）。獲得に失敗した場合に（Ｓ６８０：ＮＯ）、情報処理部は、競合資源５０の獲得に失敗し（Ｓ６５０）、処理を終了する。一方、非優先排他権の獲得に成功した場合に（Ｓ６８０：ＹＥＳ）、情報処理部は、情報処理部識別情報格納領域１３５が非優先排他権情報を格納する旨を領域利用種別格納領域１１５に格納し（Ｓ６９０）、競合資源５０の獲得に成功し（Ｓ６３０）、処理を終了する。
【００７３】
非優先情報処理部１６０は、情報処理部識別情報格納領域１３５に「ＮＯＢＯＤＹ」が格納されている場合に（Ｓ６６０：ＮＯ）、他の非優先情報処理部と排他的に、非優先排他権の獲得を試行する（Ｓ７００）。獲得に失敗した場合に（Ｓ７１０：ＮＯ）、非優先情報処理部１６０は、競合資源５０の獲得に失敗し（Ｓ７３０）、処理を終了する。一方、非優先排他権の獲得に成功した場合に（Ｓ７１０：ＹＥＳ）、非優先情報処理部１６０は、競合資源５０の獲得に成功し（Ｓ７２０）、処理を終了する。情報処理部は、以上で示した動作を、競合資源５０の獲得に成功するまで繰り返し行うスピンロック方式により動作してもよいし、競合資源５０の獲得に失敗した場合に、他の方式のロックに移行する処理を行ってもよい。
【００７４】
このように、優先情報処理部１５０のみが競合資源５０を獲得している時点において、排他制御装置１０は、フラットロック格納部１００への書き込みにより、優先情報処理部１５０に競合資源５０を獲得させるので、高速に動作する。一方、非優先情報処理部１６０が競合資源５０を獲得した場合であっても、排他制御装置１０は、競合資源５０の獲得を適切に調停することができる。
【００７５】
（第２実施形態）
図１０は、第２実施形態における排他制御装置２０の機能ブロック図を示す。排他制御装置２０は、競合資源６０と、資源情報格納領域３００と、第１のスレッドの一例である優先情報処理部３４０と、第２のスレッドの一例である非優先情報処理部３５０−１〜Ｎと、実行状態取得通知部３９０と、モニター制御部４１０とを備える。排他制御装置２０は、優先情報処理部３４０及び非優先情報処理部３５０−１〜Ｎによる競合資源６０の獲得を調停することを目的とする。
【００７６】
競合資源６０は、非同期的に動作する非優先情報処理部３５０及び優先情報処理部停止部３６０−１〜Ｎの何れかから排他的に獲得される資源である。その他、競合資源６０の詳細は、図１で説明した競合資源５０と略同一であるので説明を省略する。
【００７７】
資源情報格納領域３００は、優先権情報フィールド３１０と、再帰獲得段階フィールド３２０と、方式種別フィールド３３０とを有する。優先権情報フィールド３１０は、優先情報処理部が存在する旨を示す優先権情報を格納する。例えば、優先権情報とは、優先情報処理部を識別する情報（スレッドＩＤ等）である。また、優先権情報フィールド３１０は、優先情報処理部が設定されていない場合に、優先情報処理部が設定されていない旨を示す匿名状態情報を格納する。再帰獲得段階フィールド３２０は、複数の情報処理部のいずれかにより競合資源６０が獲得されているか否かを示す資源情報を格納する。方式種別フィールド３３０は、競合資源６０を獲得するために資源情報格納領域３００を用いる優先モードであるか、又はモニター制御部４１０を用いる通常モードであるかを識別する方式種別情報を格納する。
【００７８】
優先情報処理部３４０は、優先情報処理部３４０は、方式種別フィールド３３０に格納されている方式種別情報が優先モードを示す場合には、以下の処理を行う。まず、優先情報処理部３４０は、本発明に係る第２の処理の一例として、優先権情報フィールド３１０の内容を読出し、優先権情報が格納されている場合に、資源情報を再帰獲得段階フィールド３２０に書き込む処理を行うことにより、競合資源６０を獲得する。一方、匿名状態情報が格納されている場合に、優先情報処理部３４０は、当該優先情報処理部３４０を識別する情報を優先権情報フィールド３１０に排他的に書き込む。
一方、優先情報処理部３４０は、方式種別フィールド３３０に格納されている方式種別情報が通常モードを示す場合には、上記処理に代えて、競合資源６０の獲得を試行する旨をモニター制御部４１０に通知することにより競合資源６０を獲得する。
【００７９】
また、優先情報処理部３４０は、方式種別フィールド３３０に格納されている方式種別情報が優先モードを示す場合には、再帰獲得段階フィールド３２０から資源情報を取り除くことにより競合資源６０を解放する。一方、方式種別フィールド３３０に格納されている方式種別情報が通常モードを示す場合には、競合資源６０の解放指示をモニター制御部４１０に送ることにより、競合資源６０を解放する。
【００８０】
非優先情報処理部３５０−１は、優先情報処理部停止部３６０と、優先権除去部３７０と、過渡状態判断部３８０と、実行状態設定部４００とを有する。非優先情報処理部３５０−１が競合資源６０を獲得する場合に、まず、優先情報処理部停止部３６０は、優先情報処理部３４０を停止させる。そして、優先情報処理部停止部３６０は、優先情報処理部３４０を停止させた旨を優先権除去部３７０及び過渡状態判断部３８０に通知する。
例えば、情報処理部がスレッドである場合には、優先情報処理部停止部３６０は、スレッドサスペンド関数を呼び出すことにより、優先情報処理部３４０を停止させてもよい。これに代えて、優先情報処理部３４０に予め割り込みハンドラを設けておき、優先情報処理部停止部３６０は、優先情報処理部３４０に対して割り込み処理を行うことにより、優先情報処理部３４０の処理を中断させてもよい。この場合、優先権除去部３７０、過渡状態判断部３８０、実行状態設定部４００による処理は、優先情報処理部３４０の割り込みハンドラ内で行われてもよい。
【００８１】
優先権除去部３７０は、優先情報処理部３４０を停止させた旨を優先情報処理部停止部３６０から受け取った場合に、非優先排他権の一例である、資源情報格納領域３００への排他的なアクセス権を獲得する。そして、優先権除去部３７０は、優先権情報を優先権情報フィールド３１０から取り除き、モニター制御部４１０に用いられる情報を優先権情報フィールド３１０及び再帰獲得段階フィールド３２０に格納し、通常モードである旨を示す方式種別情報を方式種別フィールド３３０に格納する。
【００８２】
過渡状態判断部３８０は、優先情報処理部３４０を停止させた旨を優先情報処理部停止部３６０から受け取った場合に、優先情報処理部３４０の実行状態を取得する指示を実行状態取得通知部３９０に送る。そして、過渡状態判断部３８０は、実行状態取得通知部３９０から受け取った実行状態に基づいて、停止している優先情報処理部３４０が第２の処理を実行中である、即ちＣｏｍｐａｒｅ  Ａｎｄ  Ｓｗａｐ命令等の不可分命令を用いることなく、競合資源６０を獲得又は解放の処理中とと判断した場合に、判断結果を実行状態設定部４００に送る。
【００８３】
実行状態取得通知部３９０は、優先情報処理部３４０の実行状態を取得する指示を過渡状態判断部３８０から受け取ると、優先情報処理部３４０の実行状態、例えば、優先情報処理部３４０におけるプログラムの実行位置を示す実行位置情報を、優先情報処理部３４０から取得し、過渡状態判断部３８０に送ることにより非優先情報処理部３５０に通知する。実行位置情報とは、例えば、優先情報処理部３４０におけるプログラムカウンタである。これに代えて、実行状態取得通知部３９０は、優先情報処理部３４０により実行中の関数を識別する情報を取得してもよいし、優先情報処理部３４０における所定のレジスタの値を取得してもよい。
【００８４】
実行状態設定部４００は、優先情報処理部３４０が第２の処理を実行中であることを示す判断結果を過渡状態判断部３８０から受け取った場合に、優先情報処理部３４０の実行状態を、第２の処理により競合資源６０を獲得しない状態に設定する。例えば、実行状態設定部４００は、優先情報処理部３４０が優先権情報フィールド３１０の内容を読出す前の状態に設定する。そして、実行状態設定部４００は、優先情報処理部３４０の動作を再開させる。
【００８５】
優先権除去部３７０及び実行状態設定部４００による処理が終了した場合に、非優先情報処理部３５０−１は、競合資源６０の獲得を試行する旨をモニター制御部４１０に通知することにより競合資源６０の獲得を試行する。一方、非優先情報処理部３５０−１は、競合資源６０の解放指示をモニター制御部４１０に通知することにより競合資源６０を解放する。なお、非優先情報処理部３５０−２〜Ｎの動作は、それぞれ非優先情報処理部３５０−１と略同一であるので説明を省略する。
【００８６】
モニター制御部４１０は、競合資源６０の獲得を試行する旨の通知を優先情報処理部３４０及び非優先情報処理部３５０−１〜Ｎのそれぞれから受け取ると、優先情報処理部３４０及び非優先情報処理部３５０−１〜Ｎの何れかに競合資源６０を獲得させる。この場合、モニター制御部４１０は、必要に応じて、優先権情報フィールド３１０及び再帰獲得段階フィールド３２０を用いる。また、モニター制御部４１０は、競合資源６０の解放指示を優先情報処理部３４０及び非優先情報処理部３５０−１〜Ｎのそれぞれから受け取ると、競合資源６０を解放し、競合資源６０を獲得すべく待機している他の情報処理部に競合資源６０を獲得させる。モニター制御部４１０が競合資源６０の獲得を調停する処理の一例は、図１におけるモニター制御部１９０と略同一であるので説明を省略する。
【００８７】
このように、排他制御装置２０は、優先情報処理部３４０のみが競合資源６０の獲得を試行する場合には、処理時間の長いＣｏｍｐａｒｅ  Ａｎｄ  Ｓｗａｐ命令等の不可分命令を用いることなく、資源情報格納領域３００からの読出し及び資源情報格納領域３００への書き込みにより、競合資源６０を獲得させることができる。従って、排他制御装置２０は、競合資源６０の獲得及び解放を高速に行わせることができる。
そして、排他制御装置２０は、非優先情報処理部３５０が競合資源６０の獲得を試行する場合には、競合資源６０への排他アクセスを保証すべく、競合資源６０の獲得の調停を行うことができる。
【００８８】
図１１は、第２実施形態における資源情報格納領域３００の詳細を示し、図１１（Ａ）は、競合資源６０が初期化された場合等における資源情報格納領域３００の初期状態を示す。優先権情報フィールド３１０は、優先権情報が設定されていない旨、即ち匿名状態情報を示す「０」を格納している。再帰獲得段階フィールド３２０は、競合資源６０が獲得されていない旨を示す「０」を格納している。方式種別フィールド３３０は、優先モードである旨を示す「１」を格納している。
【００８９】
図１１（Ｃ）は、図１１（Ａ）において、優先情報処理部３４０が競合資源６０を獲得した状態を示す。優先情報処理部３４０は、当該優先情報処理部３４０を識別する情報である「Ａ」を優先権情報フィールド３１０に書き込む。そして、優先情報処理部３４０は、競合資源６０を獲得した旨を示す「１」を再帰獲得段階フィールド３２０に書き込む。なお、図（Ｃ’）から図（Ｃ’’）に示すように、優先情報処理部３４０は、既に獲得した競合資源６０を更に再帰的に獲得してもよい。
【００９０】
図１１（Ｂ）は、図１１（Ｃ）において、優先情報処理部３４０が競合資源６０を解放した状態を示す。優先情報処理部３４０は、競合資源６０が獲得されていない旨を示す「０」を再帰獲得段階フィールド３２０に書き込むことにより、競合資源６０を解放する。なお、特定の情報処理部により頻繁に競合資源６０が獲得されることが予め予測される場合においては、図１１（Ｂ）に示す状態を資源情報格納部３００の初期状態に設定してもよい。また、競合資源６０の獲得における競合が起こりやすいことが予め予測される場合においては、図１１（Ｄ）に示す状態を資源情報格納部３００の初期状態に設定してもよい。
【００９１】
このように、優先情報処理部３４０のみが競合資源６０の獲得を試行している状態である予約状態において、優先情報処理部３４０は、再帰獲得段階フィールド３２０内の数値を書き換えることにより、競合資源６０の獲得及び解放の処理を行うことができる。そして、この場合、優先情報処理部３４０は、他の情報処理部と排他的に資源情報格納領域３００にアクセスできることが保証されているので、処理時間の長いＣｏｍｐａｒｅ  Ａｎｄ  Ｓｗａｐ命令等を用いることなく、これらの命令より処理時間の短い読み出し及び書き込み命令により競合資源６０を獲得することができる。
【００９２】
図１１（Ｄ）は、図１１（Ｂ）又は図１１（Ｃ）において、非優先情報処理部３５０−１が競合資源６０の獲得を試行した状態を示す。競合資源６０の獲得を試行する場合に、非優先情報処理部３５０−１は、資源情報格納領域３００への排他アクセス権を獲得する。競合資源６０の獲得を試行しうる他の非優先情報処理部と、通常モードへの移行処理を重複して行うことを避けるためである。
【００９３】
優先権除去部３７０は、通常モードである旨を示す方式種別情報、即ち「０」を方式種別フィールド３３０に格納し、通常モードにおいてモニター制御部４１０により用いられるモニター情報を優先権情報フィールド３１０及び再帰獲得段階フィールド３２０に格納する。これに代えて、通常モードにおいて用いられる情報のサイズが、優先権情報フィールド３１０及び再帰獲得段階フィールド３２０の合計サイズより大きい場合には、優先権除去部３７０は、通常モードにおいて用いられるモニター情報を格納するモニター構造体を、メモリ内の所定の領域に生成し、当該モニター構造体の所在を示す情報を優先権情報フィールド３１０及び再帰獲得段階フィールド３２０に格納してもよい。
【００９４】
図１２は、第２実施形態において、優先情報処理部３４０又は非優先情報処理部３５０が競合資源の獲得を試みる動作フローを示す。本図において、優先情報処理部３４０及び非優先情報処理部３５０のそれぞれが略同一に動作する部分があるので、当該部分においては、優先情報処理部３４０及び非優先情報処理部３５０のそれぞれを情報処理部と総称する。競合資源６０を獲得する指示を受けると、まず、情報処理部は、資源情報格納領域３００を読み出す（Ｓ８００）。読み出した情報に基づいて、情報処理部は、競合資源６０の獲得方式が通常モードに設定されていると判断した場合に（Ｓ８１０：ＮＯ）、モニター制御部４１０を用いたモニター方式により競合資源６０の獲得を試行する（Ｓ８２０）。
【００９５】
一方、情報処理部は、競合資源６０の獲得方式が優先モードに設定されていると判断した場合に（Ｓ８１０：ＹＥＳ）、優先権情報フィールド３１０が匿名状態情報を格納しているか否かを判断する（Ｓ８３０）。匿名状態情報が格納されている場合に（Ｓ８３０：ＹＥＳ）、情報処理部は、他の情報処理部と排他的に、当該情報処理部が優先情報処理部３４０である旨を示す優先権情報と、当該情報処理部が競合資源６０を獲得した旨を示す資源情報とを、資源情報格納領域３００に書き込み試行する（Ｓ８４０）。即ち、排他制御装置２０は、競合資源６０を初めて獲得した情報処理部を、優先情報処理部３４０に設定し、優先情報処理部３４０を除く他の情報処理部を非優先情報処理部３５０と設定する。優先権情報及び資源情報の書き込みに成功した場合に（Ｓ８５０：ＹＥＳ）、情報処理部は、競合資源６０を獲得し（Ｓ８６０）、競合資源６０を用いた他の処理を行う。優先権情報及び資源情報の書き込みに失敗した場合に（Ｓ８５０：ＮＯ）、情報処理部は、処理をＳ８００に戻す。
【００９６】
優先権情報フィールド３１０が匿名状態情報を格納していない場合に（Ｓ８３０：ＮＯ）、情報処理部は、当該情報処理部が優先情報処理部３４０であるか、即ち優先権情報フィールド３１０に当該情報処理部を識別する情報が格納されているか否かを判断する（Ｓ８７０）。当該情報処理部が優先情報処理部３４０でない場合に（Ｓ８７０：ＮＯ）、非優先情報処理部３５０は、優先情報処理部３４０の優先権を除去する処理を行った（Ｓ８８０）後に、モニター制御部４１０を用いたモニター方式により競合資源６０の獲得を試行する（Ｓ８９０）。一方、当該情報処理部が優先情報処理部３４０である場合に（Ｓ８７０：ＹＥＳ）、優先情報処理部３４０は、競合資源６０の再帰獲得の段階が限界に達したか否かを判断する（Ｓ９００）。再帰獲得の段階が限界に達した場合に（Ｓ９００：ＹＥＳ）、優先情報処理部３４０は、上述したＳ８８０の処理に移る。即ち、優先情報処理部３４０は、新たに獲得しようとしている競合資源６０の再帰獲得の段階が、予め定められたデータサイズの再帰獲得段階フィールド３２０を用いてカウントすることができる再帰獲得の限界（例えば、図１１（Ｃ’’）の状態）を超える場合には、より多くの段階を許容し得るモニター方式により競合資源６０の獲得を試みる。
【００９７】
再帰獲得が限界に達していない場合に（Ｓ９００：ＹＥＳ）、優先情報処理部３４０は、再帰獲得段階フィールド３２０内の資源情報を更新する処理、例えば、既に格納されている値に１を加える処理を行う。そして、優先情報処理部３４０は、競合資源６０を獲得し（Ｓ８６０）、競合資源６０を用いた他の処理を行う。
【００９８】
図１３は、図１２におけるＳ８８０の詳細を示す動作フローを示す。本フローを実行中の情報処理部は、当該情報処理部が優先情報処理部３４０であるか否かを判断する（Ｓ９２０）。情報処理部は、当該情報処理部が優先情報処理部３４０でない場合に（Ｓ９２０：ＮＯ）、優先情報処理部３４０の動作を停止する（Ｓ９３０）。続いて、情報処理部は、資源情報格納領域３００の内容を読み出す（Ｓ９４０）。情報処理部は、既に優先権の除去処理が終了しているか否かを、例えば、方式種別フィールド３３０に格納される方式種別情報が通常モードを示すか否かにより判断する（Ｓ９５０）。
【００９９】
既に優先権の除去処理が終了している場合に（Ｓ９５０：ＹＥＳ）、情報処理部は、優先情報処理部の動作を再開し（Ｓ９５５）、優先権除去処理を終了する。一方、未だ優先権の除去処理が終了していない場合に（Ｓ９５０：ＮＯ）、情報処理部は、他の情報処理部と排他的に資源情報格納領域３００へアクセスする権利を獲得し、モニター方式により競合資源６０を獲得する処理に必要なデータを優先権情報フィールド３１０及び再帰獲得段階フィールド３２０に書き込む（Ｓ９６０）。当該書き込みが成功しなかった場合に（Ｓ９７０：ＮＯ）、情報処理部は、Ｓ９４０に戻る。当該書き込みが成功した場合に（Ｓ９７０：ＹＥＳ）、情報処理部は、優先情報処理部３４０が第２の処理を処理中であるか否かを判断する（Ｓ９８０）。
【０１００】
優先情報処理部３４０が第２の処理を処理中である場合に（Ｓ９８０：ＹＥＳ）、実行状態設定部４００は、優先情報処理部３４０の実行状態を、第２の処理により競合資源６０を獲得しない状態に設定する（Ｓ９９０）。例えば、優先情報処理部３４０が図１２におけるＳ８００において資源情報を読み出してから、Ｓ８３０、Ｓ８７０、及びＳ９００を順次実行し、Ｓ９１０において資源情報を書き込むまでの処理を実行中である場合には、実行状態設定部４００は、優先情報処理部３４０の実行状態を、Ｓ８００を実行する前の状態に設定する。また、優先情報処理部３４０が後述する図１４におけるＳ９９７において、資源情報格納領域３００を読み出してから、Ｓ１０１０における競合資源の解放を終了するまでの間を実行中である場合においても、実行状態設定部４００は、優先情報処理部３４０の実行状態を、Ｓ９９７を実行する前の状態に設定する。
【０１０１】
図１４は、第２実施形態において、優先情報処理部３４０又は非優先情報処理部３５０が競合資源を解放する動作フローを示す。本図において、優先情報処理部３４０及び非優先情報処理部３５０のそれぞれの動作をまとめて説明するので、優先情報処理部３４０及び非優先情報処理部３５０のそれぞれを情報処理部と総称する。競合資源６０を解放する指示を受けると、まず、情報処理部は、資源情報格納領域３００の内容を読み出し（Ｓ９９７）、方式種別フィールド３３０を参照することにより、競合資源６０の獲得方式が通常モードに設定されているか否かを判断する（Ｓ１０００）。
【０１０２】
優先モードに設定されている場合に（Ｓ１０００：ＹＥＳ）、情報処理部は、再帰獲得段階フィールド３２０中の値を１減じる処理により資源情報を更新し（Ｓ１００５）、競合資源６０を解放する（Ｓ１０１０）。一方、通常モードに設定されている場合に（Ｓ１０００：ＮＯ）、情報処理部は、モニター制御部４１０を用いたモニター方式により競合資源６０を解放する（Ｓ１０２０）。
【０１０３】
（変形例）
図１５は、第２実施形態の変形例におけるＳ８８０の詳細を示す動作フローを示す。本図で説明する動作フローは、図１３で説明した動作フローのＳ９８０に代えて、Ｓ１０３０を有する構成をとる。
【０１０４】
情報処理部は、モニター方式により競合資源６０を獲得する処理に必要なデータを優先権情報フィールド３１０及び再帰獲得段階フィールド３２０に書き込み（Ｓ９６０）、当該書き込みが成功した場合に（Ｓ９７０：ＹＥＳ）、優先情報処理部３４０による資源獲得命令を無効化する（Ｓ１０３０）。資源獲得命令とは、例えば、図１２で説明したＳ９１０及びＳ１０１０の動作、即ち、優先情報処理部３４０による競合資源６０を獲得するための資源情報格納領域への資源情報の書き込み処理である。情報処理部は、この資源獲得命令を無効化することにより、優先情報処理部３４０が第２の処理を実行中であっても、優先情報処理部３４０に競合資源６０を獲得させることなく、モニター方式に移行することができる。
【０１０５】
なお、情報処理部が、資源獲得命令（Ｓ９１０）及び資源解放命令（Ｓ１０１０）を単に無効化してしまうと、優先情報処理部３４０は、図１２に示した処理を終了した時点で、競合資源６０を獲得できたか否かを正しく判断できず、図１４を終了した時点で、競合資源６０を解放できたか否かを正しく判断することができない。したがって、情報処理部は、資源獲得命令を無効化すると伴に、優先情報処理部３４０に競合資源６０の獲得又は解放を再試行させる必要がある。
そこで、排他制御装置２０は、プレディケートレジスタを用いた条件付命令実行機能を用いて、命令の無効化と、競合資源６０の獲得の再試行とを実現する。プレディケートレジスタを用いた条件付命令実行機能とは、プロセッサの各命令に対応付けられたプレディケートレジスタの値が１の場合のみ、当該命令を実行する機能である。本変形例では、Ｓ９１０及びＳ１０１０を処理する命令に予めプレディケートレジスタ１を対応付けておく。プレディケートレジスタ１は予め１に設定される。更に、Ｓ９１０が無効化された場合に実行される箇所に、Ｓ８００に処理を戻す命令を予め設けておく。同様に、Ｓ１０１０が無効化された場合に実行される箇所に、Ｓ９９７に処理を戻す命令を予め設けておく。情報処理部は、優先情報処理部３４０のプレディケートレジスタ１を０に設定することにより、資源獲得命令及び資源解放命令を無効化すると伴に、Ｓ８００及びＳ９９７のそれぞれに処理を戻させることができる。
【０１０６】
図１６は、排他制御装置１０のハードウェア構成の一例を示す。本実施形態に係る排他制御装置１０は、ホストコントローラ１０８２により相互に接続されるＣＰＵ１０００、ＲＡＭ１０２０、グラフィックコントローラ１０７５、及び表示装置１０８０を有するＣＰＵ周辺部と、入出力コントローラ１０８４によりホストコントローラ１０８２に接続される通信インターフェイス１０３０、ハードディスクドライブ１０４０、及びＣＤ−ＲＯＭドライブ１０６０を有する入出力部と、入出力コントローラ１０８４に接続されるＲＯＭ１０１０、フレキシブルディスクドライブ１０５０、及び入出力チップ１０７０を有するレガシー入出力部とを備える。
【０１０７】
ホストコントローラ１０８２は、ＲＡＭ１０２０と、高い転送レートでＲＡＭ１０２０をアクセスするＣＰＵ１０００及びグラフィックコントローラ１０７５とを接続する。ＣＰＵ１０００は、ＲＯＭ１０１０及びＲＡＭ１０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ１０７５は、ＣＰＵ１０００等がＲＡＭ１０２０内に設けたフレームバッファ上に生成する画像データを取得し、表示装置１０８０上に表示させる。これに代えて、グラフィックコントローラ１０７５は、ＣＰＵ１０００等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
【０１０８】
入出力コントローラ１０８４は、ホストコントローラ１０８２と、比較的高速な入出力装置である通信インターフェイス１０３０、ハードディスクドライブ１０４０、ＣＤ−ＲＯＭドライブ１０６０、及び記憶装置インターフェイス１０８５を接続する。通信インターフェイス１０３０は、ネットワークを介して他の装置と通信する。ハードディスクドライブ１０４０は、排他制御装置１０が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ１０６０は、ＣＤ−ＲＯＭ１０９５からプログラム又はデータを読み取り、入出力コントローラ１０８４を介してＲＡＭ１０２０に提供する。
【０１０９】
また、入出力コントローラ１０８４には、ＲＯＭ１０１０と、フレキシブルディスクドライブ１０５０や入出力チップ１０７０等の比較的低速な入出力装置とが接続される。ＲＯＭ１０１０は、排他制御装置１０の起動時にＣＰＵ１０００が実行するブートプログラムや、排他制御装置１０のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ１０５０は、フレキシブルディスク１０９０からプログラム又はデータを読み取り、入出力コントローラ１０８４を介してＲＡＭ１０２０に提供する。入出力チップ１０７０は、フレキシブルディスク１０９０や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
【０１１０】
排他制御装置１０に提供されるプログラムは、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、入出力コントローラ１０８４を介して排他制御装置１０にインストールされ、排他制御装置１０において実行される。
【０１１１】
排他制御装置１０にインストールされて実行されるプログラムは、優先情報処理モジュールと、非優先情報処理モジュールと、獲得可否判断モジュールと、優先情報処理部変更モジュールと、モニター制御モジュールと、全停止モジュールとを含む。各モジュールが排他制御装置１０に働きかけて行わせる動作は、図１から図９において説明した排他制御装置１０における、対応する部材の動作と同一であるから、説明を省略する。
【０１１２】
なお、排他制御装置２０のハードウェア構成は、本図に示した構成と略同一であるので説明を省略する。排他制御装置２０にインストールされて実行されるプログラムは、優先情報処理モジュールと、非優先情報処理モジュールと、優先情報処理部停止モジュールと、優先権除去モジュールと、過渡状態判断モジュールと、実行状態取得通知モジュールと、実行状態設定モジュールと、モニター制御モジュールとを含む。各モジュールが排他制御装置２０に働きかけて行わせる動作は、図１０から図１５において説明した排他制御装置２０における、対応する部材の動作と同一であるから、説明を省略する。
【０１１３】
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク１０９０、ＣＤ−ＲＯＭ１０９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムを排他制御装置１０に提供してもよい。
【０１１４】
以上、本発明を実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、多様な変更または改良を加えることができる。そのような変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【０１１５】
以上に説明した実施形態によれば、以下の各項目に示す記憶装置、記憶装置を制御するプログラム、記憶装置の制御方法、及び記録媒体が実現される。
【０１１６】
（請求項１）  情報処理部に、他の情報処理部と排他的に競合資源を獲得させる排他制御装置であって、前記競合資源を獲得する候補を示す非優先排他権を、第１の処理により互いに排他的に獲得する複数の非優先情報処理部と、前記非優先排他権を獲得した前記非優先情報処理部との間で、前記第１の処理より処理時間が短い第２の処理により、前記競合資源を排他的に獲得する優先情報処理部とを備えることを特徴とする排他制御装置。
（請求項２）  前記優先情報処理部が前記競合資源の獲得を試みている旨を示す優先排他権情報を格納する優先排他権格納領域と、前記複数の非優先情報処理部のうち何れが、前記非優先排他権を獲得しているかを識別する非優先排他権情報を格納する非優先排他権格納領域とを更に備え、前記非優先情報処理部のそれぞれは、前記第１の処理として、他の前記非優先情報処理部と排他的に、前記非優先排他権情報が既に格納されていない場合において当該非優先情報処理部が前記予約排他権を獲得していることを示す前記非優先排他権情報を格納し、前記優先情報処理部は、前記第２の処理として、前記優先排他権情報を格納した後に前記非優先排他権格納領域を読み出し、前記非優先排他権情報が既に格納されている場合において前記競合資源を獲得せず、前記非優先排他権情報が格納されていない場合において前記競合資源を獲得することを特徴とする請求項１記載の排他制御装置。
【０１１７】
（請求項３）  前記非優先排他権格納領域は、前記複数の情報処理部のうち何れが前記優先情報処理部かを示す優先情報処理部情報と、前記非優先排他権情報との何れか一方を格納し、前記非優先排他権格納領域が前記非優先排他権情報及び前記優先情報処理部情報の何れを格納するかを示す情報を格納する領域利用種別格納領域を更に備え、前記非優先排他権格納領域が前記非優先排他権情報を格納する場合に、前記優先情報処理部及び前記複数の非優先情報処理部のそれぞれは、前記第１の処理により前記非優先排他権を獲得し、前記非優先排他権を獲得した場合に、前記競合資源を獲得することを特徴とする請求項２記載の排他制御装置。
（請求項４）  前記第２の処理において、前記非優先排他権情報が既に格納されると判断された場合に、当該優先情報処理部を非優先情報処理部に変更する優先情報処理部変更部を更に備えることを特徴とする請求項２記載の排他制御装置。
（請求項５）  前記第１の処理又は前記第２の処理により前記競合資源の獲得が失敗したか否かを判断する獲得可否判断部と、前記競合資源の獲得が失敗したと判断された場合に、当該競合資源の獲得を待機する全ての前記情報処理部を予め記録し、前記競合資源を解放した情報処理部が、当該競合資源の獲得を待機する情報処理部に、前記競合資源を解放した旨を通知するモニター方式により排他制御を行うモニター制御部とを更に備えることを特徴とする請求項２記載の排他制御装置。
【０１１８】
（請求項６）  何れの前記情報処理部が、前記優先情報処理部かを示す優先情報処理部情報を格納する優先情報処理部情報格納領域と、複数の前記情報処理部の何れかに、他の前記情報処理部と排他的に、前記優先情報処理部情報が既に格納されていない場合において当該情報処理部が前記優先情報処理部である旨を示す前記優先情報処理部情報を格納する処理を行わせる優先情報処理部設定部とを備えることを特徴とする請求項１記載の排他制御装置。
（請求項７）  前記競合資源を初めて獲得した前記情報処理部を、前記優先情報処理部に設定し、当該優先情報処理部を除く他の前記情報処理部を前記非優先情報処理部と設定する優先情報処理部設定部とを更に備えることを特徴とする請求項１記載の排他制御装置。
（請求項８）  前記非優先情報処理部の何れかを、前記優先情報処理部に変更する優先情報処理部変更部を更に備えることを特徴とする請求項１記載の排他制御装置。
【０１１９】
（請求項９）  全ての前記複数の情報処理部を停止させる全停止部を更に備え、前記優先情報処理部変更部は、停止された時点で前記競合資源を獲得している前記非優先情報処理部を、前記優先情報処理部に変更することを特徴とする請求項８記載の排他制御装置。
（請求項１０）  前記複数の情報処理部のいずれかにより前記競合資源が獲得されているか否かを示す資源情報を、前記優先情報処理部が存在する旨を示す優先権情報に対応付けて格納する資源情報格納領域を更に備え、前記優先情報処理部は、前記第２の処理として、前記資源情報格納領域から情報を読み出す処理と、前記優先権情報が格納されている場合に前記資源情報を前記資源情報格納領域に書き込む処理とを行い、前記非優先情報処理部のそれぞれは、前記優先情報処理部を停止させる優先情報処理部停止部と、前記優先情報処理部を停止させた場合に、前記第１の処理により他の情報処理部とは排他的に、前記優先権情報を前記資源情報格納領域から取り除く優先権除去部と、停止させた前記優先情報処理部が、前記第２の処理を実行中であるか否かを判断する過渡状態判断部と、前記第２の処理を実行中と判断された場合に、前記優先情報処理部の実行状態を、当該第２の処理により前記競合資源を獲得しない状態に設定する実行状態設定部とを有することを特徴とする請求項１記載の排他制御装置。
【０１２０】
（請求項１１）  前記実行状態設定部は、前記優先情報処理部を実現するプログラムの実行位置を示す実行位置情報を、前記資源情報格納領域を読み出す前の状態に設定することにより前記実行状態を設定することを特徴とする請求項１０記載の排他制御装置。
（請求項１２）  前記実行状態設定部は、前記第２の処理における前記資源情報格納領域への書き込み処理を無効化することを特徴とする請求項１０記載の排他制御装置。
（請求項１３）  前記資源情報格納領域に前記優先情報処理部が存在しない旨の情報が格納された場合に、当該競合資源の獲得を待機する全ての前記情報処理部を予め記録し、前記競合資源を解放した情報処理部が、当該競合資源の獲得を待機する情報処理部に、前記競合資源を解放した旨を通知するモニター方式により排他制御を行うモニター制御部を備えることを特徴とする請求項１０記載の排他制御装置。
【０１２１】
（請求項１４）  同一の競合資源を獲得し得る複数のスレッドの何れかに、当該スレッドとは異なる他のスレッドと排他的に前記競合資源を獲得させる排他制御装置であって、第１の前記スレッドにおけるプログラムの実行位置を示す実行位置情報を取得し、前記第１のスレッドとは異なる第２のスレッドに通知する実行状態取得通知部と、前記実行位置情報が前記競合資源に獲得する旨を示す場合において、前記第２のスレッドによって、前記競合資源に獲得しない実行位置情報を前記第１のスレッドに設定する処理を行わせる実行状態設定部とを備えることを特徴とする排他制御装置。
（請求項１５）  情報処理部に、他の情報処理部と排他的に競合資源を獲得させる排他制御方法であって、前記競合資源を獲得する候補を示す非優先排他権を、第１の処理により互いに排他的に獲得する複数の非優先情報処理段階と、前記非優先排他権を獲得した前記非優先情報処理部との間で、前記第１の処理より処理時間が短い第２の処理により、前記競合資源を排他的に獲得する優先情報処理段階とを備えることを特徴とする排他制御方法。
【０１２２】
（請求項１６）  同一の競合資源を獲得し得る複数のスレッドの何れかに、当該スレッドとは異なる他のスレッドと排他的に前記競合資源を獲得させる排他制御方法であって、第１の前記スレッドにおけるプログラムの実行位置を示す実行位置情報を取得し、前記第１のスレッドとは異なる第２のスレッドに通知する実行状態取得通知段階と、前記実行位置情報が前記競合資源に獲得する旨を示す場合において、前記第２のスレッドによって、前記競合資源に獲得しない実行位置情報を前記第１のスレッドに設定する処理を行わせる実行状態設定段階とを備えることを特徴とする排他制御方法。
（請求項１７）  情報処理部に、他の情報処理部と排他的に競合資源を獲得させる排他制御装置としてコンピュータを機能させるプログラムであって、前記コンピュータを、前記競合資源を獲得する候補を示す非優先排他権を、第１の処理により互いに排他的に獲得する複数の非優先情報処理部と、前記非優先排他権を獲得した前記非優先情報処理部との間で、前記第１の処理より処理時間が短い第２の処理により、前記競合資源を排他的に獲得する優先情報処理部として機能させることを特徴とするプログラム。
【０１２３】
（請求項１８）  同一の競合資源を獲得し得る複数のスレッドの何れかに、当該スレッドとは異なる他のスレッドと排他的に前記競合資源を獲得させる排他制御装置としてコンピュータを機能させるプログラムであって、前記コンピュータを、第１の前記スレッドにおけるプログラムの実行位置を示す実行位置情報を取得し、前記第１のスレッドとは異なる第２のスレッドに通知する実行状態取得通知部と、前記実行位置情報が前記競合資源に獲得する旨を示す場合において、前記第２のスレッドによって、前記競合資源に獲得しない実行位置情報を前記第１のスレッドに設定する処理を行わせる実行状態設定部として機能させることを備えることを特徴とするプログラム。
（請求項１９）  情報処理部に、他の情報処理部と排他的に競合資源を獲得させる排他制御装置としてコンピュータを機能させるプログラムを記録した記録媒体であって、前記プログラムは、前記コンピュータを、前記競合資源を獲得する候補を示す非優先排他権を、第１の処理により互いに排他的に獲得する複数の非優先情報処理部と、前記非優先排他権を獲得した前記非優先情報処理部との間で、前記第１の処理より処理時間が短い第２の処理により、前記競合資源を排他的に獲得する優先情報処理部として機能させることを特徴とする記録媒体。
【０１２４】
（請求項２０）  同一の競合資源を獲得し得る複数のスレッドの何れかに、当該スレッドとは異なる他のスレッドと排他的に前記競合資源を獲得させる排他制御装置としてコンピュータを機能させるプログラムを記録した記録媒体であって、前記プログラムは、前記コンピュータを、第１の前記スレッドにおけるプログラムの実行位置を示す実行位置情報を取得し、前記第１のスレッドとは異なる第２のスレッドに通知する実行状態取得通知部と、前記実行位置情報が前記競合資源に獲得する旨を示す場合において、前記第２のスレッドによって、前記競合資源に獲得しない実行位置情報を前記第１のスレッドに設定する処理を行わせる実行状態設定部として機能させることを備えることを特徴とする記録媒体。
【０１２５】
【発明の効果】
上記説明から明らかなように、本発明によれば、特定の情報処理部のみが頻繁に競合資源の獲得及び解放を行う場合に、競合資源の獲得の排他性を保証しつつ、競合資源の獲得を高速化することができる。
【図面の簡単な説明】
【図１】図１は、第１実施形態における排他制御装置１０の機能ブロック図。
【図２】図２は、第１実施形態におけるフラットロック格納部１００の詳細を示す図。
【図３】図３は、第１実施形態において優先情報処理部１５０又は非優先情報処理部１６０が競合資源の獲得を試みる動作フロー図。
【図４】図４は、図３におけるＳ１００Ａ及びＢの詳細を示す動作フロー図。
【図５】図５は、図３におけるＳ１７０の詳細を示す動作フロー図。
【図６】図６は、優先情報処理部１５０又は非優先情報処理部１６０が競合資源を解放する動作フロー図。
【図７】図７は、第１実施形態の変形例における排他制御装置１０の機能ブロック図。
【図８】図８は、第１実施形態の変形例におけるフラットロック格納部１００の詳細を示す図。
【図９】図９は、第１実施形態の変形例において優先情報処理部１５０又は非優先情報処理部１６０が競合資源の獲得を試みる動作フロー図。
【図１０】図１０は、第２実施形態における排他制御装置２０の機能ブロック図。
【図１１】図１１は、第２実施形態における資源情報格納領域３００の詳細を示す図。
【図１２】図１２は、第２実施形態において、優先情報処理部３４０又は非優先情報処理部３５０が競合資源の獲得を試みる動作フロー図。
【図１３】図１３は、図１２におけるＳ８８０の詳細を示す動作フロー図。
【図１４】図１４は、第２実施形態において、優先情報処理部３４０又は非優先情報処理部３５０が競合資源を解放する動作フロー図。
【図１５】図１５は、第２実施形態の変形例におけるＳ８８０の詳細を示す動作フロー図。
【図１６】図１６は、排他制御装置１０のハードウェア構成の一例を示す図。
【符号の説明】
１０  排他制御装置
２０  排他制御装置
５０  競合資源
６０  競合資源
１００  フラットロック格納部
１１０  優先情報処理部情報格納領域
１１５  領域利用種別格納領域
１２０  優先排他権格納領域
１２５  排他権格納領域
１３０  非優先排他権格納領域
１３５  情報処理部識別情報格納領域
１４０  優先情報処理部設定部
１５０  優先情報処理部
１６０  非優先情報処理部
１７０  獲得可否判断部
１８０  優先情報処理部変更部
１９０  モニター制御部
２００  ファットロック格納部
２１０  全停止部
３００  資源情報格納領域
３１０  優先権情報フィールド
３２０  再帰獲得段階フィールド
３３０  方式種別フィールド
３４０  優先情報処理部
３５０  非優先情報処理部
３６０  優先情報処理部停止部
３７０  優先権除去部
３８０  過渡状態判断部
３９０  実行状態取得通知部
４００  実行状態設定部
４１０  モニター制御部
【図１】
2004152185.tif 000003
【図２】
2004152185.tif 000004
【図３】
2004152185.tif 000005
【図４】
2004152185.tif 000006
【図５】
2004152185.tif 000007
【図６】
2004152185.tif 000008
【図７】
2004152185.tif 000009
【図８】
2004152185.tif 000010
【図９】
2004152185.tif 000011
【図１０】
2004152185.tif 000012
【図１１】
2004152185.tif 000013
【図１２】
2004152185.tif 000014
【図１３】
2004152185.tif 000015
【図１４】
2004152185.tif 000016
【図１５】
2004152185.tif 000017
【図１６】
2004152185.tif 000018