(57)【特許請求の範囲】
【請求項１】
実行体による資源の排他獲得を制御する資源ロック制御機構において、
実行体からのトークン獲得要求に応答して、該実行体の要求する資源が使用されているのか否かの判断を行うことなく、１つの実行体のみにトークンを与えるトークン管理手段と、
実行体の発行するトークン獲得要求を監視して、そのトークン獲得要求が指定の回数を超えるときに、該実行体の走行権を一時的に放棄させる処理を行い、かつ、この指定回数として、他に資源を要求する実行体が存在せず、かつ、既に資源を使用している実行体が存在していない状態で、実行体が資源を獲得してトークンを返却するまでの最短の処理時間に相当する回数を用いて、この処理を行う放棄手段と、
実行体にトークンが与えられるときに、該実行体の要求する資源が使用されているのか否かを判断する判断手段と、
上記判断手段が資源の使用状態を判断するときに、実行体の持つトークンを返却するとともに、該実行体の資源獲得要求をスタック型事象待ち手段に登録する第１の制御手段と、
上記判断手段が資源の非使用状態を判断するときに、トークンの与えられた実行体に資源アクセス権を与えてから、該実行体の持つトークンを返却する第２の制御手段とを備えることを、
特徴とする資源ロック制御機構。
【請求項２】
請求項１記載の資源ロック制御機構において、
上記トークン管理手段が資源の使用の終えた実行体に対してトークンを与えるときに、スタック型事象待ち手段に資源獲得要求が登録されているときには、該スタック型事象待ち手段に資源開放を通知してからトークンを返却するとともに、登録されていないときには、直ちにトークンを返却する第３の制御手段を備えることを、
特徴とする資源ロック制御機構。
【請求項３】
請求項１又は２記載の資源ロック制御機構において、
上記トークン管理手段は、実行体からトークン獲得要求があるときに、規定のメモリ域に規定のデータ値を書き込む排他処理命令と、該メモリ域のデータ値が該排他処理命令の実行前後で異なるものとなるのか否かをチェックするチェック処理命令とを使ってトークンの排他付与を実行することを、
特徴とする資源ロック制御機構。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、実行体による資源の排他獲得を制御する資源ロック制御機構に関し、特に、長期間型ロックと短期間型ロックの双方に適するとともに、スピンロック方式の持つプロセスディスパッチフォルトやＭＰフォルトの問題点を解消できるようにする資源ロック制御機構に関する。
【０００２】
【従来の技術】
並列計算機では、並列動作を行うプロセス（実行体）が資源を逐次的にアクセスするために、資源を排他的に使用可能にする資源ロック制御機構を備えている。
【０００３】
この資源ロック制御機構には、スタックロック方式とスピンロック方式という２つの方式がある。
スタックロック方式では、資源ロック制御機構は、図１０に示すように、プロセスから資源アクセス権の獲得要求が発行されると、その要求を資源毎に用意されるスタックにキューイングしていくとともに、先頭にキューイングされる要求の発行元プロセスに対して資源へのアクセス権を与え、そして、資源へのアクセス処理を終了したプロセスから資源開放要求が発行されると、キューイングされているそのプロセスの要求をスタックから取り外していくことで、資源への逐次アクセスを実現している。ここで、図中の「○」は、資源へのアクセスの待ち状態にあるプロセスの要求を示しており、「●」は、資源にアクセスしているプロセスの要求を示している。
【０００４】
一方、スピンロック方式では、図１１に示すように、資源へアクセスする必要のあるプロセスは、資源ロック制御機構に対して、資源アクセス権を獲得できるまで獲得要求を繰り返し発行する構成を採って、資源ロック制御機構は、その要求を受け取るときに、その要求の指す資源にアクセスしているプロセスが存在しない場合には、その要求元のプロセスにアクセス権を与えていくことで、資源への逐次的アクセスを実現している。
【０００５】
従来技術では、資源に合わせて、このスタックロック方式かスピンロック方式のいずれかの方式を採用して、資源ロック制御を実行するという構成を採っている。
【０００６】
【発明が解決しようとする課題】
スタックロック方式は、スタックに要求をキューイングしたり、スタックから要求を取り外す処理を実行することから、排他時間の短い資源排他制御に使用する場合には、処理負荷が重いという欠点がある。これから、例えば、ファイルアクセスのような資源へのアクセスが比較的長い時間となる処理に適用されている。
【０００７】
一方、スピンロック方式は、資源アクセス権を獲得したプロセスが長い時間それを保持したまま処理を続行すると、別のプロセスが資源アクセス権の獲得要求を長い時間繰り返し発行していくループ（スピン）に陥るという欠点がある。これから、例えば、メモリアクセスのような排他時間が極端に短い処理に適用されている。
【０００８】
更に、このスピンロック方式には、プロセスディスパッチフォルトとＭＰフォルトという２つのフォルト現象がある。次に、この２つのフォルト現象について説明する。
【０００９】
同時に複数のプロセスが動作することを基本とする現在の計算機アーキテクチャでは、プロセスへのＣＰＵ資源の割り当てを時分割に行うというタイムシェアリングアーキテクチャを採用している。
【００１０】
すなわち、各プロセスへのＣＰＵ走行権の割り当ては時分割的であり、オペレーティングシステムにより、例えば、数ｍｓｅｃ〜数十ｍｓｅｃを単位（タイムスライス時間）として、複数のプロセスに対して逐次的／時分割的にＣＰＵ走行権が割り当てられていく。そして、ＣＰＵ走行権の付与されたプロセスは、所定の走行時間を消費すると、ＣＰＵ走行権を奪い取られて休眠状態に入り、別の休眠状態にあるプロセスにＣＰＵ走行権が付与されていく。このようにして、オペレーティングシステムは、タイムスライス時間を単位として、複数のプロセスが均等にＣＰＵ資源を使えるように制御する構成を採っているのである。
【００１１】
このタイムシェアリングシステム下では、スピンロック方式は、プロセスディスパッチによるロックフォルト（プロセスディスパッチフォルト）を発生してしまう。
【００１２】
すなわち、資源アクセス権を保持するプロセスが、資源アクセス権を保持した状態でタイムシェアリングルールに従ってＣＰＵ走行権を奪われると、図１２に示すように、その資源に対して資源のアクセス権の獲得を要求する他のプロセスは、最低でも１タイムスライス時間はスピンを繰り返し（プロセス数が多くなると長くなる）、無駄な時間を費やしてしまうというプロセスディスパッチフォルトが発生するのである。
【００１３】
このプロセスディスパッチフォルトは、資源へのアクセス処理の時間が長くなる程高い確率で起こることから、資源排他／占有時間の長くなる場合には、スピンロック方式の利用には注意が必要となる。なお、タイムシェアリングルールにより各プロセスに順序よくＣＰＵ走行権が与えられることから、このプロセスディスパッチフォルトは、アクセス権を保持したまま休眠したプロセスが再びＣＰＵ走行権を得て、それにより処理を終了してアクセス権を開放していく時点で解消されることになる。
【００１４】
一方、近年の計算機システムでは、１つのオペレーティングシステム下で、複数のＣＰＵを装備するようになってきた。このようなマルチプロセッサシステム（ＭＰ）では、同時にＣＰＵ台数分の複数のプロセスがＣＰＵ走行権を得て並列的に動作することから、ＭＰフォルトを発生してしまう。
【００１５】
すなわち、ＣＰＵが２台の場合で説明するならば、プロセス１とプロセス２とに同時にＣＰＵ走行権が与えられることになるが、この場合、プロセス１とプロセス２とが同時に資源に対するアクセス権を要求することが起こると、図１３に示すように、一方がアクセス権を開放するまでの間、他方がスピンロックによるループに陥るというＭＰフォルトが発生するのである。このように、資源に対するアクセス権を保持するプロセスがアクティブであるのにも関わらず、すなわちプロセスディスパッチによるフォルトでないにも関わらず、マルチプロセッサシステムの構成により他のプロセスが待たされてしまうことになる。
【００１６】
このＭＰフォルトは、ＣＰＵ台数が多くなる程高い確率で起こることから、ＣＰＵ台数が多い場合には、スピンロック方式の利用には注意が必要となる。
このように、スタックロック方式は長期間型ロックに向く資源ロック制御方式であり、スピンロック方式は短期間型ロックに向く資源ロック制御方式であることから、従来技術では、資源へのアクセスが長い時間となる場合には、スタックロック方式を用い、資源へのアクセスが短い時間となる場合には、スピンロック方式を用いる構成を採っているが、この方法に従っていると、用途に応じてこの２つを切り分けて使用しなければならないという問題点があった。
【００１７】
更に、スピンロック方式には、プロセスディスパッチフォルトとＭＰフォルトという２つのフォルト現象があり、従来技術のように、スピンロック方式を固定的に用いる方法を採っていると、プロセスディスパッチフォルトやＭＰフォルトにより、本来の短期間型ロックの特性を著しく損なうという問題点があった。
【００１８】
本発明はかかる事情に鑑みてなされたものであって、長期間型ロックと短期間型ロックの双方に適するとともに、スピンロック方式の持つプロセスディスパッチフォルトやＭＰフォルトの問題点を解消できるようにする新たな資源ロック制御機構の提供を目的する。
【００１９】
【課題を解決するための手段】
図１に本発明の原理構成を図示する。
図中、１は計算機システムであって、１つ又は複数の資源２と、資源２を使用する複数の実行体３と、実行体３による資源２の排他獲得を制御する本発明の資源ロック制御機構４とを備えるものである。
【００２０】
本発明の資源ロック制御機構４は、トークン管理手段１０と、放棄手段１１と、判断手段１２と、スタック型事象待ち手段１３と、第１の制御手段１４と、第２の制御手段１５と、第３の制御手段１６とを備える。
【００２１】
このトークン管理手段１０は、実行体３からのトークン獲得要求に応答して、その実行体３の要求する資源２が使用されているのか否かの判断を行うことなく、１つの実行体３のみにトークンを与える。
放棄手段１１は、実行体３の発行するトークン獲得要求を監視して、そのトークン獲得要求が指定の回数を超えるときに、その実行体３の走行権を一時的に放棄させる。
この処理を行うにあたって、放棄手段１１は、この指定回数として、他に資源２を要求する実行体３が存在せず、かつ、既に資源２を使用している実行体３が存在していない状態で、実行体３が資源２を獲得してトークンを返却するまでの最短の処理時間に相当する回数を用いて、この処理を行う。
【００２２】
判断手段１２は、実行体３にトークンが与えられるときに、その実行体３の要求する資源２が使用されているのか否かを判断する。スタック型事象待ち手段１３は、実行体３の資源獲得要求をキューイングする。
【００２３】
第１の制御手段１４は、実行体３の資源獲得要求をスタック型事象待ち手段１３に登録する。第２の制御手段１５は、実行体３に資源アクセス権を与える。第３の制御手段１６は、スタック型事象待ち手段１３に資源開放を通知することで実行体３に資源アクセス権を与える。
【００２４】
このように構成される本発明の資源ロック制御機構４では、トークン管理手段１０は、実行体３からのトークン獲得要求に応答して１つの実行体３のみにトークンを与えていく処理を実行する。このとき、放棄手段１１は、実行体３の発行するトークン獲得要求を監視して、そのトークン獲得要求が指定の回数を超えるときに、その実行体３の走行権を一時的に放棄させることで長期間のスピンに陥ることを防止する。
【００２５】
そして、判断手段１２は、実行体３にトークンが与えられると、その実行体３の要求する資源２が使用されているのか否かを判断する。
この判断手段１２の判断処理を受けて、第１の制御手段１４は、判断手段１２が資源２の使用状態を判断すると、実行体３の持つトークンを返却するとともに、その実行体３の資源獲得要求をスタック型事象待ち手段１３に登録し、第２の制御手段１５は、判断手段１２が資源２の非使用状態を判断すると、その実行体３に資源アクセス権を与えてから、その実行体３の持つトークンを返却する。
【００２６】
一方、第３の制御手段１６は、トークン管理手段１０により資源２の使用の終えた実行体３に対してトークンが与えられると、スタック型事象待ち手段１３に資源獲得要求が登録されているときには、スタック型事象待ち手段１３に資源開放を通知（これにより、スタック型事象待ち手段１３の先頭に登録されている実行体３に資源アクセス権が与えられる）してからトークンを返却するとともに、登録されていないときには、直ちにトークンを返却する。
【００２７】
このように、本発明の資源ロック制御機構４では、トークンを獲得した実行体３に対して資源２の獲得権を与える構成を採って、その資源２が他の実行体３により排他獲得されていない場合には、その資源２へのアクセス権を与えていくとともに、排他獲得されている場合には、スタック型事象待ち手段１３に資源獲得要求をキューイングするというスピンロック方式とスタックロック方式のハイブリッド構成を採ることで、長期間型ロックと短期間型ロックの双方に適する資源ロック制御方式を実現できる。
【００２８】
そして、その構成を採るときに、規定のスピン回数でトークンを獲得できない場合には、資源獲得要求を発行する実行体３の走行権を一時的に奪っていくことで、長期間のスピンに陥らないようにするとともに、ＭＰフォルトに起因するロック競合を解消し、更に、実行体３に資源アクセス権を与えていく場合にも、資源獲得要求をスタック型事象待ち手段１３にキューイングしていく場合にも、トークンを直ちに返却させて実行体３がトークンを保持したまま休眠状態に入らないようにすることで、プロセスディスパッチフォルトに起因するロック競合を解消していく構成を採ることから、スピンロック方式の持つプロセスディスパッチフォルトやＭＰフォルトの発生も防止できる。
【００２９】
【発明の実施の形態】
以下、実施の形態に従って本発明を詳細に説明する。
図１で説明したように、本発明では、スタックロック方式とスピンロック方式の両方の機能を兼ね備えたハイブリッドロック機構とも呼ぶべき資源ロック制御機構を用意して、これに従って資源ロック制御を実行する構成を採るものである。
【００３０】
図２に示すように、各プロセスは、資源を要求するときには、この本発明のハイブリッドロック機構２０のロック獲得制御機構２００を呼び出し、資源に対するアクセス権を獲得してから、その資源に対する処理を行わなくてはならない。そして、資源に対する処理を終了したときには、この本発明のハイブリッドロック機構２０のロック開放制御機構３００を呼び出し、資源に対するアクセス権を開放していかなくてはならない。
【００３１】
図３に、本発明のハイブリッドロック機構２０の装置構成を図示する。
この図に示すように、本発明のハイブリッドロック機構２０は、トークン管理機構２１と、スピンロック機構２２と、プロセス走行権一時放棄機構２３と、スタック型事象待ち機構２４と、ロック保持者登録管理機構２５という５つの機構を持っている。
【００３２】
次に、これらの各機構について説明する。
本発明のハイブリッドロック機構２０の備えるトークン管理機構２１は、図４に示すように、資源獲得や資源開放を要求するプロセスに対しての関所としての役割を持っている。すなわち、トークン管理機構２１は、通行手形に相当するトークンを１個のみ発行する構成を採っており、各プロセスは、資源獲得（ロック獲得）や資源開放（ロック開放）の処理に入るときには、このトークンを獲得しなければならず、また、処理を終了したときには、このトークンを返却しなければならない構成を採っている。
【００３３】
トークン管理機構２１は、様々な方法により実現可能であるが、例えば、通常の計算機に一般的に備わっている排他処理命令／チェック処理命令を使って実現することができる。
【００３４】
この排他処理命令は、図５に示すように、第１オペランドの内容を第２オペランドの示すメモリ番地へ移す処理を実行するものであり、実行前後の値が等しいときには、ステータスレジスタに「等しい」旨の状態情報が設定されることになる。この命令を実行しているプロセッサがある場合、他のプロセッサは、その間、この命令を行うことはなく、これから、この命令を実行した後に、チェック処理命令に従ってステータスレジスタの状態を調べることにより、この命令が排他的に完了したのか否かを知ることができる。なお、この排他処理命令は、第１オペランドと第２オペランドの意味が逆になる等、計算機により若干の違いはあるが本質的な意味はみな同じである。
【００３５】
この排他処理命令の性質を使うと、図６に示すように、初期値としてＯｆｆ値の設定されるフラグ域（トークンが返却されるときに設定される）に、排他処理命令によりＯｎ値を書き込む構成を採ることで、１個のプロセスにのみトークンを発行するトークン管理機構２１を実現できることになる。なお、Ｏｎ値／Ｏｆｆ値は逆であってもよく、フラグ域の代わりに、長いデータ長のメモリ域を使ってもよいことは言うまでもない。
【００３６】
本発明のハイブリッドロック機構２０の備えるスピンロック機構２２は、プロセスの発行するトークン管理機構２１に対するトークン獲得要求を規定の回数まで許可する処理を行う。
【００３７】
本発明のハイブリッドロック機構２０の備えるプロセス走行権一時放棄機構２３は、スピンロック機構２２によりプロセスの発行するトークン獲得要求が規定回数に到達することが判断されると、そのプロセスに割り当てられた走行時間が消費される前に、オペレーティングシステムに対して、そのプロセスに対する走行権利の放棄を指示する処理を行う。オペレーティングシステムは、この指示を受け取ると、そのプロセスをプロセスディスパッチ待ちキューの所定の位置に設定することで、そのプロセスの走行権を放棄させるとともに、次のプロセスディスパッチに備えさせる。
【００３８】
このプロセス走行権一時放棄機構２３は、タイマー機構を使って実現することも可能である。すなわち、タイマー機構では、図７に示すように、プロセスがタイマー値（相対値のこともあるし、絶対値のこともある）を設定すると、そのプロセスはＣＰＵ資源を使用しない状態に入って、その設定したタイマー時間後に、ＣＰＵにタイマー割り込みというハードウェア割り込みが通知され、これにより、そのプロセスは走行を再開する。これから、このタイマー機構を使うことで、プロセスの走行権を一時的に放棄させるプロセス走行権一時放棄機構２３を実現できるのである。なお、タイマー値としては、タイムシェアリングシステムの１タイムスライス時間より若干大きい値で、２タイムスライス時間よりは小さい値を設定することが好ましい。
【００３９】
本発明のハイブリッドロック機構２０の備えるスタック型事象待ち機構２４は、複数のプロセスからの資源獲得要求を要求順にスタックし逐次的に資源獲得要求を処理していくために用意されるものであり、サービスの待ち合わせを実現する。このスタック型事象待ち機構２４は、Ｗａｉｔ／Ｐｏｓｔ関数や、ＭｓｇＳＥＮＤ／ＭｓｇＲＣＶ関数や、ＳｅｔＬＯＣＫ関数といった通常の計算機で一般的に装備されている機構で実現できる。
【００４０】
本発明のハイブリッドロック機構２０の備えるロック保持者登録管理機構２５は、資源へのアクセス権を獲得したプロセス（ロック保持者となる）の識別子を管理する。資源へのアクセス権を獲得したプロセスは１つであることから、ロック保持者登録管理機構２５に管理されるプロセス識別子は１つのみである。
【００４１】
図８に、本発明のハイブリッドロック機構２０のロック獲得制御機構２００がプロセスより資源獲得要求を受け取るときに実行する処理フローの一実施例、図９に、本発明のハイブリッドロック機構２０のロック開放制御機構３００がプロセスより資源開放要求を受け取るときに実行する処理フローの一実施例を図示する。
【００４２】
次に、この処理フローに従って、本発明のハイブリッドロック機構２０により実行される資源ロック制御について詳細に説明する。
本発明のハイブリッドロック機構２０のロック獲得制御機構２００は、プロセスより資源獲得要求を受け取ると、図８の処理フローに示すように、先ず最初に、ステップ１で、トークン管理機構２１を使って、排他処理命令によるトークン獲得処理を実行する。このトークンは、上述したように、１つのプロセスのみが獲得できることになる。
【００４３】
続いて、ステップ２で、資源獲得要求を発行してきたプロセスがトークンを獲得できたのか否かをチェックして、トークンを獲得できないことを判断するときには、ステップ３に進んで、そのプロセスによるトークン獲得の試みの回数が所定のスピン回数を超えたのか否を判断して、超えていないことを判断するときには、ステップ１に戻っていく。このスピン処理がスピンロック機構２２の処理に該当する。
【００４４】
一方、ステップ３で所定のスピン回数を超えたことを判断するときには、ステップ４に進んで、プロセス走行権一時放棄機構２３を起動して、そのプロセスの持つ走行権を一時的に放棄させる。この走行権の放棄処理により、無駄なスピンの実行が防止され、走行権を他のプロセスに分け与えていくことで、ロック競合事象を速やかに解消していくことを積極的に進め、システム全体としての処理能力の向上を実現する。
【００４５】
ステップ２でトークンの獲得を判断すると、ステップ５に進んで、ロック保持者登録管理機構２５にロック保持者が登録されているのか否かを問い合わせ、続くステップ６で、ロック保持者が登録されているのか否かを判断する。この判断処理によりロック保持者が登録されていないことを判断するとき、すなわち、アクセス要求のある資源を排他獲得しているプロセスが存在しないことを判断するときには、ステップ７に進んで、ロック保持者登録管理機構２５に対して、トークンを獲得したプロセスの識別子を登録してから、ステップ８に進んで、トークン管理機構２１を使って、排他処理命令によるトークン返却処理を実行する。
【００４６】
この後、トークンを返却したプロセスは、ロック保持者登録管理機構２５にプロセス識別子が登録されることで資源を排他獲得できたことから、資源をアクセスすることで所定のデータ処理を実行することになる。従って、この処理ルートを辿る場合には、プロセスは、スピンロックだけで資源アクセス権が得られるので、極めて高速に資源アクセス権を得られることになる。
【００４７】
一方、ステップ６でロック保持者が登録されていることを判断するとき、すなわち、アクセス要求のある資源を排他獲得しているプロセスが存在していることとを判断するときには、ステップ９に進んで、トークン管理機構２１を使って、排他処理命令によるトークン返却処理を実行してから、続くステップ１０で、トークンを返却したプロセスの発行した資源獲得要求をスタック型事象待ち機構２４に登録する。
【００４８】
このようにして資源排他獲得制御を実行するのであるが、この構成を採るときにあって、ステップ３で設定されるスピン回数としては、他に資源を要求するプロセスが存在せず、かつ、既に資源を使用しているプロセスが存在していない状態で、プロセスが資源を獲得してトークンを返却するまでの最短の処理時間よりも若干長い時間に相当する回数を用いることが好ましい。このように設定すると、無駄なスピンに陥らずに、しかも、トークンを獲得したプロセスがトークンを返却するまでの間は、トークンの獲得を要求するプロセスはスピンを実行することになって、大部分のＭＰフォルトから逃れられることになる。
【００４９】
この処理にあって、ステップ５ないしステップ１０の処理は、従来のスタックロック方式そのものであるが、本発明のスタックロック方式は、スピン回数を限定して実行するスピンロック機構２２により実現されるロック競合の低下と、プロセス走行権一時放棄機構２３により実現されるロック競合の低下では解消しきれないロック競合に対処するために設けられている。
【００５０】
そして、本発明のスタックロック方式は、スピンロック機構２２から直接発生するスピンロックと、プロセス走行権一時放棄機構２３から発生するスピンロックの欠点である長期間スピンの可能性を排除すべく設けられている。逆を言うと、本発明では、スタックロック方式を用意することで、スピンロック方式を途中で打ち切ることを可能にしているのである。
【００５１】
一方、本発明のハイブリッドロック機構２０のロック開放制御機構３００は、プロセスより資源開放要求を受け取ると、図９の処理フローに示すように、先ず最初に、ステップ１で、トークン管理機構２１を使って、排他処理命令によるトークン獲得処理を実行する。
【００５２】
続いて、ステップ２で、資源開放要求を発行してきたプロセスがトークンを獲得できたのか否かをチェックして、トークンを獲得できないことを判断するときには、ステップ３に進んで、そのプロセスによるトークン獲得の試みの回数が所定のスピン回数を超えたのか否を判断して、超えていないことを判断するときには、ステップ１に戻っていく。
【００５３】
一方、ステップ３で所定のスピン回数を超えたことを判断するときには、ステップ４に進んで、プロセス走行権一時放棄機構２３を起動して、そのプロセスの持つ走行権を一時的に放棄させる。この走行権の放棄処理により、無駄なスピンの実行が防止され、走行権を他のプロセスに分け与えていくことで、ロック競合事象を速やかに解消していくことを積極的に進め、システム全体としての処理能力の向上を実現する。
【００５４】
ステップ２でトークンの獲得を判断すると、ステップ５に進んで、ロック保持者登録管理機構２５に登録されている開放発行元のプロセス識別子を削除し、続くステップ６で、スタック型事象待ち機構２４に資源獲得要求がキューイングされているのか否かを判断する。この判断処理によりスタック型事象待ち機構２４に資源獲得要求がキューイングされていないことを判断するときには、ステップ７に進んで、トークン管理機構２１を使って、排他処理命令によるトークン返却処理を実行する。
【００５５】
一方、ステップ６でスタック型事象待ち機構２４に資源獲得要求がキューイングされていることを判断するときには、ステップ８に進んで、スタック型事象待ち機構２４に対してロック開放を通知し、続くステップ９で、ロック保持者登録管理機構２５に対して、スタック型事象待ち機構２４の先頭にキューイングされている資源獲得要求の発行元プロセスの識別子（このプロセスに資源アクセス権が与えられることになる）を登録してから、ステップ７に進んで、トークン管理機構２１を使って、排他処理命令によるトークン返却処理を実行する。
【００５６】
このようにして資源開放制御を実行するのであるが、この構成を採るときにあって、ステップ３で設定されるスピン回数としては、他に資源を要求するプロセスが存在せず、かつ、既に資源を使用しているプロセスが存在していない状態で、プロセスが資源を獲得してトークンを返却するまでの最短の処理時間よりも若干長い時間に相当する回数を用いることが好ましい。このように設定すると、無駄なスピンに陥らずに、しかも、トークンを獲得したプロセスがトークンを返却するまでの間は、トークンの獲得を要求するプロセスはスピンを実行することになって、大部分のＭＰフォルトから逃れられることになる。
【００５７】
【発明の効果】
以上説明したように、本発明では、トークンを獲得したプロセスに対して資源の獲得権を与える構成を採って、その資源が他のプロセスにより排他獲得されていない場合には、その資源のアクセス権を与えていくとともに、排他獲得されている場合には、資源獲得要求をスタックにキューイングするというスピンロック方式とスタックロック方式のハイブリッド構成を採ることで、長期間型ロックと短期間型ロックの双方に適する資源ロック制御方式を実現できるようになる。
【００５８】
そして、その構成を採るときに、規定のスピン回数でトークンを獲得できない場合には、資源獲得要求を発行するプロセスの走行権を一時的に奪っていくことで、長期間のスピンに陥らないようにするとともに、ＭＰフォルトに起因するロック競合を解消し、更に、プロセスに資源アクセス権を与えていく場合にも、資源獲得要求をスタックにキューイングしていく場合にも、トークンを直ちに返却させてプロセスがトークンを保持したまま休眠状態に入らないようにすることで、プロセスディスパッチフォルトに起因するロック競合を解消していく構成を採ることから、スピンロック方式の持つプロセスディスパッチフォルトやＭＰフォルトの発生も防止できるようになる。
【図面の簡単な説明】
【図１】本発明の原理構成図である。
【図２】本発明の利用説明図である。
【図３】ハイブリッドロック機構の装置構成図である。
【図４】トークン管理機構の説明図である。
【図５】排他処理命令の説明図である。
【図６】排他処理命令を使用したトークン管理機構の説明図である。
【図７】タイマー機構を使用したプロセス走行権一時放棄機構の説明図である。
【図８】ハイブリッドロック機構の実行する処理フローである。
【図９】ハイブリッドロック機構の実行する処理フローである。
【図１０】スタックロック方式の説明図である。
【図１１】スピンロック方式の説明図である。
【図１２】プロセスディスパッチフォルトの説明図である。
【図１３】ＭＰフォルトの説明図である。
【符号の説明】
１    計算機システム
２    資源
３    実行体
４    資源ロック制御機構
１０  トークン管理手段
１１  放棄手段
１２  判断手段
１３  スタック型事象待ち手段
１４  第１の制御手段
１５  第２の制御手段
１６  第３の制御手段
【図１】
0003746826.tif 000002
【図２】
0003746826.tif 000003
【図３】
0003746826.tif 000004
【図４】
0003746826.tif 000005
【図５】
0003746826.tif 000006
【図６】
0003746826.tif 000007
【図７】
0003746826.tif 000008
【図８】
0003746826.tif 000009
【図９】
0003746826.tif 000010
【図１０】
0003746826.tif 000011
【図１１】
0003746826.tif 000012
【図１２】
0003746826.tif 000013
【図１３】
0003746826.tif 000014