JP2015194886A - 分散データ処理装置、分散データ処理方法および分散データ処理プログラム - Google Patents

分散データ処理装置、分散データ処理方法および分散データ処理プログラム Download PDF

Info

Publication number
JP2015194886A
JP2015194886A JP2014072194A JP2014072194A JP2015194886A JP 2015194886 A JP2015194886 A JP 2015194886A JP 2014072194 A JP2014072194 A JP 2014072194A JP 2014072194 A JP2014072194 A JP 2014072194A JP 2015194886 A JP2015194886 A JP 2015194886A
Authority
JP
Japan
Prior art keywords
terminal
deadlock
node
controlled
link
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
Application number
JP2014072194A
Other languages
English (en)
Inventor
成幸 小田嶋
Shigeyuki Odajima
成幸 小田嶋
美和 岡林
Miwa Okabayashi
美和 岡林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014072194A priority Critical patent/JP2015194886A/ja
Priority to US14/657,798 priority patent/US9590908B2/en
Publication of JP2015194886A publication Critical patent/JP2015194886A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/11Identifying congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/524Deadlock detection or avoidance

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】端末と被制御装置が通信できないことがある場合でも、デッドロックを検出する。
【解決手段】各々が複数の被制御装置の一つに対応する複数のノードが、第1の端末が制御権を有する第1のノードから第1の端末が制御権を有する第2のノードに向かって伸びる第1のリンクと、第2の端末が制御権を有する第3のノードから第2の端末が制御権を付与されることを待っている第4のノードに向かって伸びる第2のリンクとを用いて結合されることで構成される資源循環グラフにおいて、第1のリンクおよび第2のリンクに沿ってノード間を転送されるように、複数の被制御装置の間を転送されるデッドロック検出メッセージを受信するネットワーク受信部と、デッドロック検出メッセージの履歴に基づいて、デッドロックが発生しているか否かを判定するデッドロック判定部とを含む。
【選択図】図12

Description

本発明は、分散データ処理装置、分散データ処理方法および分散データ処理プログラムに関するものである。
ネットワーク機器の普及とモバイル端末の普及により、モバイル端末からネットワーク制御可能な装置を制御する技術が注目されている。例えば、ネットワークにより電球等のデバイスのスイッチのオン、オフが制御可能な電子基板や、ネットワーク制御可能なプロジェクタ等が普及しつつある。
そしてこれらの機器は、一般に「分散システム」と呼ばれる、モバイル端末からネットワーク制御可能な装置を制御し得るシステムで利用され得る。分散システムでは一般に、被制御装置は状態を持ち、モバイル端末から発せられるメッセージにより、被制御装置の持つ状態を変更する構成を取る。また、複数端末により意図しない状態の変更を防ぐため、被制御装置は制御元のモバイル端末に関する情報を管理し、更にモバイル端末からの制御権要求に基づき、モバイル端末への被制御装置の制御権の発行、または制御権待ちの通知を行う。これらの条件により、モバイル端末は制御先のデバイスを常時監視する必要がなく、モバイル端末のネットワーク負荷を低減することが可能である。また、システム上に多くのモバイル端末、被制御装置が存在することが想定されるため、全ての制御、非制御関係を持つことは非現実的であり、モバイル端末、被制御装置共に、自身が制御する、又は制御されるモバイル端末、被制御装置の情報のみを保有する形態を取り得る。
そのような分散システムにおいて、データベースアクセスなどを行う複数のリソースマネージャーにまたがって発生するトランザクション(グローバルトランザクション)の間でのデッドロックを検出可能とする分散システムが知られている(たとえば、特許文献1)。このような分散システムでは、たとえば、トランザクションを一括して管理するトランザクションマネージャーが、複数のトランザクションの間で、複数のリソースマネージャーにまたがって発生する、ソフトウエア資源の占有に関する待ち関係におけるデッドロックを検出しても良い。
また、複数のタスクを並列実行し、各タスクがどの資源を占有しているかを管理するマルチタスクシステムにおいて、デッドロックを効率良く検出する方法が知られている(たとえば、特許文献2)。このようなマルチタスクシステムでは、待ち管理テーブルを設けて、各タスクの「待ち関係」を登録し、この待ち関係からデッドロックを検出し得る。
また、処理内の個別ロックに基づいてデッドロックを検出、分解する分散システムが知られている(たとえば、特許文献3)。このようなシステムでは、分散処理マネージャーが、処理を表すノードと、処理間の依存性を表すエッジとを有する待ちグラフを格納し、待ちグラフを通してプローブを伝搬し、デッドロック依存性を示すサイクリック依存性を検出し得る。
デッドロックの検出、解消方法として、被制御装置の占有権待ち時間が一定時間を超えた場合に、被制御装置の占有権を強制的に解放するタイムアウト方式が知られている(たとえば、特許文献2)。タイムアウトによらないデッドロックの検出方式としては、資源循環グラフを用いたデッドロックの解消方式が知られている(たとえば、非特許文献1)。資源循環グラフを用いたデッドロック検出を行う場合、全ての端末と被制御装置の制御関係を保有する必要があるため、分散システム上でそのまま用いることができない。しかし、端末、被制御装置に分散させて情報を保有した場合でも、それぞれの端末、被制御装置が保有する宛先にメッセージを送信し、メッセージが戻ってくるかを検出することで、資源循環グラフと同様にデッドロック検出を行う、Chandy−Misra−Haasアルゴリズムが知られている(たとえば、非特許文献2)。
特開平8−137707号公報 特開平6−337798公報 特開平6−214967号公報
R. Holt, "Some dead lock properties of computer systems", ACM Computing Surveys, vol. 4, pp. 179-196, 1972. K. Chandy, J. Misra, L. Haas, "Distributed deadlock detection", ACM Trans. Computer Systems, vol. 1, pp. 144-156, 1983.
しかしながら、Chandy−Misra−Haasアルゴリズムでは端末と被制御装置が常時通信できることを仮定しているため、端末と被制御装置が通信できないことがある場合、正常にデッドロックの検出ができないことがあるという問題がある。
よって、一つの側面として、本発明は、端末と被制御装置が通信できないことがある場合でも、デッドロックの検出が可能な分散データ処理装置、分散データ処理方法および分散データ処理プログラムを提供することを目的とする。
複数の端末と、各々が、前記複数の端末の一つに自身の動作を制御する制御権を付与することによって、動作が制御される複数の被制御装置を含むシステムの前記複数の端末の一つまたは前記複数の被制御装置の一つである分散データ処理装置が開示される。装置は、各々が前記複数の被制御装置の一つに対応する複数のノードが、第1の端末が制御権を有する第1の被制御装置に対応する第1のノードから前記第1の端末が制御権を有する第2の被制御装置に対応する第2のノードに向かって伸びる第1のリンクと、第2の端末が制御権を有する第3の被制御装置に対応する第3のノードから前記第2の端末が制御権を付与されることを待っている第4の被制御装置に対応する第4のノードに向かって伸びる第2のリンクとを用いて結合されることで構成される資源循環グラフにおいて、前記第1のリンクおよび前記第2のリンクに沿ってノード間を転送されるように、前記複数の被制御装置の間を転送されるデッドロック検出メッセージを受信するネットワーク受信部と、前記デッドロック検出メッセージの履歴に基づいて、デッドロックが発生しているか否かを判定するデッドロック判定部と、を含むことを特徴とする。
端末と被制御装置が通信できないことがある場合でも、デッドロックを検出することができる。
端末から被制御機器を操作するシステムの例を示す図である。 端末間のデッドロックについて説明するための図である。 比較例における資源循環グラフの記法の例を示す図である。 比較例における資源循環グラフの記法の別の例を示す図である。 資源循環グラフによるデッドロック検出について説明するための図である。 分散システム上でのデッドロック検出について説明するための図である。 資源循環グラフの例を示す図である。 Chandy−Misra−Haasアルゴリズムでのデッドロック検出の例を示す図である。 実施形態の分散データ処理装置の機能ブロックの例を示す図である。 実施形態の資源循環グラフの記法の例を示す図である。 実施形態の資源循環グラフの記法の別の例を示す図である。 ライン型トポロジの資源循環グラフの例を示す図である。 スター型トポロジの資源循環グラフの例を示す図である。 実施形態における資源循環グラフの例を示す図である。 前・次・待ノード情報の例を示す図である。 デッドロック検出メッセージの例を示す図である。 装置の制御権取得時の資源循環グラフの変形の例を説明するための図である。 装置の制御権取得時の資源循環グラフの変形の別の例を説明するための図である。 実施形態の資源循環グラフを用いたデッドロック検出の例について説明するための図である。 実施形態の資源循環グラフを用いたデッドロック解消の例について説明するための図である。 実施形態の資源循環グラフを用いたデッドロック検出と解消の例について説明するための図である。 実施形態の分散データ処理装置の構成の例を示す図である。 端末側の装置制御権獲得処理における処理の流れの例を示す図である。 端末側の次ノード追加・変形処理における処理の流れの例を示す図である。 端末側の待ちノード追加処理における処理の流れの例を示す図である。 実施形態の資源循環グラフを用いたデッドロック検出処理における処理の流れの例を示す図である。 実施形態の資源循環グラフを用いたデッドロック解消処理における処理の流れの例を示す図である。 装置側の装置制御権獲得処理における処理の流れの例を示す図である。 端末側の装置制御権解放処理における処理の流れの例を示す図である。 デッドロック検出メッセージ送信処理における処理の流れの例を示す図である。 装置側のデッドロック解消処理における処理の流れの例を示す図である。 端末から被制御機器を操作するシステムの別の例を示す図である。 デッドロックの検出、解消の例について説明するための図である(その1)。 デッドロックの検出、解消の例について説明するための図である(その2)。 デッドロックの検出、解消の例について説明するための図である(その3)。 デッドロックの検出、解消の例について説明するための図である(その4)。 デッドロックの検出、解消の例について説明するための図である(その5)。 デッドロックの検出、解消の例について説明するための図である(その6)。
以下、図面を参照して、実施形態の分散データ処理装置、分散データ処理方法および分散データ処理プログラムについて説明する。
図1は、端末から被制御機器を操作するシステムの例を示す図である。ネットワーク機器の普及とモバイル端末の普及により、モバイル端末からネットワーク制御可能な装置を制御する技術が注目されている。例えば、ネットワークにより電球等のデバイスのスイッチのオン/オフの制御可能な電子基板や、ネットワーク制御可能なプロジェクタ等が知られている。
ネットワーク制御可能な装置を制御するモバイル端末、タブレット端末等のモバイルコンピュータを、単に「端末」と呼ぶことがある。また、ネットワーク制御可能な機器を、「被制御機器」や「被制御装置」と呼ぶことがある。また、端末および被制御装置を単に、「装置」と呼ぶことがある。
また、ある端末が、ある被制御装置をネットワーク制御可能なとき、端末は被制御装置の制御権を有する、と言うことがある。また、このことを、端末は被制御装置を占有する占有権を有する、と言うこともある。これらは互いに、交換可能な表現である。ここで、制御権または占有権は、端末から被制御装置への要求に応答して、被制御装置から端末に与えられるものとしても良い。そして、端末が、被制御装置から制御権または占有権を与えられるのを待っている状態を、「制御権待ち」状態、または「占有権待ち」状態と呼ぶことがある。
以下では、「制御権」と「占有権」は互いに交換可能な用語である。
図1には、オペレータA、Bが有するモバイル端末、タブレット端末等のモバイルコンピュータ102、104を用いて、会議室など、決まった場所に設置された電子機器106、108、110を操作するシステム10を示している。図1では、オペレータAは、所有するモバイル端末102を用いて、カメラ106、プロジェクタ108を同時に操作し、カメラ106で撮像した映像を、プロジェクタ108から出力し得る。また、オペレータBは、所有するタブレット104を用いて、タブレット104に記憶された曲の中から決まった曲がオーディオ機器110から繰り返し流れるようにしても良い。
これら、モバイルコンピュータ102、104からネットワーク制御可能な装置、カメラ106、プロジェクタ108、オーディオ機器110等を制御するようなシステム10においては、一般に被制御装置は状態を持つ。例えばプロジェクタ108においては、投影中状態、非投影状態、などの状態があっても良い。また、オーディオ機器110においては、音量の大きさなど、連続的な状態があっても良い。
図1に示されているシステム10では、端末から発せられるメッセージにより、被制御装置の持つ状態を変更する構成を取る。例えば、図1においては、オペレータAのスマートフォン等のモバイルコンピュータ102の操作により、プロジェクタ108がカメラ106で撮像された映像を出力するか、それともカメラ106との接続を切って設定画面を出すかの操作が可能である。また、オペレータBの操作により、スピーカ等のオーディオ機器110から流す曲の種類を変更することが可能である。
また、複数の端末により意図しない状態の変更を防ぐため、被制御装置は制御元の端末の情報を管理する。更に被制御装置は、端末からの制御権要求に基づき、端末への被制御装置の制御権の発行、または制御権待ちの通知を行う。例えば、図1においては、カメラ106、プロジェクタ108はオペレータAが所有する端末102に操作されているが、新たにオペレータAがスピーカ110の操作をしようとした場合は、スピーカ110から制御権待ちのメッセージを受け取り、オペレータBがオーディオ機器110の制御権を解放するまで、オーディオ機器110の制御権待ちをすることになる。
このような構成により端末は制御先の被制御装置を常時監視する必要がなく、端末のネットワーク負荷を低減することが可能である。例えば、オペレータBの端末104は常時、オーディオ機器110と通信する必要はなく、曲の切り替え操作を行う場合にのみ、オーディオ機器と通信すればよい。
また、システム上に多くの端末、被制御装置が存在することが想定されるため、全ての制御、非制御関係を持つことは非現実的であり、端末・被制御装置共に、自身が制御する、又は制御される端末・被制御装置の情報のみを保有する形態を取っても良い。例えば、オペレータAの端末102はプロジェクタ108、カメラ106の制御権情報を保持しているが、オーディオ機器110がオペレータBに操作されているという情報は持たない。
このようなシステム10は、一般に「分散システム」と呼ばれることもある。
図2は、端末間のデッドロックについて説明するための図である。
ネットワーク制御可能な機器をモバイル端末から制御しようとする場合、端末間のデッドロックの解消は、アプリケーションの安定した操作の実現には不可欠である。デッドロックは、端末間で生じる制御の競合であり、複数の端末が、複数の機器を制御する場合に生じる。
例えば図2に示されているように、端末A(102)、端末B(104)で、プロジェクタ108とオーディオ機器110の両者が必要なアプリケーションが実行されている状況を考える。このとき、端末A(102)ではまずプロジェクタ108の制御権を、端末B(104)では、まずはオーディオ機器110の制御権を取得する。次に端末A(102)はオーディオ機器110、端末B(104)はプロジェクタ108の制御権を取得しようとした場合、はオーディオ機器110もプロジェクタ108も既に占有されているため、端末A、端末Bともに制御権待ちの状態になる。しかし、端末A(102)、端末B(104)ともにお互いに必要な機器の制御権を保有したまま制御権待ちをしているために処理が先に進むことがなく、時間が経過しても競合が解消されることはない。このような、処理同士が競合を起こし、処理が先に進めなくなってしまう状態がデッドロックである。
デッドロックは自動的には解消することはないため、何らかの手段でデッドロックを検出し、解消することが必要である。
デッドロックの単純な検出、解消手段の一つは、被制御装置の占有権待ち時間が一定時間を超えた場合に、被制御装置の占有権を強制的に解放するタイムアウト方式である。しかし、タイムアウト方式では、制御権の誤解放や長時間の制御権待ちを防ぐためのタイムアウト時間の設定が困難である。また、制御権の解放を検出するために端末と被制御装置の間でポーリングが必要である。そのため、電力消費が大きくなる、といった問題から、特にモバイル端末上での実行には適さない。
タイムアウトによらないデッドロックの検出方式としては、資源循環グラフを用いたデッドロックの解消方式が知られている。
デッドロックの検出技法としては、待ちグラフによる手法も知られている。待ちグラフでも処理をノードとするグラフ上の循環路を検出することでデッドロックの検出を行っているため、資源循環グラフと同原理でデッドロックの検出を行っている。
図3Aは、比較例における資源循環グラフの記法の例を示す図であり、図3Bは比較例における資源循環グラフの記法の別の例を示す図である。
図3A、3Bでは、端末、被制御装置をノードとして表し、丸で囲まれた装置は端末を、四角で囲まれた装置は被制御装置を表すこととする。更にグラフ上のリンクにより、端末と被制御装置の制御関係、制御待ち関係を表すものである。
図3Aに示されている例では、装置1から端末Aに向けて矢印が伸びている。このように、被制御装置から端末に伸びるリンクによって、端末が被制御装置を制御していることを示すことがある。
図3Bに示されている例では、端末Aから装置1に向けて矢印が伸びている。このように、端末から被制御装置に伸びるリンクによって、端末Aは、被制御装置1の制御権待ち状態にあることを示すことがある。
このとき、端末間のデッドロック発生時には資源循環グラフ上で循環路が生じることが知られており、資源循環グラフ上で循環路が生じているかを検査することにより、デッドロックの検出が可能である。このことを図4を参照しながら説明する。
図4は、資源循環グラフによるデッドロック検出について説明するための図である。
例えば、図4に示されている例では、「端末A→装置1→端末B→装置2→端末A」という循環路が生じている。このため、デッドロックが発生していることを検出することができる。
資源循環グラフを用いたデッドロック検出を行う場合、全ての端末と被制御装置の制御関係を保有する必要があるため、分散システム上でそのまま用いることができない。しかし、端末、被制御装置に分散させて情報を保有した場合でも、それぞれの端末、被制御装置が保有する宛先にメッセージを送信し、メッセージが戻ってくるかを検出することで、資源循環グラフと同様にデッドロック検出を行う方法、たとえばChandy−Misra−Haasアルゴリズムが知られている。
図5は、分散システム上でのデッドロック検出について説明するための図である。
図5に示されている例では、端末は自身が制御権待ちをしている被制御装置(装置1)の情報を、被制御装置(装置1)は自身の制御権を持つ端末の情報を記憶しておく。デッドロック検出時、端末はメッセージを送出し、またメッセージを受信した端末・被制御装置は、自身が記憶している端末、被制御装置にメッセージを伝送し、更に同一のメッセージが再度同じ端末・被制御装置に到達していないかを監視する。このとき、同一のメッセージが再度端末、又はデバイスに到達する場合は循環路が生じていることと等しいため、同一のメッセージが到達しているかを監視することにより、デッドロックの検出が可能となる。
図6は、資源循環グラフの例を示す図である。
図6に示されている例では、装置2と装置3は端末Aに制御されている。また、装置1は、端末Bに制御されている。そして、端末Aは装置1の制御権待ちの状態にあり、端末Bは装置2の制御権待ちの状態にある。
図7は、Chandy−Misra−Haasアルゴリズムでのデッドロック検出の例を示す図である。
Chandy−Misra−Haasアルゴリズムは端末と被制御装置が常時通信できることを仮定しているため、端末と被制御装置が通信できないことがある場合、正常にデッドロックの検出ができないことがある。
図7に示されている例で占有関係の状況で端末Bがスリープしている場合、端末Aから発せられたメッセージは、端末2から先には転送されないため、メッセージが端末Aに戻ってくることはない。従って、実際にはデッドロックが発生しているが、端末との通信ができないことがある場合、Chandy−Misra−Haasアルゴリズムではデッドロックを正しく検出できない場合がある。更に、デッドロックが検出されない場合は解消もされないため、端末間の競合が解消されず、システムの動作が妨げられる場合が生じうる。特に、モバイル端末では、スリープや移動などで一時的に通信できないことが多発するため、Chandy−Misra−Haasアルゴリズムの仮定が成立しない場合が多く存在し得る。
一般に、被制御装置は、端末に比べ通信できない場合が少ない。そこで、循環路に被制御装置のみを含むように構成された資源循環グラフを用いて、デッドロックを検出する。このような構成によって、端末と被制御装置が通信できないことがある場合でも、デッドロックの検出が可能な分散データ処理装置、分散データ処理方法および分散データ処理プログラムについて説明する。
以下で開示される分散データ処理装置、分散データ処理方法および分散データ処理プログラムでは、
(C1)被制御装置のみを循環路に含む資源循環グラフを構成する、
(C2)被制御装置のみを循環路に含む資源循環グラフを用いた、端末と一時的に通信できない場合でもデッドロックを検出する、
(C3)被制御装置のみを循環路に含む資源循環グラフを用いた、端末と一時的に通信できない場合でもデッドロックを解消する、
(C4)デッドロックの検出と解消を同時に行う、
という特徴を有する。
<分散データ処理装置>
図8は、実施形態の分散データ処理装置20の機能ブロックの例を示す図である。分散データ処理装置20は、端末、被制御装置の一部であっても良い。
分散データ処理装置20は、デッドロック検出部200、通信部202、デッドロック解消部204、資源循環グラフ更新部206、優先度決定情報データベース(DB)208、資源循環グラフDB210、占有元情報DB212を含み得る。優先度決定情報データベース(DB)208、資源循環グラフDB210、占有元情報DB212はまとめて単に記憶部と呼ぶこともある。
デッドロック検出部200は、デッドロック判定部2000、転送メッセージ生成部2002を含む。デッドロック判定部2000は、メッセージの循環を検出し、デッドロックが発生しているか否かを判定しても良い。転送メッセージ生成部2002は、分散データ処理装置20のユニフォーム リソース アイデンティファイア(URI)、保存する優先度等に関する情報を含むメッセージを生成しても良い。
通信部202は、ネットワーク受信部2020、ネットワーク送信部2022を含む。ネットワーク送信部2022は、たとえば、デッドロック検出部200の転送メッセージ生成部2002で生成されたメッセージを送信しても良い。ネットワーク受信部2020は、ネットワークからメッセージを受信し、デッドロック検出部200のデッドロック判定部2000に送っても良い。
資源循環グラフ更新部206は、占有元端末管理部2060、資源追加・更新部2062、資源解放部2064を含み得る。占有元端末管理部2060は、分散データ処理装置20を占有している端末に関する情報を管理する。その際、占有元端末管理部2060は、占有元情報DB212を用いても良い。資源追加・更新部2062、は、資源が確保された時に、資源循環グラフで前・次・待ノードを追加、更新しても良い。資源解放部2064は、資源が解放された時に、資源循環グラフで前・次・待ノードを更新しても良い。
優先度決定情報DB208は、被制御装置の占有を解除する際の優先度を決定するための情報が格納されていても良い。優先度決定情報DB208に格納されているデータは、転送メッセージ生成部2002で、メッセージを生成する際に使用され得る。
資源循環グラフDB210は、資源循環グラフ上、分散データ処理装置20を含んでいる被制御装置に付与される前ノード、次ノード、待ノードに関する情報が格納されていても良い。資源循環グラフDB210に格納されているデータは、転送メッセージ生成部2002で、メッセージを生成する際に使用され得る。
デッドロック解消部204は、占有を解除する端末を決定して、デッドロック解消のための占有強制解除メッセージを生成し、ネットワーク送信部2011に送信させても良い。
たとえば、占有強制解除メッセージは、占有強制解除メッセージを受信した装置が、端末からの制御権要求に応答して占有権を与える通知を中止するような命令を含んでいても良い。
このように分散データ処理装置20は、複数の端末と、各々が、複数の端末の一つに自身の動作を制御する制御権を付与することによって、動作が制御される複数の被制御装置を含むシステムの複数の端末の一つまたは複数の被制御装置の一つである。
分散データ処理装置20のネットワーク受信部2022は、各々が複数の被制御装置の一つに対応する複数のノードが、第1の端末が制御権を有する第1の被制御装置に対応する第1のノードから第1の端末が制御権を有する第2の被制御装置に対応する第2のノードに向かって伸びる第1のリンクと、第2の端末が制御権を有する第3の被制御装置に対応する第3のノードから第2の端末が制御権を付与されることを待っている第4の被制御装置に対応する第4のノードに向かって伸びる第2のリンクとを用いて結合されることで構成される資源循環グラフにおいて、第1のリンクおよび第2のリンクに沿ってノード間を転送されるように、複数の被制御装置の間を転送されるデッドロック検出メッセージを受信しても良い。
分散データ処理装置20のデッドロック判定部2000は、デッドロック検出メッセージの履歴に基づいて、デッドロックが発生しているか否かを判定しても良い。
また、分散データ処理装置20のデッドロック判定部2000は、デッドロック検出メッセージが複数回、複数の被制御装置のうちの一つを訪問した場合に、デッドロックが発生していると判定しても良い。
分散データ処理装置20は、さらに、自身が第1のリンクの終点に対応する複数の被制御装置の一つである場合、第1のリンクの始点に対応する複数の被制御装置の別の一つを「前ノード」、自身が第1のリンクの始点に対応する複数の被制御装置の一つである場合、第1のリンクの終点に対応する複数の被制御装置の別の一つを「次ノード」、自身が第2のリンクの始点に対応する前記複数の被制御装置の一つである場合、前記第2のリンクの前記終点に対応する複数の被制御装置の別の一つを「待ノード」として、前ノード、次ノード、および待ノードに関する情報を記憶する記憶部210を含み得る。
資源循環グラフのノードの各々は、記憶部210に格納されている前ノード、次ノード、および待ノードに関する情報が付与されていても良い。
分散データ処理装置20は、さらに、デッドロック判定部2000が、デッドロックが発生していると判定したとき、デッドロックを解消するために、資源循環グラフに含まれる複数の被制御装置の一つの制御権を有する複数の端末の一つに、制御権を解消させるための通知を送るデッドロック解消部204を含み得る。
また、デッドロック検出メッセージは、資源循環グラフに含まれる複数の被制御装置の優先度に関する情報を含み、デッドロック判定部2000が、デッドロックが発生していると判定したとき、デッドロックを解消するために、デッドロック検出メッセージに含まれる優先度に基づいて、資源循環グラフに含まれる複数の被制御装置の一つの制御権を有する複数の端末の一つに、制御権を解消させるための通知を送るデッドロック解消部204を含み得る。
<<資源循環グラフ>>
図9Aは、実施形態の資源循環グラフの記法の例を示す図であり、図9Bは、実施形態の資源循環グラフの記法の別の例を示す図である。
図9Aに示されているように、装置が実線の矢印で結ばれている場合、同一の端末で制御されていることを示すものとする。
図9Bに示されているように、装置が点線の矢印で結ばれている場合、矢印の根っこのノード(根ノード)によって表される装置を制御している端末は、矢印の先のノードで表される装置に対する制御権待ちの状態にあることを示すものとする。
このように、図9A、図9Bに示されている資源循環グラフにおいては、端末、被制御装置のたとえば資源循環グラフDB210に、以下の2種の情報を記憶させる。
(G1)同一の端末により制御されている端末・被制御装置を示す、双方向リンクリスト状のリンク(以下、前方リンクを「次ノード」、後方リンクを「前ノード」と呼ぶ)、
(G2)制御元の端末が制御権待ちをしている被制御装置を示すリンク(以下、「待ノード」と呼ぶ)。
よって、資源循環グラフでは、前・次ノードで連結された端末・被制御装置は同一端末によりリンク(第1のリンク)によって連結されていることを示し、更に前・次ノードで連結された部分グラフの根ノードは、必ず装置を制御する端末となるように構成する。また、待ノードによるリンク(第2のリンク)が伸ばされている被制御装置は、待ノードを保有している装置を制御している端末、すなわち、前ノードで辿ったノード(根ノードとも呼ぶ)が制御権待ちの状態であることを示す。
図10は、ライン型トポロジの資源循環グラフの例を示す図であり、図11は、スター型トポロジの資源循環グラフの例を示す図である。
ライン型トポロジは、子がないノード(葉ノード)のみに待ノードを持たせ、また前、次ノードで連結されるノードは直線状に連結する構成である。図10では、装置1、装置2が待ノードである。前、次ノードで連結されるノード、つまり装置2と装置3は直線状に連結されている。
一方、スター型トポロジは端末の子ノードのみに待ノード、複数の次ノードを持たせる構成である。端末Aを親ノードとすると、装置2が子ノード、端末Bを親ノードとすると、装置1が子ノードである。
図12は、実施形態における資源循環グラフの例を示す図である。
図12では、端末Aは装置2と装置3の制御権を有し、装置1の制御権待ちをしており、端末Bは装置1の制御権を有し、装置2の制御権待ちをしている。
図12に示されているように、端末Aのたとえば資源循環グラフDB210には、「前ノード:なし、次ノード:装置2:待ノード:なし」の情報が格納されている。
また、装置2には、「前ノード:端末A、次ノード:装置3、待ノード:なし」の情報が格納されていても良い。この情報は、装置2の資源循環グラフDB210に格納されていても良い。また、装置2の占有元情報DB212には、装置2の制御権を有する「端末A」の情報が格納されていても良い。
また、装置3には、「前ノード:装置2、次ノード:なし、待ノード:装置1」の情報が格納されていても良い。この情報は、装置3の資源循環グラフDB210に格納されていても良い。
図13は、前・次・待ノード情報の例を示す図である。この情報は、資源循環グラフDB210に格納されていても良い。図13に示されているように、資源循環グラフDB210に格納される前・次・待ノード情報は、前ノードURI、次ノードURI、待ノードURIの3つのフィールドを有し、各フィールドに「device001」等、被制御装置を特定する情報が格納され得る。また、待ノードURIのフィールドには、複数の装置のURIが格納されても良い。
また、装置3の占有元情報DB212には、装置3の制御権を有する「端末A」の情報が格納されていても良い。
前・次ノードで連結されたノードは2つの装置が同一端末により制御されていることを示す。図12の例では、装置2と装置3はともに端末Aによって制御されている。
また、待ノードで連結されたノードは、その装置を制御する端末が制御権待ち状態にある装置である。図12の例では、装置3の待ノードである装置1は、装置3を制御する端末Aが端末1の制御権待ち状態にあることを意味する。
このように、被制御装置のみを循環路に含む資源循環グラフは、制御、制御待ち関係を表現することが可能であり、循環路に被制御装置のみを含むため、端末との通信が一時的にできない場合でもデッドロックの検出が可能である。
デッドロックは、ある被制御装置のデッドロック検出部200の転送メッセージ生成部2002で生成され、通信部202のネットワーク送信部2022から送信されたメッセージが、その被制御装置の通信部202のネットワーク受信部2020で受信され、デッドロック検出部200のデットロック判定部2000で、自身が以前に生成したメッセージであると判定されたときに、発生していると判定され得る。
図14は、デッドロック検出メッセージの例を示す図である。
図14に示されているメッセージは、「メッセージ発行元URI」、「メッセージ送信元URI」、「メッセージ送信先URI」、「既訪ノードフィールド・優先度情報」の5つのフィールドを含む。しかしながら、メッセージは、デッドロック解消のアルゴリズムに依存して、「既訪ノードフィールド・優先度情報」に優先度情報を含まなくても良い。
「メッセージ発行元URI」フィールドには、デッドロック検出メッセージが生成された被制御装置を特定するURIが格納され得る。「メッセージ送信元URI」フィールドには、このメッセージを直線に送信した被制御装置を特定するURIが格納され得る。「メッセージ送信先URI」フィールドには、これからこのメッセージが送信される被制御装置を特定するURIが格納され得る。「既訪ノードフィールド・優先度情報」フィールドには、このメッセージが既に訪問した被制御装置と、優先度に関する情報が格納され得る。優先度は先に制御権要求を発信した被制御装置ほど高いとすれば、訪問した被制御装置の通信部202のネットワーク受信部2020が端末から制御権要求を発信した時刻であっても良い。図14に示されている例では、「既訪ノードフィールド・優先度情報」フィールドに、「(device002,appA,2013/11/22 10:20:30)」と格納されている。これは、端末「appA」によって制御される被制御装置「device002」に2013年11月22日10時20分30秒に制御権要求を受信したことを示しても良い。
ライン型トポロジは、次、待ノードにメッセージ送信を行えばデッドロックの検出が可能である。一方、スター型トポロジでは、デッドロック検出のためには次、待ノードの他にメッセージを受信していない前ノードにもメッセージを送信する必要があり、煩雑な操作が必要となる。他方、装置の占有を行う際、ライン型トポロジでは、直線状に連結する構成を保持するためには、葉ノードに占有した装置を加える必要があり、端末がK個(Kは整数とする)の装置を占有しているときKのオーダー(O(K))の通信が必要となる。他方、スター型トポロジでは端末の子ノードに新たに占有した装置を加えればよいので、1のオーダー(O(1))の通信で済む。
資源循環グラフは、端末が被制御装置の制御権の要求を行った際、制御権を解放した際に、資源循環グラフ更新部206の資源解放部2064によって更新され得る。
図15〜16を参照して、装置の制御権取得時の資源循環グラフの変形について説明する。図15は、装置の制御権取得時の資源循環グラフの変形の例を説明するための図であり、図16は装置の制御権取得時の資源循環グラフの変形の別の例を説明するための図である。ここで、装置とは、被制御装置であっても良い。
図15は端末が被制御装置を占有する場合の資源循環グラフの変形の例を示す図である。
端末が制御権要求を行った際の資源循環グラフの更新の様子を、図15に示す。端末はまず被制御装置に制御権要求を行い、制御権が獲得できた場合は次ノード追加処理を、制御権待ちとなった場合は待ノード追加処理を行う。次ノード追加処理、待ノード追加処理では、それぞれライン型・スター型などの資源循環グラフのトポロジを保存するように変形操作を行う。
図15(a)に示されているように、端末Aは装置2の制御権を有している。また、端末Bは装置1の制御権を有し、装置2に制御権を要求し、制御権待ち状態にある。このとき、端末Aが装置3に占有権(制御権)を要求するとする。このとき図15(b)に示されているように、装置3はどの端末にも占有権(制御権)を与えていないので、装置3は端末Aからの要求に応答して、端末Aに占有権(制御権)を与える。そして、図15(c)に示されているように、端末Aは、葉ノードである装置2の資源循環グラフDB210に格納される前・次・待ノード情報の「次ノード」のフィールドに装置3を加える。つまり、葉ノードの次ノードに、新しく占有した装置を加える。資源循環グラフでは、装置2から装置3に、実線の矢印(第1のリンク)が引かれる。
図16は、端末が装置の制御権待ちを行う場合の資源循環グラフの変形の例を示す図である。
図16(a)に示されているように、端末Aは装置2と装置3の制御権を有しているとする。また、端末Bは装置1の制御権を有し、さらに装置2に対して制御権を要求し、制御権待ち状態にあるとする。このとき図16(a)に示されているように、端末Aは、装置1の制御権を要求するとする。すると図16(b)に示されているように、装置1は、端末Aに制御権(占有権)待ちを通知する。次に図16(c)に示されているように、端末Aは、(子を持たない)葉ノードである装置3の資源循環グラフDB210に格納される前・次・待ノード情報の「待ノード」のフィールドに占有待装置である装置1を加える。
<<デッドロック検出>>
図17は、実施形態の資源循環グラフを用いたデッドロック検出の例について説明するための図である。図17に示されている例は、端末Aは装置2と装置3の制御権を有しており、端末Bは装置1の制御権を有し、さらに装置2に対して制御権を要求し、制御権待ち状態である。
端末が被制御装置の制御権待ちとなった際、資源循環グラフ更新部206で図16に示される資源循環グラフの更新処理を行った後、デッドロック検出部200の転送メッセージ生成部2002でメッセージを生成する。そして、通信部202のネットワーク送信部2022からメッセージを送信する。もしネットワーク受信部2020でメッセージを受信したら、デッドロック検出部200のデッドロック判定部2000で、デッドロックが発生しているか否かを判定する。
たとえば、端末Aがメッセージを生成、送信するとする。端末Aの資源循環グラフDB210に格納される前・次・待ノード情報の「次ノード」のフィールドは「装置2」なので、メッセージは装置2に送信される。装置2の資源循環グラフDB210に格納される前・次・待ノード情報の「次ノード」のフィールドは「装置3」である。よって、メッセージは、装置2から装置3に転送される。このとき、メッセージの「既訪ノードフィールド・優先度情報」フィールドには、メッセージが装置2にメッセージが到達した時間に関する情報、装置2の制御権を有する端末に関する情報等が格納されても良い。装置3の資源循環グラフDB210に格納される前・次・待ノード情報の「待ノード」のフィールドは「装置1」である。よって、メッセージは、装置3から装置1に転送される。このとき、メッセージの「既訪ノードフィールド・優先度情報」フィールドには、メッセージが装置3にメッセージが到達した時間に関する情報、装置3の制御権を有する端末に関する情報等が格納されても良い。装置1の資源循環グラフDB210に格納される前・次・待ノード情報の「待ノード」のフィールドは「装置2」である。よって、メッセージは、装置1から装置2に転送される。
装置2の通信部202のネットワーク受信部2020はメッセージを受け取ると、デッドロック検出部200のデッドロック判定部2000にメッセージを送る。装置2のデッドロック判定部2000は、受信したメッセージの「既訪ノードフィールド・優先度情報」フィールドの中に、このメッセージが既に装置2を訪れたことがあることを見出し、デッドロックが発生していると判定する。
<<デッドロック解消>>
図18〜19を参照して、資源循環グラフを用いたデッドロック解消について説明する。
図18は、実施形態の資源循環グラフを用いたデッドロック解消の例について説明するための図である。デッドロックの解消時、占有権の解除を行う端末の決定に用いる情報としては、占有開始時間、デバイス占有時の優先度、前・次ノードの連結個数、待ノード個数、端末との通信可否等が含まれ得る。図18に示されている例では、デッドロック検出後、デッドロック解消時に再度装置に問い合わせを行う。この場合、図14に示されているメッセージは、「メッセージ発行元URI」、「メッセージ送信元URI」、「メッセージ送信先URI」のみを含んでも良い。
図18に示されているように、端末Aは装置2と装置3の制御権を有しているとする。また、端末Bは装置1の制御権を有し、さらに装置2に対して制御権を要求し、制御権待ち状態にあるとする。
そして、装置3は、端末Aから制御権要求を受信し、08時15分20秒に占有されたものとする。図17の場合と同様に、装置2の通信部202のネットワーク受信部2020はメッセージを受け取ると、デッドロック検出部200のデッドロック判定部2000にメッセージを送る。装置2のデッドロック判定部2000は、受信したメッセージの「既訪ノードフィールド・優先度情報」フィールドの中に、このメッセージが既に装置2を訪れたことがあることを見出し、デッドロックが発生していると判定する。
デッドロックが発生していると判定した装置2のデッドロック解消部204は、受信したメッセージに含まれる情報を用いて、循環路に含まれる各装置に、優先度決定のための情報を得るための通知を作成し、ネットワーク送信部2022から送信させる。
装置2のネットワーク受信部2020は、優先度決定のための情報を得るための通知に対する応答を循環路に含まれる各装置から受信し、応答に含まれる情報を、優先度決定情報DB208に格納する。
装置2のデッドロック解消部204は、優先度決定情報DB208に格納された優先度決定のための情報を得るための通知に対する応答に含まれる情報を用いて、被制御装置の占有権を取り消す(アボートする)端末を決定する。
装置2のデッドロック解消部204は、アボートする端末に通知(メッセージ)を送り、被制御装置の占有権を取り消す(アボートする)処理を行わせる。その通知(メッセージ)を受信した端末は、端末が占有していたデバイスにメッセージを送り、デバイスの占有権を解除する。
図18に示されている例では、優先度決定のための情報を得るための通知に対する応答に基づいて、装置2の優先度決定情報DB208には、制御権要求の発信時刻について、「装置1:端末B、7時30分31秒」、「装置2:端末A、9時30分25秒」、「装置3:端末A、8時15分20秒」等の情報が含まれているとする。今の場合、装置2のデッドロック解消部204は、装置2のデッドロック解消部204は、制御権要求の受信が最も早い装置1の優先度を最も高い装置と判定し、装置1を占有している端末Bに通知(メッセージ)を送り、装置1の占有権を取り消す(アボートする)処理を行わせる。
このように、端末と被制御装置が通信できないことがある場合でも、デッドロックの検出、解消をすることができる。
図19は、実施形態の資源循環グラフを用いたデッドロック検出と解消の例について説明するための図である。
本例では、分散データ処理装置20は、デッドロック検出のために送るメッセージに、デッドロック解消時に占有権を解消する端末の情報を追記することにより、デッドロックの検出と解消を同時に行うこともできる。この場合、図14に示されているメッセージは、「メッセージ発行元URI」、「メッセージ送信元URI」、「メッセージ送信先URI」、「既訪ノードフィールド・優先度情報」の5つのフィールドを含む。
図19に示されているように、端末Aは装置2と装置3の制御権を有しているとする。また、端末Bは装置1の制御権を有し、さらに装置2に対して制御権を要求し、制御権待ち状態にあるとする。
そして、装置3は、端末Aから制御権要求を受信し、08時15分20秒に占有されたものとする。図17の場合と同様に、装置2の通信部202のネットワーク受信部2020はメッセージを受け取ると、デッドロック検出部200のデッドロック判定部2000にメッセージを送る。装置2のデッドロック判定部2000は、受信したメッセージの「既訪ノードフィールド・優先度情報」フィールドの中に、このメッセージが既に装置2を訪れたことがあることを見出し、デッドロックが発生していると判定する。
装置2のデッドロック解消部204は、メッセージの「既訪ノードフィールド・優先度情報」フィールドから、占有強制解除の優先度情報を抽出する。たとえば、図19に示されている例では、メッセージの「既訪ノードフィールド・優先度情報」フィールドには、メッセージが訪れた被制御装置、その被制御装置の占有権(制御権)を有する端末、制御権要求の発信時刻について、「装置1:端末B、7時30分31秒」、「装置2:端末A、9時30分25秒」、「装置3:端末A、8時15分20秒」等の情報が含まれているとする。装置2のデッドロック解消部204は、制御権要求の受信が最も早い装置1の優先度を最も高い装置と判定し、装置1を占有している端末Bに通知(メッセージ)を送り、装置1の占有権を取り消す(アボートする)処理を行わせる。
このように、端末と被制御装置が通信できないことがある場合でも、デッドロックの検出、解消をすることができる。
図20は、分散データ処理装置の構成の例を示す図である。
このコンピュータ300は、Central Processing Unit(CPU)302、Read Only Memory(ROM)304、及びRandom Access Memory(RAM)306を備えている。コンピュータ300は、さらに、ハードディスク装置308、入力装置310、表示装置312、インターフェース装置314、及び記録媒体駆動装置316を備えている。なお、これらの構成要素はバスライン318を介して接続されており、CPU302の管理の下で各種のデータを相互に授受することができる。
Central Processing Unit(CPU)302は、このコンピュータ300全体の動作を制御する演算処理装置であり、コンピュータ300の制御処理部として機能する。
Read Only Memory(ROM)304は、所定の基本制御プログラムが予め記録されている読み出し専用半導体メモリである。CPU302は、この基本制御プログラムをコンピュータ300の起動時に読み出して実行することにより、このコンピュータ300の各構成要素の動作制御が可能になる。
Random Access Memory(RAM)306は、CPU302が各種の制御プログラムを実行する際に、必要に応じて作業用記憶領域として使用する、随時書き込み読み出し可能な半導体メモリである。
ハードディスク装置308は、CPU302によって実行される各種の制御プログラムや各種のデータを記憶しておく記憶装置である。CPU302は、ハードディスク装置308に記憶されている所定の制御プログラムを読み出して実行することにより、後述する各種の制御処理を行えるようになる。
入力装置310は、例えばマウス装置やキーボード装置であり、情報処理装置のユーザにより操作されると、その操作内容に対応付けられている各種情報の入力を取得し、取得した入力情報をCPU302に送付する。
表示装置312は例えば液晶ディスプレイであり、CPU302から送付される表示データに応じて各種のテキストや画像を表示する。
インターフェース装置314は、このコンピュータ300に接続される各種機器との間での各種情報の授受の管理を行う。
記録媒体駆動装置316は、可搬型記録媒体320に記録されている各種の制御プログラムやデータの読み出しを行う装置である。CPU302は、可搬型記録媒体320に記録されている所定の制御プログラムを、記録媒体駆動装置316を介して読み出して実行することによって、後述する各種の制御処理を行うようにすることもできる。なお、可搬型記録媒体320としては、例えばUSB(Universal Serial Bus)規格のコネクタが備えられているフラッシュメモリ、CD−ROM(Compact Disc Read Only Memory)、DVD−ROM(Digital Versatile Disc Read Only Memory)などがある。
このようなコンピュータ300を用いて連携機器選択装置を構成するには、例えば、上述の各処理部における処理をCPU302に行わせるための制御プログラム(分散データ処理プログラム)を作成する。作成された制御プログラムはハードディスク装置308若しくは可搬型記録媒体320に予め格納しておく。そして、CPU302に所定の指示を与えてこの制御プログラム(分散データ処理プログラム)を読み出させて実行させる。こうすることで、分散データ処理装置が備えている機能がCPU302により提供される。
<分散データ処理>
図21〜29を参照して、分散データ処理について説明する。
図21は、端末側の装置制御権獲得処理における処理の流れの例を示す図である。
また、分散データ処理装置が図20に示されているような汎用コンピュータ300である場合には、下記の説明は、そのような処理を行う制御プログラム(分散データ処理プログラム)を定義する。すなわち、以下では、下記に説明する処理を汎用コンピュータに行わせる制御プログラム(分散データ処理プログラム)の説明でもある。
処理が開始されると、S100で端末Aのネットワーク送信部2022は、制御権を確保したい装置D(被制御装置)に制御権要求を行う。制御権要求を行うことは、制御権要求命令を送信することであり得る。本ステップの処理が終了すると、処理はS102に進む。
S102で端末Aの占有元端末管理部2060は、制御権を確保したい装置D(被制御装置)から制御権を許可する通知を受信したか、すなわち装置Dの制御権が得られたか否かを判定する。本ステップでの判定の結果が“Yes”、すなわち装置Dの制御権が得られた場合には、処理はS104に進む。また、本ステップでの判定の結果が“No”、すなわち装置Dの制御権が得られない場合には、処理はS106に進む。
S104端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、資源循環グラフの変形を行う。
S104の次ノード追加・変形処理について、図22を参照して説明する。
図22は、端末側の次ノード追加・変形処理における処理の流れの例を示す図である。
次ノード追加・変形処理が開始されると、端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、端末Aの資源循環グラフDB210に格納されている情報のうち、次ノードフィールドNが空か否かを判定する。本ステップでの判定の結果が“Yes”、すなわち端末Aの次ノードフィールドNが空である場合には、処理はS210に進む。また、本ステップでの判定の結果が“No”、すなわち端末Aの次ノードフィールドNが空でない場合には、処理はS202に進む。
S202で端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、資源循環グラフのトポロジがライン型かスター型かを判定する。ライン型トポロジを有する資源循環グラフの例は、図10に示されている。スター型トポロジを有する資源循環グラフの例は、図11に示されている。本ステップでの判定の結果が“ライン型”、すなわち資源循環グラフのトポロジがライン型である場合には、処理はS204に進む。また、本ステップでの判定の結果が“スター型”、すなわち端資源循環グラフのトポロジがスター型である場合には、処理はS206に進む。
S204で端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、端末Aの資源循環グラフDB210に格納されている資源循環グラフにおいて、次ノードフィールドNから次ノードを辿り、終端にあるノードに制御権を獲得した装置D(被制御装置)を追加する。本ステップの処理が終了すると、処理はS208に進む。
S206で端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、端末Aの資源循環グラフDB210に格納されている資源循環グラフにおいて、次ノードフィールドNに制御権を獲得した装置D(被制御装置)を追加する。本ステップの処理が終了すると、処理はS208に進む。
S210で端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、端末Aの資源循環グラフDB210に格納されている資源循環グラフにおいて、端末Aの次ノードフィールドNに、新しく制御権を獲得した装置D(被制御装置)をセットする。本ステップの処理が終了すると、処理はS212に進む。
S212で端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、端末Aの資源循環グラフDB210に格納されている資源循環グラフにおいて、端末Aの待ノードフィールドWが空か否かを判定する。本ステップでの判定の結果が“Yes”、すなわち端末Aの待ノードフィールドWが空である場合には、処理はS208に進む。また、本ステップでの判定の結果が“No”、すなわち端末Aの待ノードフィールドWが空でない場合には、処理はS214に進む。
S214で端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、端末Aの資源循環グラフDB210に格納されている資源循環グラフにおいて、装置D(被制御装置)の待ノードフィールドに端末Aの待ノードフィールドWの値をセットする。本ステップの処理が終了すると、処理はS216に進む。
S216で端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、端末Aの資源循環グラフDB210に格納されている資源循環グラフにおいて、端末Aの待ノードフィールドWをクリアする。本ステップの処理が終了すると、処理はS208に進む。
S208で端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、制御権を獲得した装置Dに、装置Dを次ノードとしてセットした装置の情報を、通信部202のネットワーク送信部2022から送信させる。本ステップの処理が終了すると、処理は図21のS104に戻る。
図21に戻って、S104の処理が終了すると、端末Aの処理は終了する。
図21のS106で端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、待ノード追加処理を行う。
端末Aの待ノード追加処理について、図23を参照して説明する。
図23は、端末側の待ちノード追加処理における処理の流れの例を示す図である。
処理が開始されると、S300で端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、端末Aの資源循環グラフDB210に格納されている資源循環グラフにおいて、端末Aの次ノードフィールドNが空か否かを判定する。本ステップでの判定の結果が“Yes”、すなわち端末Aの次ノードフィールドNが空である場合には、処理はS302に進む。また、本ステップでの判定の結果が“No”、すなわち端末Aの次ノードフィールドNが空でない場合には、処理はS304に進む。
S302で端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、端末Aの資源循環グラフDB210に格納されている資源循環グラフにおいて、端末Aの待ノードフィールドに、新しく制御権待ちをする装置D(被制御装置)を加える。本ステップの処理が終了すると、待ノード追加処理は終了する。
S304で端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、資源循環グラフDB210に格納されている資源循環グラフはライン型トポロジであるか否かを判定する。本ステップでの判定の結果が“Yes”、すなわち資源循環グラフはライン型トポロジである場合には、処理はS306に進む。また、本ステップでの判定の結果が“No”、すなわち資源循環グラフはライン型トポロジではない場合には、処理はS308に進む。
S306で端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、端末Aの資源循環グラフDB210に格納されている資源循環グラフにおいて、端末Aの次ノードを辿り、終端にあるノードに制御権待ちをする装置D(被制御装置)を加える。本ステップの処理が終了すると、待ノード追加処理は終了する。
S308で端末Aの資源循環グラフ更新部206の資源追加・変更部2062は、端末Aの資源循環グラフDB210に格納されている資源循環グラフにおいて、装置Nの待ノードフィールドに、新しく制御権待ちをする装置D(被制御装置)を加える。本ステップの処理が終了すると、待ノード追加処理は終了する。
図21のS106の処理が終了すると、処理はS108に進む。
S108で装置Aのデッドロック検出部200は、デッドロック検出処置を行う。
デッドロック検出処理について、図24を参照して説明する。
図24は、実施形態の資源循環グラフを用いたデッドロック検出処理における処理の流れの例を示す図である。
デッドロック検出処置が開始されると、S400で装置Aのデッドロック検出部200の転送メッセージ生成部2002は、端末Aの次ノードフィールドNが空か否かを判定する。本ステップでの判定の結果が“Yes”、すなわち端末Aの次ノードフィールドNが空である場合には、処理はS402に進む。また、本ステップでの判定の結果が“No”、すなわち端末Aの次ノードフィールドNが空ではない場合には、処理はS404に進む。
S402で装置Aのデッドロック検出部200の転送メッセージ生成部2002は、デッドロック検出メッセージを生成し、通信部202のネットワーク送信部2022を介して、自身の次ノードNに送出する。次ノードNを特定するために、資源循環グラフDBに格納されている情報を参照しても良い。本ステップの処理が終了すると、処理はS404に進む。
S404で装置Aのデッドロック検出部200の転送メッセージ生成部2002は、デッドロック検出メッセージを生成し、通信部202のネットワーク送信部2022を介して、自身の待ノードWの全てに送出する。待ノードWを特定するために、資源循環グラフDBに格納されている情報を参照しても良い。本ステップの処理が終了すると、処理はS404に進む。
S404で装置Aのデッドロック検出部200のデッドロック判定部2000は、ノードの識別子と、ネットワーク受信部2020で受信したメッセージの発行主が一致するかを判定する。本ステップでの判定の結果が“Yes”、すなわちノードの識別子とメッセージの発行主が一致する場合には、処理はS406に進む。また、本ステップでの判定の結果が“No”、すなわちノードの識別子とメッセージの発行主が一致しない場合には、処理はS408に進む。
S406で装置Aのデッドロック検出部200の転送メッセージ生成部2002は、デッドロック検出を通知するためのメッセージを生成し、通信部202のネットワーク送信部2022から送信することで、デッドロック検出を通知する。本ステップの処理が終了すると、デッドロック検出処置は終了する。
S408で装置Aのデッドロック検出部200の転送メッセージ生成部2002は、メッセージの既訪フィールドに自身のURIを追加する。本ステップの処理が終了すると、処理はS410に進む。
S410で装置Aのデッドロック検出部200の転送メッセージ生成部2002は、資源循環グラフDB210を参照して、本ノード(装置A)は次・待ノードを持つか否かを判定する。本ステップでの判定の結果が“Yes”、すなわち本ノード(装置A)は次・待ノードを持つ場合には、処理はS412に進む。また、本ステップでの判定の結果が“No”、すなわち本ノード(装置A)は次・待ノードを持たない場合には、デッドロック検出処置は終了する。
S412で装置Aのデッドロック検出部200の転送メッセージ生成部2002は、通信部202のネットワーク送信部2022を介して、次・待ノード全てにメッセージを送信する。本ステップの処理が終了すると、処理はS414に進む。
S414で装置Aのデッドロック検出部200の転送メッセージ生成部2002は、資源循環グラフDB210を参照して、資源循環グラフはスター型トポロジか否かを判定する。本ステップでの判定の結果が“Yes”、すなわち資源循環グラフはスター型トポロジである場合には、処理はS416に進む。また、本ステップでの判定の結果が“No”、すなわち資源循環グラフはスター型トポロジではない場合には、処理はS404に戻る。
S416で装置Aのデッドロック検出部200の転送メッセージ生成部2002は、通信部202のネットワーク送信部2022を介して、既訪ノードフィールドに記されていない前ノード全てにメッセージを送信する。本ステップの処理が終了すると、処理はS404に戻る。
デッドロック検出処置が終了すると、図21のS110に進む。
図21のS110で装置Aのデッドロック検出部200のデッドロック検出部2000は、デッドロックしていたか否かを判定する。本ステップでの判定の結果が“Yes”、すなわちデッドロックしていた場合には、処理はS112に進む。また、本ステップでの判定の結果が“No”、すなわちデッドロックしていない場合には、処理はS114に戻る。
S114で装置Aのデッドロック検出部200のデッドロック検出部2000は、待機をし、外部から被制御装置に制御権を確保するための入力を受けると、S100に戻る。
S112で装置Aのデッドロック解消部204は、デッドロック解消処理を行う。
デッドロック解消処理について、図25を参照して説明する。図25に示されている処理は、図18に示されているような場合に相当する。
図25は、実施形態の資源循環グラフを用いたデッドロック解消処理における処理の流れの例を示す図である。
デッドロック解消処理が開始されると、S500で装置Aのデッドロック解消部204は、通信部202のネットワーク送信部2022を介して、循環路に含まれる装置(被制御装置)に優先度決定のための情報を問い合わせる。本ステップの処理が終了すると、処理はS502に進む。
S502で装置Aのデッドロック解消部204は、問合せへの返事に含まれる情報(問い合せ情報)から被制御装置の占有権を取り消す(アボートする)端末を決定する。本ステップの処理が終了すると、処理はS504に進む。
S504で装置Aのデッドロック解消部204は、通信部202のネットワーク送信部2022を介して、アボートする端末に通知(メッセージ)を送り、被制御装置の占有権を取り消す(アボートする)処理を行わせる。本ステップの処理が終了すると、処理はS506に進む。
S506でその通知(メッセージ)を受信した端末は、端末が占有していたデバイスにメッセージを送り、デバイスの占有権を解除する。本ステップの処理が終了すると、デッドロック解消処理は終了する。
図26は、装置側の装置制御権獲得処理における処理の流れの例を示す図である。
装置制御権獲得処理が開始されると、S600で装置Dの通信部202のネットワーク受信部2020は、端末Aから制御権要求命令を受信し、資源循環グラフ更新部206の占有元端末管理部2060に送る。本ステップの処理が終了すると、処理はS602に進む。
S602で装置Dの資源循環グラフ更新部206の占有元端末管理部2060は、装置Dを制御している端末があるか否かを判定する。本ステップでの判定の結果が“Yes”、すなわち装置Dを制御している端末がある場合には、処理はS606に進む。また、本ステップでの判定の結果が“No”、すなわち装置Dを制御している端末がない場合には、処理はS604に戻る。
S604で装置Dの資源循環グラフ更新部206の占有元端末管理部2060は、通信部202のネットワーク送信部2022を介して、制御権要求を送った端末Aに制御権取得失敗を通知する。本ステップの処理が終了すると、処理はS606に進む。
S606で装置Dのデッドロック検出部200の転送メッセージ生成部2002は、装置Dの資源循環グラフDB210に格納されている資源循環グラフにおいて、装置Dの前ノードフィールドに制御権要求した端末の情報を追加する。本ステップの処理が終了すると、処理はS608に進む。
S608で装置Dの通信部202のネットワーク送信部2022は、制御権要求を送った端末Aに制御権取得成功を通知する。本ステップの処理が終了すると、処理はS610に進む。
S610で装置Dの資源循環グラフ更新部206の占有元端末管理部2060は、装置Dの資源循環グラフDB210に格納されている資源循環グラフにおいて、端末Aから、本装置Dを次ノードとしてセットした装置(又は端末)を受け取り、本装置Dの前ノードフィールドにセットする。本ステップの処理が終了すると、装置制御権獲得処理は終了する。
図27は、端末側の装置制御権解放処理における処理の流れの例を示す図である。
処理が開始されると、S700で端末では、ノード変数Nを空にする。本ステップの処理が終了すると、処理はS702に進む。
S702で端末は、制御権を解放する装置D1に保有する前・次・待ノードを問い合わせる。本ステップの処理が終了すると、処理はS704に進む。
S704で端末は、装置D1が次ノードを持つか否かを判定する。本ステップでの判定の結果が“Yes”、すなわち装置D1が次ノードを持つ場合には、処理はS706に進む。また、本ステップでの判定の結果が“No”、すなわち装置D1が次ノードを持たない場合には、処理はS710に進む。
S706で端末は、端末の資源循環グラフDB210に格納されている資源循環グラフにおいて、装置D1の次ノードからノードを一つ選び(以下、装置D2とする)、装置D2に装置D1の前ノード、装置D2以外の次ノード、装置D1の待ノードを移動する。本ステップの処理が終了すると、処理はS708に進む。
S708で端末は、「ノード変数N=装置D2の次ノード」と設定する。本ステップの処理が終了すると、処理はS710に進む。
S710で端末は、「ノード変数N=装置D1の前ノード」と設定する。本ステップの処理が終了すると、処理はS712に進む。
S712で端末は、装置D1に制御権解放メッセージを送信し、装置D1において、前・次・待ノードフィールドをクリアする。本ステップの処理が終了すると、端末側の装置制御権解放処理は終了する。
デッドロック解消処理の別の例について、図28〜29を参照して説明する。図28〜29に示されている処理は、図19に示されているような場合に相当する。
図28は、デッドロック検出メッセージ送信処理における処理の流れの例を示す図である。
図28に示されている例では、処理が開始されると、S800で端末または被制御装置のデッドロック検出部200の転送メッセージ生成部2002は、送信するメッセージの最後尾に装置(被制御装置)が保持する優先度情報を追記する。本例でのデッドロック検出メッセージの例は、図14に示されている。本ステップの処理が終了すると、処理はS802に進む。
S802で端末または被制御装置の通信部202のネットワーク送信部2022は、メッセージを送信する。本ステップの処理が終了すると、デッドロック検出メッセージ送信処理は終了する。
図29は、装置側のデッドロック解消処理における処理の流れの例を示す図である。
処理が開始されると、S900でデッドロック解消部204は、デッドロック検出メッセージ中の優先度情報からアボートする端末を決定する。たとえば、デッドロック解消部204は、メッセージの「既訪ノードフィールド・優先度情報」フィールドから、占有強制解除の優先度情報を抽出する。たとえば、図19に示されている例では、メッセージの「既訪ノードフィールド・優先度情報」フィールドには、メッセージが訪れた被制御装置、その被制御装置の占有権(制御権)を有する端末、制御権要求の発信時刻について、「装置1:端末B、7時30分31秒」、「装置2:端末A、9時30分25秒」、「装置3:端末A、8時15分20秒」等の情報が含まれているとする。装置2のデッドロック解消部204は、制御権要求の受信が最も早い装置1の優先度を最も高い装置と判定する。本ステップの処理が終了すると、処理はS902に進む。
S902でデッドロック解消部204は、アボートする端末にメッセージを送り、アボートさせる。図19に示されている例では、制御権要求の受信が最も早い装置1の優先度を最も高い装置と判定し、装置1を占有している端末Bに通知(メッセージ)を送り、装置1の占有権を取り消す(アボートする)処理を行わせる。本ステップの処理が終了すると、処理はS904に進む。
S904でアボートする端末は、占有していた装置にメッセージを送り、装置の占有権を解除する。本ステップの処理が終了すると、デッドロック解消処理は終了する。
<実施例>
図30〜31Fを参照して、実施例のシステム30を説明する。システム30は、各ブースに複数のマイク付カメラが設置されている展示会場にて、人が集まっているブースの様子を1台ずつ設置された大音響スピーカ、大画面ディスプレイで映し出すためのシステムである。
図30に示されているシステム30では、会議室内で、オペレータCは端末A(302)を所有し、オペレータDは端末B(304)を所有している。会議室内には、他にカメラ1(306)、カメラ2(308)、スピーカ310、ディスプレイ312が設置されている。
上の各端末、装置は、図8に示されているような分散データ処理装置を含んでいる。
システム30のオペレータC、D(例えば展示会場の運営者)はそれぞれ携帯端末A(302)、端末B(304)を持ち、予め定められたカメラの検出範囲に入ったとき、自動的に端末が最も近くのマイク付カメラ306、308と、ディスプレイ312、スピーカ310を占有し、マイク付カメラ306、308からの映像・音声をそれぞれディスプレイ312とスピーカ310に出力する。システム30は、ユーザ位置に従って自動的に機器連携を行う機器連携アプリケーションによって動作するシステムであっても良い。
機器連携アプリケーションが動作する端末は複数に及ぶ場合があるが、その場合でも、映し出されるカメラ映像が短時間で切り替わることを避けるため、カメラ1(306)、カメラ2(308)と、スピーカ310と、ディスプレイ312はそれぞれ一定時間、端末A(302)、端末B(304)に操作占有権を与え、端末は占有権が得られた後で、スピーカ310と、ディスプレイ312に対してカメラ306、308の連携動作を行う。則ち、端末A(302)、端末B(304)は、カメラ306、308と、スピーカ310と、ディスプレイ312に対し、各1個ずつ占有を完了したとき、スピーカ310とディスプレイ312に情報を伝達するカメラを切り替える。また、機器の利用効率を上げるため、カメラ1(306)、カメラ2(308)、ディスプレイ312等の装置の占有権確保は逐次的に行うのではなく、必要な機器全てに対し、同時に占有権確保のためのメッセージを送信する構成を取る。従って、端末A(302)と端末B(304)の間で装置の占有権のデッドロックが生じうる構成である。
また、端末A(302)、端末B(304)は、バッテリー消費を抑えるため、スリープ状態になることがある。スリープ状態である場合は、例えばデッドロック検出メッセージの送信のような操作は行うことができない。このように、システム30は、端末A(302)、端末B(304)がスリープ状態になる場合があり、かつデッドロックが生じうる構成である。
以下、図30に示すような状況において、デッドロック検出・解消方法の動作例を説明する。なお、本例でのデッドロック解消ポリシーは、最も早く機器の占有をした端末がアボートされない、則ち、「最も遅く機器の占有を行った端末の占有権を取り上げる」こととする。
図31A〜Fは、デッドロックの検出、解消の例について説明するための図である。
図31Aに示されているように、端末A(302)、端末B(304)のオペレータはそれぞれカメラ1(306)、カメラ2(308)の機器連携範囲内に入り、機器連携を開始する。このとき、端末A(302)はカメラ1(306)、スピーカ310、ディスプレイ312に対して占有権要求メッセージを送り、端末B(304)はカメラ2(308)、スピーカ310、ディスプレイ312に対して占有権要求メッセージを送る。
図31Bに示されているように、まず端末A(302)はカメラ1(306)、端末B(304)はカメラ2(308)から占有権許可メッセージを受領し、端末A(302)、端末B(304)の資源循環グラフ更新部206の資源追加・更新部2062は、それぞれの資源循環グラフDB210に格納されている前/次ノードに関する情報を更新する。そして、端末A(302)はカメラ1(306)の占有権を持ち、端末B(304)はカメラ2(308)の占有権を持つようになる。
次に図31Cに示されているように、端末A(302)は端末A(302)、端末B(304)はディスプレイ312から占有権許可メッセージを受領し、端末A(302)、端末B(304)の資源循環グラフ更新部206の資源追加・更新部2062は、それぞれの資源循環グラフDB210に格納されている前/次ノードに関する情報を更新する。このとき、端末A(302)はカメラ1(306)、スピーカ310の占有権を、端末B(304)はカメラ2(308)、ディスプレイ312の占有権を持つようになる。
更に図31Dに示されているように、スピーカ310は端末B(304)に対して制御権待ちのメッセージを送り、端末B(304)はスピーカ310の制御権待ちの状態になる。
ここで、端末B(304)はデッドロック検出メッセージをカメラ2に対して送付する。デッドロック検出メッセージはカメラ2(308)、ディスプレイ312、スピーカ310と伝わるが、資源循環グラフに循環路が生じていないため、デッドロックは検出されない。
次に図31Eに示されているように、ディスプレイ312が端末Aに対して制御権待ちのメッセージを送り、端末A(302)はディスプレイ312の制御権待ちの状態になる。
このとき、端末B(304)はバッテリー残量が少なくなり、スリープ状態になったとする。このとき、端末A(302)はデッドロック検出メッセージを送付するが、デッドロック検出メッセージはカメラ1(306)、スピーカ310、ディスプレイ312、スピーカ310の順で流れるため、スピーカ310のデッドロック検出部200がデッドロックを検出する。このとき、デッドロック検出メッセージに記載された資源の確保時刻から、スピーカ310のデッドロック解消部204は、制御権解放を行うべき装置がディスプレイ312であると判定し、スピーカ310からディスプレイ312に制御権解放メッセージを送付させる。
最終的に図31Fに示されているように、端末A(302)はディスプレイ312の制御権を獲得し、デッドロックは解消される。
このように、端末と被制御装置が通信できないことがある場合でも、デッドロックを検出することができる。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数の端末と、各々が、前記複数の端末の一つに自身の動作を制御する制御権を付与することによって、動作が制御される複数の被制御装置を含むシステムの分散データ処理装置であって、
各々が前記複数の被制御装置の一つに対応する複数のノードが、第1の端末が制御権を有する第1の被制御装置に対応する第1のノードから前記第1の端末が制御権を有する第2の被制御装置に対応する第2のノードに向かって伸びる第1のリンクと、第2の端末が制御権を有する第3の被制御装置に対応する第3のノードから前記第2の端末が制御権を付与されることを待っている第4の被制御装置に対応する第4のノードに向かって伸びる第2のリンクとを用いて結合されることで構成される資源循環グラフにおいて、前記第1のリンクおよび前記第2のリンクに沿ってノード間を転送されるように、前記複数の被制御装置の間を転送されるデッドロック検出メッセージを受信するネットワーク受信部と、
前記デッドロック検出メッセージの履歴に基づいて、デッドロックが発生しているか否かを判定するデッドロック判定部と、
を含む分散データ処理装置。
(付記2)
前記デッドロック判定部は、前記デッドロック検出メッセージが複数回、前記複数の被制御装置のうちの一つを訪問した場合に、デッドロックが発生していると判定する、付記1に記載の分散データ処理装置。
(付記3)
さらに、
自身が前記第1のリンクの前記終点に対応する前記複数の被制御装置の一つである場合、前記第1のリンクの前記始点に対応する前記複数の被制御装置の別の一つを前ノード、自身が前記第1のリンクの前記始点に対応する前記複数の被制御装置の一つである場合、前記第1のリンクの前記終点に対応する前記複数の被制御装置の別の一つを次ノード、自身が前記第2のリンクの前記始点に対応する前記複数の被制御装置の一つである場合、前記第2のリンクの前記終点に対応する前記複数の被制御装置の別の一つを待ノードとして、前記前ノード、前記次ノード、および前記待ノードに関する情報を記憶する記憶部を含み、
前記資源循環グラフの前記ノードの各々は、前記記憶部(図8、210)に格納されている前記前ノード、前記次ノード、および前記待ノードに関する情報が付与されている、
付記1または2に記載の分散データ処理装置。
(付記4)
さらに、
前記デッドロック判定部が、前記デッドロックが発生していると判定したとき、前記デッドロックを解消するために、前記資源循環グラフに含まれる前記複数の被制御装置の一つの前記制御権を有する前記複数の端末の一つに、前記制御権を解消させるための通知を送るデッドロック解消部を含む、付記1乃至3のいずれか一項に記載の分散データ処理装置。
(付記5)
前記デッドロック検出メッセージは、前記資源循環グラフに含まれる前記複数の被制御装置の優先度に関する情報を含み、
さらに、
前記デッドロック判定部が、前記デッドロックが発生していると判定したとき、前記デッドロックを解消するために、前記デッドロック検出メッセージに含まれる前記優先度に基づいて、前記資源循環グラフに含まれる前記複数の被制御装置の一つの前記制御権を有する前記複数の端末の一つに、前記制御権を解消させるための通知を送るデッドロック解消部を含む、付記1乃至3のいずれか一項に記載の分散データ処理装置。
(付記6)
コンピュータとして機能する複数の端末と、各々が、前記複数の端末の一つに自身の動作を制御する制御権を付与することによって、動作が制御されるコンピュータとして機能する複数の被制御装置を含むシステムの前記複数の端末の一つまたは前記複数の被制御装置の一つで実行される分散データ処理方法であって、
各々が前記複数の被制御装置の一つに対応する複数のノードが、第1の端末が制御権を有する第1の被制御装置に対応する第1のノードから前記第1の端末が制御権を有する第2の被制御装置に対応する第2のノードに向かって伸びる第1のリンクと、第2の端末が制御権を有する第3の被制御装置に対応する第3のノードから前記第2の端末が制御権を付与されることを待っている第4の被制御装置に対応する第4のノードに向かって伸びる第2のリンクとを用いて結合されることで構成される資源循環グラフにおいて、前記第1のリンクおよび前記第2のリンクに沿ってノード間を転送されるように、前記複数の被制御装置の間を転送されるデッドロック検出メッセージを受信することと、
前記デッドロック検出メッセージの履歴に基づいて、デッドロックが発生しているか否かを判定することと、
を含む分散データ処理方法。
(付記7)
前記デッドロックが発生しているか否かを判定することは、前記デッドロック検出メッセージが複数回、前記複数の被制御装置のうちの一つを訪問した場合に、デッドロックが発生していると判定する、付記6に記載の分散データ処理方法。
(付記8)
さらに、
自身が前記第1のリンクの前記終点に対応する前記複数の被制御装置の一つである場合、前記第1のリンクの前記始点に対応する前記複数の被制御装置の別の一つを前ノード、自身が前記第1のリンクの前記始点に対応する前記複数の被制御装置の一つである場合、前記第1のリンクの前記終点に対応する前記複数の被制御装置の別の一つを次ノード、自身が前記第2のリンクの前記始点に対応する前記複数の被制御装置の一つである場合、前記第2のリンクの前記終点に対応する前記複数の被制御装置の別の一つを待ノードとして、前記前ノード、前記次ノード、および前記待ノードに関する情報を記憶することを含み、
前記資源循環グラフの前記ノードの各々は、前記前ノード、前記次ノード、および前記待ノードに関する情報が付与されている、
付記6または7に記載の分散データ処理方法。
(付記9)
さらに、
前記デッドロックが発生していると判定したとき、前記デッドロックを解消するために、前記資源循環グラフに含まれる前記複数の被制御装置の一つの前記制御権を有する前記複数の端末の一つに、前記制御権を解消させるための通知を送ることを含む、付記6乃至8のいずれか一項に記載の分散データ処理装置。
(付記10)
前記デッドロック検出メッセージは、前記資源循環グラフに含まれる前記複数の被制御装置の優先度に関する情報を含み、
さらに、
前記デッドロックが発生していると判定したとき、前記デッドロックを解消するために、前記デッドロック検出メッセージに含まれる前記優先度に基づいて、前記資源循環グラフに含まれる前記複数の被制御装置の一つの前記制御権を有する前記複数の端末の一つに、前記制御権を解消させるための通知を送ることを含む、付記6乃至8のいずれか一項に記載の分散データ処理方法。
(付記11)
コンピュータとして機能する複数の端末と、各々が、前記複数の端末の一つに自身の動作を制御する制御権を付与することによって、動作が制御されるコンピュータとして機能する複数の被制御装置を含むシステムの前記複数の端末の一つまたは前記複数の被制御装置の一つで実行される分散データ処理プログラムであって、
各々が前記複数の被制御装置の一つに対応する複数のノードが、第1の端末が制御権を有する第1の被制御装置に対応する第1のノードから前記第1の端末が制御権を有する第2の被制御装置に対応する第2のノードに向かって伸びる第1のリンクと、第2の端末が制御権を有する第3の被制御装置に対応する第3のノードから前記第2の端末が制御権を付与されることを待っている第4の被制御装置に対応する第4のノードに向かって伸びる第2のリンクとを用いて結合されることで構成される資源循環グラフにおいて、前記第1のリンクおよび前記第2のリンクに沿ってノード間を転送されるように、前記複数の被制御装置の間を転送されるデッドロック検出メッセージを受信し、
前記デッドロック検出メッセージの履歴に基づいて、デッドロックが発生しているか否かを判定する、
処理をコンピュータに実行させることを特徴とする分散データ処理プログラム。
(付記12)
前記デッドロックが発生しているか否かを判定することは、前記デッドロック検出メッセージが複数回、前記複数の被制御装置のうちの一つを訪問した場合に、デッドロックが発生していると判定する、付記11に記載の分散データ処理プログラム。
(付記13)
さらに、
自身が前記第1のリンクの前記終点に対応する前記複数の被制御装置の一つである場合、前記第1のリンクの前記始点に対応する前記複数の被制御装置の別の一つを前ノード、自身が前記第1のリンクの前記始点に対応する前記複数の被制御装置の一つである場合、前記第1のリンクの前記終点に対応する前記複数の被制御装置の別の一つを次ノード、自身が前記第2のリンクの前記始点に対応する前記複数の被制御装置の一つである場合、前記第2のリンクの前記終点に対応する前記複数の被制御装置の別の一つを待ノードとして、前記前ノード、前記次ノード、および前記待ノードに関する情報を記憶し、
前記資源循環グラフの前記ノードの各々は、前記前ノード、前記次ノード、および前記待ノードに関する情報が付与されている、
付記6または7に記載の分散データ処理プログラム。
(付記14)
さらに、
前記デッドロックが発生していると判定したとき、前記デッドロックを解消するために、前記資源循環グラフに含まれる前記複数の被制御装置の一つの前記制御権を有する前記複数の端末の一つに、前記制御権を解消させるための通知を送る処理をコンピュータに実行させることを特徴とする、付記11乃至13のいずれか一項に記載の分散データ処理プログラム。
(付記15)
前記デッドロック検出メッセージは、前記資源循環グラフに含まれる前記複数の被制御装置の優先度に関する情報を含み、
さらに、
前記デッドロックが発生していると判定したとき、前記デッドロックを解消するために、前記デッドロック検出メッセージに含まれる前記優先度に基づいて、前記資源循環グラフに含まれる前記複数の被制御装置の一つの前記制御権を有する前記複数の端末の一つに、前記制御権を解消させるための通知を送る処理をコンピュータに実行させることを特徴とする、付記11乃至13のいずれか一項に記載の分散データ処理プログラム。
20 分散データ処理装置
200 デッドロック検出部
2000 デッドロック判定部
2002 転送メッセージ生成部
202 通信部
2020 ネットワーク受信部
2022 ネットワーク送信部
204 デッドロック解消部
206 資源循環グラフ更新部
2060 占有元端末管理部
2062 資源追加・更新部
2064 資源解放部
208 優先度決定情報データベース(DB)
210 資源循環グラフデータベース(DB)
212 占有元情報データベース(DB)

Claims (7)

  1. 複数の端末と、各々が、前記複数の端末の一つに自身の動作を制御する制御権を付与することによって、動作が制御される複数の被制御装置を含むシステムの前記複数の端末の一つまたは前記複数の被制御装置の一つである分散データ処理装置であって、
    各々が前記複数の被制御装置の一つに対応する複数のノードが、第1の端末が制御権を有する第1の被制御装置に対応する第1のノードから前記第1の端末が制御権を有する第2の被制御装置に対応する第2のノードに向かって伸びる第1のリンクと、第2の端末が制御権を有する第3の被制御装置に対応する第3のノードから前記第2の端末が制御権を付与されることを待っている第4の被制御装置に対応する第4のノードに向かって伸びる第2のリンクとを用いて結合されることで構成される資源循環グラフにおいて、前記第1のリンクおよび前記第2のリンクに沿ってノード間を転送されるように、前記複数の被制御装置の間を転送されるデッドロック検出メッセージを受信するネットワーク受信部と、
    前記デッドロック検出メッセージの履歴に基づいて、デッドロックが発生しているか否かを判定するデッドロック判定部と、
    を含む分散データ処理装置。
  2. 前記デッドロック判定部は、前記デッドロック検出メッセージが複数回、前記複数の被制御装置のうちの一つを訪問した場合に、デッドロックが発生していると判定する、請求項1に記載の分散データ処理装置。
  3. さらに、
    自身が前記第1のリンクの前記終点に対応する前記複数の被制御装置の一つである場合、前記第1のリンクの前記始点に対応する前記複数の被制御装置の別の一つを前ノード、自身が前記第1のリンクの前記始点に対応する前記複数の被制御装置の一つである場合、前記第1のリンクの前記終点に対応する前記複数の被制御装置の別の一つを次ノード、自身が前記第2のリンクの前記始点に対応する前記複数の被制御装置の一つである場合、前記第2のリンクの前記終点に対応する前記複数の被制御装置の別の一つを待ノードとして、前記前ノード、前記次ノード、および前記待ノードに関する情報を記憶する記憶部を含み、
    前記資源循環グラフの前記ノードの各々は、前記記憶部(図8、210)に格納されている前記前ノード、前記次ノード、および前記待ノードに関する情報が付与されている、
    請求項1または2に記載の分散データ処理装置。
  4. さらに、
    前記デッドロック判定部が、前記デッドロックが発生していると判定したとき、前記デッドロックを解消するために、前記資源循環グラフに含まれる前記複数の被制御装置の一つの前記制御権を有する前記複数の端末の一つに、前記制御権を解消させるための通知を送るデッドロック解消部を含む、請求項1乃至3のいずれか一項に記載の分散データ処理装置。
  5. 前記デッドロック検出メッセージは、前記資源循環グラフに含まれる前記複数の被制御装置の優先度に関する情報を含み、
    さらに、
    前記デッドロック判定部が、前記デッドロックが発生していると判定したとき、前記デッドロックを解消するために、前記デッドロック検出メッセージに含まれる前記優先度に基づいて、前記資源循環グラフに含まれる前記複数の被制御装置の一つの前記制御権を有する前記複数の端末の一つに、前記制御権を解消させるための通知を送るデッドロック解消部を含む、請求項1乃至3のいずれか一項に記載の分散データ処理装置。
  6. コンピュータとして機能する複数の端末と、各々が、前記複数の端末の一つに自身の動作を制御する制御権を付与することによって、動作が制御されるコンピュータとして機能する複数の被制御装置を含むシステムの前記複数の端末の一つまたは前記複数の被制御装置の一つで実行される分散データ処理方法であって、
    各々が前記複数の被制御装置の一つに対応する複数のノードが、第1の端末が制御権を有する第1の被制御装置に対応する第1のノードから前記第1の端末が制御権を有する第2の被制御装置に対応する第2のノードに向かって伸びる第1のリンクと、第2の端末が制御権を有する第3の被制御装置に対応する第3のノードから前記第2の端末が制御権を付与されることを待っている第4の被制御装置に対応する第4のノードに向かって伸びる第2のリンクとを用いて結合されることで構成される資源循環グラフにおいて、前記第1のリンクおよび前記第2のリンクに沿ってノード間を転送されるように、前記複数の被制御装置の間を転送されるデッドロック検出メッセージを受信することと、
    前記デッドロック検出メッセージの履歴に基づいて、デッドロックが発生しているか否かを判定することと、
    を含む分散データ処理方法。
  7. コンピュータとして機能する複数の端末と、各々が、前記複数の端末の一つに自身の動作を制御する制御権を付与することによって、動作が制御されるコンピュータとして機能する複数の被制御装置を含むシステムの前記複数の端末の一つまたは前記複数の被制御装置の一つで実行される分散データ処理プログラムであって、
    各々が前記複数の被制御装置の一つに対応する複数のノードが、第1の端末が制御権を有する第1の被制御装置に対応する第1のノードから前記第1の端末が制御権を有する第2の被制御装置に対応する第2のノードに向かって伸びる第1のリンクと、第2の端末が制御権を有する第3の被制御装置に対応する第3のノードから前記第2の端末が制御権を付与されることを待っている第4の被制御装置に対応する第4のノードに向かって伸びる第2のリンクとを用いて結合されることで構成される資源循環グラフにおいて、前記第1のリンクおよび前記第2のリンクに沿ってノード間を転送されるように、前記複数の被制御装置の間を転送されるデッドロック検出メッセージを受信し、
    前記デッドロック検出メッセージの履歴に基づいて、デッドロックが発生しているか否かを判定する、
    処理をコンピュータに実行させることを特徴とする分散データ処理プログラム。
JP2014072194A 2014-03-31 2014-03-31 分散データ処理装置、分散データ処理方法および分散データ処理プログラム Pending JP2015194886A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014072194A JP2015194886A (ja) 2014-03-31 2014-03-31 分散データ処理装置、分散データ処理方法および分散データ処理プログラム
US14/657,798 US9590908B2 (en) 2014-03-31 2015-03-13 Distributed data processing device and distributed data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014072194A JP2015194886A (ja) 2014-03-31 2014-03-31 分散データ処理装置、分散データ処理方法および分散データ処理プログラム

Publications (1)

Publication Number Publication Date
JP2015194886A true JP2015194886A (ja) 2015-11-05

Family

ID=54191946

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014072194A Pending JP2015194886A (ja) 2014-03-31 2014-03-31 分散データ処理装置、分散データ処理方法および分散データ処理プログラム

Country Status (2)

Country Link
US (1) US9590908B2 (ja)
JP (1) JP2015194886A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10528400B2 (en) * 2017-06-05 2020-01-07 International Business Machines Corporation Detecting deadlock in a cluster environment using big data analytics

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61250767A (ja) * 1985-04-30 1986-11-07 Fujitsu Ltd グロ−バルデツドロツク検出方式
JPH06214967A (ja) * 1992-10-24 1994-08-05 Stc Internatl Computers Ltd 分散データ処理システム
JPH1131080A (ja) * 1997-07-11 1999-02-02 Nec Corp 動的ロックのデッドロック検出方法及び方式
JP2000020324A (ja) * 1998-06-30 2000-01-21 Yokogawa Electric Corp 分散エージェントシステム

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69422743T2 (de) 1993-03-30 2000-06-08 Fujitsu Ltd Endlosschleife-Erkennungsgerät
JP3681415B2 (ja) 1993-03-30 2005-08-10 富士通株式会社 デッドロック検出装置
JP3392236B2 (ja) 1994-11-04 2003-03-31 富士通株式会社 分散トランザクション処理システム
US7644197B1 (en) * 2003-10-15 2010-01-05 Sun Microsystems, Inc. Queue management by multiple processors
US8213294B2 (en) * 2006-06-27 2012-07-03 International Business Machines Corporation Mechanism for detecting and clearing I/O fabric lockup conditions for error recovery
US7620659B2 (en) 2007-02-09 2009-11-17 Microsoft Corporation Efficient knowledge representation in data synchronization systems
JP2011232926A (ja) 2010-04-27 2011-11-17 Nec Corp 分散データベースシステム、デッドロック通知方法およびデッドロック通知プログラム
US9323585B2 (en) * 2011-05-12 2016-04-26 Nec Corporation Deadlock preventing apparatus, deadlock preventing method, and program
US8868604B2 (en) * 2012-09-26 2014-10-21 Oracle International Corporation Methods and apparatus for implementing Semi-distributed Lock Management

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS61250767A (ja) * 1985-04-30 1986-11-07 Fujitsu Ltd グロ−バルデツドロツク検出方式
JPH06214967A (ja) * 1992-10-24 1994-08-05 Stc Internatl Computers Ltd 分散データ処理システム
JPH1131080A (ja) * 1997-07-11 1999-02-02 Nec Corp 動的ロックのデッドロック検出方法及び方式
JP2000020324A (ja) * 1998-06-30 2000-01-21 Yokogawa Electric Corp 分散エージェントシステム

Also Published As

Publication number Publication date
US9590908B2 (en) 2017-03-07
US20150281084A1 (en) 2015-10-01

Similar Documents

Publication Publication Date Title
JP6710439B2 (ja) センサー情報の処理方法及び装置
US10389781B2 (en) Method for sharing media data among electronic devices having media contents sharing lists and electronic device thereof
CN110311983B (zh) 服务请求的处理方法、装置、系统、电子设备及存储介质
JP6944805B2 (ja) 機器間アプリケーション連動方法およびシステム
EP3797494B1 (en) Device model templates
CN104903863A (zh) 用于虚拟环境的控制反转组件服务模型
KR20160014038A (ko) 컴퓨팅 디바이스 사이에서의 디바이스 연관 데이터의 동기화
JP2021022938A (ja) 位置離脱による通知を提供する装置およびプログラム
WO2018090871A1 (zh) 应用业务提示方法及应用业务提示装置
JP2017054507A (ja) 通信セッション上でイメージを利用して位置情報を提供する情報提供システムおよび方法
JP2018092565A (ja) クラウド中継装置、クラウド接続処理方法、及びプログラム
KR20140002338A (ko) 토폴로지를 이용하여 데이터를 공유하는 장치 및 방법
JP6772235B2 (ja) 設備リストを同期する方法、装置、設備、コンピュータ記憶媒体及びプログラム
CN112714042B (zh) 压力测试方法、装置、电子设备和存储介质
JP2021506002A (ja) リソースの処理方法及びシステム、記憶媒体、電子機器
CN103975301A (zh) 通过本地服务器的对于本地客户机应用的事件服务
JP4970548B2 (ja) ウェブサービス基盤の規則処理のためのデバイス及びその方法
JP2017062711A (ja) 通信方法、通信プログラムおよび情報処理装置
JP2015194886A (ja) 分散データ処理装置、分散データ処理方法および分散データ処理プログラム
CN115022106B (zh) 一种群信息处理方法、装置、设备及介质
KR20210008525A (ko) 가입 서버, 가입 단말기, 정보 가입 방법, 및 시스템
US20170286181A1 (en) Deployment and execution of sensing and computational tasks in a network of computing devices
CN107113557A (zh) 一种信息处理方法及装置
CN111367592B (zh) 信息处理方法和装置
JP2011257994A (ja) 更新api検出システム、更新api検出装置、更新api検出方法、および更新api検出プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170110

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171018

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171114

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180508