(57)【要約】【課題】プロセス・マイグレーションに際し、プロセスを移動させた先のコンピュータで資源のＩＤ等の競合を回避し、プロセスの実行失敗を防ぐ。【解決手段】コンピュータ１００の資源管理部１１１が、オペレーティングシステムが提供する資源１２０の取得に成功した場合に、グローバル資源予約要求部１１２を呼び出し、呼び出されたグローバル資源予約要求部１１２がネットワーク２００で結合された別のコンピュータ１００に対して資源の予約要求を行い、予約要求を受け取った別のコンピュータ１００のグローバル資源予約受付部１１３が、ソフトウェア資源の予約を行うことで、プロセス・マイグレーション時の資源ＩＤの競合を回避する。【選択図】      図１
2004258984.tif 000002
【特許請求の範囲】
【請求項１】
１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを備え、
それぞれの前記コンピュータが、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行う資源管理部と、
前記資源管理部が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、別の前記コンピュータの持つ前記資源の予約要求を行うグローバル資源予約要求部と、
別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行うグローバル資源予約受付部と、
を有することを特徴とする資源管理システム。
【請求項２】
１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを備え、
それぞれの前記コンピュータが、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行う資源管理部と、
前記資源管理部が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、別の前記コンピュータの持つ前記資源の予約要求を行い、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理部に予約成功を通知し、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理部に予約失敗を通知するグローバル資源予約要求部と、
別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行い、前記資源の予約に成功した場合には別の前記コンピュータの前記資源予約要求部に対して資源予約成功を通知し、予約に失敗した場合には資源予約失敗を通知するグローバル資源予約受付部と、
を有することを特徴とする資源管理システム。
【請求項３】
１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを備え、
それぞれの前記コンピュータが、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行い、予約失敗の通知を受け取ると、少なくとも１回は、再度前記資源の取得を行う資源管理部と、
前記資源管理部が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、別の前記コンピュータの持つ前記資源の予約要求を行い、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理部に予約成功を通知し、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理部に予約失敗を通知するグローバル資源予約要求部と、
別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行い、前記資源の予約に成功した場合には別の前記コンピュータの前記資源予約要求部に対して資源予約成功を通知し、予約に失敗した場合には資源予約失敗を通知するグローバル資源予約受付部と、
を有することを特徴とする資源管理システム。
【請求項４】
１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを備え、
それぞれの前記コンピュータが、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行う資源管理部と、
前記資源管理部が自身の備える前記資源の取得に成功すると、予約要求中資源テーブルに前記資源の資源情報を記録し、別の前記コンピュータに対して、前記ネットワークを介し、別の前記コンピュータの持つ前記資源の予約要求を行い、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理部に予約成功を通知し、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理部に予約失敗を通知するグローバル資源予約要求部と、
別の前記コンピュータから前記資源の予約要求を受け取り、前記予約要求中資源テーブルの資源情報と別の前記コンピュータからの予約要求とを比較し、一致がなければ、自身の前記資源の予約を行い、一致があれば、判定基準に基づいて前記資源の予約の成功失敗を判断し、前記資源の予約を行った場合、または、前記資源の予約の成功と判断した場合には別の前記コンピュータの前記資源予約要求部に対して資源予約成功を通知し、それ以外の場合には資源予約失敗を通知するグローバル資源予約受付部と、
を有することを特徴とする資源管理システム。
【請求項５】
１以上の資源を持ち一意のノードＩＤが割り当てられた複数のコンピュータと、前記コンピュータを接続するネットワークとを備え、
それぞれの前記コンピュータが、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行う資源管理部と、
前記資源管理部が自身の備える前記資源の取得に成功すると、予約要求中資源テーブルに前記資源の資源情報を記録し、別の前記コンピュータに対して、前記ネットワークを介し、少なくとも自身のノードＩＤを含む別の前記コンピュータの持つ前記資源の予約要求を行い、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理部に予約成功を通知し、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理部に予約失敗を通知するグローバル資源予約要求部と、
別の前記コンピュータから前記資源の予約要求を受け取り、前記予約要求中資源テーブルの資源情報と別の前記コンピュータからの予約要求とを比較し、一致がなければ、自身の前記資源の予約を行い、一致があれば、前記コンピュータからの予約要求に含まれるノードＩＤが自身のノードＩＤより小であれば、前記資源の予約成功と判断し、そうでなければ、前記資源の予約の失敗と判断し、前記資源の予約を行った場合、または、前記資源の予約の成功と判断した場合には別の前記コンピュータの前記資源予約要求部に対して資源予約成功を通知し、それ以外の場合には資源予約失敗を通知するグローバル資源予約受付部と、
を有することを特徴とする資源管理システム。
【請求項６】
１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、
それぞれの前記コンピュータに、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、
前記資源管理手順が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせるグローバル資源予約要求手順と、
別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行わせるグローバル資源予約受付手順と、
を含むことを特徴とする資源管理方法。
【請求項７】
１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、
それぞれの前記コンピュータに、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、
前記資源管理手順が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、
別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行わせ、前記資源の予約に成功した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、予約に失敗した場合には資源予約失敗を通知させるグローバル資源予約受付手順と、
を含むことを特徴とする資源管理方法。
【請求項８】
１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、
それぞれの前記コンピュータに、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせ、予約失敗の通知を受け取ると、少なくとも１回は、再度前記資源の取得を行わせる資源管理手順と、
前記資源管理手順が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、
別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行わせ、前記資源の予約に成功した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、予約に失敗した場合には資源予約失敗を通知させるグローバル資源予約受付手順と、
を含むことを特徴とする資源管理方法。
【請求項９】
１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、
それぞれの前記コンピュータに、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、
前記資源管理手順が自身の備える前記資源の取得に成功すると、予約要求中資源テーブルに前記資源の資源情報を記録し、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、
別の前記コンピュータから前記資源の予約要求を受け取り前記予約要求中資源テーブルの資源情報と別の前記コンピュータからの予約要求とを比較させ、一致がなければ、自身の前記資源の予約を行わせ、一致があれば、判定基準に基づいて前記資源の予約の成功失敗を判断させ、前記資源の予約を行った場合、または、前記資源の予約の成功と判断した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、それ以外の場合には資源予約失敗を通知させるグローバル資源予約受付手順と、
を含むことを特徴とする資源管理方法。
【請求項１０】
１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、
それぞれの前記コンピュータに、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、
前記資源管理手順が自身の備える前記資源の取得に成功すると、予約要求中資源テーブルに前記資源の資源情報を記録させ、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し少なくとも自身のノードＩＤを含む別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、別の前記コンピュータから前記資源の予約要求を受け取り前記予約要求中資源テーブルの資源情報と別の前記コンピュータからの予約要求とを比較させ、一致がなければ、自身の前記資源の予約を行わせ、一致があれば、前記コンピュータからの予約要求に含まれるノードＩＤが自身のノードＩＤより小であれば、前記資源の予約成功と判断させ、そうでなければ、前記資源の予約の失敗と判断させ、前記資源の予約を行った場合、または、前記資源の予約の成功と判断した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、それ以外の場合には資源予約失敗を通知させるグローバル資源予約受付手順と、
を含むことを特徴とする資源管理方法。
【請求項１１】
１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、
前記資源管理手順が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせるグローバル資源予約要求手順と、
別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行わせるグローバル資源予約受付手順と、
をそれぞれの前記コンピュータに実行させることを特徴とする資源管理プログラム。
【請求項１２】
１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、
前記資源管理手順が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、
別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行わせ、前記資源の予約に成功した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、予約に失敗した場合には資源予約失敗を通知させるグローバル資源予約受付手順と、
をそれぞれの前記コンピュータに実行させることを特徴とする資源管理プログラム。
【請求項１３】
１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせ、予約失敗の通知を受け取ると、少なくとも１回は、再度前記資源の取得を行わせる資源管理手順と、
前記資源管理手順が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、
別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行わせ、前記資源の予約に成功した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、予約に失敗した場合には資源予約失敗を通知させるグローバル資源予約受付手順と、
をそれぞれの前記コンピュータに実行させることを特徴とする資源管理プログラム。
【請求項１４】
１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、
前記資源管理手順が自身の備える前記資源の取得に成功すると、予約要求中資源テーブルに前記資源の資源情報を記録し、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、
別の前記コンピュータから前記資源の予約要求を受け取り前記予約要求中資源テーブルの資源情報と別の前記コンピュータからの予約要求とを比較させ、一致がなければ、自身の前記資源の予約を行わせ、一致があれば、判定基準に基づいて前記資源の予約の成功失敗を判断させ、前記資源の予約を行った場合、または、前記資源の予約の成功と判断した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、それ以外の場合には資源予約失敗を通知させるグローバル資源予約受付手順と、
をそれぞれの前記コンピュータに実行させることを特徴とする資源管理プログラム。
【請求項１５】
１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、
ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、
前記資源管理手順が自身の備える前記資源の取得に成功すると、予約要求中資源テーブルに前記資源の資源情報を記録させ、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し少なくとも自身のノードＩＤを含む別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、別の前記コンピュータから前記資源の予約要求を受け取り前記予約要求中資源テーブルの資源情報と別の前記コンピュータからの予約要求とを比較させ、一致がなければ、自身の前記資源の予約を行わせ、一致があれば、前記コンピュータからの予約要求に含まれるノードＩＤが自身のノードＩＤより小であれば、前記資源の予約成功と判断させ、そうでなければ、前記資源の予約の失敗と判断させ、前記資源の予約を行った場合、または、前記資源の予約の成功と判断した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、それ以外の場合には資源予約失敗を通知させるグローバル資源予約受付手順と、
をそれぞれの前記コンピュータに実行させることを特徴とする資源管理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、資源管理システム、資源管理方法、および、資源管理プログラムに関し、特に、ネットワークで結合された複数のコンピュータ間で実行中のプログラム（プロセス）を移動させる場合の資源競合を回避できる資源管理システム、資源管理方法、および、資源管理プログラムに関する。
【０００２】
【従来の技術】
複数のコンピュータ・ノード（以下、ノードと呼ぶ）をネットワークで接続したシステムをクラスタシステムと呼ぶ。クラスタシステムで、資源の効率的利用や高信頼性の実現のためにプロセス・マイグレーションという技術が利用される。プロセス・マイグレーションとは、あるノードで動作中のプログラム（以下、プロセスと呼ぶ）を、実行状態を保持したまま、別のコンピュータ上に移動させ、元のコンピュータで実行されていたのと同じ状態で実行を継続させる技術である。従来、プロセス・マイグレーションで動作中のプログラムを移動させる場合、移動先のノードで資源競合が起きるという問題があった。たとえば、移動されるプロセスの識別子（以下、プロセスＩＤと呼ぶ）が、移動先のコンピュータですでに他のプロセスによって利用されていた場合は、プロセスを移動させた後で、実行を再開した時にプロセスＩＤの競合が起き、移動されたプロセスの実行が失敗してしまうことがあった。同様の問題は、プロセス間通信やＩＰ通信で用いられる通信チャネルや共有リソースの識別子（ＵＮＩＸ（登録商標）の場合、プロセッサ間通信としてはＦＩＦＯ、および、ＳｙｓｔｅｍＶのセマフォ、メッセージキュー、共有メモリがあり、これらにアクセスするためにパス名や整数を識別子として与える。また、ＩＰ通信としてはソケットがあり、通信相手を指定するためにポート番号（整数値）を指定する）にもあった。
【０００３】
また、移動されるプロセスが、ディスク上のデータ（以下、ファイルと呼ぶ）への排他的アクセス権（以下、ロックと呼ぶ）を保有している場合、移動先のコンピュータで同じ識別子（例えば、ＵＮＩＸ（登録商標）ファイルのパス名）のファイルに対するロックを保有する他のプロセスが存在する場合にも、移動されるプロセスの実行が移動後に失敗してしまうという問題があった。
【０００４】
このような識別子の競合の問題を解決するために、プロセス・マイグレーションをサポートする従来のシステムでは、２つの解決策を取っていた。一つは、クラスタシステム全体で一意になるように識別子を定める方法である。この方法を実現したシステムの一例が、非特許文献１に記載されている。ここに記載されているオペレーティングシステムＭＯＳＩＸでは、プロセスＩＤを拡張し、上位ビットにノードＩＤ、下位ビットに従来のプロセスＩＤを含めるように変更している。ノードＩＤはクラスタシステム内で一意になるように割り振られる。従来のプロセスＩＤはノード内で一意になるように割り振られる。このようにノードＩＤと従来のプロセスＩＤを組み合わせることで、クラスタシステム全体で一意になるような識別子をプロセスに付与することができる。ＭＯＳＩＸの方式では、プロセスの移動後も、そのプロセスが生成されたコンピュータ（ホームノード）を管理するＯＳがそのプロセスの管理を行う。すなわち、プロセスの停止、シグナルの処理は、いったん移動先のコンピュータを管理するＯＳが受け付けた後、ホームノードに転送されて、処理される。
【０００５】
識別子の競合を避けるもう一つの方法は、プロセスに関連するＯＳリソースをマイグレーションさせない方法である。ここでいうＯＳリソースとは、プロセスに関連するリソースのうち、テキスト、スタック、データ、メモリマップ、レジスタを除いたものである。この方法も、ＭＯＳＩＸにおいて実現されている。ＭＯＳＩＸでは、プロセスのマイグレーションの際にＯＳリソースのマイグレーションを行わず、ホームノードにおいてＯＳリソースを管理する。移動されたプロセスがＯＳリソースに関する処理をＯＳに要求した場合、その処理は、ホームノードに転送される。このため、あるプロセスのＯＳリソースを管理するのはそのプロセスのホームノードだけでよく、ＯＳリソースの識別子の競合が起こることはない。
【０００６】
いずれの資源管理方式もＯＳリソースの本体はホームノードに残され、ＯＳリソースに関係する処理がホームノードで行われるようなマイグレーションに用いるためのものである。このようにホームノードにＯＳリソースの処理のすべてあるいは一部が残されることをホームノード依存性があるという。
【０００７】
これら２つの資源管理方法は、非特許文献１以外にも、非特許文献２、非特許文献３、非特許文献４などにも見られる。
【０００８】
また、予めサービスレベル・リソース量対応データベース初期化装置がアプリケーションシステムのサービスレベルとリソース量との対応をサービスレベルを増加させながらサービスレベル・リソース量対応データベースに蓄積することで、要求されるサービスレベルに対して必要なリソース量をサービスレベル・リソース量対応データベースに基づいてリソース量推定装置がアプリケーションシステムに必要なリソース量を推定して予約することにより、リソース予約装置に渡すパラメータの決定の困難さを解決しようとする技術がある。（たとえば、特許文献１）
【特許文献１】
特開２００１−３３１３３２号公報
【非特許文献１】
アムノン・バラック（Ａｍｎｏｎ  Ｂａｒａｋ）、外２名、「リナックス用モジックスを用いたスケーラブル・クラスタ・コンピューティング（Ｓｃａｌａｂｌｅ  Ｃｌｕｓｔｅｒ  Ｃｏｍｐｕｔｉｎｇ  ｗｉｔｈ  Ｍｏｓｉｘ  ｆｏｒ  Ｌｉｎｕｘ）」、［ｏｎｌｉｎｅ］、１９９９年５月２２日、アムノン・バラック（Ａｍｎｏｎ  Ｂａｒａｋ）、［平成１４年１１月２５日  検索］、インターネット＜ＵＲＬ：  ｈｔｔｐ：／／ｗｗｗ．ｍｏｓｉｘ．ｏｒｇ／ｆｔｐｓ／ｍｏｓｉｘ４ｌｉｎｕｘ．ｐｓ．ｇｚ＞
【非特許文献２】
モシュ・バー（Ｍｏｃｈｅ  Ｂａｒ）、「オープンモジックス・インターナルズ：オープンモジックスはどのように動作するか（ｏｐｅｎＭｏｓｉｘＩｎｔｅｒｎａｌｓ：  Ｈｏｗ  ｏｐｅｎＭｏｓｉｘ  Ｗｏｒｋｓ）」、［ｏｎｌｉｎｅ］、２００２年２月１５日、モシュ・バー（Ｍｏｃｈｅ  Ｂａｒ）、［平成１４年１１月２５日  検索］、インターネット＜ＵＲＬ：  ｈｔｔｐ：／／ｓｏｕｒｃｅｆｏｒｇｅ．ｎｅｔ／ｄｏｃｍａｎ／ｄｉｓｐｌａｙ＿ｄｏｃ．ｐｈｐ？ｄｏｃｉｄ＝１０３９０＆ｇｒｏｕｐ＿ｉｄ＝４６７２９＞
【非特許文献３】
ヨーゼフ・カリディ（Ｙｏｕｓｅｆ  Ａ．  Ｋｈａｌｉｄｉ）、外４名、「ソラリス・エムシー：マルチコンピュータ・オーエス（Ｓｏｌａｒｉｓ  ＭＣ：  Ａ  Ｍｕｌｔｉ−Ｃｏｍｐｕｔｅｒ  ＯＳ）」、［ｏｎｌｉｎｅ］、１９９５年１１月、サン・マイクロシステムズ（Ｓｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ）、［平成１４年１１月２５日  検索］、インターネット＜ＵＲＬ：  ｈｔｔｐ：／／ｒｅｓｅａｒｃｈ．ｓｕｎ．ｃｏｍ／ｒｅｓｅａｒｃｈ／ｔｅｃｈｒｅｐ／１９９５／ｓｍｌｉ＿ｔｒ−９５−４８．ｐｄｆ＞
【非特許文献４】
ブルース・ウォーカー（Ｂｒｕｃｅ  Ｊ．  Ｗａｌｋｅｒ）、「シングル・システム・イメージ・クラスタリングの紹介（Ｉｎｔｒｏｄｕｃｔｉｏｎｔｏ  Ｓｉｎｇｌｅ  Ｓｙｓｔｅｍ  Ｉｍａｇｅ  Ｃｌｕｓｔｅｒｉｎｇ）」、［ｏｎｌｉｎｅ］、２００１年１１月１７日、コンパック（Ｃｏｍｐａｑ）［平成１４年１１月２５日  検索］、インターネット＜ＵＲＬ：  ｈｔｔｐ：／／ｓｓｉｃ−ｌｉｎｕｘ．ｓｏｕｒｃｅｆｏｒｇｅ．ｎｅｔ／ｓｓｉ−ｉｎｔｒｏ−ｖ４．ｐｄｆ＞
【０００９】
【発明が解決しようとする課題】
第１の問題点は、上述した従来の資源管理の技術では、プロセスと一緒にＯＳリソースまで移動させるマイグレーション方式には適用できないという点であるである。
【００１０】
その理由は、従来の資源管理方法がホームノードにＯＳリソースの本体を残したり、資源ＩＤの管理をホームノードに残したりするためである。
【００１１】
第２の問題点は、従来の資源管理の技術では、障害に対して弱いという点である。
【００１２】
その理由は、マイグレーションされたプロセスはＯＳリソースに関して、ホームノードに依存し続けるからである。つまり、ホームノードがなんらかの理由で故障した場合、ＯＳリソースに関する処理が行えなくなるからである。
【００１３】
本発明の目的は、プロセス・マイグレーションの際に生ずるホームノード依存性を解消し、性能・耐故障性に優れた資源管理システムを実現することである。
【００１４】
【課題を解決するための手段】
本発明の第１の資源管理システムは、１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを備え、それぞれの前記コンピュータが、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行う資源管理部と、前記資源管理部が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、別の前記コンピュータの持つ前記資源の予約要求を行うグローバル資源予約要求部と、別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行うグローバル資源予約受付部と、を有することを特徴とする。
【００１５】
本発明の第２の資源管理システムは、１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを備え、それぞれの前記コンピュータが、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行う資源管理部と、前記資源管理部が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、別の前記コンピュータの持つ前記資源の予約要求を行い、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理部に予約成功を通知し、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理部に予約失敗を通知するグローバル資源予約要求部と、別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行い、前記資源の予約に成功した場合には別の前記コンピュータの前記資源予約要求部に対して資源予約成功を通知し、予約に失敗した場合には資源予約失敗を通知するグローバル資源予約受付部と、を有することを特徴とする。
【００１６】
本発明の第３の資源管理システムは、１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを備え、それぞれの前記コンピュータが、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行い、予約失敗の通知を受け取ると、少なくとも１回は、再度前記資源の取得を行う資源管理部と、前記資源管理部が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、別の前記コンピュータの持つ前記資源の予約要求を行い、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理部に予約成功を通知し、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理部に予約失敗を通知するグローバル資源予約要求部と、別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行い、前記資源の予約に成功した場合には別の前記コンピュータの前記資源予約要求部に対して資源予約成功を通知し、予約に失敗した場合には資源予約失敗を通知するグローバル資源予約受付部と、を有することを特徴とする。
【００１７】
本発明の第４の資源管理システムは、１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを備え、それぞれの前記コンピュータが、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行う資源管理部と、前記資源管理部が自身の備える前記資源の取得に成功すると、予約要求中資源テーブルに前記資源の資源情報を記録し、別の前記コンピュータに対して、前記ネットワークを介し、別の前記コンピュータの持つ前記資源の予約要求を行い、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理部に予約成功を通知し、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理部に予約失敗を通知するグローバル資源予約要求部と、別の前記コンピュータから前記資源の予約要求を受け取り、前記予約要求中資源テーブルの資源情報と別の前記コンピュータからの予約要求とを比較し、一致がなければ、自身の前記資源の予約を行い、一致があれば、判定基準に基づいて前記資源の予約の成功失敗を判断し、前記資源の予約を行った場合、または、前記資源の予約の成功と判断した場合には別の前記コンピュータの前記資源予約要求部に対して資源予約成功を通知し、それ以外の場合には資源予約失敗を通知するグローバル資源予約受付部と、を有することを特徴とする。
【００１８】
本発明の第５の資源管理システムは、１以上の資源を持ち一意のノードＩＤが割り当てられた複数のコンピュータと、前記コンピュータを接続するネットワークとを備え、それぞれの前記コンピュータが、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行う資源管理部と、前記資源管理部が自身の備える前記資源の取得に成功すると、予約要求中資源テーブルに前記資源の資源情報を記録し、別の前記コンピュータに対して、前記ネットワークを介し、少なくとも自身のノードＩＤを含む別の前記コンピュータの持つ前記資源の予約要求を行い、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理部に予約成功を通知し、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理部に予約失敗を通知するグローバル資源予約要求部と、別の前記コンピュータから前記資源の予約要求を受け取り、前記予約要求中資源テーブルの資源情報と別の前記コンピュータからの予約要求とを比較し、一致がなければ、自身の前記資源の予約を行い、一致があれば、前記コンピュータからの予約要求に含まれるノードＩＤが自身のノードＩＤより小であれば、前記資源の予約成功と判断し、そうでなければ、前記資源の予約の失敗と判断し、前記資源の予約を行った場合、または、前記資源の予約の成功と判断した場合には別の前記コンピュータの前記資源予約要求部に対して資源予約成功を通知し、それ以外の場合には資源予約失敗を通知するグローバル資源予約受付部と、を有することを特徴とする。
【００１９】
本発明の第１の資源管理方法は、１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、それぞれの前記コンピュータに、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、前記資源管理手順が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせるグローバル資源予約要求手順と、別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行わせるグローバル資源予約受付手順と、を含むことを特徴とする。
【００２０】
本発明の第２の資源管理方法は、１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、それぞれの前記コンピュータに、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、前記資源管理手順が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行わせ、前記資源の予約に成功した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、予約に失敗した場合には資源予約失敗を通知させるグローバル資源予約受付手順と、を含むことを特徴とする。
【００２１】
本発明の第３の資源管理方法は、１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、それぞれの前記コンピュータに、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせ、予約失敗の通知を受け取ると、少なくとも１回は、再度前記資源の取得を行わせる資源管理手順と、前記資源管理手順が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行わせ、前記資源の予約に成功した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、予約に失敗した場合には資源予約失敗を通知させるグローバル資源予約受付手順と、を含むことを特徴とする。
【００２２】
本発明の第４の資源管理方法は、１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、それぞれの前記コンピュータに、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、前記資源管理手順が自身の備える前記資源の取得に成功すると、予約要求中資源テーブルに前記資源の資源情報を記録し、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、別の前記コンピュータから前記資源の予約要求を受け取り前記予約要求中資源テーブルの資源情報と別の前記コンピュータからの予約要求とを比較させ、一致がなければ、自身の前記資源の予約を行わせ、一致があれば、判定基準に基づいて前記資源の予約の成功失敗を判断させ、前記資源の予約を行った場合、または、前記資源の予約の成功と判断した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、それ以外の場合には資源予約失敗を通知させるグローバル資源予約受付手順と、を含むことを特徴とする。
【００２３】
本発明の第５の資源管理方法は、１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、それぞれの前記コンピュータに、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、前記資源管理手順が自身の備える前記資源の取得に成功すると、予約要求中資源テーブルに前記資源の資源情報を記録させ、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し少なくとも自身のノードＩＤを含む別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、別の前記コンピュータから前記資源の予約要求を受け取り前記予約要求中資源テーブルの資源情報と別の前記コンピュータからの予約要求とを比較させ、一致がなければ、自身の前記資源の予約を行わせ、一致があれば、前記コンピュータからの予約要求に含まれるノードＩＤが自身のノードＩＤより小であれば、前記資源の予約成功と判断させ、そうでなければ、前記資源の予約の失敗と判断させ、前記資源の予約を行った場合、または、前記資源の予約の成功と判断した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、それ以外の場合には資源予約失敗を通知させるグローバル資源予約受付手順と、を含むことを特徴とする。
【００２４】
本発明の第１の資源管理プログラムは、１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、前記資源管理手順が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせるグローバル資源予約要求手順と、別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行わせるグローバル資源予約受付手順と、をそれぞれの前記コンピュータに実行させることを特徴とする。
【００２５】
本発明の第２の資源管理プログラムは、１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、前記資源管理手順が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行わせ、前記資源の予約に成功した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、予約に失敗した場合には資源予約失敗を通知させるグローバル資源予約受付手順と、をそれぞれの前記コンピュータに実行させることを特徴とする。
【００２６】
本発明の第３の資源管理プログラムは、１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせ、予約失敗の通知を受け取ると、少なくとも１回は、再度前記資源の取得を行わせる資源管理手順と、前記資源管理手順が自身の備える前記資源の取得に成功すると、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、別の前記コンピュータから前記資源の予約要求を受け取り自身の前記資源の予約を行わせ、前記資源の予約に成功した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、予約に失敗した場合には資源予約失敗を通知させるグローバル資源予約受付手順と、をそれぞれの前記コンピュータに実行させることを特徴とする。
【００２７】
本発明の第４の資源管理プログラムは、１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、前記資源管理手順が自身の備える前記資源の取得に成功すると、予約要求中資源テーブルに前記資源の資源情報を記録し、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、別の前記コンピュータから前記資源の予約要求を受け取り前記予約要求中資源テーブルの資源情報と別の前記コンピュータからの予約要求とを比較させ、一致がなければ、自身の前記資源の予約を行わせ、一致があれば、判定基準に基づいて前記資源の予約の成功失敗を判断させ、前記資源の予約を行った場合、または、前記資源の予約の成功と判断した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、それ以外の場合には資源予約失敗を通知させるグローバル資源予約受付手順と、をそれぞれの前記コンピュータに実行させることを特徴とする。
【００２８】
本発明の第５の資源管理プログラムは、１以上の資源を持つ複数のコンピュータと、前記コンピュータを接続するネットワークとを利用し、ユーザプログラムからの要求に応じて、前記資源の取得および解放を行わせる資源管理手順と、前記資源管理手順が自身の備える前記資源の取得に成功すると、予約要求中資源テーブルに前記資源の資源情報を記録させ、別の前記コンピュータに対して、前記ネットワークを介し、記憶装置から読み出したネットワークアドレスを使用し少なくとも自身のノードＩＤを含む別の前記コンピュータの持つ前記資源の予約要求を行わせ、前記資源の予約要求を行った別の前記コンピュータすべてから資源予約成功の通知を受け取った場合には、前記資源管理手順に予約成功を通知させ、別の前記コンピュータの少なくとも１台から失敗の通知を受け取った場合には、前記資源管理手順に予約失敗を通知させるグローバル資源予約要求手順と、別の前記コンピュータから前記資源の予約要求を受け取り前記予約要求中資源テーブルの資源情報と別の前記コンピュータからの予約要求とを比較させ、一致がなければ、自身の前記資源の予約を行わせ、一致があれば、前記コンピュータからの予約要求に含まれるノードＩＤが自身のノードＩＤより小であれば、前記資源の予約成功と判断させ、そうでなければ、前記資源の予約の失敗と判断させ、前記資源の予約を行った場合、または、前記資源の予約の成功と判断した場合には別の前記コンピュータの前記資源予約要求手順に対して資源予約成功を通知させ、それ以外の場合には資源予約失敗を通知させるグローバル資源予約受付手順と、をそれぞれの前記コンピュータに実行させることを特徴とする。
【００２９】
【発明の実施の形態】
次に、本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００３０】
図１は、本発明の第１の実施の形態の構成を示すブロック図である。
【００３１】
図１を参照すると、本発明の第１の実施の形態は、ＣＰＵ、メモリ、ディスク装置、ＮＩＣ（ネットワークインタフェースカード）などのハードウェアを有し、プログラム制御により動作するコンピュータ１００と、コンピュータ１００と他のコンピュータ（図示せず）とを接続するネットワーク２００とから構成される。コンピュータ１００は、通信チャネルやファイルなどの資源１２０、資源１２０を管理する資源管理部１１１、他のコンピュータに資源の予約・取り消しを要求するグローバル資源予約要求部１１２、他のコンピュータからの要求を受け付けて資源の予約・取り消しするグローバル資源予約受付部１１３を含んで構成される。なお、ネットワーク２００で接続された他のコンピュータもコンピュータ１００と同様の構成をとるものとする。また、コンピュータ１００は、処理に使用する主記憶装置（図示せず）、または、ハードディスク装置等の記憶装置を備える。
【００３２】
次に、本発明の第１の実施の形態の動作について図面を参照して説明する。
【００３３】
まず、資源取得時の動作について説明する。
【００３４】
図２は、本発明の第１の実施の形態の資源管理部およびグローバル資源予約要求部の資源取得時の動作を示すフローチャートである。
【００３５】
図３は、本発明の第１の実施の形態のグローバル資源予約受付部の動作を示すフローチャートである。
【００３６】
図２を参照すると、資源管理部１１１は、ユーザプログラムからの資源取得要求を受け取ると（図２ステップＳ１０１）、ローカルな資源１２０を取得する（図２ステップＳ１０２）。ローカルな資源の取得にはオペレーティングシステム（ＯＳ）が提供する資源取得機能を利用できる。指定された資源を取得できた場合は（図２ステップＳ１０３／Ｙ）、グローバル資源予約要求部１１２を呼び出してネットワーク２００で接続された別のコンピュータ上の資源の予約要求を行う（図２Ｓ１０４）。
【００３７】
取得に失敗した場合は（図２ステップＳ１０３／Ｎ）、資源取得要求を行ったユーザプラグラムに失敗を通知する（図２Ｓ１１２）。
【００３８】
呼び出されたグローバル資源予約要求部１１２は、資源予約要求を行うためのメッセージ（以下、資源予約要求メッセージと呼ぶ）を作成し、ネットワーク２００に接続されたすべての別のコンピュータに対してメッセージをブロードキャストする（図２ステップＳ１０５）。ここで、ネットワーク２００に接続されている別のコンピュータに関するネットワークアドレス等は、主記憶装置（図示せず）、または、ハードディスク装置等の記憶装置に事前に登録されており、それを、読み出して使用する。
【００３９】
なお、ここでいうメッセージは、たとえば、ＵＮＩＸ（登録商標）オペレーティングシステムを搭載するコンピュータで通信されるＩＰメッセージ等であり、メッセージ通信もＩＰプロトコル等により通信が行われるものとする。以下の説明で現れるメッセージも同様である。資源予約要求メッセージには、送信元のコンピュータのＩＤ、予約する資源の種類、資源ＩＤなどのデータが含まれる。予約要求メッセージの送信後、グローバル資源予約要求部１１２は別のコンピュータから応答メッセージを待ち、受信する（図２ステップＳ１０６）。すべてのコンピュータから予約成功の応答メッセージを受け取った場合は（図２ステップＳ１０７／Ｙ）、資源管理部１１１に成功を通知し（図２ステップＳ１０８）、少なくとも１台のコンピュータから資源予約失敗の応答メッセージを受け取った場合は（図２ステップＳ１０７／Ｎ）、資源管理部１１１に失敗を通知する（図２ステップＳ１１０）。
【００４０】
資源管理部１１１は、グローバル資源予約要求部１１２から成功を受け取ると、資源取得要求を行ったユーザプログラムに対し資源取得が成功したことを通知する（図２ステップＳ１０９）。失敗を受け取った場合は、すでに取得済みの資源を解放したのち（図２ステップＳ１１１）、資源取得要求を行ったユーザプログラムに対し資源取得が失敗したことを通知する（図２ステップＳ１１２）。
【００４１】
一方で、資源予約要求メッセージを受信した他のコンピュータは以下の処理を行う。図３を参照すると、グローバル資源予約受付部１１３はメッセージを待っており（図３ステップＳ２０１）、資源予約要求メッセージを受信すると（図３ステップＳ２０２）、メッセージタイプが資源予約要求なので（図３ステップＳ２０３／資源予約要求メッセージ）、資源１２０を予約する（図３ステップＳ２０４）。資源１２０の予約に成功した場合は（図３ステップＳ２０５／Ｙ）、成功を知らせる応答メッセージを要求側のコンピュータに送信する（図３ステップＳ２０６）。失敗した場合は（図３ステップＳ２０５／Ｎ）、失敗を知らせる応答メッセージを要求側のコンピュータに送信する（図３ステップＳ２０７）。
【００４２】
次に、資源解放時の動作について図面を参照して説明する。
【００４３】
図４は、本発明の第１の実施の形態の資源管理部およびグローバル資源予約要求部の資源解放時の動作の動作を示すフローチャートである。
【００４４】
図４を参照すると、資源管理部１１１は、資源解放要求を受け取ると（図４ステップＳ３０１）、ローカルな資源１２０を解放する（図４ステップＳ３０２）。資源の解放にはＯＳが提供する資源解放機能が利用できる。指定された資源を解放できた場合は（図４ステップＳ３０３／Ｙ）、グローバル資源予約要求部１１２を呼び出してネットワーク２００で接続された別のコンピュータ上の資源の予約取消要求を行う（図４ステップＳ３０４）。解放できなかった場合は（図４ステップＳ３０３／Ｎ）、資源解放要求を行ったユーザプログラムに失敗を通知する（図４ステップＳ３０９）。
【００４５】
呼び出されたグローバル資源予約要求部１１２は、資源予約取消要求を行うためのメッセージ（以下、資源予約取消要求メッセージと呼ぶ）を作成し、ネットワーク２００に接続されたコンピュータすべてに対してメッセージをブロードキャストする（図４ステップＳ３０５）。資源予約取消要求メッセージには、送信元のコンピュータのＩＤ、予約を取り消す資源の種類、資源のＩＤなどのパラメータが含まれる。資源予約取消要求メッセージの送信後、グローバル資源予約要求部１１２は他のすべてのコンピュータから応答メッセージを待ち、受信する（図４ステップＳ３０６）。グローバル資源予約要求部１１２は応答メッセージが予約取消成功か失敗かに関わらず、資源管理部１１１に成功を通知する（図４ステップＳ３０７）。資源管理部１１１は、グローバル資源予約要求部１１２から成功の通知を受け取ると、資源解放要求を行ったユーザプログラムに対し、資源解放が成功したことを通知する（図４ステップＳ３０８）。
【００４６】
一方で、資源予約取消要求を受信した他のコンピュータでは以下の処理を行う。グローバル資源予約受付部１１３はメッセージを待っており（図３ステップＳ２０１）、資源予約取消要求メッセージを受信すると（図３ステップＳ２０２）、メッセージタイプが資源予約取消要求なので（図３ステップＳ２０３／資源予約取消要求メッセージ）、資源１２０の予約を取り消す（図３ステップＳ２０８）。資源１２０の予約取消に成功した場合は（図３ステップＳ２０９／Ｙ）、成功を知らせる応答メッセージを要求側のコンピュータに送信する（図３ステップＳ２１０）。失敗した場合は（図３ステップＳ２０９／Ｎ）、失敗を知らせる応答メッセージを要求側のコンピュータに送信する（図３ステップＳ２１１）。
【００４７】
ここで資源を予約する、あるいは、予約を取り消す方法としては、ＯＳの提供する資源取得・解放機能を利用して、ローカルな資源を取得・解放する方法がある。あるいは、資源予約の機能を持ったＯＳ（ＣＭＵのｒｅｓｏｕｒｃｅ  ｋｅｒｎｅｌなど）であれば、効率的にリソースＩＤなどの予約・予約取消だけをする方法もとれる。
【００４８】
本発明の第１の実施の形態では、ネットワーク２００で結合された複数のコンピュータのうちの一つで資源を取得する際に、ネットワーク２００に接続された他のすべてのコンピュータでも、同じ資源のＩＤや名前などを予約する。このため、プロセス・マイグレーションなどの手法を使って、あるコンピュータ上のプロセスを別のノードに移動しようとした場合に、移動先のコンピュータで資源の競合が起きてプロセスの実行が失敗するのを防ぐことができる。
【００４９】
次に、本発明の第１の実施の形態の実施例について説明する。
【００５０】
図５は、本発明の第１の実施の形態の実施例のクラスタシステムの構成を示すブロック図である。
【００５１】
図５を参照すると、このクラスタシステムは、プロセッサであるＣＰＵ５１１、メモリ５１２、ハードディスク装置であるＨＤＤ５１３、ネットワークインタフェースカードであるＮＩＣ５１４から構成される複数のノード５０１と、複数のノード５０１をネットワークケーブル５０２により接続するネットワークスイッチ５０３とから構成される。ここでは、ノード１０台からなる構成のクラスタシステムを示したが、ノードの台数に制限はない。また、ネットワークスイッチ５０３もこの例では、一段の構成をとっているが、多段の構成をとった場合でも、適用可能である。さらに、ＨＤＤ５１３の代わりにＲＯＭ、フラッシュメモリなどの不揮発記憶装置でも適用可能である。
【００５２】
本実施例において、たとえば、図２〜図４の処理は、このクラスタシステムのメモリ５１２にロードされ、ＣＰＵ５１１により実行されるプログラムとして構成される。本実施例では、ＯＳとして、Ｌｉｎｕｘを利用する。資源管理部１１１は、ユーザプログラムにリンクされ、その中からＯＳの提供する資源取得関数を呼び出すラッパ関数（ライブラリ）として実現する。グローバル資源予約要求部１１２、および、グローバル資源予約受付部１１３は、特権ユーザモードで実行されるグローバル資源予約デーモン（プロセス）として実現する。グローバル資源予約デーモンは内部（同一コンピュータ内）からの要求を受け付けるソケット（内部向けソケット）、および、別のコンピュータのグローバル資源予約デーモンと通信するためのソケット（デーモン間通信ソケット）を持つ。この場合、図２、図３の資源取得の動作は、以下のような手順に置き換えられる。
【００５３】
ユーザプログラムからｆｏｒｋ，ｓｏｃｋｅｔ，ｂｉｎｄ，ｍｋｆｉｆｏ，ｓｅｍｇｅｔなどＯＳが提供する資源取得関数を発行しようとすると、資源取得関数が呼ばれる代わりに、ユーザプログラムにリンクされたライブラリに含まれるラッパ関数が呼び出しされる（図２ステップＳ１０１）。ラッパ関数は、ＯＳが提供する資源取得関数を呼び出し、ローカルな資源（プロセス、ソケット、ＦＩＦＯ、セマフォなど）を取得する（図２ステップＳ１０２）。資源取得関数の呼び出し結果が成功の場合は（図２ステップＳ１０３／Ｙ）、グローバル資源予約デーモンを呼び出してネットワーク２００で接続された別のコンピュータ上の資源の予約要求を行う（図２ステップＳ１０４）。この予約要求は、グローバル資源予約デーモンの内部向けソケットにラッパ関数から接続し、そのソケットにメッセージを送ることでグローバル資源予約デーモンに伝えられる。取得に失敗した場合は（図２ステップＳ１０３／Ｎ）、資源取得関数を発行しようとしたユーザプラグラムに資源取得関数のエラーを返す（図２ステップＳ１１２）。
【００５４】
呼び出されたグローバル資源予約デーモンは、資源予約要求を行うためのメッセージを作成し、ネットワーク２００に接続されたすべてのコンピュータのグローバル資源予約デーモンのデーモン間通信用ソケットに対して、メッセージをブロードキャストする（図２ステップＳ１０５）。予約要求メッセージの送信後、グローバル資源予約デーモンは自分のデーモン間通信ソケットに応答メッセージ到着するのを待ち、受信する（図２ステップＳ１０６）。さらに、受け取った応答メッセージの成否に応じて（図２ステップＳ１０７）、ラッパ関数に対して（接続された内部向けソケットを通じて）成功（図２ステップＳ１０８）、または、失敗をメッセージで通知する（図Ｓステップ１１０）。
【００５５】
ラッパ関数は、グローバル資源予約デーモンから成功のメッセージを受け取ると、資源取得関数を発行しようとしたユーザプログラムに対しＯＳが提供する資源取得関数から受け取った成功を返す（図２ステップＳ１０９）。失敗のメッセージを受け取った場合は、ＯＳが提供する資源解放関数（ｋｉｌｌ，ｃｌｏｓｅ，ｕｎｌｉｎｋ，ｓｅｍｏｐなど）を呼び出してすでに取得した資源を解放したのち（図２ステップＳ１１１）、資源取得要求を行ったユーザプログラムに対しＯＳが提供する資源取得関数が取得失敗時に返す値をエラーとして返す（図２ステップＳ１１２）。
【００５６】
一方で、別のコンピュータでは以下の処理を行う。グローバル資源予約デーモンは自分のデーモン間通信ソケットから資源予約要求メッセージを受信すると（図３ステップＳ２０２）、メッセージタイプが資源予約要求であれば（図３ステップＳ２０３／資源予約要求メッセージ）、ＯＳが提供する資源取得関数を呼び出して指定された資源を取得する（図３ステップＳ２０４）。さらに、資源取得の成否に応じて（図３ステップＳ２０５）、成功あるいは失敗を知らせる応答メッセージを要求元のコンピュータのグローバル資源予約デーモンのデーモン間通信用ソケットに送信する（図３Ｓ２０６、Ｓ２０７）。
【００５７】
図６は、ラッパ関数からグローバル資源予約デーモンに送られる資源の予約要求メッセージのデータ構造を示す説明図である。
【００５８】
図６を参照すると、資源の予約要求メッセージは、メッセージのサイズ６０１（整数）、メッセージタイプ６０２（整数）、資源の種類６０３（整数）、資源ＩＤ６０４（整数または文字列）を含む。資源ＩＤ６０４の領域は可変長で複数の整数や文字列を含むことができる。たとえば、ｂｉｎｄ関数に対するメッセージは、図６（ａ）のようになる。ｆｏｒｋ，ｍｋｆｉｆｏ，ｓｅｍｇｅｔは、それぞれ、図６（ｂ），（ｃ），（ｄ）のようになる。ｍｋｆｉｆｏは、資源ＩＤとしてパス名（図６（ｃ）では、“／ｔｍｐ／ｆ１”）を含み、ｓｅｍｇｅｔはキーとＩＤの二つの整数（図６（ｄ）では、それぞれ１２３と３２７６８）を資源ＩＤとして含んでいる。
【００５９】
図７は、グローバル資源予約デーモンからラッパ関数に返される通知メッセージのデータ構造を示す説明図である。
【００６０】
図７を参照すると、通知メッセージは、メッセージのサイズ７０１（整数）、メッセージタイプ７０２（整数）、資源予約の成否７０３（整数）を含む。図７（ａ）は成功の場合、図７（ｂ）は失敗の場合を示す。
【００６１】
図８は、グローバル資源予約デーモン間で送受信される資源予約要求メッセージのデータ構造を示す説明図である。
【００６２】
図８を参照すると、資源予約要求メッセージは、送信元のコンピュータの送信元ノードＩＤ８０１（整数）、メッセージのサイズ８０２（整数）、メッセージタイプ８０３（整数）、資源の種類８０４（整数）、資源ＩＤ８０５（整数または文字列）を含む。たとえば、ｂｉｎｄ関数に対するメッセージは、図８（ａ）のようになる。ｆｏｒｋ，ｍｋｆｉｆｏ，ｓｅｍｇｅｔは、それぞれ図８（ｂ），（ｃ），（ｄ）のようになる。また、資源予約取り消し要求メッセージは、図８にメッセージタイプを２から３に置き換えたものである。
【００６３】
図９は、予約要求と予約取消要求に共通の応答メッセージのデータ構造を示す説明図である。
【００６４】
図９を参照すると、応答メッセージは、送信元のコンピュータの送信元ノードＩＤ９０１（整数）、メッセージのサイズ９０２（整数）、メッセージタイプ９０３（整数）、資源予約の成否９０４（整数）を含む。
【００６５】
次に、本実施例の資源解放時の動作について説明する。
【００６６】
ユーザプログラムから、ｋｉｌｌ，ｅｘｉｔ，ｃｌｏｓｅ，ｕｎｌｉｎｋ，ｓｅｍｏｐなどの資源解放関数を発行しようとすると、資源解放関数が呼ばれる代わりに、ユーザプログラムにリンクされたライブラリに含まれるラッパ関数が呼び出される（図４ステップＳ３０１）。ラッパ関数はＯＳが提供する資源解放関数を呼び出し、ローカルな資源（プロセス、ソケット、ＦＩＦＯ、セマフォなど）を解放する（図４ステップＳ３０２）。ＯＳが提供する資源解放関数の呼び出し結果が成功の場合は（図４ステップＳ３０３／Ｙ）、グローバル資源予約デーモンを呼び出してネットワーク２００で接続された別のコンピュータ上の資源の予約取消要求を行う（図４ステップＳ３０４）。この予約取消要求は、グローバル資源予約デーモンの内部向けソケットにラッパ関数からメッセージを送ることでグローバル資源予約デーモンに伝えられる。
【００６７】
解放に失敗した場合（図４ステップＳ３０３／Ｎ）、ラッパ関数はユーザプラグラムにＯＳが提供する資源解放関数のエラーを返す（図４ステップＳ３０９）。
【００６８】
呼び出されたグローバル資源予約デーモンは、資源予約取消要求を行うためのメッセージを作成し、ネットワーク２００に接続されたすべてのコンピュータのグローバル資源予約デーモンのデーモン間通信用ソケットに対して、メッセージをブロードキャストする（図４ステップＳ３０５）。予約取消要求メッセージの送信後、グローバル資源予約デーモンは自分のデーモン間通信ソケットに応答メッセージ到着するのを待ち、受信する（図４ステップＳ３０６）。さらに、受け取った応答メッセージの成否に関わらず、ラッパ関数に対し（内部向けソケットを通じて）成功を通知する（図４ステップＳ３０７）。
【００６９】
ラッパ関数は、グローバル資源予約デーモンから成功を受け取ると、資源解放関数を発行しようとしたユーザプログラムに対しＯＳが提供する資源解放関数の成功を返す（図４ステップＳ３０８）。
【００７０】
一方で、別のコンピュータでは以下の処理を行う。グローバル資源予約デーモンは自分のデーモン間通信ソケットから資源予約取消要求メッセージを受信すると（図３ステップＳ２０２）、メッセージタイプが資源予約取消要求であるので（図３ステップＳ２０３／資源予約取消要求メッセージ）、ＯＳが提供する資源解放関数を呼び出して指定された資源を解放する（図３ステップＳ２０８）。資源解放の成否に応じて（図３ステップＳ２０９）、成功、あるいは、失敗を知らせる応答メッセージを要求元のコンピュータのグローバル資源予約デーモンのデーモン間通信用ソケットに送信する（図３ステップＳ２１０、Ｓ２１１）。
【００７１】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。
【００７２】
本発明の第２の実施の形態は、グローバル資源予約要求部１１２から別のノードの資源予約の失敗が返された場合に、本発明の第１の実施の形態の資源管理部１１１の代わりに、再度、ローカルな資源を取得し、グローバル資源予約要求部１１２に対しその資源の予約を要求する第２の資源管理部１１４を有する点が、本発明の第１の実施の形態と異なる。なお、本発明の第２の形態の構成は、資源管理部１１１を第２の資源管理部１１４に置き換えるだけなので、図１と同一である。
【００７３】
次に、本発明の第２の実施の形態の動作について図面を参照して説明する。
【００７４】
図１０は、本発明の第２の実施の形態の資源取得時の動作を示すフローチャートである。
【００７５】
本発明の第２の実施の形態の動作は、一部を除いて、本発明の第１の実施の形態の動作と同様であるため、相違点である資源取得時の動作において、第２の資源管理部１１４が、グローバル資源予約要求部１１２から資源予約失敗の通知を受け取った場合の動作、すなわち、図１０ステップＳ１０１１以降の動作についてのみ、詳細に説明する。
【００７６】
資源取得時においては、図１０を参照すると、第２の資源管理部１１４は、失敗を受け取った場合は（図１０ステップＳ１０１０）、失敗回数が上限値ＦＭＡＸを超えてない限り（図１０ステップＳ１０１１／Ｎ）、再度、ローカルな資源１２０を取得する（図１０ステップＳ１００２）。このとき、資源に関わるＩＤは以前と異なるものになっていることが期待される。指定された資源を取得できた場合は（図１０ステップＳ１００３／Ｙ）、一度目の資源取得時と同様にグローバル資源予約要求部１１２を呼び出して（図１０ステップＳ１００４）、ネットワーク２００で接続された別のコンピュータ上の資源の予約要求を行う（図１０ステップＳ１００５）。
【００７７】
失敗回数が上限値ＦＭＡＸを超えた場合は（図１０ステップＳ１０１１／Ｙ）、すでに取得済みの資源をすべて解放したのち（ステップＳ１０１２）、資源取得要求を行ったユーザプログラムに対し資源取得が失敗ことを通知する（ステップＳ１０１３）。
【００７８】
本発明の第２の実施の形態では、本発明の第１の実施の形態と異なり、ネットワーク２００に接続された他のいずれかのコンピュータで資源のＩＤの予約に失敗した場合でも、別のＩＤを持つ資源を自動的に取得し直す。このため、本発明の第１の実施の形態よりも、資源の予約に成功する可能性を大きくし、かつ、資源取得の失敗を減らすことができる。
【００７９】
次に、本発明の第２の実施の形態の実施例について説明する。
【００８０】
図１０の資源取得のフローチャートは以下のような手順に置き換えられる。ここでも、第１の実施の形態との相違点である資源取得時の動作において、ラッパ関数がグローバル資源予約デーモンから資源予約失敗の通知メッセージを受け取った場合の動作すなわち、ステップＳ１０１１以降の動作についてのみ、詳細に説明する。
【００８１】
資源取得時において、ラッパ関数は、グローバル資源予約デーモンから成功のメッセージを受け取ると、失敗回数がＦＭＡＸを超えていない限り（図１０ステップＳ１０１１／Ｎ）、再度、ＯＳが提供する資源取得関数を発行し資源を取得する（図１０ステップＳ１００２）。さらに、取得した資源のＩＤを予約するためにグローバル資源予約デーモンを呼び出す（ステップＳ１００４）。失敗回数がＦＭＡＸを超えた場合は（図１０ステップＳ１０１１／Ｙ）、ＯＳが提供する資源解放関数（ｋｉｌｌ，ｃｌｏｓｅ，ｕｎｌｉｎｋ，ｓｅｍｏｐなど）を呼び出してすでに取得した資源を解放したのち（図１０ステップＳ１０１２）、資源取得要求を行ったユーザプログラムに対しＯＳが提供する資源予約関数が本来返すべき、資源取得失敗のエラーを返す（図１０ステップＳ１０１３）。
【００８２】
別のコンピュータの処理は、本発明の第１の実施の形態の実施例と同様である。
【００８３】
なお、ラッパ関数からグローバル資源予約デーモンに送られる資源の予約要求メッセージ、グローバル資源予約デーモンからラッパ関数に返される通知メッセージ、グローバル資源予約デーモン間で送受信される資源予約要求メッセージ、応答メッセージは、本発明の第１の実施の形態の実施例と同様である。
【００８４】
次に、本発明の第３の実施の形態について説明する。
【００８５】
図１１は、本発明の第３の実施の形態の構成を示すブロック図である。
【００８６】
図１１を参照すると、本発明の第３の実施の形態は、第１の実施の形態のグローバル資源予約要求部１１２の代わりに、資源予約の要求時にその資源のＩＤや名前などを予約要求中資源テーブル１１７に記憶させる第２のグローバル資源予約要求部１１５を有するともに、グローバル資源予約受付部１１３の代わりに、予約要求中資源テーブル１１７を参照し、予約要求中の資源と受け取った予約要求が競合する場合には、コンピュータに付けられた優先度に従って資源予約を失敗させるかローカルな資源取得を失敗させるかを決定する第２のグローバル資源予約受付部１１６を有する点が第１の実施の形態と異なる。
【００８７】
これにより、第１のコンピュータから第２のコンピュータへの資源予約の要求と、第２のコンピュータから第１のコンピュータへの資源予約の要求とが、同じＩＤや名前の資源に関するもので、かつ、その予約要求がほぼ同時に出された場合に、第１のコンピュータ、および、第２のコンピュータの双方で資源予約に失敗するのを避けることが可能になる。
【００８８】
次に、本発明の第３の実施の形態の動作について説明する。
【００８９】
本発明の第３の実施の形態の動作は、一部を除いて本発明の第１の実施の形態の動作と同様であるため、相違点である資源取得時の動作における第２のグローバル資源予約要求部１１５、第２のグローバル資源予約受付部１１６の動作について、詳細に説明する。
【００９０】
図１２は、本発明の第３の実施の形態の動作を示すフローチャートである。
【００９１】
図１３は、本発明の第３の実施の形態の動作を示すフローチャートである。
【００９２】
まず、資源取得時の動作について説明する。図１２ステップＳ１１０４までは本発明の第１の実施の形態と同様であるので説明は省略する。
【００９３】
図１２を参照すると、呼び出された第２のグローバル資源予約要求部１１５は、まず、呼び出された資源の種類と資源のＩＤを予約要求中資源テーブル１１７に記録する（図１２ステップＳ１１０５）。次に、資源予約要求メッセージを作成し、ネットワーク２００に接続されたすべてのコンピュータにブロードキャストする（図１２ステップＳ１１０６）。予約要求メッセージの送信後、第２のグローバル資源予約要求部１１５は、他のすべてのコンピュータからの応答メッセージを待ち、受信する（図１２ステップＳ１１０７）。すべてのコンピュータから応答メッセージを受信したら、予約要求中資源テーブル１１７の該当するエントリを削除する（図１２ステップＳ１１０８）。
【００９４】
ネットワーク２００に接続されたすべてのコンピュータから予約成功の応答メッセージを受け取った場合は（図１２ステップＳ１１０９／Ｙ）、資源管理部１１１に成功を通知し（図１２ステップＳ１１０９）、少なくとも一つのコンピュータから資源予約失敗の応答メッセージを受け取った場合は、資源管理部１１１に失敗を通知する（図１２ステップＳ１１１２）。以降、資源管理部１１１が通知を受け取った後の動作は第１の実施の形態と同様である。
【００９５】
一方で、別のコンピュータでは以下の処理を行う。第２のグローバル資源予約受付部１１６は、資源予約要求メッセージを受信すると（図３ステップＳ１２０２）、メッセージタイプが資源予約要求であり（図１３ステップＳ１２０３／資源予約要求メッセージ）、予約要求中資源テーブル１１７を参照し、受け付けた資源予約要求メッセージと競合するエントリが存在しないかを調べる（ステップＳ１２０４）。調べ方は、（１）まず、資源の種類を比較し、（２）次に資源のＩＤを比較する。この両方が両方一致するエントリがあれば競合する要求であると判定される。予約要求中資源テーブル１１７に競合するエントリがなかった場合は（図１３ステップＳ１２０５／Ｎ）、資源を予約する（図１３ステップＳ１２０６）。
【００９６】
資源１２０の予約に成功した場合は（図１３ステップＳ１２０７／Ｙ）、予約成功を知らせる応答メッセージを要求側のコンピュータに送信する（図１３ステップＳ１２０８）。予約に失敗した場合は（図１３ステップＳ１２０７／Ｎ）、失敗を知らせる応答メッセージを要求側のコンピュータに送信する（図１３ステップＳ１２１１）。
【００９７】
競合するエントリがあった場合は（図１３ステップＳ１２０５／Ｙ）、資源予約要求メッセージに含まれるノードＩＤと自身のノードＩＤとを比較する（図１３ステップＳ１２０９）。なお、ネットワーク２００に接続されたコンピュータには、０以上の整数で表現されるコンピュータＩＤが重複なく付与されている。資源予約要求メッセージに含まれるノードＩＤが自身のノードＩＤよりも小さい場合は（図１３ステップＳ１２１０／Ｙ）、成功を知らせる応答メッセージを要求側のコンピュータに送信する（図１３ステップＳ１２０８）。資源予約要求メッセージに含まれるノードＩＤが自身のノードＩＤより小さくない場合は（図１３ステップＳ１２１０／Ｎ）、失敗を知らせる応答メッセージを要求側のコンピュータに送信する（図１３ステップＳ１２１１）。
【００９８】
本発明の第３の実施の形態では、本発明の第１の実施の形態と異なり、ネットワーク２００に接続された複数のコンピュータにおいて同じ種類で同じＩＤを持つ資源に対する取得要求が発生した場合でも、コンピュータ毎に資源予約の優先度を違えることで、どれか１つのコンピュータが資源を予約することができる。このため、本発明の第１の実施の形態の効果に加え、競合による資源予約の失敗を防ぎ、ひいては、資源取得の失敗を防ぐごとができる。
【００９９】
次に、本発明の第３の実施の形態の実施例について説明する。
【０１００】
図１４は、本発明の第３の実施の形態の実施例の構成を示すブロック図である。
【０１０１】
図１４を参照すると、本発明の第３の実施の形態の実施例は、複数のノードを含むクラスタシステムである。ここでは、ほぼ同時に同じ種類、同じＩＤを持つ資源が取得された場合の動作について説明する。２つのノードは、それぞれ、ノードＩＤ、３、６を割り当てられている（以下、それぞれをノード３、ノード６と呼ぶ）。まず、ノード３で資源種類が４、資源ＩＤが１２３の資源に対する取得要求がなされる。一方、ノード６でもほぼ同時に資源種類が４、資源ＩＤが１２３の資源に対する取得要求がなされる。この時点では、どちらのノードでも資源取得が成功する（図１２ステップＳ１１０２、Ｓ１１０３／Ｙ）。次に、どちらのノードでも第２のグローバル資源予約要求部１１５が呼び出され、図１４に示すように予約要求中資源テーブル１１７−３、予約要求中資源テーブル１１７−６に、それぞれ、エントリ１４０１、エントリ１４０３が書き込まれる（図１２ステップＳ１１０４、Ｓ１１０５）。
【０１０２】
さらに、ノード３、ノード６の第２のグローバル資源予約要求部１１５から、それぞれ、資源予約要求メッセージ１４１０、資源予約要求メッセージ１４１１が送信される（図１２ステップＳ１１０６）。
【０１０３】
ノード６は、資源予約要求メッセージ１４１０を受信し（図１３ステップＳ１２０２，Ｓ１２０３）、予約要求中資源テーブル１１７−６の各エントリとそのメッセージとを比較する（図１３ステップＳ１２０４）。この場合、資源予約要求メッセージ１４１０はエントリ１４０３と一致するので（図１３ステップＳ１２０５／Ｙ）、ノードＩＤの比較が行われる（図１３ステップＳ１２０９）。資源予約要求メッセージに含まれるノードＩＤ（＝３）＜自身のノードＩＤ（＝６）であるので（図１３ステップＳ１２１０／Ｙ）、ノード３に対して成功を知らせる応答メッセージが送信される（図１３ステップＳ１２０８）。
【０１０４】
一方、ノード３は、資源予約要求メッセージ１４１１を受信し、ノード６と同様の処理をするが、資源予約要求メッセージに含まれるノードＩＤ（＝６）＞自身のノードＩＤ（＝３）であるので（図１３ステップＳ１２１０／Ｎ）、ノード６に対しては失敗を知らせる応答メッセージが送信される（図１３ステップＳ１２１１）。この結果、ノード３では資源種類が４、資源ＩＤが１２３の資源の取得に成功するのに対し、ノード６では失敗する。
【０１０５】
本発明の第３の実施の形態は、本発明の第１の実施の形態に対して変形を施したものであるが、本発明の第２の実施の形態にも同様の変形を施すことが可能である。
【０１０６】
次に、本発明の第４の実施の形態について図面を参照して詳細に説明する。
【０１０７】
本発明の第４の実施の形態は、本発明の第１の実施の形態のグローバル資源予約要求部１１２の代わりに、ネットワーク２００で接続されたコンピュータのうち、ある特定のコンピュータにだけ資源予約要求メッセージ、資源予約要求取消メッセージを送信する第３のグローバル資源予約要求部１１８を有する点が、本発明の第１の実施の形態と異なる。これにより、ネットワーク２００に接続されたコンピュータを複数のグループに分割して、グループ毎に資源管理を適用することが可能になる。本発明の第４の実施の形態は、第１の実施の形態の構成を示す図１のグローバル資源予約要求部１１２を第３のグローバル資源予約要求部１１８で置き換えただけである。
【０１０８】
次に、本発明の第４の実施の形態の動作について説明する。
【０１０９】
本発明の第４の実施の形態の動作は、一部を除いて、本発明の第１の実施の形態の動作と同様であるため、相違点である第３のグローバル資源予約要求部１１８の動作について詳細に説明する。
【０１１０】
まず、資源取得時の動作について説明する。
【０１１１】
図１５は、本発明の第４の実施の形態の資源取得時の動作を示すフローチャートである。
【０１１２】
図１５において、ステップＳ１５０４までは、本発明の第１の実施の形態と同様であるので説明は省略する。図１５を参照すると、呼び出された第３のグローバル資源予約要求部１１８は、資源予約要求メッセージを作成し、さらに、メッセージを送信する先のコンピュータを決定する（図１５ステップＳ１５０５）。次に、この決定されたすべてのコンピュータに対してメッセージを送信する（図１５ステップＳ１５０６）。資源予約要求メッセージの送信後、第３のグローバル資源予約要求部１１８は送信時に決定したコンピュータからの応答メッセージを待ち、受信する（ステップＳ１５０７）。
【０１１３】
送信時に決定されたコンピュータのすべてから予約成功の応答メッセージを受け取った場合は（図１５ステップ１５０９／Ｙ）、資源管理部１１１に成功を通知し（図１５ステップＳ１５１０）、少なくとも一つのコンピュータから資源予約失敗の応答メッセージを受け取った場合は（図１５ステップＳ１５０９／Ｎ）、資源管理部１１１に失敗を通知する（図１５ステップＳ１５１３）。以降、資源管理部１１１が通知を受け取った後の動作は第１の実施の形態と同様である。
【０１１４】
また、別のコンピュータの処理も第１の実施の形態と同様である。ただし、図３の「図２Ｓ１０５から」は「図１５のＳ１５０６から」に、図３の「図２Ｓ１０６へ」は「図１５のＳ１５０７へ」に、置換する必要がある。
【０１１５】
次に、資源解放時の動作について図面を参照して説明する。
【０１１６】
図１６は、本発明の第４の実施の形態の資源開放時の動作を示すフローチャートである。
【０１１７】
図１６において、ステップＳ１６０４までは第１の実施の形態と同様であるので説明は省略する。図１６を参照すると、呼び出された第３のグローバル資源予約要求部１１８は、資源予約取消要求を作成し、さらに、メッセージを送信する先のコンピュータを決定する（図１６ステップＳ１６０５）。
【０１１８】
次に、この決定されたコンピュータすべてに対して資源予約取消要求メッセージをメッセージを送信する（図１６ステップＳ１６０６）。資源予約取消要求メッセージの送信後、第３のグローバル資源予約要求部１１８は、送信時に決定したコンピュータから応答メッセージを待ち、受信する（図１６ステップＳ１６０７）。第３のグローバル資源予約要求部１１８は応答メッセージが成功か失敗かに関わらず、資源管理部１１１に成功を通知する（図１６ステップＳ１６０８）。以降、資源管理部１１１が通知を受け取った後の動作は第１の実施の形態と同様である。
【０１１９】
また、別のコンピュータの処理も第１の実施の形態と同様である。ただし、図３の「図４Ｓ３０５から」は「図１６のＳ１６０６から」に、図３の「図４Ｓ３０６へ」は「図１６のＳ１６０７へ」に、置換する必要がある。
【０１２０】
本発明の第４の実施の形態では、本発明の第１の実施の形態と異なり、ネットワーク２００に接続された複数のコンピュータのうち一部のコンピュータにだけ資源予約要求メッセージを送信する。このため、本発明の第１の実施の形態の効果に加え、通信によるオーバヘッドを抑えることができ、かつ、高いスケーラビリティを実現できる。
【０１２１】
次に、本発明の第４の実施の形態の実施例について説明する。
【０１２２】
本発明の第４の実施の形態は、資源予約要求メッセージあるいは資源予約応答メッセージを送信する先のコンピュータ（以下、要求送信先コンピュータと呼ぶ）を決定する部分以外は、本発明の第１の実施の形態と同様である。したがって、要求送信先コンピュータを決定する方法について具体的に説明する。
【０１２３】
要求送信先コンピュータを決定する方法として、以下の式を用いる。
【０１２４】
（自ノードのノードＩＤ％３）＋３＊ｎ。
【０１２５】
（ｎは、０〜（全体のノード数−（自ノードのノードＩＤ％３））／３までの整数）。
【０１２６】
ここで、“％”は剰余を求める演算子、“＊”は積を求める演算子、“／”は商を求める演算子である。この例では、クラスタ全体を３つのグループに分割する。すなわち、ノードＩＤを３で割った余りが１になるグループ、２になるグループ、０になるグループである。たとえば、ノード１、ノード２、ノード３、ノード４、ノード５、ノード６から構成される場合、全体のノード数は、６であり、自ノードのノードＩＤが３の場合、ｎは、０〜（６−（３％３））／３までの整数、すなわち、０〜２までの整数（０，１，２）である。
【０１２７】
したがって、要求送信先ノードは０，３，６に決定される。ここで、ノード０は、存在しないので、無視され、ノード３は、自身であり要求送信先コンピュータとはならず、ノード６のみが要求送信先コンピュータとなる。
【０１２８】
次に、本発明の第５の実施の形態について説明する。
【０１２９】
本発明の第５の実施の形態は、本発明の第１〜第４の実施の形態の動作を示す図２〜図４、図１０、図１１〜図１３、図１５〜図１６の各ステップを手順として含む方法である。
【０１３０】
次に、本発明の第６の実施の形態について説明する。
【０１３１】
本発明の第６の実施の形態は、本発明の第５の実施の形態の動作の各手順をコンピュータに実行させるプログラムである。
【０１３２】
【発明の効果】
第１の効果は、プロセス・マイグレーションなどの手法を使って、あるコンピュータ上のプロセスを別のノードに移動しようとした場合に、移動先のコンピュータで資源の競合が起きてプロセスの実行が失敗するのを防ぐことができることである。
【０１３３】
その理由は、ネットワークで結合された複数のコンピュータのうちの一つで資源を取得する際に、ネットワークに接続された他のすべてのコンピュータでも、同じ資源のＩＤや名前などを予約するためである。
【０１３４】
第２の効果は、通信によるオーバヘッドを抑えることができ、かつ、スケーラビリティを向上できることである。
【０１３５】
その理由は、ネットワークに接続された複数のコンピュータのうち一部のコンピュータにだけ資源予約要求メッセージを送信するからである。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態の構成を示すブロック図である。
【図２】本発明の第１の実施の形態の資源管理部およびグローバル資源予約要求部の資源取得時の動作を示すフローチャートである。
【図３】本発明の第１の実施の形態のグローバル資源予約受付部の動作を示すフローチャートである。
【図４】本発明の第１の実施の形態の動作を示すフローチャートである。
【図５】本発明の第１の実施の形態を適用するシステムの構成を示すブロック図である。
【図６】本発明の第１の実施の形態の実施例のラッパ関数用資源予約要求メッセージを示す説明図である。
【図７】本発明の第１の実施の形態の実施例の通知メッセージを示す説明図である。
【図８】本発明の第１の実施の形態の実施例のグローバル資源予約デーモン間資源予約要求メッセージを示す説明図である。
【図９】本発明の第１の実施の形態の実施例の応答メッセージを示す説明図である。
【図１０】本発明の第２の実施の形態の動作を示すフローチャートである。
【図１１】本発明の第３の実施の形態の構成を示すブロック図である。
【図１２】本発明の第３の実施の形態の動作を示すフローチャートである。
【図１３】本発明の第３の実施の形態の動作を示すフローチャートである。
【図１４】本発明の第３の実施の形態の実施例を示すフローチャートである。
【図１５】本発明の本発明の第４の実施の形態の動作を示すフローチャートである。
【図１６】本発明の本発明の第４の実施の形態の動作を示すフローチャートである。
【符号の説明】
１００    コンピュータ
１１１    資源管理部
１１２    グローバル資源予約要求部
１１３    グローバル資源予約受付部
１１４    第２の資源管理部
１１５    第２のグローバル資源予約要求部
１１６    第２のグローバル資源予約受付部
１１７    予約要求中資源テーブル
１１８    第３のグローバル資源予約要求部
１２０    資源
２００    ネットワーク
５０１    ノード
５０２    ネットワークケーブル
５０３    ネットワークスイッチ
５１１    ＣＰＵ
５１２    メモリ
５１３    ＨＤＤ
５１４    ＮＩＣ
６０１    メッセージのサイズ
６０２    メッセージタイプ
６０３    資源の種類
６０４    資源ＩＤ
７０１    メッセージのサイズ
７０２    メッセージタイプ
７０３    資源予約の成否
８０１    送信元ノードＩＤ
８０２    メッセージのサイズ
８０３    メッセージタイプ
８０４    資源の種類
８０５    資源ＩＤ
９０１    送信元ノードＩＤ
９０２    メッセージのサイズ
９０３    メッセージタイプ
９０４    資源予約の成否
１１７−３    予約要求中資源テーブル
１１７−６    予約要求中資源テーブル
１４０１    エントリ
１４０３    エントリ
１４１０    資源予約要求メッセージ
１４１１    資源予約要求メッセージ
【図１】
2004258984.tif 000003
【図２】
2004258984.tif 000004
【図３】
2004258984.tif 000005
【図４】
2004258984.tif 000006
【図５】
2004258984.tif 000007
【図６】
2004258984.tif 000008
【図７】
2004258984.tif 000009
【図８】
2004258984.tif 000010
【図９】
2004258984.tif 000011
【図１０】
2004258984.tif 000012
【図１１】
2004258984.tif 000013
【図１２】
2004258984.tif 000014
【図１３】
2004258984.tif 000015
【図１４】
2004258984.tif 000016
【図１５】
2004258984.tif 000017
【図１６】
2004258984.tif 000018