(57)【要約】【課題】排他制御中であっても待ち時間を低減することが可能な排他制御装置を提供する。【解決手段】一実施形態の排他制御装置１０は、プロセス３１が共有リソース２０における複数のデータブロックからなるデータブロック群単位でロックを獲得しているときに、プロセス３１による上記データブロック群に属するデータブロックへのアクセス内容を記録するアクセス内容記録手段１２と、アクセス内容記録手段１２によって記録されたアクセス内容とプロセス３２による上記データブロック群に属するデータブロックへのアクセス内容との対比を行い、プロセス３２によるこのアクセスがプロセス３１による上記データブロックへのアクセスと抵触するか否かを判定するアクセス抵触判定手段１３と、この判定結果に基づいてプロセス３２によるこのアクセスを許可するか否かを通知するアクセス可否通知手段１４とを備える。【選択図】図１
2011118688.tif 000002
【特許請求の範囲】
【請求項１】
共有リソースに対して第１及び第２のプロセスからアクセスを行う際に、前記共有リソースにおける複数のデータブロックからなるデータブロック群単位でロックを行う排他制御装置において、
前記第１のプロセスが前記データブロック群のロックを獲得しているときに、
前記第１のプロセスによる前記データブロック群に属するデータブロックへのアクセス内容を記録するアクセス内容記録手段と、
前記アクセス内容記録手段によって記録されたアクセス内容と前記第２のプロセスによる前記データブロック群に属するデータブロックへのアクセス内容との対比を行い、前記第２のプロセスによる前記データブロック群に属するデータブロックへのアクセスが前記第１のプロセスによる前記データブロック群に属するデータブロックへのアクセスと抵触するか否かを判定するアクセス抵触判定手段と、
前記アクセス抵触判定手段の判定結果に基づいて、前記第２のプロセスによる前記データブロック群に属するデータブロックへのアクセスを許可するか否かを通知するアクセス可否通知手段と、
を備えることを特徴とする、排他制御装置。
【請求項２】
前記アクセス内容記録手段は、前記第１のプロセスによる前記データブロック群に属するデータブロックへのアクセス内容として、読み込みアクセス及び書き込みアクセスのうちの何れかのアクセス種別を記録し、
前記アクセス抵触判定手段は、前記第１のプロセスがアクセスしたデータブロックと同一のデータブロックに前記第２のプロセスがアクセスする際に、前記アクセス内容記録手段によって記録されたアクセス種別と前記第２のプロセスによる前記データブロック群に属するデータブロックへのアクセス種別との対比を行う、
ことを特徴とする、請求項１に記載の排他制御装置。
【請求項３】
前記アクセス抵触判定手段は、
前記第１のプロセスによるアクセス種別が読み込みアクセスであった場合には、前記第２のプロセスによるアクセス種別が書き込みアクセスであるときに抵触と判定し、
前記第１のプロセスによるアクセス種別が書き込みアクセスであった場合には、前記第２のプロセスによるアクセス種別が読み込みアクセス及び書き込みアクセスであるときに抵触と判定する、
ことを特徴とする、請求項２に記載の排他制御装置。
【請求項４】
共有リソースに対して複数のプロセスからアクセスを行う際に、前記共有リソースにおける複数のデータブロックからなるデータブロック群単位でロックを行う排他制御装置において、
前記複数のプロセスが前記データブロック群のロックを獲得しているときに、
前記複数のプロセスそれぞれによる前記データブロック群に属するデータブロックへのアクセス内容を記録するアクセス内容記録手段と、
前記複数のプロセスのうちの何れかのプロセスが前記データブロック群に属するデータブロックへアクセスする際に、当該プロセスを判定対象プロセスとすると共に当該データブロックを判定対象データブロックとし、前記判定対象プロセスによる前記判定対象データブロックへのアクセス内容と前記アクセス内容記録手段によって記録されたアクセス内容との対比を行い、前記判定対象プロセスによる前記判定対象データブロックへのアクセスが他のプロセスによる前記判定対象データブロックへのアクセスと抵触するか否かを判定するアクセス抵触判定手段と、
前記アクセス抵触判定手段の判定結果に基づいて、前記判定対象プロセスによる前記判定対象データブロックへのアクセスを許可するか否かを通知するアクセス可否通知手段と、
を備えることを特徴とする、排他制御装置。
【請求項５】
前記アクセス内容は、読み込みアクセス及び書き込みアクセスのうちの何れかのアクセス種別を含み、
前記アクセス抵触判定手段は、前記判定対象プロセスによる前記判定対象データブロックへのアクセス種別、及び、前記アクセス内容記録手段によって記録された前記他のプロセスによる前記判定対象データブロックへのアクセス種別のうちの少なくとも何れかが書き込みアクセスであるときに抵触と判定する、
ことを特徴とする、請求項４に記載の排他制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、排他制御の待ち時間を低減するための排他制御装置に関するものである。
【背景技術】
【０００２】
マルチプロセッサ（マルチコアを含む）環境において、共有リソースのロックを行う排他制御装置が知られている。この種の排他制御装置では、先行するプロセスによって共有リソースが既にロック中である場合、後発のプロセスは先行のプロセスによるロック開放を待たなければならず、アクセスが競合するか否かに関わりなく待ち時間が発生する。そのため、実際にアクセスが競合しない場合、この待ち時間はオーバーヘッドであり、無駄になってしまう。
【０００３】
この問題点に関する解決法の一例としては、ロックの粒度（排他対象の大きさ）を小さくすることが考えられる。しかしながら、ロックの粒度を小さくすることで競合は発生し難くなる反面、ロック処理自体が多くなり、ロック処理にかかる累積時間が長くなる。またロックの数が増加してしまうことが予想されるため、デッドロックを生じやすくなる等、プログラム作成の難易度が高くなってしまうことが予想される。
【０００４】
そこで、特許文献１には、上記問題点を解決する別の手法の考案が開示されている。特許文献１に記載の排他制御装置では、通常は排他制御を使用せずに共有リソースのアクセスを行い、共有リソースの内容を変更する際に一時的に排他制御を使用する。これにより、共有リソースの内容を変更しない通常時は、排他制御による待ち状態を回避し、システムの処理性能の低下を防止することができるとしている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−００３２８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、共有リソース内には複数のデータブロックが存在し、通常、プロセスは共有リソース内の一部のデータブロックに対してアクセスを行う。特許文献１に記載の排他制御装置では、共有リソース内の一部のデータブロックの内容を変更する際にも、共有リソース内の全てのデータブロックをロックしてしまうため、変更が加えられない他のデータブロックを利用したいプロセスもロックが開放されるまで無駄に待たされてしまう。
【０００７】
そこで、本発明は、排他制御中であっても待ち時間を低減することが可能な排他制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の排他制御装置は、共有リソースに対して第１及び第２のプロセスからアクセスを行う際に、共有リソースにおける複数のデータブロックからなるデータブロック群単位でロックを行う排他制御装置において、第１のプロセスがデータブロック群のロックを獲得しているときに、（イ）第１のプロセスによる上記データブロック群に属するデータブロックへのアクセス内容を記録するアクセス内容記録手段と、（ロ）アクセス内容記録手段によって記録されたアクセス内容と第２のプロセスによる上記データブロック群に属するデータブロックへのアクセス内容との対比を行い、第２のプロセスによる上記データブロック群に属するデータブロックへのアクセスが第１のプロセスによる上記データブロック群に属するデータブロックへのアクセスと抵触するか否かを判定するアクセス抵触判定手段と、（ハ）アクセス抵触判定手段の判定結果に基づいて、第２のプロセスによる上記データブロック群に属するデータブロックへのアクセスを許可するか否かを通知するアクセス可否通知手段と、を備える。
【０００９】
この排他制御装置によれば、第１のプロセスによってロックされているデータブロック群に属するデータブロックに対する第２のプロセスによるアクセスであっても、アクセス内容記録手段によって記録された先行の第１のプロセスによるアクセス内容と抵触しないアクセス内容であれば、アクセス抵触判定手段及びアクセス可否通知手段によってアクセスが許可される。したがって、例えば、変更が加えられないデータなどを利用するために、後発の第２のプロセスが無駄に待たされることがない。故に、この排他制御装置によれば、排他制御中であっても待ち時間を低減することができる。
【００１０】
上記したアクセス内容記録手段は、第１のプロセスによる上記データブロック群に属するデータブロックへのアクセス内容として、読み込みアクセス及び書き込みアクセスのうちの何れかのアクセス種別を記録することが好ましく、上記したアクセス抵触判定手段は、第１のプロセスがアクセスしたデータブロックと同一のデータブロックに第２のプロセスがアクセスする際に、アクセス内容記録手段によって記録されたアクセス種別と第２のプロセスによる上記データブロック群に属する上記データブロックへのアクセス種別との対比を行うことが好ましい。
【００１１】
また、上記したアクセス抵触判定手段は、第１のプロセスによるアクセス種別が読み込みアクセスであった場合には、第２のプロセスによるアクセス種別が書き込みアクセスであるときに抵触と判定することが好ましく、第１のプロセスによるアクセス種別が書き込みアクセスであった場合には、第２のプロセスによるアクセス種別が読み込みアクセス及び書き込みアクセスであるときに抵触と判定することが好ましい。
【００１２】
本発明の別の排他制御装置は、共有リソースに対して複数のプロセスからアクセスを行う際に、共有リソースにおける複数のデータブロックからなるデータブロック群単位でロックを行う排他制御装置において、複数のプロセスがデータブロック群のロックを獲得しているときに、（イ）複数のプロセスそれぞれによる上記データブロック群に属するデータブロックへのアクセス内容を記録するアクセス内容記録手段と、（ロ）複数のプロセスのうちの何れかのプロセスが上記データブロック群に属するデータブロックへアクセスする際に、当該プロセスを判定対象プロセスとすると共に当該データブロックを判定対象データブロックとし、判定対象プロセスによる判定対象データブロックへのアクセス内容とアクセス内容記録手段によって記録されたアクセス内容との対比を行い、判定対象プロセスによる判定対象データブロックへのアクセスが他のプロセスによる判定対象データブロックへのアクセスと抵触するか否かを判定するアクセス抵触判定手段と、（ハ）アクセス抵触判定手段の判定結果に基づいて、判定対象プロセスによる判定対象データブロックへのアクセスを許可するか否かを通知するアクセス可否通知手段と、を備える。
【００１３】
この排他制御装置によれば、複数のプロセスのうちの何れかによってロックされているデータブロック群に属するデータブロックに対するアクセスであっても、アクセス内容記録手段によって記録された先行の他のプロセスによるアクセス内容と抵触しないアクセス内容であれば、アクセス抵触判定手段及びアクセス可否通知手段によってアクセスが許可される。したがって、例えば、変更が加えられないデータなどを利用するために、後発のプロセスが無駄に待たされることがない。故に、この排他制御装置によれば、排他制御中であっても待ち時間を低減することができる。
【００１４】
上記したアクセス内容は、読み込みアクセス及び書き込みアクセスのうちの何れかのアクセス種別を含み、上記したアクセス抵触判定手段は、判定対象プロセスによる判定対象データブロックへのアクセス種別、及び、アクセス内容記録手段によって記録された他のプロセスによる判定対象データブロックへのアクセス種別のうちの少なくとも何れかが書き込みアクセスであるときに抵触と判定することが好ましい。
【発明の効果】
【００１５】
本発明によれば、排他制御中であっても待ち時間を低減することができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係る排他制御装置を示す図である。
【図２】アクセス競合がない場合の本実施形態の排他制御装置による排他制御処理の一例を示す図である。
【図３】アクセス競合がある場合の本実施形態の排他制御装置による排他制御処理の一例を示す図である。
【発明を実施するための形態】
【００１７】
以下、図面を参照して本発明の好適な実施形態について詳細に説明する。なお、各図面において同一又は相当の部分に対しては同一の符号を附すこととする。
【００１８】
図１は、本発明の実施形態に係る排他制御装置を示す図である。図１には、排他制御装置１０と共に、１つの共有リソース２０及び２つのプロセス３１，３２が記載されている。
【００１９】
共有リソース２０は、複数のデータブロック群を有し、各データブロック群は、複数のデータブロックを有する。この共有リソース２０では、データブロック群単位でプロセス３１，３２による排他制御、すなわち、ロック／ロック解除の制御が可能となっている。また、この共有リソース２０では、排他制御中に、データブロック単位でプロセス３１，３２によるアクセスが可能となっている。
【００２０】
プロセス３１，３２は、それぞれ、少なくとも１つのスレッドを有し、スレッド単位で共有リソース２０にアクセスを行う。すなわち、プロセス３１，３２におけるスレッドは、それぞれ、共有リソース２０におけるデータブロック群単位でロック要求／ロック解除要求を行い、また、ロックを獲得したデータブロック群におけるデータブロック単位でアクセスを行う。なお、以下では、プロセス３１，３２におけるスレッドのアクセスとして、読み出し／書き込みを例示する。これらのプロセス３１，３２による共有リソース２０への排他制御は、排他制御装置１０によって制御される。
【００２１】
排他制御装置１０は、ロック処理部１１、アクセス内容記録部１２と、アクセス抵触判定部１３と、アクセス可否通知部１４とを備える。
【００２２】
ロック処理部１１は、プロセス３１，３２からのロック要求／ロック解除要求に応じて、プロセス３１，３２による共有リソース２０のデータブロック群（以下、排他対象領域という。）のロック／ロック解除を行う。
【００２３】
ロック状態の保持は、例えば、ロック変数に基づいて行われる。ロック変数は、ロック状態（ロック状態か否か）、ロックオーナー情報（プロセスＩＤやスレッドＩＤなどのロック保持者を特性する情報）、ロック対象メモリ領域情報などを含む。ロック変数は、ロック処理部１１がロックを行う際にメモリ等に記録されればよく、本実施形態ではアクセス内容記録部１２に記録されるものとする。なお、ロック変数は、ロック処理部１１がロック解除を行う際に破棄される。
【００２４】
アクセス内容記録部１２は、プロセス３１，３２それぞれが共有リソース２０における排他対象領域に対してロックを獲得しているときに、プロセス３１，３２それぞれが排他対象領域におけるデータブロックに対して行うアクセスの内容を記録する。すなわち、アクセス内容記録部１２は、記憶したロック変数におけるロック対象メモリ領域の範囲内に対してアクセスが行われるときに、そのアクセス内容を記録する。また、アクセス内容記録部１２は、ロック処理部１１がロック解除を行う際に、対象プロセスのアクセス記録を破棄する。
【００２５】
アクセス記録は、アクセス対象メモリ領域情報（例えば、アクセスが行われたデータブロックのアドレス）、アクセス種別（読み出し、書き込みなど）、アクセスタイミングなどを含む。アクセス記録は、ロック変数と関連付けて記録される。
【００２６】
アクセス抵触判定部１３は、プロセス３１，３２によって共有リソース２０におけるデータブロックへのアクセスが行われるときに、他のプロセスによるアクセスに抵触するか否かの判定を行う。例えば、アクセス抵触判定部１３は、プロセス３２による共有リソース２０のデータブロックへのアクセス内容と、アクセス内容記録部１２における同一のデータブロックへのプロセス３１によるアクセス記録の内容とを対比する。
【００２７】
例えば、アクセス抵触判定部１３は、
（Ａ）プロセス３２と異なる他のプロセス３１によるアクセス記録が存在するか、
（Ｂ）プロセス３２がアクセスするデータブロックと同一のデータブロックに対するプロセス３１によるアクセス記録が存在するか、
（Ｃ）プロセス３２によるアクセス種別、及び、アクセス記録におけるプロセス３１による同一のデータブロックへのアクセス種別のうちの少なくとも何れか一方が書き込みアクセスであるか
の対比を行う。
【００２８】
具体的には、アクセス抵触判定部１３は、
（ａ）プロセス３２と異なる他のプロセス３１を示すロックオーナー情報を有するロック変数に関連付けられたアクセス記録が存在し、
（ｂ）それらのアクセス記録の中に、プロセス３２がアクセスするアクセス対象領域と同一のアクセス対象領域アドレスを有するアクセス記録が存在し、
（ｃ）そのアクセス記録におけるアクセス種別、及び、プロセス３２によるアクセス種別のうちの少なくとも何れか一方が書き込みアクセスである
場合に、プロセス３２によるアクセスがプロセス３１によるアクセスと抵触（競合）すると判断する。
【００２９】
すなわち、アクセス抵触判定部１３は、異なるオーナーから同一のアドレスにアクセスがあり、これらのアクセス種別の少なくとも一方が書き込みアクセスである場合に、アクセス抵触（アクセス競合）と判定する。
【００３０】
なお、アクセスがプロセッサの実行タイミングとして同時に行われる場合には、例えば、バス機構その他の調停機構により、アクセスタイミングを異ならせればよい。
【００３１】
アクセス可否通知部１４は、アクセス抵触判定部１３の判定結果に基づき、プロセスよるアクセスを許可するか否かを通知する。例えば、アクセス抵触判定部１３の判定結果がアクセス抵触でない場合、アクセス可否通知部１４は、プロセス３２によるアクセスを許可する。一方、アクセス抵触判定部１３の判定結果がアクセス抵触である場合には、アクセス可否通知部１４は、プロセス３２によるアクセスを許可せず、そのアクセス及び排他が失敗したことを通知する。
【００３２】
次に、本実施形態の排他制御装置の動作について、一例を示しながら説明する。図２は、アクセス競合がない場合の本実施形態の排他制御装置による排他制御処理の一例を示す図であり、図３は、アクセス競合がある場合の本実施形態の排他制御装置による排他制御処理の一例を示す図である。
（アクセス競合がない場合の一例）
【００３３】
（１）図２に示すように、プロセス３１のスレッドＰ１によって共有リソース２０の排他対象領域に対してロック要求が行われると、ロック処理部１１によって、スレッドＰ１による排他対象領域のロックが行われると共に、ロック変数が記録されてロック状態が保持される。
【００３４】
（２）次に、プロセス３２のスレッドＰ２によって共有リソース２０の同一の排他対象領域に対してロック要求が行われると、ロック処理部１１によって、スレッドＰ２による排他対象領域のロックが行われると共に、ロック変数が記録されてロック状態が保持される。
【００３５】
（３）次に、スレッドＰ１によって排他対象領域のデータブロック（以下、メンバという。）１への読み出しアクセスが行われると、アクセス抵触判定部１３によってアクセス抵触（アクセス競合）を判定する。この場合、他のスレッドＰ２による同一のメンバ１へのアクセス記録がアクセス内容記録部１２に存在しないので、アクセス抵触（アクセス競合）なしと判定される。この判定結果に基づき、アクセス可否通知部１４によって、メンバ１へのアクセス許可をスレッドＰ１に通知する。すると、スレッドＰ１によってメンバ１への読み出しアクセスが実行される。また、アクセス内容記録部１２によって、スレッドＰ１によるメンバ１へのアクセス内容をアクセス記録１として記録する。
【００３６】
（４）次に、スレッドＰ２によって排他対象領域のメンバ２への書き込みアクセスが行われると、アクセス抵触判定部１３によってアクセス抵触（アクセス競合）を判定する。この場合、他のスレッドＰ１による同一のメンバ２へのアクセス記録がアクセス内容記録部１２に存在しないので、アクセス抵触（アクセス競合）なしと判定される。この判定結果に基づき、アクセス可否通知部１４によって、メンバ２へのアクセス許可をスレッドＰ２に通知する。すると、スレッドＰ２によってメンバ２への書き込みアクセスが実行される。また、アクセス内容記録部１２によって、スレッドＰ２によるメンバ２へのアクセス内容をアクセス記録２として記録する。
【００３７】
（５）次に、スレッドＰ１によって排他対象領域のメンバ３への読み出しアクセスが行われると、アクセス抵触判定部１３によってアクセス抵触（アクセス競合）を判定する。この場合、他のスレッドＰ２による同一のメンバ３へのアクセス記録がアクセス内容記録部１２に存在しないので、アクセス抵触（アクセス競合）なしと判定される。この判定結果に基づき、アクセス可否通知部１４によって、メンバ３へのアクセス許可をスレッドＰ１に通知する。すると、スレッドＰ１によってメンバ３への読み出しアクセスが実行される。また、アクセス内容記録部１２によって、スレッドＰ１によるメンバ３へのアクセス内容をアクセス記録３として記録する。
【００３８】
（６）次に、スレッドＰ２によって排他対象領域のメンバ３への読み出しアクセスが行われると、アクセス抵触判定部１３によってアクセス抵触（アクセス競合）を判定する。この場合、他のスレッドＰ１による同一のメンバ３へのアクセス記録３がアクセス内容記録部１２に存在するが、このアクセス記録３におけるアクセス種別及びスレッドＰ２によるアクセス種別が共に読み出しアクセスであるので、アクセス抵触（アクセス競合）なしと判定される。この判定結果に基づき、アクセス可否通知部１４によって、メンバ３へのアクセス許可をスレッドＰ２に通知する。すると、スレッドＰ２によってメンバ３への読み出しアクセスが実行される。また、アクセス内容記録部１２によって、スレッドＰ２によるメンバ３へのアクセス内容をアクセス記録４として記録する。
【００３９】
（７）次に、スレッドＰ１によって排他対象領域のメンバ５への読み出しアクセスが行われると、アクセス抵触判定部１３によってアクセス抵触（アクセス競合）を判定する。この場合、他のスレッドＰ２による同一のメンバ５へのアクセス記録がアクセス内容記録部１２に存在しないので、アクセス抵触（アクセス競合）なしと判定される。この判定結果に基づき、アクセス可否通知部１４によって、メンバ５へのアクセス許可をスレッドＰ１に通知する。すると、スレッドＰ１によってメンバ５への読み出しアクセスが実行される。また、アクセス内容記録部１２によって、スレッドＰ１によるメンバ５へのアクセス内容をアクセス記録５として記録する。
【００４０】
（８）次に、スレッドＰ２によって排他対象領域のメンバ４への書き込みアクセスが行われると、アクセス抵触判定部１３によってアクセス抵触（アクセス競合）を判定する。この場合、他のスレッドＰ１による同一のメンバ４へのアクセス記録がアクセス内容記録部１２に存在しないので、アクセス抵触（アクセス競合）なしと判定される。この判定結果に基づき、アクセス可否通知部１４によって、メンバ４へのアクセス許可をスレッドＰ２に通知する。すると、スレッドＰ２によってメンバ４への書き込みアクセスが実行される。また、アクセス内容記録部１２によって、スレッドＰ２によるメンバ４へのアクセス内容をアクセス記録６として記録する。
【００４１】
（９）次に、スレッドＰ２によって排他対象領域に対するロック解除要求が行われると、ロック処理部１１によって、スレッドＰ２による排他対象領域のロック解除が行われる。また、アクセス内容記録部１２によって、スレッドＰ２に関するアクセス記録２，４，６を破棄する。
【００４２】
（１０）次に、スレッドＰ１によって排他対象領域に対するロック解除要求が行われると、ロック処理部１１によって、スレッドＰ１による排他対象領域のロック解除が行われる。また、アクセス内容記録部１２によって、スレッドＰ１に関するアクセス記録１，３，５を破棄する。
（アクセス競合がある場合の一例）
【００４３】
図３に示すように、（１）〜（７）の処理は同一である。
【００４４】
（８）次に、スレッドＰ２によって排他対象領域のメンバ５への書き込みアクセスが行われると、アクセス抵触判定部１３によってアクセス抵触（アクセス競合）を判定する。この場合、他のスレッドＰ１による同一のメンバ５へのアクセス記録５がアクセス内容記録部１２に存在し、スレッドＰ２のアクセス種別が書き込みアクセスであるので、アクセス抵触（アクセス競合）ありと判定される。
【００４５】
（９）すると、アクセス可否通知部１４によって、メンバ５に対するアクセス競合により排他が失敗したことをスレッドＰ２に通知する。すると、スレッドＰ２によって、ロックを獲得してから排他失敗の通知を受け取るまでに行った処理について、リカバリ処理が行われる。リカバリ処理としては、アクセス記録から排他要求発行直前の状態まで処理を戻したり、エラーとして扱ったり、などが考えられるが、本発明の範囲外であるので、詳細な説明は省略する。なお、この種のリカバリ処理に応じて、アクセス内容記録部１２によって、スレッドＰ２に関するアクセス記録２，４，６を破棄したり、ロック処理部１１によって、スレッドＰ２による排他対象領域のロック解除が行われることとなる。
【００４６】
次に、（１０）の処理は同一である。
【００４７】
以上説明したように、本実施形態の排他制御装置１０では、
・プロセス３１，３２によって多重にロック可能であり、
・ロック中はロック対象領域内のアクセスを、アクセス内容記録部１２によってプロセス３１，３２ごとに記録し、
・ロック対象領域内のアクセスが行われるときに、アクセス記録に基づいて、アクセス抵触判定部１３によってアクセスの競合を判断する。
すなわち、本実施形態の排他制御装置１０では、ロックが競合しても、実際のアクセス競合を検出するまで競合と判断しない。
【００４８】
そして、本実施形態の排他制御装置１０では、
・アクセスが競合した場合に、アクセス可否通知部１４によって後からアクセスするプロセスに排他の失敗を通知し、
・アクセスの競合がない場合には、ロック解除までそのまま処理を進める。
【００４９】
このように、本実施形態の排他制御装置１０によれば、プロセス３１によってロックされている排他対象領域内のメンバに対するプロセス３２によるアクセスであっても、アクセス内容記録部１２によって記録された先行のプロセス３１によるアクセス内容と抵触しないアクセス内容であれば、アクセス抵触判定部１３及びアクセス可否通知部１４によってアクセスが許可される。したがって、例えば、変更が加えられないデータなどを利用するために、後発のプロセス３２が無駄に待たされることがない。故に、本実施形態の排他制御装置１０によれば、排他制御中であっても待ち時間を低減することができる。
【００５０】
なお、本発明は上記した本実施形態に限定されることなく種々の変形が可能である。例えば、本実施形態では、プロセス３１及びプロセス３２の両方のアクセスに対してアクセス抵触判定を行ったが、ロック先行のプロセス３１に対してはアクセス抵触判定を行うことなく優先的にアクセスを許可し、ロック後発のプロセス３２のみに対してアクセス抵触判定を行ってもよい。
【００５１】
また、本実施形態では、２つのプロセスによる共有リソースへの排他制御装置を例示したが、３以上のプロセスによる共有リソースへの排他制御装置であっても、本発明の思想が適用可能である。例えば、ロック処理部１１は、複数のプロセスによる共有リソース２０の排他対象領域のロック／ロック解除を行い、アクセス内容記録部１２は、複数のプロセスが排他対象領域に対してロックを獲得しているときに、複数のプロセスそれぞれによる排他制御領域におけるデータブロックへのアクセス内容を記録する。そして、アクセス抵触判定部１３は、複数のプロセスのうちの何れかのプロセスが排他対象領域におけるデータブロックへアクセスする際に、当該プロセスを判定対象プロセスとすると共に当該データブロックを判定対象データブロックとし、判定対象プロセスによる判定対象データブロックへのアクセス内容とアクセス内容記録部１２によって記録されたアクセス内容との対比を行い、判定対象プロセスによる判定対象データブロックへのアクセスが他のプロセスによる判定対象データブロックへのアクセスと抵触するか否かを判定し、この判定結果に基づいて、アクセス可否通知部１４は、判定対象プロセスによる判定対象データブロックへのアクセスを許可するか否かを通知する。
【符号の説明】
【００５２】
１０…排他制御装置、１１…ロック処理部、１２…アクセス内容記録部（アクセス内容記録手段）、１３…アクセス抵触判定部（アクセス抵触判定手段）、１４…アクセス可否通知部（アクセス可否通知手段）、２０…共有リソース、３１，３２…プロセス（第１及び第２のプロセス）。
【図１】
2011118688.tif 000003
【図２】
2011118688.tif 000004
【図３】
2011118688.tif 000005