JPH07191865A - オペレーティング・システムにおけるインタブロックの分析方法 - Google Patents
オペレーティング・システムにおけるインタブロックの分析方法Info
- Publication number
- JPH07191865A JPH07191865A JP6122249A JP12224994A JPH07191865A JP H07191865 A JPH07191865 A JP H07191865A JP 6122249 A JP6122249 A JP 6122249A JP 12224994 A JP12224994 A JP 12224994A JP H07191865 A JPH07191865 A JP H07191865A
- Authority
- JP
- Japan
- Prior art keywords
- lock
- execution
- unit
- run
- waiting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004458 analytical method Methods 0.000 title claims description 19
- 238000000034 method Methods 0.000 claims abstract description 74
- 230000008569 process Effects 0.000 claims abstract description 35
- 230000001419 dependent effect Effects 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 9
- 238000012986 modification Methods 0.000 claims description 5
- 230000004048 modification Effects 0.000 claims description 5
- 238000007796 conventional method Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000007935 neutral effect Effects 0.000 description 2
- 101000880310 Homo sapiens SH3 and cysteine-rich domain-containing protein Proteins 0.000 description 1
- 102100037646 SH3 and cysteine-rich domain-containing protein Human genes 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Multi Processors (AREA)
Abstract
(57)【要約】 (修正有)
【目的】 ロック上でブロックされた実行単位(単位)
のロック保持単位を探索し、待機中にサイクルを検出す
るまでチェーンを溯れるインタブロック分析方法の提
供。 【構成】 現在ノードが単位かロックか探索し(S′4
A)、ロックの時はノードを単位に連結するアーチを引
き、いずれでもなければプロセスを抜け出す(S′4B
〜D)。単位の時は待機中かを判定し(S′5)、待機
中で待機イベントがロックであればロックに連結するア
ーチを引き(S′6A〜C)、ロックでなければ新ノー
ドを追加してそれに連結するアーチを引く(S′6D〜
F)。単位が非待機中であれば、実行コンテキストを発
見するまで、全プロセッサを検索する(S′7〜S′8
B)。実行パイルがロックを待機中で現在ノードをロッ
クに連結するアーチが非存在ならばアーチを引き(S′
9、10A、B)、非待機中で他のコンテキストが非存
在ならば(S′10C)プロセスから抜け出す。
のロック保持単位を探索し、待機中にサイクルを検出す
るまでチェーンを溯れるインタブロック分析方法の提
供。 【構成】 現在ノードが単位かロックか探索し(S′4
A)、ロックの時はノードを単位に連結するアーチを引
き、いずれでもなければプロセスを抜け出す(S′4B
〜D)。単位の時は待機中かを判定し(S′5)、待機
中で待機イベントがロックであればロックに連結するア
ーチを引き(S′6A〜C)、ロックでなければ新ノー
ドを追加してそれに連結するアーチを引く(S′6D〜
F)。単位が非待機中であれば、実行コンテキストを発
見するまで、全プロセッサを検索する(S′7〜S′8
B)。実行パイルがロックを待機中で現在ノードをロッ
クに連結するアーチが非存在ならばアーチを引き(S′
9、10A、B)、非待機中で他のコンテキストが非存
在ならば(S′10C)プロセスから抜け出す。
Description
【0001】
【産業上の利用分野】本発明は、あるロック(当業者に
より同様に“lock”(ロック)と呼ばれる)上でブ
ロックされたすべての実行単位(当業者により“thr
ead”(スレッド)と呼ばれる)に対して、このロッ
クを保持している実行単位を探索すること、およびこの
実行単位自身が他のロック上で待機中にサイクルを検出
するまでチェーンを溯ることからなる、マシンのオペレ
ーティング・システムにおけるインタブロックの分析方
法に関するものである。
より同様に“lock”(ロック)と呼ばれる)上でブ
ロックされたすべての実行単位(当業者により“thr
ead”(スレッド)と呼ばれる)に対して、このロッ
クを保持している実行単位を探索すること、およびこの
実行単位自身が他のロック上で待機中にサイクルを検出
するまでチェーンを溯ることからなる、マシンのオペレ
ーティング・システムにおけるインタブロックの分析方
法に関するものである。
【0002】
【従来の技術】このようなインタブロックの分析方法は
通常使用されており、またこの従来方法はたとえば、T
anenbaum著の“ Modern Operat
ingSystem(モダーン・オペレーティング・シ
ステム)”、1992年(Prentice−Hall
International Editions発
行)に記載されている。この文献においては、インタブ
ロックの問題を解決するためにグラフの理論が使用さ
れ、またこの文献は、システムの従属グラフが2つのノ
ード群、すなわちプロセスおよび資源(リソース)で構
成されるモデル化を開示しているが、ここでは、このプ
ロセスおよび資源を変換して、以下の意味論(セマンテ
ィック)に従ってアーチで連結されたロックおよび実行
単位からなるこのアプリケーションに適合させている。
実行単位をロックに連結するアーチは、実行単位がブロ
ックされてこのロックを待機中であることを意味する。
一方ロックを実行単位に連結するアーチは、実行単位が
ロックを保持ししたがってロックが一時的に実行単位の
影響を受けていることを示す。このように実行単位T1
がロックL1を待機中であり、このときロックL1が実
行単位T2により保持され、一方実行単位T2自身は単
位T1により保持されたロックL2を待機中であると
き、グラフ内にサイクルが形成され、かつ2つの実行単
位T1およびT2はブロックされて修復することが難し
くなり、いわゆるインタブロックが存在することにな
る。この例において、グラフ内に形成されたサイクルは
次のようになる:T1→L1→T2→L2→T1
通常使用されており、またこの従来方法はたとえば、T
anenbaum著の“ Modern Operat
ingSystem(モダーン・オペレーティング・シ
ステム)”、1992年(Prentice−Hall
International Editions発
行)に記載されている。この文献においては、インタブ
ロックの問題を解決するためにグラフの理論が使用さ
れ、またこの文献は、システムの従属グラフが2つのノ
ード群、すなわちプロセスおよび資源(リソース)で構
成されるモデル化を開示しているが、ここでは、このプ
ロセスおよび資源を変換して、以下の意味論(セマンテ
ィック)に従ってアーチで連結されたロックおよび実行
単位からなるこのアプリケーションに適合させている。
実行単位をロックに連結するアーチは、実行単位がブロ
ックされてこのロックを待機中であることを意味する。
一方ロックを実行単位に連結するアーチは、実行単位が
ロックを保持ししたがってロックが一時的に実行単位の
影響を受けていることを示す。このように実行単位T1
がロックL1を待機中であり、このときロックL1が実
行単位T2により保持され、一方実行単位T2自身は単
位T1により保持されたロックL2を待機中であると
き、グラフ内にサイクルが形成され、かつ2つの実行単
位T1およびT2はブロックされて修復することが難し
くなり、いわゆるインタブロックが存在することにな
る。この例において、グラフ内に形成されたサイクルは
次のようになる:T1→L1→T2→L2→T1
【0003】
【発明が解決しようとする課題】このタイプのプロセス
は、単一プロセッサを含むマシンのオペレーティング・
システムにおけるインタブロックの分析に適用されると
きには満足な結果を与えるが、このプロセスには限界が
ある。すなわち、対称マルチプロセッサを含むマシンで
あって、さらにマシンがUNIX(UNIX Syst
em Laboratories Inc.により付け
られた名前)の環境内で機能するときに、このマシンの
オペレーティング・システムにはこのプロセスを効果的
に使用することができない。要するに、性能上の理由か
ら、このタイプのオペレーティング・システムは「アク
ティブ」ロック、すなわちそれに遭遇したときにアクテ
ィブ待機を形成するロックを好んで使用している。この
アクティブ待機は通常、その中ではロックは自由ではな
いが、その中の前記のロックの保持者が他のプロセッサ
上でアクティブであるところのコンフィギュレーション
の場合に対しては正しく機能することが証明されてい
る。この場合、迅速にフリーにされる確率がきわめて大
きいロックをアクティブに待つことができないことは不
利である。さらに、固有の実行コンテキストを持たない
例外処理、すなわち割込み処理は、ロックの待機内にと
どまることは許されず、したがって同様にアクティブに
待機しなければならない。この結果、プロセッサ上にア
クティブな待機のパイルができることになる。なぜなら
ば、割込み処理自身がアクティブにロックを待機するこ
とができる一方で、ロック上でアクティブに待機してい
る実行単位が中断されるからである。
は、単一プロセッサを含むマシンのオペレーティング・
システムにおけるインタブロックの分析に適用されると
きには満足な結果を与えるが、このプロセスには限界が
ある。すなわち、対称マルチプロセッサを含むマシンで
あって、さらにマシンがUNIX(UNIX Syst
em Laboratories Inc.により付け
られた名前)の環境内で機能するときに、このマシンの
オペレーティング・システムにはこのプロセスを効果的
に使用することができない。要するに、性能上の理由か
ら、このタイプのオペレーティング・システムは「アク
ティブ」ロック、すなわちそれに遭遇したときにアクテ
ィブ待機を形成するロックを好んで使用している。この
アクティブ待機は通常、その中ではロックは自由ではな
いが、その中の前記のロックの保持者が他のプロセッサ
上でアクティブであるところのコンフィギュレーション
の場合に対しては正しく機能することが証明されてい
る。この場合、迅速にフリーにされる確率がきわめて大
きいロックをアクティブに待つことができないことは不
利である。さらに、固有の実行コンテキストを持たない
例外処理、すなわち割込み処理は、ロックの待機内にと
どまることは許されず、したがって同様にアクティブに
待機しなければならない。この結果、プロセッサ上にア
クティブな待機のパイルができることになる。なぜなら
ば、割込み処理自身がアクティブにロックを待機するこ
とができる一方で、ロック上でアクティブに待機してい
る実行単位が中断されるからである。
【0004】このような状況の分析によって行われるイ
ンタブロックの探索中において、実行単位をブロックし
ているロックはその待機を形成した(かつ、それ以後フ
リーにされる)ロックではなくて割込み処理により待機
とされたロックである。さらに、割込み処理自身は高い
優先順位があると割込みを行う結果となり、それに続い
て複数のステップを待機することが可能なパイルができ
ることになる。この割込み処理パイル内において複数の
割込み処理がロックを待機中ならば、実行単位をブロッ
クしているロックは優先順位のさらに高い割込み処理に
より待機とされたロックである。このような場合、従来
方法は真の従属的グラフを形成することができず、とく
に実行単位タイプのノードからロック・タイプのノード
に至るアーチを形成することができない。本発明の第1
の目的は、既知の方法の問題点によって生じる不都合を
生じることなく、対称マルチプロセッサを含みかつUN
IXの環境内で機能するマシンのオペレーティングシス
テムと共に使用されるインタブロックの分析方法を提供
することにある。本発明の第2の目的は、システムによ
り仮想メモリが利用され、したがって有用なすべての情
報が必ずしも物理メモリ内に存在しないときに、従来の
方法において提起される問題に対して有効な解決方法を
提供することにある。
ンタブロックの探索中において、実行単位をブロックし
ているロックはその待機を形成した(かつ、それ以後フ
リーにされる)ロックではなくて割込み処理により待機
とされたロックである。さらに、割込み処理自身は高い
優先順位があると割込みを行う結果となり、それに続い
て複数のステップを待機することが可能なパイルができ
ることになる。この割込み処理パイル内において複数の
割込み処理がロックを待機中ならば、実行単位をブロッ
クしているロックは優先順位のさらに高い割込み処理に
より待機とされたロックである。このような場合、従来
方法は真の従属的グラフを形成することができず、とく
に実行単位タイプのノードからロック・タイプのノード
に至るアーチを形成することができない。本発明の第1
の目的は、既知の方法の問題点によって生じる不都合を
生じることなく、対称マルチプロセッサを含みかつUN
IXの環境内で機能するマシンのオペレーティングシス
テムと共に使用されるインタブロックの分析方法を提供
することにある。本発明の第2の目的は、システムによ
り仮想メモリが利用され、したがって有用なすべての情
報が必ずしも物理メモリ内に存在しないときに、従来の
方法において提起される問題に対して有効な解決方法を
提供することにある。
【0005】
【課題を解決するための手段】上記した第1の目的を達
成するために、前文に記載の種類のインタブロックの分
析方法は、とくにマシンが対称マルチプロセッサを含み
かつUNIXの環境内で機能するとき、それが1要素ず
つインタブロックしたがってサイクルを再構成するため
に実行単位を順次に走査しながら、実行単位およびプロ
セッサ・セットからあらゆるタイプのロックへの通過を
可能にする特殊機能を反復使用することを特徴としてい
る。したがって本発明により、対称マルチプロセッサを
含みかつUNIXの環境内で機能する場合においてもイ
ンタブロックを効果的に分析できる。要するに、当該実
行単位を実行するプロセッサは当然既知であり、実行単
位セットが走査され、またサイクルを再構成しかつユー
ザにより使用可能な完全な状態をしかもアクティブまた
はパッシブに待機中のあらゆるタイプのロックに対して
形成するまで、実行単位が順次にサイクル要素から抽出
される。このような方法の実行は、ユーザを、ロックの
内部機構から完全に独立させている。さらに、存在する
情報、すなわち現在の情報の内、メモリ内で直接アクセ
ス可能な情報の処理は完全に自動化され、これは従来方
法にはない重要な利点を提供するものである。従来方法
の場合、その実行は手動でありしたがって複雑さの関数
として実行がきわめて長くかつ面倒になり、または欠け
ている僅かの情報は簡単にアクセスすることができない
であろう。
成するために、前文に記載の種類のインタブロックの分
析方法は、とくにマシンが対称マルチプロセッサを含み
かつUNIXの環境内で機能するとき、それが1要素ず
つインタブロックしたがってサイクルを再構成するため
に実行単位を順次に走査しながら、実行単位およびプロ
セッサ・セットからあらゆるタイプのロックへの通過を
可能にする特殊機能を反復使用することを特徴としてい
る。したがって本発明により、対称マルチプロセッサを
含みかつUNIXの環境内で機能する場合においてもイ
ンタブロックを効果的に分析できる。要するに、当該実
行単位を実行するプロセッサは当然既知であり、実行単
位セットが走査され、またサイクルを再構成しかつユー
ザにより使用可能な完全な状態をしかもアクティブまた
はパッシブに待機中のあらゆるタイプのロックに対して
形成するまで、実行単位が順次にサイクル要素から抽出
される。このような方法の実行は、ユーザを、ロックの
内部機構から完全に独立させている。さらに、存在する
情報、すなわち現在の情報の内、メモリ内で直接アクセ
ス可能な情報の処理は完全に自動化され、これは従来方
法にはない重要な利点を提供するものである。従来方法
の場合、その実行は手動でありしたがって複雑さの関数
として実行がきわめて長くかつ面倒になり、または欠け
ている僅かの情報は簡単にアクセスすることができない
であろう。
【0006】実行ユニットまたはプロセッサが実行中の
ことを表示させ、かつロックがどのような状態にあるか
を知らせるベースのプリミティブには、あらゆる修正ツ
ールが提供され、したがってユーザは従来方法または本
方法を一般的方法で使用することができる。一方、その
原理内で使用される本方法は、従来技術とは反対であ
る。なぜならば、自然なアプローチは、プロセッサの状
態に係ることなく、実行単位によりいかに割込みされた
かを検証させることなく、また探索の優先順位を考慮す
ることなく、実行単位をロックに対応させるからであ
る。同様に他の興味ある態様も得られる。ロックに連結
されたインタブロックから、実行単位はシステムの異な
る資源を待っているイベント(事象)の待機中にしばし
ば割込みされることがあり、これはインタブロックを構
成する要素のチェーン内に現れ、しかもいかなる理由で
あれすべての待機を説明することができる。同様に従来
方法は、仮想メモリを有するオペレーティングシステム
におけるインタブロックの分析には効果的ではないこと
がわかった。すなわち、サイクルを探索するためには、
物理メモリ内に存在する情報だけが直接利用可能であ
り、サイクルの検出を可能にする情報であって、物理メ
モリ内に存在しない情報がすべて、このとき前記サイク
ルの発見を妨害している。このことは完全なグラフが利
用されていないことを意味し、この状況の場合、あるア
ーチおよびあるノードは物理メモリ内で見つけることが
できない。
ことを表示させ、かつロックがどのような状態にあるか
を知らせるベースのプリミティブには、あらゆる修正ツ
ールが提供され、したがってユーザは従来方法または本
方法を一般的方法で使用することができる。一方、その
原理内で使用される本方法は、従来技術とは反対であ
る。なぜならば、自然なアプローチは、プロセッサの状
態に係ることなく、実行単位によりいかに割込みされた
かを検証させることなく、また探索の優先順位を考慮す
ることなく、実行単位をロックに対応させるからであ
る。同様に他の興味ある態様も得られる。ロックに連結
されたインタブロックから、実行単位はシステムの異な
る資源を待っているイベント(事象)の待機中にしばし
ば割込みされることがあり、これはインタブロックを構
成する要素のチェーン内に現れ、しかもいかなる理由で
あれすべての待機を説明することができる。同様に従来
方法は、仮想メモリを有するオペレーティングシステム
におけるインタブロックの分析には効果的ではないこと
がわかった。すなわち、サイクルを探索するためには、
物理メモリ内に存在する情報だけが直接利用可能であ
り、サイクルの検出を可能にする情報であって、物理メ
モリ内に存在しない情報がすべて、このとき前記サイク
ルの発見を妨害している。このことは完全なグラフが利
用されていないことを意味し、この状況の場合、あるア
ーチおよびあるノードは物理メモリ内で見つけることが
できない。
【0007】上記した第2の目的のために本発明は、ロ
ックと実行単位との間の従属チェーンセットを検出した
のちに、各実行単位の実行パイルに関する情報が同様に
提供され、このときこれらの情報は、ユーザがインタブ
ロックを決定するサイクルを再構成するように、チェー
ンセットを配置することを可能にすることを特徴として
いる。したがって、物理メモリ内に存在しない情報に関
するこの問題を解決する方法をユーザに提供するため
に、その特殊なステップのいずれかにおいてこのプロセ
スは、ロックと実行単位との間の従属チェーンセットを
検出することを可能にし、続いて各実行単位の実行パイ
ルに関する情報を提供する。最後のこれらの情報はイン
タブロックを特徴づけているサイクルを再構成するよう
に、オペレータがチェーンのサブセットを連結すること
を可能にする。
ックと実行単位との間の従属チェーンセットを検出した
のちに、各実行単位の実行パイルに関する情報が同様に
提供され、このときこれらの情報は、ユーザがインタブ
ロックを決定するサイクルを再構成するように、チェー
ンセットを配置することを可能にすることを特徴として
いる。したがって、物理メモリ内に存在しない情報に関
するこの問題を解決する方法をユーザに提供するため
に、その特殊なステップのいずれかにおいてこのプロセ
スは、ロックと実行単位との間の従属チェーンセットを
検出することを可能にし、続いて各実行単位の実行パイ
ルに関する情報を提供する。最後のこれらの情報はイン
タブロックを特徴づけているサイクルを再構成するよう
に、オペレータがチェーンのサブセットを連結すること
を可能にする。
【0008】実際に、サイクルの探索の完全自動化は、
すべての情報が物理メモリ内に存在するか、または仮想
メモリを使用していてある情報が物理メモリ内に保管さ
れている確率が全くゼロではなくかつ探索モードが完全
に自動化されてはいないが補助モードに対応する場合で
あれば、達成できる。ある情報が物理メモリ内に存在し
ていないとき、本方法によりユーザは実行パイルに関す
る情報を提供することができ、またこのとき、これらの
情報により、探索のためにロックに関して正確な認識を
もたないユーザが探索のときに欠けている1つまたは複
数のサイクル部分を自動的に再発見することを可能に
し、このときユーザによるコンテキストの認識は、サイ
クルを完全に再構成することを可能にする。再構成のた
めにユーザに必要な知識としては、システム内のいくつ
かのジョブ間の関係、およびツリー構造および仕様(機
能性)の概略の知識があればよい。このときインタブロ
ックの探索はユーザ補助モードで行われるが、このモー
ドは、ロックの内部機構とは完全に独立している。その
理由は、前記ロックがどのようにプログラミングされて
いるか、または当該適用によりどのタイプのロックが関
係しているかを知る必要がないからである。
すべての情報が物理メモリ内に存在するか、または仮想
メモリを使用していてある情報が物理メモリ内に保管さ
れている確率が全くゼロではなくかつ探索モードが完全
に自動化されてはいないが補助モードに対応する場合で
あれば、達成できる。ある情報が物理メモリ内に存在し
ていないとき、本方法によりユーザは実行パイルに関す
る情報を提供することができ、またこのとき、これらの
情報により、探索のためにロックに関して正確な認識を
もたないユーザが探索のときに欠けている1つまたは複
数のサイクル部分を自動的に再発見することを可能に
し、このときユーザによるコンテキストの認識は、サイ
クルを完全に再構成することを可能にする。再構成のた
めにユーザに必要な知識としては、システム内のいくつ
かのジョブ間の関係、およびツリー構造および仕様(機
能性)の概略の知識があればよい。このときインタブロ
ックの探索はユーザ補助モードで行われるが、このモー
ドは、ロックの内部機構とは完全に独立している。その
理由は、前記ロックがどのようにプログラミングされて
いるか、または当該適用によりどのタイプのロックが関
係しているかを知る必要がないからである。
【0009】このように、完全な自動モードとユーザ補
助モードとが共存し、一方必要な情報は物理メモリ内で
処理可能であり、グラフ内のサイクルの探索のためのオ
ペレーションは前者の自動モードで実行され、また有効
な情報が欠けると直ちに、ユーザ補助モードがジョブを
引き継いで発見されたサイクル・セットの部分から再構
成を行う。次にインタブロックの検出によるこのような
分析は容易に使用することができる。インタブロック内
に含まれるロックおよびジョブはこのように既知とな
り、かつプログラミングを有効に改良することを可能に
する。サイクルが特定されたとき、サイクル内に含まれ
る実行単位、ロックを保持する実行単位の機能、および
ロックのタイプは、実行単位がブロックされたときに実
行単位により行われるオペレーションと同様に決定さ
れ、これによりプログラミングを再発見しかつ場合によ
り階層の侵害を検出することを可能にする。続いて、静
的インタブロックのアナライザを用いて、開発者はイン
タブロックの修正を行うことができる。本方法によるイ
ンタブロックの分析は、開発の外部フェーズにおいて修
正するように、できるだけ正確にそのオリジナルまで溯
りながらシステムの欠陥を検出することを、基本的な目
的としている。図面を参照して以下の説明を読めば、本
発明の実行方法が十分に理解されるであろう。
助モードとが共存し、一方必要な情報は物理メモリ内で
処理可能であり、グラフ内のサイクルの探索のためのオ
ペレーションは前者の自動モードで実行され、また有効
な情報が欠けると直ちに、ユーザ補助モードがジョブを
引き継いで発見されたサイクル・セットの部分から再構
成を行う。次にインタブロックの検出によるこのような
分析は容易に使用することができる。インタブロック内
に含まれるロックおよびジョブはこのように既知とな
り、かつプログラミングを有効に改良することを可能に
する。サイクルが特定されたとき、サイクル内に含まれ
る実行単位、ロックを保持する実行単位の機能、および
ロックのタイプは、実行単位がブロックされたときに実
行単位により行われるオペレーションと同様に決定さ
れ、これによりプログラミングを再発見しかつ場合によ
り階層の侵害を検出することを可能にする。続いて、静
的インタブロックのアナライザを用いて、開発者はイン
タブロックの修正を行うことができる。本方法によるイ
ンタブロックの分析は、開発の外部フェーズにおいて修
正するように、できるだけ正確にそのオリジナルまで溯
りながらシステムの欠陥を検出することを、基本的な目
的としている。図面を参照して以下の説明を読めば、本
発明の実行方法が十分に理解されるであろう。
【0010】
【実施例】図1には、インタブロックの分析に関する従
来方法の種々のステップがアルゴリズムの形で示されて
いる。本発明を理解しやすくするために、使用される用
語をいくつか以下に説明する。オペレーティング・シス
テムは、必要なすべての資源(リソース)を取得する前
に資源の動的割り振りの実行を開始するジョブを可能に
するので、オペレーティング・システムが資源のこの動
的割り振りを行うときに一般に、インタブロックが発生
しやすい。ロックは有限数の同時アクセスをサポートす
る資源アクセス制御機構の一例である。同様にシステム
は、複数のプロセスを同時に実行することができ、この
とき各プロセスはその実行状態に関する情報のような一
連のマシーン命令を含んでいる。各プロセスは複数のプ
ロセッサにより実行されるように分割することができ、
所定の時間に与えられたプロセッサで実行されるプロセ
スの分割部分が、実行単位と呼ばれる。上記のように、
従来の方法は、ロック上でブロックされたすべての実行
単位に対して、このロックを保持している実行単位を探
索すること、およびこれらの実行単位自身が他のロック
上で待機中にサイクルを検出するまでチェーンを溯るこ
とからなる。従属グラフ内で検出されたサイクルは、前
記サイクル内でプロセスおよび資源を含むインタブロッ
クが発見されたことを示す。なお、この従属チャートは
2つのノード群からなり、一方はロックであり、また他
方はプロセスまたは実行単位である。
来方法の種々のステップがアルゴリズムの形で示されて
いる。本発明を理解しやすくするために、使用される用
語をいくつか以下に説明する。オペレーティング・シス
テムは、必要なすべての資源(リソース)を取得する前
に資源の動的割り振りの実行を開始するジョブを可能に
するので、オペレーティング・システムが資源のこの動
的割り振りを行うときに一般に、インタブロックが発生
しやすい。ロックは有限数の同時アクセスをサポートす
る資源アクセス制御機構の一例である。同様にシステム
は、複数のプロセスを同時に実行することができ、この
とき各プロセスはその実行状態に関する情報のような一
連のマシーン命令を含んでいる。各プロセスは複数のプ
ロセッサにより実行されるように分割することができ、
所定の時間に与えられたプロセッサで実行されるプロセ
スの分割部分が、実行単位と呼ばれる。上記のように、
従来の方法は、ロック上でブロックされたすべての実行
単位に対して、このロックを保持している実行単位を探
索すること、およびこれらの実行単位自身が他のロック
上で待機中にサイクルを検出するまでチェーンを溯るこ
とからなる。従属グラフ内で検出されたサイクルは、前
記サイクル内でプロセスおよび資源を含むインタブロッ
クが発見されたことを示す。なお、この従属チャートは
2つのノード群からなり、一方はロックであり、また他
方はプロセスまたは実行単位である。
【0011】一旦、従属的グラフが得られると、図1に
示す従来方法が適用される。したがって初期化[N]の
ステップS1が実行され、グラフのすべてのノードN
(ロックまたは実行単位)に関して、出発点としてNを
有する以下の5つのステップを呼び出す。ステップS2
は、空のリストLを初期化[LE]し、かつノードを連
結するすべてのアーチがノー・マーク[AU]と宣言さ
れる[LE AU]。ステップS3.Aにおいて、現在
ノードがリストLの最後に追加され[L+N]、一方ス
テップS3.Bにおいて、質問[2×N?]:「リスト
L内に現在ノードNが2回現れたか?」が質問される。
この質問の答えがイエス(Y)であれば、この2回出現
は、グラフが(リストL内にリストアップされた)サイ
クルを含みかつこのプロセスはこのサイクルが発見され
たときに止まった[CF]ことを示している。一方、質
問の答えがノー(N)であれば、ステップS4NI移
り、質問[(OUA)N?]:「現在ノードから出てし
かもノー・マークのアーチが存在するか?」が質問され
る。その答えがイエスであれば、次のステップはステッ
プS5.Aであり、このステップの間にマークするため
にたまたまノー・マークで出たアーチが選択され[PR
UA M]、次にステップS5.Bにおいて、このアー
チにより付点がつけられたノードが新しい現在ノードと
みなされ[NCN]、そしてステップS3Aに戻る。こ
れに対し、ステップS4の質問に対する答えがノーであ
れば、このプロセスは行き止まりとなり、ステップS
6.Aがノードを前のノード(現在ノードの1つ前のノ
ード)に戻し、前のノードがこのとき現在ノードとみな
される[N−1]。そしてステップS6.Bにおいて、
質問[N−1=IN?]:「ノードが初期ノードである
か?」が出される。もし答えがノーであればステップS
4に戻り、一方、答えがイエスであればステップS6.
Cにおいて、最後の質問[ON?]:「他のノードが存
在するか?」が出される。その答えがノーのとき、プロ
セスは停止して、現在ノード以降にはグラフ内にサイク
ルが存在しないこと[NCIG]を示す。もし答えがイ
エスであれば、残りの1つまたは複数のノードの分析の
ためにステップS1に戻る。
示す従来方法が適用される。したがって初期化[N]の
ステップS1が実行され、グラフのすべてのノードN
(ロックまたは実行単位)に関して、出発点としてNを
有する以下の5つのステップを呼び出す。ステップS2
は、空のリストLを初期化[LE]し、かつノードを連
結するすべてのアーチがノー・マーク[AU]と宣言さ
れる[LE AU]。ステップS3.Aにおいて、現在
ノードがリストLの最後に追加され[L+N]、一方ス
テップS3.Bにおいて、質問[2×N?]:「リスト
L内に現在ノードNが2回現れたか?」が質問される。
この質問の答えがイエス(Y)であれば、この2回出現
は、グラフが(リストL内にリストアップされた)サイ
クルを含みかつこのプロセスはこのサイクルが発見され
たときに止まった[CF]ことを示している。一方、質
問の答えがノー(N)であれば、ステップS4NI移
り、質問[(OUA)N?]:「現在ノードから出てし
かもノー・マークのアーチが存在するか?」が質問され
る。その答えがイエスであれば、次のステップはステッ
プS5.Aであり、このステップの間にマークするため
にたまたまノー・マークで出たアーチが選択され[PR
UA M]、次にステップS5.Bにおいて、このアー
チにより付点がつけられたノードが新しい現在ノードと
みなされ[NCN]、そしてステップS3Aに戻る。こ
れに対し、ステップS4の質問に対する答えがノーであ
れば、このプロセスは行き止まりとなり、ステップS
6.Aがノードを前のノード(現在ノードの1つ前のノ
ード)に戻し、前のノードがこのとき現在ノードとみな
される[N−1]。そしてステップS6.Bにおいて、
質問[N−1=IN?]:「ノードが初期ノードである
か?」が出される。もし答えがノーであればステップS
4に戻り、一方、答えがイエスであればステップS6.
Cにおいて、最後の質問[ON?]:「他のノードが存
在するか?」が出される。その答えがノーのとき、プロ
セスは停止して、現在ノード以降にはグラフ内にサイク
ルが存在しないこと[NCIG]を示す。もし答えがイ
エスであれば、残りの1つまたは複数のノードの分析の
ためにステップS1に戻る。
【0012】図2に、対称なマルチプロセッサを含みか
つUNIX環境内で機能するマシンに対し、インタブロ
ックの分析の方法を効率的に適用することを可能にす
る、本発明による方法を示すフローチャートが記載され
ている。この適用は、プロセッサ・セットのための実行
単位をロックに連結するアーチを定義する特殊機能によ
り得られることが好ましい。本発明の思想に基づくこの
方法は、1要素ずつインタブロックしたがってサイクル
を再構成するために、実行単位を順次に走査しながら実
行単位およびプロセッサセットからあらゆるタイプのロ
ックへの通過を可能にする特殊機能を反復使用すること
を特徴としている。このために、図1のステップS4
が、この特殊機能を実行させる下記のようなステップに
より置き換えられている。従来の方法のステップS1〜
S3(S3.AおよびS3.B)、S5(S5.Aおよ
びS5.B)、およびS6(S6.A、S6.B、およ
びS6.C)はそのまま使用される。
つUNIX環境内で機能するマシンに対し、インタブロ
ックの分析の方法を効率的に適用することを可能にす
る、本発明による方法を示すフローチャートが記載され
ている。この適用は、プロセッサ・セットのための実行
単位をロックに連結するアーチを定義する特殊機能によ
り得られることが好ましい。本発明の思想に基づくこの
方法は、1要素ずつインタブロックしたがってサイクル
を再構成するために、実行単位を順次に走査しながら実
行単位およびプロセッサセットからあらゆるタイプのロ
ックへの通過を可能にする特殊機能を反復使用すること
を特徴としている。このために、図1のステップS4
が、この特殊機能を実行させる下記のようなステップに
より置き換えられている。従来の方法のステップS1〜
S3(S3.AおよびS3.B)、S5(S5.Aおよ
びS5.B)、およびS6(S6.A、S6.B、およ
びS6.C)はそのまま使用される。
【0013】図2の本発明による方法においては、従来
方法のステップS3.Bにおいて出された質問に対する
答えがノーの場合には、ステップS′4.Aが実行さ
れ、質問[T?]:「現在ノードは実行単位タイプであ
るか?」が出される。その答えがノーのとき、ステップ
S′4.Bにおいて、質問[L?]:「現在ノードはロ
ックであるか?」が出される。答えがノーのときはプロ
セスは行き止まりとなり、図1の従来方法のステップS
6.Aに移って、それ以降の処理(S6.A、S6.
B、S6.C)を実行する。一方、現在ノードがロック
であるとき、これは、実行単位TがロックLの保持単位
であるか、またはロックLの保持の割込み処理による割
込みされた単位であることを意味する。この場合、ステ
ップS′4.Cにおいて、質問[N→T?]:「現在ノ
ードNを実行単位Tに連結するアーチが存在するか?」
を発する。ステップS′4.Cの答えがイエスのとき、
図1のステップS5.Aに移行するが、答えがノーのと
きにはステップS′4.Dが実行され、このステップに
おいて、現在ノードNから単位Tの方向へのアーチが決
定される[N→T]。そして、次に図1のステップS
5.Aに移る。
方法のステップS3.Bにおいて出された質問に対する
答えがノーの場合には、ステップS′4.Aが実行さ
れ、質問[T?]:「現在ノードは実行単位タイプであ
るか?」が出される。その答えがノーのとき、ステップ
S′4.Bにおいて、質問[L?]:「現在ノードはロ
ックであるか?」が出される。答えがノーのときはプロ
セスは行き止まりとなり、図1の従来方法のステップS
6.Aに移って、それ以降の処理(S6.A、S6.
B、S6.C)を実行する。一方、現在ノードがロック
であるとき、これは、実行単位TがロックLの保持単位
であるか、またはロックLの保持の割込み処理による割
込みされた単位であることを意味する。この場合、ステ
ップS′4.Cにおいて、質問[N→T?]:「現在ノ
ードNを実行単位Tに連結するアーチが存在するか?」
を発する。ステップS′4.Cの答えがイエスのとき、
図1のステップS5.Aに移行するが、答えがノーのと
きにはステップS′4.Dが実行され、このステップに
おいて、現在ノードNから単位Tの方向へのアーチが決
定される[N→T]。そして、次に図1のステップS
5.Aに移る。
【0014】一方、図2のステップS′4.Aの質問
[T?]に対する答えがイエスのとき、ステップS′5
において質問[NS?]:「現在単位Tは待機中か?」
が出される。その答えがイエスならばステップS′6.
Aに移り、このステップにおいて続いて質問[L?]:
「待機中のイベントはロックであるか?」が出され、そ
の答えがイエスならば、ステップS′6.Bにおいて質
問[N→L?]:「現在ノードNをロックLに連結する
アーチが存在するか?」が出される。ステップS′6.
Bの答えがイエスならば、図1のステップS5.Aに移
り、一方ノーならばステップS′6.Cに移り、このス
テップにおいて現在ノードNをロックLの方向に連結す
るアーチが決定される[N→L]。ステップS′6.C
の後に図1のステップS5.Aが続く。さらに、ステッ
プS′6.Aの質問[L?]に対する答えがノーである
ことは、待機がロック以外のイベントに関係しているこ
とを意味し、このときにはS′6.Dにおいてニュート
ラル・タイプのノードが追加され[N+1]、次にステ
ップS′6.Eにおいて質問[N→N+1?]:「前の
現在ノードNを新しい現在ノードN+1に連結するアー
チが存在するか?」が出される。その答えがイエスのと
き図1のステップS5.Aが続き、答えがノーのときス
テップS′6.Fに進む。このステップにおいては、ノ
ードNを新しい現在ノードN+1に連結するアーチが決
定され[N→N+1]、次いで図1のステップS5.A
に移る。ニュートラル・タイプのノードはロックでもま
たは実行単位でもないすべてのイベントに対応し、また
これらのイベントはたとえば実行単位が待っている信号
であってもよい。
[T?]に対する答えがイエスのとき、ステップS′5
において質問[NS?]:「現在単位Tは待機中か?」
が出される。その答えがイエスならばステップS′6.
Aに移り、このステップにおいて続いて質問[L?]:
「待機中のイベントはロックであるか?」が出され、そ
の答えがイエスならば、ステップS′6.Bにおいて質
問[N→L?]:「現在ノードNをロックLに連結する
アーチが存在するか?」が出される。ステップS′6.
Bの答えがイエスならば、図1のステップS5.Aに移
り、一方ノーならばステップS′6.Cに移り、このス
テップにおいて現在ノードNをロックLの方向に連結す
るアーチが決定される[N→L]。ステップS′6.C
の後に図1のステップS5.Aが続く。さらに、ステッ
プS′6.Aの質問[L?]に対する答えがノーである
ことは、待機がロック以外のイベントに関係しているこ
とを意味し、このときにはS′6.Dにおいてニュート
ラル・タイプのノードが追加され[N+1]、次にステ
ップS′6.Eにおいて質問[N→N+1?]:「前の
現在ノードNを新しい現在ノードN+1に連結するアー
チが存在するか?」が出される。その答えがイエスのと
き図1のステップS5.Aが続き、答えがノーのときス
テップS′6.Fに進む。このステップにおいては、ノ
ードNを新しい現在ノードN+1に連結するアーチが決
定され[N→N+1]、次いで図1のステップS5.A
に移る。ニュートラル・タイプのノードはロックでもま
たは実行単位でもないすべてのイベントに対応し、また
これらのイベントはたとえば実行単位が待っている信号
であってもよい。
【0015】図2において、ステップS′5の質問に対
する答えがノーであることは、現在実行単位がアクティ
ブであることを意味する。したがって、ステップS′7
においてP0からPnまでのすべてのプロセッサが走査さ
れ、このステップにおいて質問[Pi>Pn?]:「プロ
セッサ・セットが走査されたか?」が出される。もしイ
エスならば図1のステップS6.Aに移り、従属的サイ
クルはもし存在するならば必ず外にあり、したがって実
行単位は従属的でなくなる。ステップS′7の答えがノ
ーならば次のステップはS′8.Aであり、このステッ
プにおいて現在プロセッサPiの実行パイルの最後の実
行コンテキストまで走査される[STAC]。次にステ
ップS′8.Bにおいて、次の質問[CTC?]:「付
点がつけられた実行コンテキストが現在単位の実行コン
テキストであるか?」が出される。ノーの答えの場合に
はステップS′7へ再度戻る。一方イエスの答えの場合
には実行単位がアクティブであるプロセッサが発見され
たことを意味し、この後ステップS′9に移行して質問
[SWL?]:「現在プロセッサの現在コンテキストの
実行パイルがロックを待機中であるか?」が質問され
る。その答えがイエスの場合はステップS′10.Aに
進む。
する答えがノーであることは、現在実行単位がアクティ
ブであることを意味する。したがって、ステップS′7
においてP0からPnまでのすべてのプロセッサが走査さ
れ、このステップにおいて質問[Pi>Pn?]:「プロ
セッサ・セットが走査されたか?」が出される。もしイ
エスならば図1のステップS6.Aに移り、従属的サイ
クルはもし存在するならば必ず外にあり、したがって実
行単位は従属的でなくなる。ステップS′7の答えがノ
ーならば次のステップはS′8.Aであり、このステッ
プにおいて現在プロセッサPiの実行パイルの最後の実
行コンテキストまで走査される[STAC]。次にステ
ップS′8.Bにおいて、次の質問[CTC?]:「付
点がつけられた実行コンテキストが現在単位の実行コン
テキストであるか?」が出される。ノーの答えの場合に
はステップS′7へ再度戻る。一方イエスの答えの場合
には実行単位がアクティブであるプロセッサが発見され
たことを意味し、この後ステップS′9に移行して質問
[SWL?]:「現在プロセッサの現在コンテキストの
実行パイルがロックを待機中であるか?」が質問され
る。その答えがイエスの場合はステップS′10.Aに
進む。
【0016】このステップS′10.Aにおいて質問
[N→L?]:「現在ノードNをロックLに連結するア
ーチが存在するか?」が出される。その答えがイエスな
らば、図1のステップS5.Aに移り、逆に答えがノー
ならば、現在コンテキストに付属の実行パイルの現在コ
ールがロックを要求し、ステップS′10.Bにおいて
このとき現在ノードNから現在コールにより要求された
ロックLの方向へアーチが引かれ[N→L]、そして次
に図1のステップS5.Aに戻る。一方、図2のステッ
プS′9の質問[SWL?]に対する答えがノーのと
き、ステップS′10.Cにおいて質問[OC?]:
「他の実行コンテキストが存在するか?」が質問され
る。それに続く他のコンテキストが存在するならば、こ
のコンテキストはステップS′10.Dにおいて現在コ
ンテキストとして再定義され[RCC]、そしてステッ
プS′9に戻る。一方、ステップS′10.Cの質問に
対する答えがノーならば、他のコンテキストが存在せ
ず、このことはこの実行単位がロックによりブロックさ
れていないことを示し、これにより図1に示すステップ
S6に移る。
[N→L?]:「現在ノードNをロックLに連結するア
ーチが存在するか?」が出される。その答えがイエスな
らば、図1のステップS5.Aに移り、逆に答えがノー
ならば、現在コンテキストに付属の実行パイルの現在コ
ールがロックを要求し、ステップS′10.Bにおいて
このとき現在ノードNから現在コールにより要求された
ロックLの方向へアーチが引かれ[N→L]、そして次
に図1のステップS5.Aに戻る。一方、図2のステッ
プS′9の質問[SWL?]に対する答えがノーのと
き、ステップS′10.Cにおいて質問[OC?]:
「他の実行コンテキストが存在するか?」が質問され
る。それに続く他のコンテキストが存在するならば、こ
のコンテキストはステップS′10.Dにおいて現在コ
ンテキストとして再定義され[RCC]、そしてステッ
プS′9に戻る。一方、ステップS′10.Cの質問に
対する答えがノーならば、他のコンテキストが存在せ
ず、このことはこの実行単位がロックによりブロックさ
れていないことを示し、これにより図1に示すステップ
S6に移る。
【0017】図3には、図1及び図2のフローチャート
に示されたあるステップの応用を示し、この応用によ
り、仮想メモリを使用したシステムに適用される本発明
による方法の効率的な利用が可能となる。前記のよう
に、図1に記載の従来方法は仮想メモリを利用したシス
テムにおけるインターロックを分析するのに効率的では
ないことがわかるであろう。サイクルの探索は物理メモ
リ内の有効なすべての情報を処理するという条件で行っ
ても、またはサイクルの検出を可能にするある情報が与
えられた瞬間に物理メモリ内に存在しなくて仮想メモリ
内に存在していてもよい。この条件においては、あるア
ーチおよびあるノード(実行単位またはロック)が物理
メモリ内で見付けることができない場合、完全な従属的
グラフを構成することができない。この問題の解決方法
をユーザに有効に与えるために、ロックと実行単位との
間の従属的チェーン・セットを検出するために本方法が
利用され、また各実行単位の実行パイルに関する情報が
提供される。このとき、これらの情報は、インターロッ
クを決定するサイクルを再構成するようにユーザがチェ
ーン・セットを形成することを可能にする。
に示されたあるステップの応用を示し、この応用によ
り、仮想メモリを使用したシステムに適用される本発明
による方法の効率的な利用が可能となる。前記のよう
に、図1に記載の従来方法は仮想メモリを利用したシス
テムにおけるインターロックを分析するのに効率的では
ないことがわかるであろう。サイクルの探索は物理メモ
リ内の有効なすべての情報を処理するという条件で行っ
ても、またはサイクルの検出を可能にするある情報が与
えられた瞬間に物理メモリ内に存在しなくて仮想メモリ
内に存在していてもよい。この条件においては、あるア
ーチおよびあるノード(実行単位またはロック)が物理
メモリ内で見付けることができない場合、完全な従属的
グラフを構成することができない。この問題の解決方法
をユーザに有効に与えるために、ロックと実行単位との
間の従属的チェーン・セットを検出するために本方法が
利用され、また各実行単位の実行パイルに関する情報が
提供される。このとき、これらの情報は、インターロッ
クを決定するサイクルを再構成するようにユーザがチェ
ーン・セットを形成することを可能にする。
【0018】このために、図1に示したステップS6
(S6.A、S6.B、及びS6.C)の前段が次のよ
うに修正される。図2のステップS′4.Bの質問[L
?]およびステップS′10.Cの質問[OC?]に対
する答えがノーである場合、またはステップS′7の質
問[Pi>Pn?]に対する答えがイエスの場合、この
あとにユーザが使用できるリストLの表示[DL(DS
T)]に関するステップS′11.Aが続き、とくにこ
のリスト内で遭遇するすべての実行単位に付属の実行パ
イルはデコーディングされる。ステップS′11.Aの
次のステップS′11.Bは図1のステップS6(S
6.A、S6.B、およびS6.C)と同様である。好
ましい第1の応用によれば、本発明による方法は、すべ
ての物理メモリを走査するときにアクセスする修正ツー
ルにより実行することができる。好ましい第2の応用に
よれば、本発明による方法は、空メモリの分析ツールに
より実行することができる。このように実行中またはテ
スト中のマシンは本方法の応用により恩恵を受けて有利
である。インターロックが突然に発生したとき、前記マ
シンはほとんど利用できなくなり、この場合マシンは、
反復法でツールすなわちこの方法を実行するために使用
される修正ツールに頼ったり、または遡及的に空のメモ
リの分析ツールに頼ったりすることができ、またこの場
合、マシンのメモリ・イメージが取り上げられ、このメ
モリ・イメージが他のマシンに関して、またはレリーズ
された同じマシンに関して空のメモリの分析ツールによ
り分析される。
(S6.A、S6.B、及びS6.C)の前段が次のよ
うに修正される。図2のステップS′4.Bの質問[L
?]およびステップS′10.Cの質問[OC?]に対
する答えがノーである場合、またはステップS′7の質
問[Pi>Pn?]に対する答えがイエスの場合、この
あとにユーザが使用できるリストLの表示[DL(DS
T)]に関するステップS′11.Aが続き、とくにこ
のリスト内で遭遇するすべての実行単位に付属の実行パ
イルはデコーディングされる。ステップS′11.Aの
次のステップS′11.Bは図1のステップS6(S
6.A、S6.B、およびS6.C)と同様である。好
ましい第1の応用によれば、本発明による方法は、すべ
ての物理メモリを走査するときにアクセスする修正ツー
ルにより実行することができる。好ましい第2の応用に
よれば、本発明による方法は、空メモリの分析ツールに
より実行することができる。このように実行中またはテ
スト中のマシンは本方法の応用により恩恵を受けて有利
である。インターロックが突然に発生したとき、前記マ
シンはほとんど利用できなくなり、この場合マシンは、
反復法でツールすなわちこの方法を実行するために使用
される修正ツールに頼ったり、または遡及的に空のメモ
リの分析ツールに頼ったりすることができ、またこの場
合、マシンのメモリ・イメージが取り上げられ、このメ
モリ・イメージが他のマシンに関して、またはレリーズ
された同じマシンに関して空のメモリの分析ツールによ
り分析される。
【0019】
【発明の効果】本発明による方法は、一方で対称マルチ
プロセッサの使用により課せられる問題を処理すること
を可能にし、他方でこの方法が仮想メモリを使用する装
置内で使用されるときにユーザに必要な補助を提供す
る。ユーザに課せられる通常の落とし穴は、たとえば、
とくにインターロックが実行単位のためのブロッカとは
なりえないロックが原因ではなく、むしろ割込み処理に
より待機中のロックのような他のイベントが原因である
ときに、容易に発見して回避させることができる。この
ためユーザは、前記の場合のように、情報が存在する場
所で再構成できるように、オペレーティング・システム
のネットワークの構造を完全に周知しているオペレーテ
ィング・システムのスペシャリストである必要はなく、
単にある複数のジョブ間の関係および仕様書に示された
比較的概略のツリー構造および機能性の知識を有する人
であればよい。この知識により、本発明の方法は完全に
有効に実行できる。なぜならば、1つの実行単位および
1セットのプロセッサからあらゆるタイプの単純ロック
または複合ロックへの通過を可能にするこの特殊機能に
より、この方法はユーザに場合により直接インターロッ
クの理由を提供したり、また場合によりユーザを容易に
インターロックまで溯らせる一連のチェーン・リングを
提供したりできる。実行単位に関する探索を能率的に行
わせる本方法はまた、プロセスに関しても能率的にし、
実行単位は前述のようにプロセスの一部分でありしたが
ってプロセスのより密なアプローチを可能にする。
プロセッサの使用により課せられる問題を処理すること
を可能にし、他方でこの方法が仮想メモリを使用する装
置内で使用されるときにユーザに必要な補助を提供す
る。ユーザに課せられる通常の落とし穴は、たとえば、
とくにインターロックが実行単位のためのブロッカとは
なりえないロックが原因ではなく、むしろ割込み処理に
より待機中のロックのような他のイベントが原因である
ときに、容易に発見して回避させることができる。この
ためユーザは、前記の場合のように、情報が存在する場
所で再構成できるように、オペレーティング・システム
のネットワークの構造を完全に周知しているオペレーテ
ィング・システムのスペシャリストである必要はなく、
単にある複数のジョブ間の関係および仕様書に示された
比較的概略のツリー構造および機能性の知識を有する人
であればよい。この知識により、本発明の方法は完全に
有効に実行できる。なぜならば、1つの実行単位および
1セットのプロセッサからあらゆるタイプの単純ロック
または複合ロックへの通過を可能にするこの特殊機能に
より、この方法はユーザに場合により直接インターロッ
クの理由を提供したり、また場合によりユーザを容易に
インターロックまで溯らせる一連のチェーン・リングを
提供したりできる。実行単位に関する探索を能率的に行
わせる本方法はまた、プロセスに関しても能率的にし、
実行単位は前述のようにプロセスの一部分でありしたが
ってプロセスのより密なアプローチを可能にする。
【図1】インターロックの分析の従来方法を実行するた
めのステップを示すフローチャートである。
めのステップを示すフローチャートである。
【図2】対称マルチプロセッサを含みかつUNIXの環
境内で機能するマシンに対してインターロックの分析に
利用される本発明による方法を実行するためのステップ
を示すフローチャートである。
境内で機能するマシンに対してインターロックの分析に
利用される本発明による方法を実行するためのステップ
を示すフローチャートである。
【図3】図1及び図2のフローチャートに示された方法
を、仮想メモリを有するシステムで利用可能にするアプ
リケーションを示すフローチャートの一部である。
を、仮想メモリを有するシステムで利用可能にするアプ
リケーションを示すフローチャートの一部である。
Claims (7)
- 【請求項1】 あるロック上でブロックされたすべての
実行単位に対して、このロックを保持している実行単位
を探索し、かつこの実行単位自身が他のロック上で待機
中にサイクルを検出するまでチェーンを溯る、マシンの
オペレーティング・システムにおけるインタブロックの
分析方法において、 マシンが対称マルチプロセッサを含みかつUNIXの環
境内で機能するときに、1要素ずつインタブロックした
がってサイクルを再構成するために実行単位を順次に走
査しながら、実行単位およびプロセッサ・セットからあ
らゆるタイプのロックへの通過を可能にする特殊機能を
反復使用することを特徴とするオペレーティング・シス
テムにおけるインタブロックの分析方法。 - 【請求項2】 請求項1記載の方法において、該方法は
さらに、仮想メモリが使用されかつ物理メモリに記憶さ
れてない有効な情報が存在するとき、ロックと実行単位
との間の従属的チェーン・セットを検出し、その後各実
行単位の実行パイルに関する情報が同様に提供され、こ
れらの情報はユーザがインタブロックを決定するサイク
ルを再構成するようにチェーン・セットを配置すること
を可能にすることを特徴とする方法。 - 【請求項3】 請求項1記載の方法において、実行単位
およびプロセッサセットからあらゆるタイプのロックへ
の通過を可能にする特殊機能が、以下のステップ(1)
〜(7)、 (1)現在ノードの性質(実行単位またはロック)を探
索し、これが実行単位であればステップ(2)に移り、
これがロックであれば実行単位により保持されかつロッ
クをこの実行単位に連結するためにアーチが引かれ、こ
れが実行単位でもロックでもなければプロセスは行き止
まりとなり、ここからプロセスを抜け出して既知のプロ
セスの一部を実行するステップ、 (2)現在単位が待機中か否かを判断し、待機中であれ
ばステップ(3)に移り、待機中でなければステップ
(4)に移るステップ、 (3)待機イベントはロックであるか否かを判断し、ロ
ックであればこのロックに連結するアーチを引きかつス
テップ(1)に戻り、ロックでないならば待機は他のイ
ベントが原因であるのでこのときニュートラル・タイプ
のノードを追加し、さらに、アーチが存在していなけれ
ばこの新しいノードに連結するアーチを引くステップ、 (4)実行単位はアクティブであり、マシンのすべての
プロセッサに対してステップ(5)に移り、プロセッサ
が走査される場合に実行単位は結局資源プロセッサを待
機中であり、従属的サイクルが存在する場合には必ず外
にあり、実行単位は従属的ではなくなる、ステップ、 (5)現在プロセッサの実行パイルが最後の実行コンテ
キストまで走査され、この実行コンテキストが現在実行
単位の実行コンテキストであればステップ(6)に移
り、もしこのそうでなければステップ(4)に移って他
のプロセッサ上で探索し、これを最後のプロセッサまで
継続するステップ、 (6)現在単位がアクティブであるところのプロセッサ
が見出され、この結果、実行パイルがロックを待機中か
どうかを探索し、プロセッサの実行パイルのすべての実
行コンテキストに対してステップ(7)に移るステッ
プ、 (7)現在実行コンテキストに付属の実行パイルの現在
コールがロックを要求しているか否かを判断し、ロック
を要求している場合、現在実行単位を前記現在コールに
より要求されたロックに連結するアーチがまだ存在して
いなければアーチを引き、ロックを要求していない場
合、次の他のコンテキストが存在するならば、ステップ
(6)および(7)が再び実行され、次の他のコンテキ
ストが存在しないならば、この実行単位はロックにより
ブロックされていないことになって、プロセスは行き止
まりとなり、これから外に出て既知のプロセスの一部を
実行するステップに基づいて実行されることを特徴とす
る方法。 - 【請求項4】 請求項2又は3記載の方法において、 物理メモリ内に記憶されて内有効な情報が存在するため
にサイクルが再構成できないとき、実行単位とロックと
の間の従属的チェーン・セットを検出したのちに、第1
のフェーズにおいてユーザが使用できるように実行単位
およびロックのリストがそれらの従属性を含めて表示さ
れ、このリスト内で表示されたすべての実行単位に付属
の実行パイルがデコーディングされ、次に第2のフェー
ズにおいて請求項3のステップ(7)における既知のプ
ロセスの一部が実行されることを特徴とする方法。 - 【請求項5】 請求項1〜4いずれかに記載の方法にお
いて、オペレーティング・システムにおけるプロセスと
ロックとの間のインタブロックの分析方法に用いること
を特徴とする方法。 - 【請求項6】 請求項1〜5いずれかに記載の方法にお
いて、該方法を実行するために物理メモリ・セットにア
クセスするための修正ツールを使用することを特徴とす
る方法。 - 【請求項7】 請求項1〜6いずれかに記載の方法にお
いて、該方法を実行するために空メモリの分析ツールを
使用することを特徴とする方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
FR9309533 | 1993-08-03 | ||
FR9309533A FR2708766B1 (fr) | 1993-08-03 | 1993-08-03 | Procédé d'analyse d'interblocages dans un système d'exploitation. |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH07191865A true JPH07191865A (ja) | 1995-07-28 |
Family
ID=9449885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6122249A Pending JPH07191865A (ja) | 1993-08-03 | 1994-06-03 | オペレーティング・システムにおけるインタブロックの分析方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US5590335A (ja) |
EP (1) | EP0637798B1 (ja) |
JP (1) | JPH07191865A (ja) |
CA (1) | CA2119988A1 (ja) |
DE (1) | DE69421346T2 (ja) |
FR (1) | FR2708766B1 (ja) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5805839A (en) * | 1996-07-02 | 1998-09-08 | Advanced Micro Devices, Inc. | Efficient technique for implementing broadcasts on a system of hierarchical buses |
US5796605A (en) * | 1996-07-02 | 1998-08-18 | Sun Microsystems, Inc. | Extended symmetrical multiprocessor address mapping |
US5754877A (en) * | 1996-07-02 | 1998-05-19 | Sun Microsystems, Inc. | Extended symmetrical multiprocessor architecture |
US6009269A (en) * | 1997-03-10 | 1999-12-28 | Digital Equipment Corporation | Detecting concurrency errors in multi-threaded programs |
US6560682B1 (en) * | 1997-10-03 | 2003-05-06 | Intel Corporation | System and method for terminating lock-step sequences in a multiprocessor system |
US6622155B1 (en) | 1998-11-24 | 2003-09-16 | Sun Microsystems, Inc. | Distributed monitor concurrency control |
US6295611B1 (en) | 1998-12-14 | 2001-09-25 | Sun Microsystems, Inc.. | Method and system for software recovery |
US6721775B1 (en) * | 1999-08-12 | 2004-04-13 | International Business Machines Corporation | Resource contention analysis employing time-ordered entries in a blocking queue and waiting queue |
US6681241B1 (en) | 1999-08-12 | 2004-01-20 | International Business Machines Corporation | Resource contention monitoring employing time-ordered entries in a blocking queue and waiting queue |
US6898617B2 (en) * | 1999-11-18 | 2005-05-24 | International Business Machines Corporation | Method, system and program products for managing thread pools of a computing environment to avoid deadlock situations by dynamically altering eligible thread pools |
GB0118294D0 (en) * | 2001-07-27 | 2001-09-19 | Ibm | Method and system for deadlock detection and avoidance |
US7093262B2 (en) * | 2002-07-30 | 2006-08-15 | Intel Corporation | Detecting deadlocks in multithreaded programs |
US7278057B2 (en) * | 2003-07-31 | 2007-10-02 | International Business Machines Corporation | Automated hang detection in Java thread dumps |
US7467383B2 (en) * | 2004-03-08 | 2008-12-16 | Ab Initio Software Llc | System for controlling task execution using a graphical representation of task dependency |
US7496918B1 (en) * | 2004-06-01 | 2009-02-24 | Sun Microsystems, Inc. | System and methods for deadlock detection |
US7774783B2 (en) * | 2004-12-23 | 2010-08-10 | Microsoft Corporation | Method and apparatus for detecting deadlocks |
US7950001B2 (en) * | 2006-09-08 | 2011-05-24 | International Business Machines Corporation | Method and apparatus for instrumentation in a multiprocessing environment |
CN102053861B (zh) * | 2009-10-30 | 2014-03-12 | 国际商业机器公司 | 并行程序中死锁检测的方法和系统 |
CN111090528B (zh) * | 2019-12-25 | 2023-09-26 | 北京天融信网络安全技术有限公司 | 死锁确定方法、装置及电子设备 |
CN111767155A (zh) * | 2020-08-06 | 2020-10-13 | 腾讯科技(深圳)有限公司 | 死锁检测方法、装置、设备及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01207842A (ja) * | 1988-02-16 | 1989-08-21 | Fujitsu Ltd | デッドロック検出方式 |
JPH0250231A (ja) * | 1988-08-12 | 1990-02-20 | Canon Inc | デツドロツク検出装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4318182A (en) * | 1974-04-19 | 1982-03-02 | Honeywell Information Systems Inc. | Deadlock detection and prevention mechanism for a computer system |
US4494193A (en) * | 1982-09-30 | 1985-01-15 | At&T Bell Laboratories | Deadlock detection and resolution scheme |
JPS61233849A (ja) * | 1985-04-08 | 1986-10-18 | Hitachi Ltd | デ−タベ−ス排他制御方法 |
JPH07120299B2 (ja) * | 1986-01-10 | 1995-12-20 | 株式会社日立製作所 | マルチプロセッサシステムの試験方法 |
WO1989000734A1 (en) * | 1987-07-21 | 1989-01-26 | Stellar Computer Inc. | Detecting multiple processor deadlock |
US4881166A (en) * | 1987-07-24 | 1989-11-14 | Amoco Corporation | Method for consistent multidatabase transaction processing |
US5016167A (en) * | 1987-12-21 | 1991-05-14 | Amdahl Corporation | Resource contention deadlock detection and prevention |
US5167022A (en) * | 1988-10-25 | 1992-11-24 | Hewlett-Packard Company | Multiprocessor bus locking system with a winning processor broadcasting an ownership signal causing all processors to halt their requests |
IT1227711B (it) * | 1988-11-18 | 1991-05-06 | Caluso Torino | Sistema multiprocessore di elaborazione dati a risorse distribuite condivise e prevenzione di stallo. |
US5133074A (en) * | 1989-02-08 | 1992-07-21 | Acer Incorporated | Deadlock resolution with cache snooping |
US5161227A (en) * | 1989-11-13 | 1992-11-03 | International Business Machines Corporation | Multilevel locking system and method |
-
1993
- 1993-08-03 FR FR9309533A patent/FR2708766B1/fr not_active Expired - Fee Related
-
1994
- 1994-03-25 CA CA002119988A patent/CA2119988A1/fr not_active Abandoned
- 1994-06-03 JP JP6122249A patent/JPH07191865A/ja active Pending
- 1994-07-29 DE DE69421346T patent/DE69421346T2/de not_active Expired - Lifetime
- 1994-07-29 EP EP94401755A patent/EP0637798B1/fr not_active Expired - Lifetime
-
1996
- 1996-04-02 US US08/626,597 patent/US5590335A/en not_active Expired - Lifetime
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01207842A (ja) * | 1988-02-16 | 1989-08-21 | Fujitsu Ltd | デッドロック検出方式 |
JPH0250231A (ja) * | 1988-08-12 | 1990-02-20 | Canon Inc | デツドロツク検出装置 |
Also Published As
Publication number | Publication date |
---|---|
FR2708766A1 (fr) | 1995-02-10 |
US5590335A (en) | 1996-12-31 |
CA2119988A1 (fr) | 1995-02-04 |
EP0637798A1 (fr) | 1995-02-08 |
DE69421346D1 (de) | 1999-12-02 |
FR2708766B1 (fr) | 1995-09-08 |
DE69421346T2 (de) | 2000-02-10 |
EP0637798B1 (fr) | 1999-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH07191865A (ja) | オペレーティング・システムにおけるインタブロックの分析方法 | |
JP4436036B2 (ja) | 情報処理装置、トレース処理方法、プログラム及び記録媒体 | |
US5305455A (en) | Per thread exception management for multitasking multithreaded operating system | |
US7653791B2 (en) | Realtime-safe read copy update with per-processor read/write locks | |
EP0636985B1 (en) | Process monitoring in a multiprocessing server | |
CN102222037B (zh) | 用于定位java程序的瓶颈的方法和设备 | |
Smith et al. | New software performance antipatterns: More ways to shoot yourself in the foot | |
US4410940A (en) | Transfer of control method and means among hierarchical cooperating sequential processes | |
US7844971B2 (en) | Method and apparatus for detecting cross-thread stack access in multithreaded programs | |
US20030135720A1 (en) | Method and system using hardware assistance for instruction tracing with secondary set of interruption resources | |
EP0953908A2 (en) | Method, apparatus, and article of manufacture for time profiling multithreaded programs | |
EP0565705B1 (en) | Out of order job processing method and apparatus | |
US20040181782A1 (en) | System and method for optimizing memory usage by locating lingering objects | |
JPH0338735A (ja) | 並列プログラム中のエラーを探す方法及び支援システム | |
US6330714B1 (en) | Method and computer program product for implementing redundant lock avoidance | |
JPH06324885A (ja) | 例外条件処理方法及び装置 | |
US5862340A (en) | Method operating in each node of a computer system providing and utilizing special records for collective communication commands to increase work efficiency at each node | |
US20090019273A1 (en) | Exception-based error handling in an array-based language | |
US6637026B1 (en) | Instruction reducing predicate copy | |
KR20200086093A (ko) | 병렬 프로그램의 소스 코드 분석 장치 및 방법, 기록매체 | |
JPH03225535A (ja) | プログラムトレース方式 | |
JP3019915B2 (ja) | 手続き呼出し方法 | |
JPH11249911A (ja) | 演算依存一時デ―タ構造を利用したスレッド非認識ル―チンを呼び出す方法、装置及びコンピュ―タプログラム製品 | |
KR0139724B1 (ko) | 유닉스 환경의 dbms에서 좀비 트랜잭션의 발견 및 처리 방법 | |
JPH0659913A (ja) | バッチジョブスケジューリングシステム |