(57)【要約】【課題】ＣＰＵ資源が浪費され続けてしまうことの防止できる、マルチプロセッサシステムを提供する。【解決手段】ロック取得要求を受け付け、前記ロック取得要求に応じて、取得対象資源に対応するロックの取得を試みる、ロック取得手段と、前記ロック取得手段がロックの取得に失敗した場合に、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する、待ち方式決定手段と、コンテキストスイッチ期間と、ロック保持期間とを比較するロック保持期間判別手段とを具備する。前記待ち方式決定手段は、前記ロック保持期間判別手段による比較結果に基づいて、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する。【選択図】図１
2011175378.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵのいずれかにより実行される処理対象プロセスからロック取得要求を受け付け、前記ロック取得要求に応じて、取得対象資源に対応するロックの取得を試みる、ロック取得手段と、
前記ロック取得手段がロックの取得に失敗した場合に、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する、待ち方式決定手段と、
コンテキストスイッチ期間を示す情報を、コンテキストスイッチ期間情報として格納する、コンテキストスイッチ期間格納手段と、
前記取得対象資源に対応するロックがプロセスによって保持される期間を示す情報を、ロック保持期間情報として格納する、ロック保持期間格納手段と、
前記コンテキストスイッチ期間と、前記ロック保持期間とを比較するロック保持期間判別手段と、
を具備し、
前記待ち方式決定手段は、前記ロック保持期間判別手段による比較結果に基づいて、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する
マルチプロセッサシステム。
【請求項２】
請求項１に記載されたマルチプロセッサシステムであって、
前記ロック保持期間格納手段は、前記ロック保持期間情報として、前記取得対象資源に対応するロックが前回に保持されていた期間を示す情報を格納する
マルチプロセッサシステム。
【請求項３】
請求項１に記載されたマルチプロセッサシステムであって、
前記取得対象資源に対応するロックが過去に複数回保持されていた場合、前記ロック保持期間格納手段は、ロックが過去に保持されていた複数の期間の平均値を、前記ロック保持期間情報として格納する
マルチプロセッサシステム。
【請求項４】
請求項１に記載されたマルチプロセッサシステムであって、
前記取得対象資源に対応するロックが過去に複数回保持されていた場合、前記ロック保持期間格納手段は、ロックが過去に保持されていた複数の過去期間に基づいて求められた値を、前記ロック保持期間情報として格納し、
前期ロック保持期間格納手段は、前記複数の過去期間のうち、古い期間よりも新しい期間を重視する重み付けを用いて求められた値を、前記ロック保持期間情報として格納する
マルチプロセッサシステム。
【請求項５】
請求項１乃至４のいずれかに記載されたマルチプロセッサシステムであって、
更に、
前記取得対象資源に対応するロックを取得している保持プロセスが実行中であるか否かを判別し、判別結果を前記待ち方式決定手段に通知する、実行状態判別手段、
を具備し、
前記待ち方式決定手段は、前記保持プロセスが実行中ではない場合に、前記処理対象プロセスをスピンロック方式で待機させる
マルチプロセッサシステム。
【請求項６】
請求項１乃至５のいずれかに記載されたマルチプロセッサシステムであって、
更に、
前記取得対象資源に対応するロックが開放されるのを待機している待機プロセスの数を、予め設定された基準値と比較し、比較結果を前記待ち方式決定手段に通知する、ロック待ちプロセス数判別手段、
を具備し、
前記待ち方式決定手段は、前記待機プロセスの数が前記基準値よりも大きい場合に、前記処理対象プロセスをスリープロック方式で待機させる
マルチプロセッサシステム。
【請求項７】
複数のＣＰＵのいずれかにより実行される処理対象プロセスからロック取得要求を受け付け、前記ロック取得要求に応じて、取得対象資源に対応するロックの取得を試みるステップと、
前記ロック取得手段がロックの取得に失敗した場合に、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定するステップと、
コンテキストスイッチ期間を示す情報を、コンテキストスイッチ期間情報として格納するステップと、
前記取得対象資源に対応するロックがプロセスによって保持される期間を示す情報を、ロック保持期間情報として格納するステップと、
前記コンテキストスイッチ期間と、前記ロック保持期間とを比較するステップと、
を具備し、
前記決定するステップは、前記比較するステップにおける比較結果に基づいて、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定するステップを備えている
マルチプロセッサシステムの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサシステム、及びマルチプロセッサシステムの動作方法に関する。
【背景技術】
【０００２】
共有メモリを有したマルチプロセッサシステムにおいて、排他制御のために、ロック方式が提案されている。ロック方式としては、大別して、スピンロック方式とスリープロック方式とが知られている。スピンロック方式では、プロセスがロックを取れるまで、ロック変数にアクセスをし続ける。スリープロック方式では、ロックが取得できなかった場合にプロセスがスリープし、ロックが解放された時にプロセスが起床してロックを取得する。
【０００３】
スピンロック方式では、プロセッサがビジーウェイトしている期間が長くなり、プロセッサが浪費されることになる。一方、スリープロック方式では、プロセッサの浪費が抑えられる。しかし、スリープ時及び起床時において、プロセスがレジスタに退避させられたり、レジスタからプロセスが復帰させられる。そのため、プロセッサ実行時間を要する。
【０００４】
従って、状況に応じて、ロック方式を使い分けることが望まれる。
【０００５】
関連技術が、特許文献１（特開平７−３１９７１６）に記載されている。特許文献１には、ロックの取得に失敗した場合、ロックを取得しているプロセスの実行状態を調べ、実行状態であればビジーウェイトによってロックが開放されるのを待ち、実行状態でなければスリープさせる点が記載されている。また、特許文献１には、ロックの取得に失敗した場合に、ロックの開放を待っている他のスリーププロセスの数を調べ、これが０であればビジーウェイトによって待機し、１以上であればスリープさせる点が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−３１９７１６
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載された技術では、ＣＰＵ資源が浪費され続ける場合がある。
【０００８】
具体的には、ロックを取得しているプロセスの実行状態に基づいてビジーウェイトとするかスリープとするかを決定した場合には、ロックを取得しているプロセスが実行状態であれば、ビジーウェイトに設定されてしまう。従って、ロックを取得しているプロセスが長期間ロックを保持し続けた場合、ビジーウェイト状態が長期間続いてしまう。そのため、ＣＰＵ資源が浪費され続けてしまう。
【０００９】
また、他のスリーププロセスの数に基づいてビジーウェイトとするかスリープとするかを決定した場合、他のスリーププロセスの数が０であれば、ビジーウェイトに設定されてしまう。そのため、ロックを取得しているプロセスが長期間ロックを保持し続けた場合、ビジーウェイト状態が長期間続いてしまう。その結果、ＣＰＵ資源が浪費され続けてしまう、という問題点があった。
【課題を解決するための手段】
【００１０】
本発明に係るマルチプロセッサシステムは、複数のＣＰＵのいずれかにより実行される処理対象プロセスからロック取得要求を受け付け、前記ロック取得要求に応じて、取得対象資源に対応するロックの取得を試みる、ロック取得手段と、前記ロック取得手段がロックの取得に失敗した場合に、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する、待ち方式決定手段と、コンテキストスイッチ期間を示す情報を、コンテキストスイッチ期間情報として格納する、コンテキストスイッチ期間格納手段と、前記取得対象資源に対応するロックがプロセスによって保持される期間を示す情報を、ロック保持期間情報として格納する、ロック保持期間格納手段と、前記コンテキストスイッチ期間と、前記ロック保持期間とを比較するロック保持期間判別手段とを具備する。前記待ち方式決定手段は、前記ロック保持期間判別手段による比較結果に基づいて、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する。
【００１１】
本発明に係るマルチプロセッサシステムの動作方法は、複数のＣＰＵのいずれかにより実行される処理対象プロセスからロック取得要求を受け付け、前記ロック取得要求に応じて、取得対象資源に対応するロックの取得を試みるステップと、前記ロック取得手段がロックの取得に失敗した場合に、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定するステップと、コンテキストスイッチ期間を示す情報を、コンテキストスイッチ期間情報として格納するステップと、前記取得対象資源に対応するロックがプロセスによって保持される期間を示す情報を、ロック保持期間情報として格納するステップと、前記コンテキストスイッチ期間と、前記ロック保持期間とを比較するステップとを具備する。前記決定するステップは、前記比較するステップにおける比較結果に基づいて、前記処理対象プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定するステップを備えている。
【発明の効果】
【００１２】
本発明によれば、ＣＰＵ資源の浪費を防止することのできる、マルチプロセッサシステム及びマルチプロセッサシステムの動作方法が提供される。
【図面の簡単な説明】
【００１３】
【図１】第１の実施形態に係るマルチプロセッサシステム１を示すブロック図である。
【図２Ａ】マルチプロセッサシステムの動作方法を示すフローチャートである。
【図２Ｂ】マルチプロセッサシステムの動作方法を示すフローチャートである。
【図３】第２の実施形態に係るマルチプロセッサシステムを概略的に示すブロック図である。
【図４】第２の実施形態に係るマルチプロセッサシステムの動作方法を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下に、図面を参照しつつ、本発明の実施形態について説明する。
【００１５】
（第１の実施形態）
図１は、本実施形態に係るマルチプロセッサシステム１を示すブロック図である。図１に示されるように、マルチプロセッサシステム１は、複数のＣＰＵ２（２−１〜２−４）、及びメモリ４を備えている。複数のＣＰＵ２は、メモリ４とアクセス可能に接続されている。
【００１６】
複数のＣＰＵ２の各々は、フリーランカウンタ３（３−１〜３−４）を備えている。フリーランカウンタ３は、カウント値を保持するタイマー機能を有している。フリーランカウンタ３は、メモリに格納されたソフトウェアの動作と関係なく動作し、ＣＰＵ２の動作クロック等に応じてカウント値を一定速度で増減させる。フリーランカウンタ３が保持するカウント値は、ソフトウェアから任意のタイミングで読み出すことができる。
【００１７】
メモリ４は、複数の資源１０、排他処理コンポーネント５、プロセススケジューラ６、プロセッサ待ち行列制御部７、ロックオブジェクト管理テーブル１１、及びロック待ち行列制御部９を備えている。排他処理コンポーネント５、プロセススケジューラ６、プロセッサ待ち行列制御部７、及びロック待ち行列制御部９は、メモリに格納されたソフトウェアが各ＣＰＵ２によって実行されることにより、実現される。
【００１８】
ロックオブジェクト管理テーブル１１は、複数の資源１０に対応する、複数のロックオブジェクト１２を有している。各ロックオブジェクト１２は、対応する資源１０のロックを管理している。各ロックオブジェクト１２は、ロック保持期間情報１３を含んでいる。ロック保持期間情報１３は、各資源１０に対応するロックがプロセスによって保持される期間の予測値を示す情報である。本実施形態では、ロック保持期間情報１３として、前回においてロックがプロセスに保持されていた期間を示す情報が用いられる。
【００１９】
ロック待ち行列制御部９は、ロックオブジェクト１２に対応して設けられている。ロック待ち行列制御部９は、ロックが開放されるのをスリープ状態で待機しているプロセス群８の行列を管理している。
【００２０】
プロセッサ待ち行列制御部７は、各ＣＰＵ２が開放されるのを待機しているプロセス群８の行列を管理している。
【００２１】
プロセススケジューラ６は、プロセッサ待ち行列制御部７を制御する機能を有している。プロセススケジューラ６は、ＣＰＵ２が開放されると、プロセッサ待ち行列制御部７によって管理されるプロセス群８の中から次のプロセス８を選択し、選択したプロセス８を開放されたＣＰＵ２によって実行させる。
【００２２】
排他処理コンポーネント５は、プロセス８がロック取得要求を発行すると、ロックオブジェクト管理テーブル１１にアクセスして、ロックを取得する。また、排他処理コンポーネント５は、プロセスがロック開放要求を発行すると、ロックオブジェクト管理テーブル１１にアクセスして、ロックを開放する。また、排他処理コンポーネント５は、ロックの取得に失敗した場合に、プロセスをスピンロック方式で待機させるか、スリープロック方式で待機させるかを決定する。
【００２３】
排他処理コンポーネント５は、ロック取得ルーチン１４、ロック開放ルーチン１５、ロック保持プロセス実行状態判別部１６、ロック保持期間判別部１８、待ち方式決定部２０、及びコンテキストスイッチ期間格納部１９を有している。
【００２４】
ロック取得ルーチン１４は、ロック取得要求が発行された場合に、ロックの取得を試みる機能を有している。
【００２５】
ロック開放ルーチン１５は、ロックを保持しているプロセスがロック開放要求を発行した場合に、ロックを開放する機能を有している。
【００２６】
ロック保持プロセス実行状態判別部１６は、ロックを保持しているプロセス（ロック保持プロセス）が、実行状態にあるのか否かを判別する機能を有している。
【００２７】
コンテキストスイッチ期間格納部１９は、コンテキストスイッチ期間情報を格納する部分である。コンテキストスイッチ期間情報は、コンテキストスイッチ期間を示す情報である。コンテキストスイッチ期間は、ＣＰＵを占有するプロセスを別のプロセスに切り替えるために必要な期間である。
【００２８】
ロック保持期間判別部１８は、ロック保持期間情報１３に示されるロック保持期間と、コンテキストスイッチ期間情報に示されるコンテキストスイッチ期間とを比較する機能を有している。
【００２９】
待ち方式決定部２０は、ロックの取得が失敗した場合に、プロセスの待ち方式を決定する機能を有している。待ち方式決定部２０は、ロック保持プロセス実行状態判別部１６による判別結果、及びロック保持期間判別部１８による比較結果に基づいて、プロセスの待ち方式を決定する。
【００３０】
続いて、本実施形態に係るマルチプロセッサシステム１の動作方法について説明する。図２Ａ及び図２Ｂは、マルチプロセッサシステム１の動作方法を示すフローチャートである。
【００３１】
ステップＳ１；ロック取得
プロセス８は、各ＣＰＵ２によって実行されると、資源１０（取得対象資源）に対応するロックを取得する旨を示すロック取得要求を、排他処理コンポーネント５に対して発行する。排他処理コンポーネント５では、ロック取得要求に応じて、ロック取得ルーチン１４が動作する。ロック取得ルーチン１４は、ロックオブジェクト管理テーブル１１にアクセスし、ロック取得要求を発行したプロセス８（以下、処理対象プロセスと称す）のために、ロックの取得を試みる。
【００３２】
ここで、ロックの取得に失敗した場合には、ステップＳ１０−１以降の処理が実行され、ロックの取得に成功した場合には、ステップＳ２以降の処理が実行される。
【００３３】
まず、ロックの取得に成功した場合の動作について説明する。
【００３４】
ステップＳ２；ロック保持時間計測開始
ロックの取得に成功した場合、ロック取得ルーチン１４は、ロック保持期間の計測を開始する。具体的には、ロック取得ルーチン１４は、各ＣＰＵ２からフリーランカウンタ３に記されるカウント値を読み込む。
【００３５】
ステップＳ３；ロック確保
ロック取得ルーチン１４は、ロックを確保する。処理対象プロセスは、ロックを確保し、対応する資源１０を用いて処理を行う。
【００３６】
ステップＳ４；ロック開放要求
その後、処理対象プロセスは、資源１０を用いた処理が終了すると、排他処理コンポーネント５に対して、ロック開放要求を発行する。
【００３７】
ステップＳ５；ロック保持期間計測終了
排他処理コンポーネント５は、ロック開放要求を受け付けると、ロック開放ルーチン１５を実行する。ロック開放ルーチン１５は、各ＣＰＵ２からフリーランカウンタ３に記されるカウント値を読み込む。そして、ロック開放ルーチン１５は、読み込んだカウント値と、ステップＳ２で取得された計測開始時のカウント値との差分を計算する。
【００３８】
ステップＳ６；ロック保持期間計測保存
ロック開放ルーチン１５は、ステップＳ５で計算した差分値を、ロック保持期間情報１３として、対応するロックオブジェクト１２に書き込む。これにより、ロック保持期間情報１３としては、前回において対応する資源１０がプロセスにより保持されていた期間が、格納されることになる。
【００３９】
ステップＳ７；ロック開放
更に、ロック開放ルーチン１５は、処理対象プロセスから、ロックを開放する。
【００４０】
ステップＳ８；スリープしているプロセスを起こす
その後、ロック開放ルーチン１５は、ロック待ち行列制御部９にアクセスし、対応するロックが開放されるのを待機しているプロセス８を起床させる。これにより、起床したプロセス８が、ＣＰＵ２によって実行され、開放されたロックを取得する。
【００４１】
次いで、ステップＳ１において、ロックの取得が失敗した場合の動作について説明する。
【００４２】
ステップＳ１０−１；ロック保持プロセスの状態を判別
一方、ステップＳ１において、ロックの取得が失敗した場合には、ロック保持プロセス実行状態判別部１６が、取得対象のロックを保持しているプロセス（ロック保持プロセス）の実行状態を判別する。すなわち、ロック保持プロセスの状態が実行中であるか否かが判別される。そして、判別結果が待ち方式決定部２０に通知される。ロック保持プロセスが実行中であれば、次のステップＳ１１の処理が行われ、実行中でなければステップＳ１２の処理が行われる。
【００４３】
ステップＳ１１；ロック保持期間とコンテキストスイッチ期間との比較
ロック保持プロセスの状態が実行中である場合には、ロック保持期間判別部１８が、取得対象のロックに対応するロック保持期間情報１２と、コンテキストスイッチ期間格納部１９に格納されたコンテキストスイッチ期間情報とを取得する。そして、ロック保持期間判別部１８は、ロック保持期間とコンテキストスイッチ期間とを比較する。比較結果は、待ち方式決定部２０に通知される。ロック保持期間がコンテキストスイッチ期間よりも短い場合、ステップＳ１３の処理が行われる。ロック保持期間がコンテキストスイッチ期間よりも長い場合、ステップＳ１２の処理が行われる。
【００４４】
ステップＳ１２；スリープロック方式で待機
ステップＳ１０−１においてロック保持プロセスが実行中でない場合、若しくは、ステップＳ１１においてロック保持期間がコンテキストスイッチ期間よりも長かった場合、待ち方式決定部２０は、処理対象プロセスをスリープロック方式で待機させることを決定する。すなわち、待ち方式決定部２０は、処理対象プロセスをスリープ状態に設定する。処理対象プロセスは、スリープ状態に設定され、ロック待ち行列制御部９によって管理される。処理対象プロセスを実行していたＣＰＵ２は開放され、プロセッサ待ち行列制御部７によって管理されているプロセス８群のうちの先頭のプロセスを実行する。
【００４５】
ステップＳ１３；ビジーウェイトにより待機
一方、ステップＳ１１において、ロック保持期間がコンテキストスイッチ期間よりも短い場合、待ち方式決定部２０は、スピンロック方式によって、処理対象プロセスを待機させる。すなわち、処理対象プロセスは、ビジーウェイトに設定される。処理対象プロセスは、ＣＰＵ２を占有したまま、ロックの取得を繰り返す。そして、ロック取得が成功すると、ステップＳ２以降の処理が実行される。
【００４６】
以上説明したように、本実施形態によれば、ロック保持プロセスが実行中であり、ロック保持期間がコンテキストスイッチ期間よりも短い場合に、ロックの取得に失敗した処理対象プロセスがスピンロック方式で待機させられる。一方、ロック保持プロセスが実行中でない場合、及びロック保持期間がコンテキストスイッチ期間よりも長い場合には、処理対象プロセスがスリープロック方式で待機させられる。ロック保持期間がコンテキストスイッチ期間よりも長い場合、処理対象プロセスが占有するＣＰＵ２を別のプロセスに明け渡した方が、ＣＰＵ資源の浪費を抑えることができると考えられる。一方、ロック保持期間がコンテキストスイッチ期間よりも短ければ、ＣＰＵ２を別のプロセスに明け渡すよりも、ビジーウェイトによりロックが開放されるのを待つ方が、ＣＰＵ２の浪費を抑えることができると考えられる。本実施形態によれば、ロック保持期間とコンテキストスイッチ期間との比較結果に基づいて、スピンロック方式を採用するかスリープロック方式を採用するかが決定される。従って、ロックが開放される見込みがないのにもかかわらず、処理対象プロセスがビジーウェイトに設定され続けるのを防止することができ、ＣＰＵ資源が浪費されることを防止できる。
【００４７】
組み込みシステム等においては、マルチプロセッサのＣＰＵ総数が少ないほど、全体に対する１つのＣＰＵの価値は大きい。そのため、ＣＰＵがビジーウェイト状態に設定され続けてしまう重みは大きい。本実施形態によれば、ＣＰＵ資源の浪費が抑えられるため、マルチプロセッサシステムに含まれるＣＰＵの総数が少ない場合において、特に有効な効果を奏する。
【００４８】
尚、本実施形態では、ロック保持期間情報１３として、前回においてロックがプロセスによって保持されていた期間を示す情報が採用される場合について説明した。但し、ロック保持期間情報１３としては、ロックがプロセスによって保持される期間の予測値を示す情報であれば、これに限定されない。例えば、ロックが過去に複数回保持されていた場合、ロック保持期間情報１３として、ロックが過去に保持されていた複数の期間の平均値が採用されてもよい。また、ロックが過去に複数回保持されていた場合、ロック保持期間情報として、古い期間よりも新しい期間が重視されるような重み付けを用いて求められた値が、採用されてもよい。
【００４９】
（第２の実施形態）
続いて、第２の実施形態について説明する。図３は、本実施形態に係るマルチプロセッサシステムを概略的に示すブロック図である。本実施形態では、第１の実施形態におけるロック保持プロセス実行判定部１６の代わりに、ロック待ちプロセス数判別部１７が用いられる。その他の点については、第１の実施形態と同様の構成を採用することができるので、詳細な説明は省略する。
【００５０】
ロック待ちプロセス数判別部１７は、ロック待ち行列制御部９にアクセスして、取得対象のロックが開放されるのをスリープ状態で待機しているプロセスの数を判別する機能を有している。
【００５１】
図４は、本実施形態に係るマルチプロセッサシステム１の動作方法を示すフローチャートである。本実施形態では、ロック取得要求が発行された場合に、ロック取得ルーチン１４が、ロックの取得を試みる（ステップＳ１）。ロックの取得が成功した場合には、第１の実施形態と同様の処理が行われる。
【００５２】
ステップＳ１においてロックの取得が失敗した場合には、ロック待ちプロセス数判別部１７が、取得対象のロックが開放されるのをスリープ状態で待機しているプロセス８の数を判別する。ロック待ちプロセス数判別部１７は、ロック待ち行列制御部９にアクセスすることにより、待機中のプロセス８の数を判別する（ステップＳ１０−２）。そして、待機中のプロセス８の数が１以上であった場合には、処理対象プロセスがスリープ状態に設定される（ステップＳ１２）。一方、待機中のプロセス８の数がゼロであった場合には、ロック保持期間とコンテキストスイッチ期間とが比較される（ステップＳ１１）。以降の処理は、第１の実施形態と同様である。
【００５３】
本実施形態によれば、待機中のプロセス８の数が１以上である場合には、スリープ状態に設定される。待機中のプロセス８が存在する場合には、取得対象のロックが処理対象プロセスによって使用可能な状態になるまでに、長い時間を要すると考えられる。従って、待機中のプロセス８の数が１以上である場合にスリープ状態に設定することによって、ＣＰＵを別のプロセスに明け渡し、ＣＰＵ資源の浪費を抑えることができる。
【００５４】
以上、本発明について、第１および第２の実施形態を用いて説明した。尚、これらの実施形態は互いに矛盾するものではなく、互いに組み合わせて用いることも可能である。すなわち、マルチプロセッサシステム１が、第１の実施形態におけるロック保持プロセス実行状態判別部１６と、第２の実施形態におけるロック待ちプロセス数判別部１７との両方を備えていてもよい。
【符号の説明】
【００５５】
１  マルチプロセッサシステム
２（２−１〜２−４）  ＣＰＵ
３（３−１〜３−４）  フリーランカウンタ
４  メモリ
５  排他処理コンポーネント
６  プロセススケジューラ
７  プロセッサ待ち行列制御部
８  プロセス
９  ロック待ち行列制御部
１０  資源
１１  ロックオブジェクト管理テーブル
１２  ロックオブジェクト
１３  ロック保持期間格納部
１４  ロック取得ルーチン（ロック取得手段）
１５  ロック開放ルーチン
１６  ロック保持プロセス実行状態判別部
１７  ロック待ちプロセス数判別部
１８  ロック保持期間判別部
１９  コンテキストスイッチ期間格納部
２０  待ち方式決定部
【図１】
2011175378.tif 000003
【図２Ａ】
2011175378.tif 000004
【図２Ｂ】
2011175378.tif 000005
【図３】
2011175378.tif 000006
【図４】
2011175378.tif 000007