JPH0277868A - 共用データの管理方法 - Google Patents

共用データの管理方法

Info

Publication number
JPH0277868A
JPH0277868A JP63228683A JP22868388A JPH0277868A JP H0277868 A JPH0277868 A JP H0277868A JP 63228683 A JP63228683 A JP 63228683A JP 22868388 A JP22868388 A JP 22868388A JP H0277868 A JPH0277868 A JP H0277868A
Authority
JP
Japan
Prior art keywords
lock
data processing
data
exclusive control
global
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.)
Granted
Application number
JP63228683A
Other languages
English (en)
Other versions
JP2685530B2 (ja
Inventor
Atsushi Nitta
淳 新田
Tetsuo Murakawa
哲夫 村川
Shigeru Yoneda
茂 米田
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP63228683A priority Critical patent/JP2685530B2/ja
Priority to US07/397,679 priority patent/US5251318A/en
Publication of JPH0277868A publication Critical patent/JPH0277868A/ja
Application granted granted Critical
Publication of JP2685530B2 publication Critical patent/JP2685530B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Memory System (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、複数のデータ処理装置が拡張記憶装置および
ファイル装置を共有する形態のマルチプロセサにおける
データベース共用方法に関し、特配データ資源の整合性
を保証しながら効率的なアクセスを行うための共用デー
タアクセス制御方法に関するものである。
〔従来の技術〕
複数のデータ処理装置が、主記憶を共用せずファイル装
置を共用する、いわゆる疎結合マルチプロセサシステム
において、共用データ資源に対するアクセスを制御する
方法としては、例えば、特開昭62−145349号公
報に記載されているように、複数のデータ処理装置を通
信装置で結合し、各々の共用データ資源ごとに定められ
た排他マスクのデータ処理装置上のロックマネジャにロ
ック要求を送信して排他制御を行う方法が知られている
。また、上記公知例では、あるデータ処理装置が故障し
た場合、故障したデータ処理装置がマスクであった共用
データ資源に関して、別個のデータ処理装置が新たなマ
スクとなってシステムの運転を続行する方法が示されて
いる。
疎結合マルチプロセサにおいて、データ処理装置間の通
信により共用データ資源の排他制御を実現する第2の方
法は、特開昭58−172764号公報に記載されてい
る。この公知例では、ロックマネジャは、ロック要求を
データ処理装置間で回覧し、全データ処理装置の過半数
の承認が得られた時点でそのロック要求を有効とする多
数決方式によってデータ処理装置間での排他制御を行っ
ている。
また、複数データ処理装置間の排他制御を実行するため
の特別の制御装置を設ける方法が特開昭59−8174
8号公報に記載されている。この第3の公知例では、各
データ処理装置は、上記特別の制御装置に対してロック
またはアンロック命令を発行する。この方法では、排他
制御をデータ処理装置とは別の単一の制御装置によって
行うため、データ処理装置の排他制御オーバヘッドを削
減でき、また複数データ処理装置にまたがったデッドロ
ックの検出を容易に行える。
〔発明が解決しようとする課題〕
疎結合マルチプロセサにおいて、共用データ資源に対す
るアクセスの排他制御を行う場合、最大の問題となるの
は通信オーバヘッドである。上記第1および第2の公知
例においては、通信装置で結合されたデータ処理装置間
の排他制御情報の通信オーバヘッドが、また第3の公知
例においては、データ処理装置と排他制御用の専用制御
装置との間の排他制御情報の通信オーバヘッドがそれぞ
れ問題となる。また、上記第1および第2の公知例にお
いては、ロックの待ちを各データ処理装置で分散して管
理するため、データ処理装置間にロック待ちのループが
またがったようないわゆるグローバルデッドロックを検
出するためには、ロック待ちの情報をデータ処理装置間
でやりとりしなければならず、大きな通信オーバヘッド
が発生する。
また、上記第1の公知例においては、データ処理装置が
故障して別のデータ処理装置にマスク権限を委譲する場
合に、ロックマネジャ間での通信が必要となる。また、
各々のサブシステムは、ファイル装置へのアクセス回数
を削減するためにバッファプールを設けてバッファリン
グを行っているが、それらのバッファプール中に記憶さ
れるデータの整合性を保持するために、サブシステム間
でデータの更新発生の同期をとる通信が必要となる。
さらに、共用のファイル装置が故障した場合、各々のサ
ブシステムがデータの更新を記録したジャーナル情報を
時系列に並べて、ファイル内容のバックアップコピーと
マージする必要があるが、全サブシステムに共通の一意
的な時系列順を与えるためにデータ処理装置間の通信が
必要となる。上記第3の公知例においては、ロック情報
を特別の制御装置で集中して管理するため、上記の余分
な通信オーバヘッドはかなり削減されるが、特殊なハー
ドウェアが必要であり、この制御装置がシステム全体の
性能、信頼性、拡張性および経済性のボトルネックとな
る可能性がある。
また、主記憶−2次記憶という従来のコンピュータシス
テムの記憶階層に加えて、主記憶とほぼ同列に位置し、
かつ複数データ処理装置間で共用可能な拡張記憶装置が
実現されるようになってきた。拡張記憶装置は、コンピ
ュータシステムで一般的に使用可能な記憶装置であり、
経済性も高い。
しかし、上記公知例においては、この共用の拡張記憶装
置の使用方法については何も述べられていない。
本発明の目的は、拡張記憶装置を共用するような疎結合
マルチプロセサ環境において、共用データ資源に対する
複数のサブシステムからのアクセスの制御を、共用され
た拡張記憶装置を利用して効率よく実現し、かつ、シス
テムの各種の障害発生に対してデータの可用性をできる
だけ保持するようなアクセスの制御を実現する方式を提
供する上記目的を達成するために、本発明は、複数デー
タ処理装置がファイル装置に加えて拡張記憶装置を共用
するような疎結合マルチプロセサシステムでの共用デー
タ資源に対する複数サブシステムからのアクセスを管理
する方法において、個々の共用データ資源に関する排他
制御情報をデータ処理装置の主記憶上に保持するととも
に、クラスタリングされた共用データ資源に関する排他
制御情報を共用拡張記憶上に保持し、各データ処理装置
上のロックマネジャは、主記憶上の排他制御情報を使用
して自データ処理装置内でのサブシステム間の排他制御
を行うとともに、共用拡張記憶上の排他制御情報を使用
してデータ処理装置間での排他制御を行うことにより達
成される。
また、本発明は、ロックマネジャがサブシステムからの
ロック要求を受け付けると、上記主記憶上の排他制御情
報を参照してデータ処理装置間の排他制御が必要かどう
かを判断し、もし必要であれば共用拡張記憶上の排他制
御情報を操作してデータ処理装置間でのロックを確保し
た後に主記憶上の排他制御情報を操作してサブシステム
にロックを与え、もし必要でなければ主記憶上の排他制
御情報を操作してサブシステムにロックを与えることに
特徴がある。
また、本発明は、ロックマネジャが主記憶および共用拡
張記憶上の排他制御情報を参照して、複数データ処理装
置にまたがったデッドロック発生の可能性を検出し、デ
ッドロック発生の可能性がある場合には、関連するデー
タ処理装置に連絡を行って実際にデッドロックが発生し
ているかを確認することにより複数データ処理装置間で
のデッドロックを検出することに特徴がある。
また、本発明はロックマネジャが、システムに各種の故
障が発生した場合、主記憶および共用拡張記憶上の排他
制御情報を使用して、データ資源の整合性を保持するよ
うに、選択的にデータ資源をアクセス禁止にすることに
特徴がある。
また、本発明は、サブシステムは各々、共用データ資源
へのアクセスを実行するためのバッファマネジャとバッ
ファプールを備え、ロックマネジャおよびバッファマネ
ジャは、サブシステムが実行したデータ資源に対する更
新の発生を主記憶および共用拡張記憶上の排他制御情報
を利用して他サブシステムに通知してバッファプール内
容の整合性を保持することに特徴がある。
さらに、本発明は、共用拡張記憶上に全サブシステムに
よって参照および更新されるカウンタを設け、サブシス
テムは各々そのカウンタ値をジャーナルレコードに記憶
することにより、そのカウンタ値をキーとして複数サブ
システムが取得したジャーナルレコードを時系列に並べ
ることに特徴がある。
〔作用〕
共用のデータ資源を管理するために制御情報をメツセー
ジとして連絡し合う方法では、各種の制御情報メツセー
ジを組立てて送受信する処理に大きなオーバヘッドがか
かる。これに対し、拡張記憶は主記憶と同様に命令プロ
セサから高速に同期アクセス可能な記憶装置であり、拡
張記憶上に配置された制御情報を操作することは高速か
つ容易に実行できる。一方、共用された拡張記憶に対す
るアクセスオーバヘッドは、2次記憶に対するものより
もはるかに小さいが、主記憶に対するものよりは多少大
きく、また、主記憶アクセスは、ビット、バイト、また
はワード単位に自由に行えるのに対して、拡張記憶アク
セスはブロック単位であるという制限がある。したがっ
て、シングルプロセサ環境で主記憶上に配置されていた
ロックマネジャの制御テーブルを共用拡張記憶に配置し
、が使用するようにしたのでは、拡張記憶アクセスオー
バヘッドがかさみ、効率良いデータの管理を実現できな
い可能性がある。
本発明では、共用のデータ資源をクラスタリングし、個
々のデータ資源に関する排他制御情報(ローカルロック
管理テーブル)を主記憶に配置して細かな排他制御(ロ
ーカルロック)を行うとともに、クラスタリングされた
データ資源をひとまとまりとして扱い、拡張記憶上には
そのクラスタ対応の情報(グローバルロック管理テーブ
ル)だけを保持して少い粗い排他制御(グローバルロッ
ク)を行うことにより拡張記憶への不必要なアクセスの
増加をおさえているので、各データ処理装置上のロック
マネジャは、自データ処理装置の主記憶上のローカルロ
ック管理テーブルと拡張記憶上のグローバルロック管理
テーブルだけをアクセスすればよく、グローバルロック
の待ちが発生した場合だけデータ処理装置間での通信を
行い、通信オーバヘッドは大きく削減される。
また、各ロックマネジャは主記憶上のローカルロック管
理テーブルを参照して自データ処理装置内で発生してい
るロック待ちの詳細情報を把握するとともに、共用拡張
記憶上のグローバルロック管理テーブルを参照してデー
タ処理装置間のロック待ちの概要情報を獲得して、デー
タ処理装置にまたがったグローバルデッドロック発生の
可能性を確立よく判断できる。これにより、グローバル
デッドロックが実際に発生している事を確実に判定する
ためにデータ処理装置間で行うロック待ち情報の通信が
、不必要に発生することを防止できる。
また、システムに各種の障害が発生した場合、各ロック
マネジャは他のデータ処理装置上のロックマネジャと特
別な連絡を取り合う必要なく、自分の管理するローカル
ロック管理テーブルと共用のグローバルロック管理テー
ブルだけを参照して、自律的にデータ資源へのアクセス
制限を実行できる。これにより、障害対索処理が単純化
される。
また、主記憶上のローカルロック管理テーブルとバッフ
ァ管理テーブルを連携させることにより同−データ処理
装置内の複数サブシステム間でのバッファ内容の同期処
理を行うとともに、拡張記憶上のグローバルロック管理
テーブルを利用してデータ資源の更新を記憶し、各ロッ
クマネジャはこの情報を参照して自データ処理装置上の
バッファ内容の有効性を判断することにより複数データ
処理装置間でのバッファ内容の整合性を保証している。
この方法では、データ処理装置間の通信は不要であり、
オーバヘッドが少ない。
また、共用の拡張記憶上に設けられたカウンタを全サブ
システムが参照および更新し、その内容をサブシステム
が取得するジャーナルレコード中に記録することにより
、そのカウンタ値をキーとして複数サブシステムのジャ
ーナルレコードを一意的な時系列順に並べることが容易
にできるようになる。この方法では、ジャーナルレコー
ド取得時に、時系列順の判断に用いるキー情報を獲得す
るためのデータ処理装置間での通信は必要ない。
共用データ資源を記憶するファイル装置が故障した場合
は、このようにして並べられたジャーナルレコードとフ
ァイル装置のバックアップコピーとをマージしてファイ
ル内容を回復すればよい。
〔実施例〕
以下、本発明の実施例を図面により詳細に説明する。
本発明は、拡張記憶および2次記憶を共用する疎結合マ
ルチプロセサにおいて、共用データ資源に対するアクセ
スを制御する方法を提供する。第1の実施例においては
、複数データ処理装置間の排他制御を行うロックマネジ
ャの仕組みを示し、システムに各種の障害が発生した場
合の処理を合わせて記載する。第2の実施例では、第1
の実施例で記載するロックマネジャと各サブシステムの
バッファマネジャやジャーナルマネジャを組合せた処理
を述べる。
(1)第1の実施例 本発明の第1の実施例であるコンピュータシステムのブ
ロック図を第1図に示す。第1図においては、通信装置
10で結合された複数のデータ処理装置20.30が、
拡張記憶装置40およびフフィル装置50を共用してい
る例が示されている。
各々のデータ処理装置は、共用データ資源をアクセスす
るサブシステム21〜22.31〜32、ロックマネジ
ャ23,33、およびローカルロック管理テーブル24
.34を含む。また、共用の拡張記憶装置40上には、
グローバルロック管理テーブル41が配置される。ロー
カルロック管理テーブルとグローバルロック管理テーブ
ルの内容と使いかたは後述する。共用のデータ資源は、
共用の拡張記憶装置40または共用のファイル装置50
上に保持される。第1図では、2台のデータ処理装置と
4つのサブシステムからなるシステムの構成が示されて
いるが、さらに多くのデータ処理装置や、さらに多くの
(もしくは少ない)サブシステムからなるシステムであ
ってもかまわない。
また、各データ処理装置は、共用しない拡張記憶装置や
ファイル装置を備えていてもよい。これらの拡張装置間
で共用されないデータ資源が配置される。また、本実施
例においては、通信袋W10は任意のデータを伝送でき
る複雑な装置である必要はなく、他データ処理装置に単
純なコードを連絡できる程度のものでよい。共用の拡張
記憶装置40上にデータ処理装置間のメールボックスを
設け、そこにメツセージを格納するようにすれば、その
ような簡単な通信装置しかなくてもデータ処理装置間で
任意のデータをやりとりできる。
ロックマネジャ23 (33)は、データ処理装置対応
に1つ存在し、自データ処理装置上で動作するサブシス
テム21および22(31および32)からのロック要
求、アンロック要求を受け付け、自データ処理装置の主
記憶上に保持されたローカルロック管理テーブル24 
(34) 、および共用の拡張記憶上に保持されたグロ
ーバルロック管理テーブル41を操作して排他制御を行
う。
ロックマネジャに対してロック要求、アンロック要求を
実際に発行するのは、各サブシステムの管理下で実行さ
れるトランザクションである。各々のトランザクション
は、共用データ資源を使用する前にロックマネジャに対
してロック要求を出し、ロックが確保できると該データ
資源へのアクセスを行い、該データ資源の利用が不要に
なるとアンロック要求を発行してデータの使用権を放棄
する。
各々のデータ処理装置、サブシステム、および共用デー
タ資源には、システム内で一意の識別子が付与される。
また、サブシステムの管理下で動作するトランザクショ
ンには、サブシステム内で一意の識別子が付けられてお
り、この識別子とサブシステムの識別子を組合せること
により、システム内で一意の識別子を組合せることによ
り、システム内で一意の識別子が構成できる。ここで、
サブシステムに対してデータ処理装置内で一意でなく全
システム内で一意の識別子を与えるのは、サブシステム
は複数のデータ処理装置上で実行される可能性があるた
めである(もちろん、同時には1つのデータ処理装置上
でしか実行されない)。
このようなことは、例えば、あるデータ処理装置が故障
して、その上で実行されていたサブシステムを予備のデ
ータ処理装置で実行するような場合に起こりうる。
ローカルロック管理テーブル24 (34)の内容を第
2図に示す。マスク管理テーブル100は、各テーブル
を検索する場合のアンカとなるテーブルであり、ロック
マネジャ対応に1つ設けられる。
サブシステムテーブル110は、自データ処理装置上で
動作するサブシステムを表現するものであり、マスク管
理テーブルからポイントされる。各サブシステムの管理
下で動作するトランザクションは、トランザクションテ
ーブル121,122により表現される。トランザクシ
ョンテーブルは、サブシステムテーブルからのポインタ
チェーンにつながれる。
共用データ資源は、2段階にクラスタリングされる。最
初のクラスタリングは、そのデータ資源の運用上の特性
に応じてユーザがシステム定義で分類基準を与えるもの
であり、各クラスタ(資源クラスと呼ぶ)対応に資源ク
ラステーブル130が設定される。2段目のクラスタリ
ングは、資源名称をキーとしたハツシングによって行わ
れ、同一のハツシュ値を持つデータ資源が1つのクラス
タ(ハツシュクラスと呼ぶ)となり、ハッシュクラステ
ーブル141,142で表現される。資源クラステーブ
ルはマスク管理テーブル100からポイントされ、ハツ
シュクラステーブルは資源クラステーブル130中のポ
インタアレイの1つによってポイントされる。また、個
々の共用データ資源は、資源テーブル151〜152で
表される。
この資源テーブルは、各々が属するハツシュクラステー
ブルからのポインタチェーンにつながれる。
クラスタリングを多段にするのは、大容量共用データ資
源の運用上、その方が好都合だからである。
クラスタリングがハツシングによる1段だけであると、
例えば、個別のファイル装置上に配置されたデータ資源
が同一のハツシュクラスにクラスタリングされてしまい
、ハツシュクラス単位の操作を行う場合にファイル装置
間の不必要な干渉が発生してしまう可能性がある。その
ようなサイドエフェクトを排除することは、特別の工夫
を施したハツシュ関数を使用してクラスタリングを行う
ことによっても可能であるが、多段のクラスタリングを
行う方がより自然に実現できる。
それぞれのトランザクションによるロック要求は、ロッ
クテーブル161〜165によって示される。ここで、
ロックテーブルは、そのロック要求の処理状況に応じて
3つの状態を持つ。第1の状態は、「ロック保有j状態
であり、トランザクションがデータ資源に対するロック
を確保していることを示す。この状態のロックテーブル
は、資源テーブルからのロック保有チェーンにつながれ
る。第2の状態は、「ローカルロック待ち」状態であり
、自データ処理装置内の他トランザクションのロック解
放を待っていることを示す。この状態のロックテーブル
は、資源テーブルからのローカルロック待ちチェーンに
つながれる。第3の状態は、「グローバルロック待ち」
状態であり、他データ処理装置上のトランザクションの
ロック解放を待っていることを示す。この状態のロック
テーブルは、ハツシュクラステーブルからのグローバル
ロック待ちチェーンにつながれる。あるトランザクショ
ンが複数のロックを確保していることは、トランザクシ
ョンテーブルからのポインタチエージにつながれたロッ
クテーブルによって表現される。第2図では、トランザ
クションt1が、ロックテーブル161,162,16
3によって表現されるロック要求を行い、トランザクシ
ョンt2がロックテーブル164,165によって表現
されるロック要求を行っている例が示されている。ここ
でロックテーブル162,163゜165は「ロック保
有」状態、ロックテーブル164は「ローカルロック待
ち」状態、ロックテーブル161は「グローバルロック
待ち」状態である。
共用データ資源に対するロックの確保は、グローバルロ
ックの確保とローカルロックの確保という2段階の手続
きで行われる。グローバルロックは、複数データ処理装
置間の排他制御を行うためのロックであり、ロックは、
ハツシュクラス単位に、データ処理装置に対して与えら
れる。これに対して、ローカルロックは、1つのデータ
処理装置内での複数トランザクション間の排他制御を行
うためのロックであり、ロックは、個々の資源単位にト
ランザクションに対して与えられる。共用資源に対する
ロックを確保する場合は、まずロック対象資源の属する
ハツシュクラスのグローバルロックを自データ処理装置
について確保し、次にその資源のローカルロックを自ト
ランザクションについて確保するという手順が実行され
る。自データ処理装置が既にロック対象ハツシュクラス
のグローバルロックを保有している場合には、新たにグ
ローバルロックを確保しにゆく必要はなく、ローカルロ
ックの確保から実行すればよい。
第3図は、共用の拡張記憶上に保持されたグローバルロ
ック管理テーブルを示している。拡張記憶は、主記憶と
拡張記憶の間でのデータ転送を実行する処理装置命令に
よってそれぞれのデータ処理装置から直接読み書き可能
であり、そのデータ転送は、ブロック単位に行われる(
ブロックのサイズは個々のハードウェア仕様による)。
拡張記憶へのアクセスは、主記憶に対するアクセスより
は遅いが、2次記憶(例えば磁気ディスク装置など)に
対するアクセスよりははるかに速いという特性を持って
いる。従って、グローバルロック管理テーブルを主記憶
上のローカルロック管理テーブルと同様に設計して頻繁
なアクセスを行うと、システム全体の性能が低下する恐
れがある。本実施例では、グローバルロック管理テーブ
ルをポインタチェーンのない単純な配列構造とし、クラ
スタ化されたデータ資源(ハツシュクラス)対応にエン
トリを設けることにより、拡張記憶に対する不必要なア
クセスの増大を防いでいる。
拡張記憶の1ブロツク200内には、複数のグローバル
ロック管理テーブルエントリ210が配置される。グロ
ーバルロック管理テーブルエン1〜りは、対応するハツ
シュクラスのハツシュ値の順に並べられている。各ロッ
クマネジャは、自データ処理装置の主記憶上に、ハツシ
ュクラスと拡張記憶ブロックの対応表を持っており、こ
れによって目的のグローバルロック管理テーブルエン1
ヘリを含むブロックのアドレスを求め、そのブロックを
主記憶に転送して操作を行う。各々のグローバルロック
管理テーブルエントリ2 ]、 Oは、第4図に示され
るように、a)対応するハツシュクラスに関してどのデ
ータ処理装置がどのモードのロックを保有しているかを
示すロック占有マツプのフィールド211と、b)グロ
ーバルロック確保を持っているデータ処理装置のキュー
を作成するためのフィールド212を含む。このキュー
は、ロック要求元のデータ処理装置を示すフィールドと
要求ロックモードを示すフィールドのペアの配列で表現
される。グローバルロックテーブルエントリの内容は、
本実施例で示したもの以外でも、グローバルロックの占
有と待ちを表現するものであれば何でもよい。
本実施例における、ロックモード両立性の一覧を第5図
に示す。ここで、ロックモードの両立性とは、異なるト
ランザクションから同一のロック対象に要求された2つ
のロックが同時に許可可能であるかをいう。2つのロッ
クが両立しない場合には、後から行われたロック要求が
待たされる。
第5図において、Q印は2つのロックモードが両立する
(即ち、同時にロック許可が可能である)ことを示し、
X印は2つのロックモードが背反である(同時にはロッ
クを許可不可能である)ことを意味している。また、第
6図にロックモードの包含性の一覧を示す。ここで、2
つのロックモード間での包含性とは、一方のロックモー
ドで許可されるデータへのアクセス権限が他方のロック
で許可されるアクセス権限に含まれるかどうかをし、)
う。あるデータ資源に対して既にロックを確保している
トランザクションが、同じデータ資源に対して再度ロッ
ク要求を行った場合、新たに要求したロックのモードが
既に確保したロックのモードに包含されるならば、新た
なロック要求は即時に許可されるが、そうでなければ新
たなロック要求は拒否される。後者の場合は、ロックマ
ネジャは新たなロック要求を取り消すか、もしくは、既
に確保しているロックと新たに要求されたロックをとも
に包含するモードのロック確保処理を試行する。第6図
において、O印はロックモードの包含関係が成立するこ
とを、X印は包含関係が成立しないことを示している。
ロックモードは、ここで示した以外のものを使用しても
よく、また、矛盾を引き起こさない範囲で、ローカルロ
ックとグローバルロックで別途のロックモード体系を採
用することも可能である。
以降では、ロック処理とアンロック処理を流れ図に従っ
て詳細に説明してゆく。説明は、ローカルロックとグロ
ーバルロックに分けて行う。なお、流れ図の説明におい
ては、記述が必要以上に複雑になるのを避けるため、細
かな例外処理等を省略しである。
(1−1)ローカルロック確保 第11図は、ローカルロック処理の流れである。
トランザクションがロックマネジャに対してロック要求
を発行すると、まずこのローカルロック処理が起動され
る。ここで、ローカルロック要求の入力パラメタは、ロ
ック対象のデータ資源名称とロックモードおよびロック
要求トランザクションに対応するトランザクションテー
ブルである。ロックマネジャは、ローカルロック要求を
受け付けると、そのロック要求に対応したロックテーブ
ルを作成してトランザクションテーブルからのチェーン
につないだ後(ステップ1101)、後述するグローバ
ルロック処理をコールする(ステップ1102)。次に
、グローバルロック処理の出力で指定されるハツシュク
ラステーブルよりチェーンされる資源テーブルのポイン
タチェーンをたどって、ロック対象データ資源に対応す
る資源テーブルが既に作られているかを確認しくステッ
プ1103.1104)、なければ新たに作成してチェ
ーンにつなぐ(ステップ1105)。ロック対象データ
資源に他のロックがかけられていないか、または、今回
のロック要求と両立するロックしかかけられていない場
合は、今回のロック要求は許可可能であり、ロックテー
ブルを資源テーブルからのロック保有チェーンにつない
で要求元ヘリターンする(ステップ1106.1108
)。
既に当該データ資源に今回の要求ロックモードと背反の
ロックがかけられている場合は、ロックテーブルを資源
テーブルからのローカルロック待ちチェーンにつないで
、ロック占有トランザクションからのローカルロック解
放連絡を待つ(ステップ1107)。上記ローカルロッ
ク処理は、ステップ1002でグローバルロック処理を
コールすることを除けば、一般のロック処理とほぼ同じ
である。また、ロックが即時に確保できない場合の処理
や、ロック要求トランザクションが当該データ資源に対
するロックを既に保有している場合の処理などの例外処
理は、例えばロック待ちとせずエラーリターンするとか
いった各種のバリエーションが考えられるが、それらは
本発明に関して本質的ではないため説明を割愛する。
(1−2)ローカルロック解放 第12図に、ローカルアンロック処理の流れを示す。ロ
ーカルロック処理と同じく、トランザクションからのア
ンロック要求が発生すると、まずこのローカルアンロッ
ク処理が実行される。ローカルアンロック処理の入力パ
ラメタは、アンロック対象を一意に指定するものであり
、例えば、データ資源の名称とトランザクションテーブ
ルであり、また、ロックテーブル自体のアドレスを直接
指定してもよい。ロックマネジャは、この入力パラメタ
の指定よりアンロック対象のロック要求に対応するロッ
クテーブルを見つけ、それを資源テーブルからのロック
保有チェーンよりはずし、同時にロックテーブルをトラ
ンザクションテーブルからのチェーンより外してロック
テーブルを解放する(ステップ1201)。次に、アン
ロック対象データ資源からのローカルロック待ちチェー
ンを調べ(ステップ1202)、今回のアンロックによ
ってロック許可可能となるロック要求があればそのロー
カルロック要求の待ちを解除しくステップ1207)、
その後要求元にリターンする。
ここで解除するローカルロック待ちは、ローカルロック
処理で説明した、第11図のステップ1107で発生し
たものである。今回のアンロック処理によって当該デー
タ資源に対するローカルロックが全て解放された、すな
わち資源テーブルからの保有ロックチェーンが空になっ
たならば、その資源テーブルを解放する(ステップ12
03゜1204、 )。また、上記資源テーブルの解放
によって、当該データ資源と同一のハツシュクラスに属
するデータ資源の資源テーブルが全て解放された、すな
わちハツシュクラステーブルからの資源テーブルチェー
ンが空になったならば、グローバルアンロック処理をコ
ールする(ステップ1205.1206)。ステップ1
203において当該データ資源にまだ他のローカルロッ
クが残っている、または、ステップ1205において当
該ハツシュクラスに属する資源テーブルがまだ残ってい
る場合は、グローバルアンロック処理をコールせずにそ
のままリターンする。このローカルアンロック処理も、
ステップ1206で行うグローバルアンロック処理コー
ルを除けば、はぼ一般のアンロック処理と同じである。
(1−3)グローバルロック確保 グローバルロック処理の流れを第13図と第14図に示
す。グローバルロック処理は、ローカルロック処理中か
らコールされ(第11図のステップ1102)、その人
力パラメタは、ロック対象ハツシュクラスのハツシュ値
とロックテーブルである。グローバルロックは、その対
象が個々のデータ資源ではなくハツシュクラスであり、
ロック保有主体がトランザクションではなくデータ処理
装置である点がローカルロックと異なる。グローバルロ
ック処理では、まずロック対象のハツシュクラステーブ
ルをサーチしくステップ1301)、テーブルがなけれ
ば新たに作成して資源クラステーブルからポイントする
(ステップ1302.1303)。ステップ1303で
ハツシュクラステーブルを新たに作成した時点では、ハ
ツシュクラスはロック許可可能状態である。次に、ロッ
ク対象ハツシュクラスがロック許可可能状態であるかを
確かめ(ステップ1304)、許可可能であれば、今回
のグローバルロック要求を包含するモードのグローバル
ロックを自データ処理装置が既に確保しているかを調べ
る(ステップ1305)。既に包含するグローバルロッ
クが確保されていればそのまま要求元にリターンし、自
データ処理装置がグローバルロックを確保していないか
、またはグローバルロックを確保しているがそのロック
モードが今回のグローバルロック要求を包含しない場合
は、必要なグローバルロックを獲得しにゆく。ステップ
1304のチエツクでロック許可不可能状態であれば、
グローバルロック待ちに入る(ステップ14.11 )
。このロック許可可能状態の設定および変更については
後述する。以上の説明かられかるように、自データ処理
装置が必要なグローバルロックを既に確保している場合
は、拡張記憶上のグローバルロック管理テーブルへのア
クセスは発生しない。
グローバルロックの獲得は、第14図のように行われる
。まず、ロック対象のハツシュクラスに対応するグロー
バルロック管理テーブルエントリを含む拡張記憶のブロ
ックを主記憶に転送しくステップ1401)、グローバ
ルロックが獲得可能かを調べる(ステップ1402)。
対象ハツシュクラスに他のデータ処理装置がグローバル
ロックをかけていない、または他のデータ処理装置が既
にグローバルロックをかけているがそのロックモードば
今回のグローバルロック要求と両立するものである場合
は、グローバルロック管理テーブルエントリ中の自デー
タ処理装置に対応する占有マツプをセットした後(ステ
ップ1403)、そのブロックを拡張記憶に書き戻す(
ステップ1404)。ステップ1402でロックモード
の両立性を調べるとき、獲得すべきロックモードは、今
回のグローバルロック処理のコールの原因となったトラ
ンザクションのロック要求だけによるものではなく、当
該ハツシュクラスに対してグローバルロック待ちになっ
ているロック要求を全て包含するようなロックモードで
ある。即ち、グローバルロック要求は、グローバルロッ
ク待ちになっている複数のトランザクションからのロッ
ク要求を1つにまとめた形で実行される。次に、主記憶
上のハツシュクラステーブルからチェーンされているグ
ローバルロック待ちのロックテーブルをチェーン先頭か
らたどり、順次グローバルロック待ちを解除してゆく(
ステップ1405)。グローバルロック管理テーブルエ
ントリ中のキューを調べ、キューが空である、すなわち
グローバルロック待ちの他データ処理装置が存在しなけ
れば、ハツシュクラスをロック許可可能状態にして(ス
テップ1406)要求元にリターンする。ステップ14
02において、他のデータ処理装置が既に今回のグロー
バルロック要求と背反のグローバルロックを確保してい
るならば、グローバルロックテーブルエントリ中のグロ
ーバルロック待ちキューに自データ処理装置の要求を設
定して(ステップ1407)、そのブロックを拡張記憶
へ書き戻す(ステップ1408)。それから、自データ
処理装置の主記憶上で対象ハツシュクラステーブルをロ
ック許可不可能状態にしくステップ1401)、ロック
テーブルをハツシュクラステーブルからのグローバルロ
ック待ちチェーンにつないで他データ処理装置のグロー
バルロック解放を待つ(ステップ1411)。ステップ
1406でグローバルロックテーブルエントリにキュー
情報を設定した時に、自データ処理装置がロック待ちの
先頭であれば、グローバルロック待ちが発生したことを
、グローバルロック占有中の他データ処理装置に連絡す
る(ステップ1409.1412) 6ステツプ141
1のグローバルロック待ちが解除されると、ロックマネ
ジャはステップ1305からグローバルロック獲得を再
試行する。ステップ1410でハツシュクラスをロック
許可不可能状態にするのは、自データ処理装置内で発生
するロック要求をFIF○(First  In Fi
rst 0ut)でサービスするためであり、今回のグ
ローバルロック要求よりも後で受け付けたグローバルロ
ック要求は、ロックモードの両立性の判定だけでは即時
に許可可能であっても、今回のグローバルロック要求が
満たされるまでは待ちとなる。
ステップ1412で送信したグローバルロック待ち発生
連絡を受信したデータ処理装置では、第16図に示すよ
うな処理を行う。まず、連絡メツセージ中で指定された
ハツシュクラスに対応するハツシュクラステーブルをサ
ーチして、そのハツシュクラスをロック許可不可能状態
とする(ステップ1601)。これにより、当該ハツシ
ュクラスに属するデータ資源に対してこのデータ処理袋
置内で発生するロック要求は全てグローバルロック待ち
となり、グローバルロックの不当な長期占有が防止され
る。ロック待ちメツセージ受信時点で、当該ハツシュク
ラスに属するデータ資源に対するローカルロックが存在
しない場合は、グローバルアンロック処理をコールする
(ステップ1602.1603)。このような場合は、
データ処理装置が、あるハツシュクラスに対するグロー
バルロックを獲得して後、そのハツシュクラスに属する
データ資源に関するローカルロックが全て解放されてし
まうまで、他のデータ処理装置から当該ハツシュクラス
に対するグローバルロック要求が生しなかった時に起こ
りうる。
(1−4)グローバルロック解放 第15図は、グローバルアンロック処理の流れ図である
。グローバルアンロック処理では、アンロック対象のハ
ツシュクラスが入力パラメタとなり、まず、ハツシュク
ラスのロック許可可能状態を調べる(ステップ1501
)。ハッシュクラスまま要求元ヘリターンする。これは
、当該ハツシュクラスに属するデータ資源に対して次回
のロック要求が発生したときに、グローバルロック確保
オーバヘッドを少なくするためである。ステップ150
1において、ロック許可不可能状態である、すなわち、
自データ処理装置もしくは他データ処理装置内で当該ハ
ツシュクラスに関するグローバルロック待ちが発生して
いる場合には、占有中のグローバルロックの解放を行う
。ロックマネジャは、グローバルロックの解放を行うた
め、解放対象のハツシュクラスに対応するグローバルロ
ック管理テーブルエントリを含む拡張記憶のブロックを
主記憶に転送しくステップ1502)、主記憶上で自デ
ータ処理装置のロック占有マツプをリセットしてからブ
ロックを拡張記憶へ書き戻う(ステップ1503.15
04)。このとき、グローバルロック管理テーブルエン
トリ中のキューを調べて、自データ処理装置のグローバ
ルロック解放でグローバルロック獲得が可能になった他
データ処理装置があれば、そのデータ処理装置へロック
解放連絡メツセージを送信する(ステップ1505.1
506)。また、自データ処理装置内で当該ハツシュク
ラスに対するグローバルロック待ちが発生していて、か
つそのグローバルロック要求が今回のグローバルロック
解放時点で獲得可能である場合には、グローバルロック
処理をコールする(ステップ1507.1509)。自
データ処理装置内でそのようなグローバルロック待ちが
ない場合は、ハツシュクラステーブルを解放して要求元
ヘリターンする(ステップ1508)。
ステップ1506で送信されたロック解放連絡メツセー
ジを受信したデータ処理装置での処理の流れを第17図
に示す。この場合、ロックマネジャは、グローバルロッ
クが解放されたハツシュクラスに対応するハツシュクラ
ステーブルのグローバルロック待ちチェーンを見て、チ
ェーン先頭の待ちを解除する(ステップ1701)。こ
の待ちは、グローバルロック処理中で発生したものであ
り(第14図のステップ1411)、 、待ちを解除さ
れたロック要求は、グローバルロック確保を再試行する
以上が、本実施例におけるロックおよびアンロック処理
の説明であるが、ローカルロックとグローバルロックの
関連のつけ方には、さまざまなバリエーションが考えら
れる。本実施例では、グローバルアンロック処理におい
て、他のデータ処理装置で当該ハツシュクラスに対する
グローバルロック待ちが発生していなければグローバル
ロックの解放を実行しないことにより、次回のグローバ
ルロック獲得のオーバヘッドを削減している。また、自
データ処理装置がグローバルロックを保有しているハツ
シュクラスに関して、他のデータ処理装置でグローバル
ロック待ちが発生した場合は、自ローカルロック管理テ
ーブル中のハツシュクラスをロック許可不可能状態とし
て自データ処理装置内からのグローバルロック要求を認
めないことによりグローバルロックの不当な長期占有を
防止している。この方法は、特にグローバルロック対象
となるハツシュクラスの分布がデータ処理装置ごとに分
離されている傾向のあるシステムにおいてグローバルロ
ックオーバヘッドを減らすのに有効である。これに対し
て、グローバルロックが頻繁にデータ処理装置間を移る
ようなシステムにおいては、本実施例におけるロック待
ち発生連絡を行わないことにより、データ処理装置間で
の通信オーバヘッドを削減する方法も考えられる。この
方法では、例えば、一定時間以上グローバルロックを占
有したとか、一定数以上のローカルロックを自データ処
理装置内で与えたとかいった指標を用いてハツシュクラ
スをロック許可不可能状態とすることにより、長時間占
有を防止する。また、本実施例のように、複数のトラン
ザクションからのロック要求をまとめてグローバルロッ
ク処理を行うのではなく、ローカルロック要求とグロー
バルロック要求を1対1に対応させる方法も考えられる
。これは、拡張記憶アクセスオーバヘッドと主記憶アク
セスオーバヘッドのギャップが小さい場合に採用でき、
ロックマネジャの処理を単純可することができる。
(1−5)デッドロック検出 ロックマネジャは、ローカルロック管理テーブルを走査
し、自データ処理装置内のトランザクション間での待ち
のループを検出することができる。
本発明のような複数データ処理装置がデータ資源を共用
してアクセスする環境では、このようなローカルデッド
ロックの他に、データ処理装置間にまたがった待ちのル
ープ(グローバルデッドロック)の検出が必要となる。
第7図にグローバルデッドロックの例を示す。
第7図では、データ処理装置1上で動作するトランザク
ションt1は、ハツシュクラスaに属するデータ資源a
1に対するローカルロックを保有し、ハツシュクラスb
に対するグローバルロック待ちとなっており、他方デー
タ処理装置2上で動作するトランザクションt2は、ハ
ツシュクラスbに属するデータ資源b1に対するローカ
ルロックを保有し、ハツシュクラスaに対するグローバ
ルロック待ちとなっている状態が示されている。第7図
において、123〜124はトランザクションテーブル
、143〜146はハツシュクラステーブル、153〜
154はデータ資源テーブル、166〜169はロック
テーブルである。このようなグローバルデッドロックを
検出するには、複数のロックマネジャの共同作業が必要
となる。
第18図に、グローバルデッドロック検出処理の流れ図
を示す。デッドロック検出処理は、一定時間おきに、ま
たは一定数以上のトランザクションがロック待ちとなっ
たときに、または他データ処理装置からの待ちグラフ受
信時に起動される。
デッドロック検出処理が起動されると、ロックマネジャ
は、自データ処理装置内のローカルロック管理テーブル
を走査して、トランザクションの待ちグラフを作成しく
ステップ1801)、その待ちグラフを簡約化する(ス
テップ1802)。他データ処理装置から待ちグラフを
受信して起動された処理の場合は、自データ処理装置内
の待ちグラフと受信した待ちグラフを合成してから簡約
化する。ここで、待ちグラフのデータ処理装置上での表
現方法と、グラフの簡約アルゴリズムは任意のものを使
用してよい。待ちグラフの簡約結果、待ちループが検出
されたならば、犠牲トランザクションを選択し、そのト
ランザクションにデッドロック連絡を行う(ステップ1
803.1804)。
ここで発見される待ちループには、ローカルデッドロッ
クとグローバルデッドロックの両方が含まれる。連絡を
受けたトランザクションは、ロールパック処理を行い、
占有しているデータ資源のロックを解放する。犠牲トラ
ンザクションの選択基準は任意のものを使用してよい。
また、選択された犠牲トランザクションが他データ処理
装置上で動作しているならば、そのデータ処理装置にデ
ッドロック発生を通知するメツセージの送信が必要であ
る。次に、待ちグラフ中にグローバルデッドロック候補
が存在しないかを確かめる(ステップ1805)。ここ
で言うグローバルデッドロック候補とは、他データ処理
装置を始点とし他データ処理装置を終点とする待ちの系
列で表現される待ちグラフであり、複数データ処理装置
にまたがった待ちループが発生している可能性のあるグ
ラフである。自データ処理装置上のトランザクションが
他データ処理装置上のトランザクションを待っているこ
とは、ハツシュクラステーブルからのグローバルロック
待ちチェーンの有無によってわかる。逆に、他のデータ
処理装置上のトランザクションが自データ処理装置上の
トランザクションを待っていることは、他データ処理装
置からのグローバルロック待ち発生連絡を受信した時点
でハツシュクラステーブルに記憶されている。このグロ
ーバルデッドロック候補が存在する場合は、拡張記憶上
のグローバルロック管理テーブルを参照して、どのデー
タ処理装置を待っているのかを調べ(ステップ18’0
6)、そのデータ処理装置に候補の待ちグラフを送信す
る(ステップ1807)。
グローバルロック待ちが発生していることはローカルロ
ック管理テーブルを走査すれば判るが、どのデータ処理
装置間で待ちが発生しているかはグローバルロック管理
テーブルを見ないと確定できない。もし、ローカルロッ
クテーブルだけでグローバルロック待ちの詳細情報を得
ようとすると、グローバルロック待ちの発生および解除
のたびごとにデータ処理装置間での連絡を行う必要があ
り、通信オーバヘッドが大きくなる。待ちグラフの受信
側では、グローバルデッドロック処理を起動する。ステ
ップ1803とステップ1805でデッドロックまたは
デッドロック候補を検出できなければ、グローバルデッ
ドロックは存在しないことになり、デッドロック検出処
理は完了する。グローバルデッドロックが発生している
場合は、複数のデータ処理装置でほぼ同時にデッドロッ
ク検出1処理が起動されると、各々のデータ処理装置で
グローバルデッドロック候補が検出され、データ処理装
置間の通信が必要以上に行われる場合がある。
これを防ぐには、例えば、データ処理装置に一意的な順
序関係を設定しておき、デッドロック候補の待ちグラフ
の連絡は、順序関係の先のデータ処理装置から後のデー
タ処理装置に向かってだけ行うようにすればよい。また
、本実施例では、グローバルロックをハツシュクラス単
位で行っているため、個々のデータ資源単位でロック要
求を見ればデッドロックになっていなくても、相互に無
関係な複数のデータ資源がたまたま同一のハツシュクラ
スに含まれているためにグローバルデッドロックになっ
てしまう場合が起こりうる。このような不必要なデッド
ロックの発生確率は、ハツシュクラスとデータ資源の対
応を1対1に近付けるほど小さくなる。これは、ハツシ
ュ関数の選択と、拡張記憶上のグローバルロック管理テ
ーブルエントリ数をどの程度準備するかということで制
御できる。
本節以降で、システムに各種の障害が発生した場合のロ
ックマネジャの処理を述べる。障害発生に対する基本方
針は、データの整合性を損なわないように、かつできる
だけ制限された範囲のデータ資源を障害回復までアクセ
ス禁止にすることである。システムの障害には、大きく
分けてサブシステムの故障1通信装置の故障、データ処
理装置の故障の3つの形態があり、以下で順に述べてゆ
く。
(1−6)サブシステムの故障 自データ処理装置上のサブシステムが故障したことが通
知されると、ロックマネジャは、そのサブシステムが保
有していたローカルロックを保留し、そのサブシステム
の行ったロック要求のうち待ち状態になっているものを
無効にする。保留されたロックモードと両立しないロー
カルロック要求が当該データ資源に対して行われると、
ロックマネジャはそのロック要求を待ち状態にすること
なく即時にエラーリターンさせ、長期ロック待ちの発生
を防止する。ここで、サブシステムの故障の検出とロッ
クマネジャへの通知の仕組は、本発明とは特に関係しな
いので説明を省略する。ロックマネジャは、ローカルロ
ックの保留を行うとともに、保留されたローカルロック
を包含する様にグローバルロックの保留も行う。ローカ
ルロックの保留は、自データ処理装置上のデータ資源テ
ーブル上に記憶され、グローバルロックの保留は、拡張
記憶上のグローバルロック管理テーブルエントリ上に記
憶される。他データ処理装置に対するアクセス禁止の制
御は、保留されたグローバルロックを通じてハツシュク
ラス単位に行われる。すなわち、他データ処理装置のロ
ックマネジャは、保留されたグローバルロック要求を待
ち状態にせずエラーリターンさせる。これらのローカル
ロックおよびグローバルロックの保留は、故障したサブ
システムが回復してデータ整合性復旧処理が完了した時
点で解除される。
(1−7)通信装置の故障 通信装置が故障して、他のデータ処理装置との連絡が不
可能になった場合、ロックマネジャはグローバルロック
確保処理において、通信不可能な他データ処理装置が、
要求されたグローバルロックモードと両立しないグロー
バルロックを占有していればそのグローバルロック要求
をエラーリターンさせる。この場合、ロックマネジャは
、特別にロック保留状態をテーブルに記憶する処理は行
わない。したがって通信装置が故障から回復した時も、
特別な処理はない。
(1−8)データ処理装置の故障 他データ処理装置の故障は、モニタリング装置(図示省
略)によって検出され、ロックマネジャに通知される。
通知を受けたロックマネジャは、拡張記憶上のグローバ
ルロックテーブルエントリを走査し、故障したデータ処
理装置が占有していたグローバルロックを保留状態にし
、待ち状態のグローバルロック要求を無効にする。この
保留状態は、グローバルロックテーブルエントリに記憶
され、以後、保留されたグローバルロックと両立しない
グローバルロック要求は全てエラーリターンさせられる
。このロック保留は、故障したデータ処理装置上で稼働
していた全てのサブシステムの回復処理が完了した時点
で解放される。
上記、サブシステム故障とデータ処理装置故障に起因す
るロック保留は、全てのモードのロックに対して行われ
る必要はない。データ資源の整合性を保証するには、汚
れたデータ資源、すなわち動作不能になったサブシステ
ムが更新を行っていたデータ資源だけをアクセス禁止に
すれば十分である。したがって、データ更新を行うため
のロックモード(本実施例では、SU、PU、EXモー
ドがこれに相当する)を待つロックだけを保留すればよ
く、データ参照だけを行うためのロックモード(本実施
例では、SR,PRモードがこれに相当する)を持つロ
ックは解放してよい。
(2)第2の実施例 本発明の第2の実施例であるコンピュータシステムのブ
ロック図を第8図に示す。第2の実施例においては、第
1の実施例のロックマネジャに加えて、サブシステムの
バッファマネジャやジャーナルマネジャが有機的に協力
してデータ資源の共用を実現している。第8図において
は、各サブシステム(21,22,31,32)はそれ
ぞれデータ資源アククセスのためのバッファプール(2
5,26,35,36)とデータ資源の更新を記憶する
ためのジャーナルファイル(61゜62.63.64)
を備えている。また、全サブシステムで共用するグロー
バルバッファプール42を拡張記憶上に持っていてもよ
い。さらに拡張記憶上には、全サブシステムによって参
照更新されるカウンタ43が設けられている。その他の
構成は、第1図で示した第1の実施例と同じである。ロ
ックマネジャが行うロック処理およびアンロック処理は
、第1の実施例と同様であるためここでは説明を割愛し
、第2の実施例の特徴であるバッファ管理方法とジャー
ナル管理方法について詳しく説明する。
(2−1)バッファ管理 複数のデータ処理装置上で動作する複数のサブシステム
が共用のファイル装置上に格納されている共用のデータ
資源をアクセスする場合、I10バッファとしてグロー
バルバッファを使用する場合とローカルバッファを使用
する場合がある。グローバルバッファは、共用の拡張記
憶上に設けられ、全サブシステムによって使用される。
このため、あるサブシステムがグローバルバッファ上で
更新を行ったデータ資源は、直ちに他のサブシステムか
らもアクセス可能である。これに対して、ローカルバッ
ファは各サブシステム対応に主記憶上に設けられ、1つ
のサブシステムだけによって使用される。したがって、
同一のデータ資源が複数のサブシステムのローカルバッ
ファ上に保持されている場合、1つのサブシステムがそ
のデータ資源を更新しても、その内容が他のサブシステ
ムのローカルバッファ上のデータ資源に反映されず、デ
ータの一貫性が保てない可能性がある。これを防止する
ために、本実施例ではロックマネジャとサブシステムの
バッファマネジャの連携を行っている。第9図に本実施
例におけるロックマネジャとバッファマネジャの管理す
るテーブルの関連を示す。第9図においては、147〜
148はハツシュクラステーブル、155〜157はデ
ータ資源テーブル、21〜22はサブシステム、171
〜174はバッファ管理テーブル、25〜26はローカ
ルバッファプールをそれぞれ示している。
ハツシュクラステーブルとデータ資源テーブルの関連は
、第2図で示したものと同じである。バッファ管理テー
ブルは、個々のバッファ対応に1つ設けられ、バッファ
中にどのようなデータ資源が格納されているかの情報を
含む。サブシステムは、データ資源をアクセスする場合
、まずロックマネジャにロック要求を発行し、ロックを
確保できたならば、バッファプールを走査して目的デー
タ資源が既にバッファ上にあるかを調べる。バッファプ
ール中に目的データ資源がない場合は、空きのバッファ
を確保してデータ資源を読み込む。また、サブシステム
は、データ資源に対する必要な更新を完了し、そのデー
タの内容をファイル装置に反映した後に、ロックマネジ
ャに対して、アンロック要求を発行してロックを解放す
る。本実施例では、バッファ管理テーブルと、そのバッ
ファ中に格納されているデータ思源に対応するデータ資
源テーブルの間に双方向のポインタチェーン設定するこ
とにより、ロックマネジャとバッファマネジャの連携を
実現している。第9図においては、データ資源a1はサ
ブシステム1のローカルバッファプール中のバッファb
llとサブシステム2のローカルバッファプール中のバ
ッファb21に格納され、データ資源a2は、サブシス
テム1のバッファb12だけに格納され、データ資源b
1はサブシステム2のバッファb22だけに格納されて
いる例が示されている。第1の実施例では、データ資源
に対するローカルロックが全て解放されてしまえばデー
タ資源テーブルの解放を行ったが、第2の実施例におい
ては、データ資源テーブルは、ローカルロックが全て解
放されかつそのデータ資源が自データ処理装置内の全て
のサブシステムのローカルバッファプールから追い出さ
れた時点で解放される。逆に、バッファ中にデータ資源
が読み込まれるときは、前もって必ずそのデータ資源に
対するロックが確保されており、したがって、対応する
データ資源テーブルは既に作成されている。
ローカルバッファ間のデータ内容の同期方法は、1デー
タ処理装置内での複数サブシステム間の同期処理と複数
データ処理装置間での同期処理に分けられる。まず、同
一データ処理装置内でのサブシステム間のバッファ同期
について第19図に示す流れ図にしたがって説明する。
バッファマネジャは、自ローカルバッファ上でデータを
更新すると、バッファ管理テーブルからデータ資源テー
ブルをたどって(ステップ1901)同一データ処理装
置内の他のサブシステムのローカルバッファプール中に
当該データ資源が格納されていないかを確認する(ステ
ップ1902)。もし他のサブシステムのローカルバッ
ファに格納されていれば、そのサブシステムのバッファ
マネジャをコールしてそのバッファ内容を無効とするよ
うに要求する。
第9図において、サブシステム1がバッファbllの内
容を更新したときがこれに相当する。
この場合、サブシステム1のバッファマネジャは、バッ
ファ管理テーブル171からデータ資源テーブル155
をたどり、データ資源a1がバッファb ’21にも格
納されていることを知る。そこで、サブシステム1のバ
ッファマネジャはサブシステム2のバッファマネジャを
コールし、バッファb21の内容を無効にすることを要
求する。このとき、サブシステム1はデータ資源a1を
更新するためにEXモードのロックを確保しており、サ
ブシステム2においては、データ資源a1に対するアク
セスは存在しないか、ロック待ちになっている。サブシ
ステム2でデータ資源a1に対するアクセスが行われる
と、そのデータ資源が格納されていたローカルバッファ
の内容は無効化されているため、ファイル装置から最新
の内容が読み込まれる。これに対し、サブシステム1が
バッファb12に格納されているデータ資源b12を更
新した場合は、サブシステム1のバッファマネジャは、
バッファ管理テーブル172からデータ資源テーブル1
56をたどって、他のサブシステムのバッファ中にはデ
ータ資源b1は格納されていないことを認識できるので
、サブシステム2のバッファマネジャをコールすること
はない。
次に、データ処理装置間でのバッファ内容の同期方法に
ついて説明する。本実施例では、データ処理装置間での
バッファ同期を行うため、第10図に示すように、ハツ
シュクラスに属するデータ資源に対する更新の発生を記
憶しておくための更新同期マツプをグローバルロック管
理テーブルエントリ中に設けている。グローバルロック
管理テーブルエントリの他のフィールドについては、第
4図で示したものと同じである。更新同期マップは、デ
ータ処理装置対応に1ビツトを割当てたビットマツプで
ある。この更新同期マツプの使いかたを第20図に示す
流れ図しこしたがって説明する。
ロックマネジャは、グローバルロック獲得処理において
ロック対象ハツシュクラスに対応するグローバルロック
管理テーブルエントリを拡張記憶から主記憶に転送して
くる(第14図のステップ1401)。ここで、グロー
バルロック管理テーブルエントリ中の更新同期マツプを
退避しておき(ステップ2001)、グローバルロック
が確保できたならば、テーブルエントリ中の更新同期マ
ツプの自データ処理装置に対応するビットをオンにする
(ステップ2002)。確保したグローバルロックのモ
ードがデータ更新のためのものであれば(SU、PU、
EXモード)更新同期マツプの他データ処理装置に対応
するビットを全てオフにする(ステップ2003.ステ
ップ2004)。
更新同期のマツプのビットがオンであるということは、
対応するデータ処理装置上のサブシステムが当該ハツシ
ュクラスに属するデータ資源を自分のローカルバッファ
プール中に格納している可能性があることを意味してい
る。ステップ2001で退避した更新同期マツプにおい
て、自データ処理装置に対応するビットがオフであれば
、他データ処理装置で当該ハツシュクラスに属するデー
タ資源を更新した可能性があるため、ロックマネジャは
、自データ処理装置内で動作しているサブシステムのロ
ーカルバッファプール上の当該ハツシュクラスに属する
データ資源を格納しているバッファを無効とするようサ
ブシステムのバッファマネジャに要求する(ステップ2
005.2006)。
上記要求を受けたバッファマネジャは、そのバッファが
現在使用中でなければ即時にバッファを無効とするが、
バッファが使用中であれば無効化を行わない。これは、
バッファが使用中であるということは、そのバッファに
格納されたデータ資源に対するロックを自サブシステム
が保有しているということであり、そのデータ資源を他
データ処理装置上のサブシステム□が更新するというこ
とは起こりえないからである。データ処理装置間でのバ
ッファ更新同期処理は、個々のデータ資源単位でなくハ
ツシュクラス単位で行われるため、本来は不要なバッフ
ァの無効化を引き起こす可能性がある。このようなサイ
ドエフェクトが発生する確率は、グローバルバッファ管
理テーブルエントリの要素数を大きくし、ハツシュクラ
スとデータ資源の対応を1対1に近付けるほど小さくな
ることは、グローバルデッドロックの場合と同じである
以上で説明した同一データ処理装置内の複数サブシステ
ムのローカルバッファプール間でのデータ更新の同期方
法と、データ処理装置間でのデータ更新の同期方法を組
合せることにより、全てのサブシステムのバッファプー
ルの内容の整合性を保つことが可能となる。
(2−2)ジャーナル管理 本実施例では、各サブシステムはジャーナルファイルを
備え、自サブシステムで行ったデータの更新をジャーナ
ルレコードとして記録している。
共用のファイル装置が故障して、格納されたデータが使
用不可能になった場合は、ある時点でのフ=60− アイル装置の内容のバックアップコピーとジャーナルフ
ァイルに記録されたデータ更新の内容を時系列にマージ
してファイル装置の内容を回復する。
本実施例のように複数のサブシステムがデータ資源を共
用して更新を行うようなシステムにおいては、各々のサ
ブシステムごとに独立して記録されたジャーナルレコー
ドを時系列にマージする必要がでてくる。本実施例では
、共用の拡張記憶上にカウンタエリアを設け(第8図の
43)、全サブシステムがデータの更新ごとにこのカウ
ンタ値を増加させ、ジャーナルレコード上にそのカウン
タ値を記録することにより、全サブシステムが行ったデ
ータの更新を一意的な時系列順に並べることを可能とし
ている。また、このカウンタを用いればジャーナルレコ
ードをマージした結果において必要なジャーナルレコー
ドが抜けていないかを容易に判定することができる。
〔発明の効果〕
以上述べたように、本発明によれば、複数データ処理装
置によるデータ資源の共用が、特別な制御装置を用いる
ことなく、かつ小さな通信オーバヘットで実現できるの
で、経済的で高性能なデータベース共用システムを構築
できる。また、本発明によれば、複数データ処理装置の
またがるデッドロックの検出を少ないオーバヘッドで行
えるので、システムの可用性を高める事ができる。また
、本発明によれば、システムに各種の故障が発生した場
合、データ資源を選択的にアクセス禁止にできるので、
データの保全性を保つことができる。
また、本発明によれば、各サブシステムはバッファプー
ル中のデータの有効性を少ないオーバヘッドで判断でき
るので、データ資源の共用環境下でもバッファリング手
法を用いる事ができる。さらに、本発明によれば、各サ
ブシステムが取得したジャーナルレコードを容易に時系
順に並べる事ができるので、共用のファイル装置が故障
してデータ資源が失われた場合でも、即時にデータの回
復が行え、システムの信頼性、可能性を高めることがで
きる。
【図面の簡単な説明】
第1図は本発明の第1の実施例を示すコンピュータシス
テムのブロック図、第2図はローカルロック管理テーブ
ルを示す図、第3図はグローバルロック管理テーブルを
示す図、第4図は第1の実施例におけるグローバルロッ
ク管理テーブルエントリを示す図、第5図はロックモー
ドの両立性の一覧性を示す図、第6図はロックモードの
包含性の一覧表を示す図、第7図はグローバルデッドロ
ックの例を示す図、第8図は本発明の第2の実施例を示
すコンピュータシステムのブロック図、第9図はロック
管理テーブルとバッファ管理テーブルの関連を示す図、
第10図は第2の実施例におけるグローバルロック管理
テーブルエントリを示す図、第11図〜第17図はロッ
クおよびアンロック処理の流れ図、第18図はデッドロ
ック検出処理の流れ図、第19図〜第20図はバッファ
間更新同期処理の流れ図である。 10:通信装置 20.30:データ処理装置 21〜22.31〜32:サブシステム23.33:ロ
ツクマネジャ 24.34:ローカルロック管理テーブル25〜26.
35〜36二ローカルバツフアプール 40:拡張記憶装置 41ニゲローバルロツク管理テーブル 42ニゲローバルバツフアプール 43:カウンタ 5o:ファイル装置 61〜64:ジャーナルファイル 100:マスク管理テーブル 110:サブシステムテーブル 121〜124ニドランザクジヨンテーブル130:資
源クラステーブル 141〜148:ハツシュクラステーブル151〜15
7:データ資源テーブル 161〜169:ロックテーブル 171〜174:バッファ管理テーブル200:拡張記
憶のブロック 210ニゲローバルロック管理テーブルエンドリ 第16図 第17図 第18図 第19図

Claims (1)

  1. 【特許請求の範囲】 1、命令プロセサおよび該命令プロセサによって共用さ
    れる主記憶装置を含むデータ処理装置の一群と、該デー
    タ処理装置を相互接続する通信装置と、該データ処理装
    置により共用されるデータ資源を記憶する拡張記憶装置
    と、ファイル装置とを備え、かつ上記データ処理装置は
    各々、上記データ資源をアクセスするサブシステムと、
    該サブシステムの共用データ資源へのアクセスに対する
    排他制御を行うロックマネジャとを具備したコンピュー
    タシステムにおいて、個々の上記共用データ資源に関す
    る排他制御情報を主記憶上に保持するとともに、クラス
    タリングされた共用データ資源に関する排他制御情報を
    共用拡張記憶上に保持し、各ロックマネジャは、上記主
    記憶上の排他制御情報を使用して自データ処理装置内で
    のサブシステム間の排他制御を行うとともに、上記共用
    拡張記憶上の排他制御情報を使用して、データ処理装置
    間での排他制御を行うことを特徴とするシステム間デー
    タベース共用方法。 2、上記ロックマネジャは、サブシステムからのロック
    要求を受け付けると、上記主記憶上の排他制御情報を参
    照してデータ処理装置間の排他制御が必要であるかどう
    かを判断し、もし必要であれば上記共用拡張記憶上の排
    他制御情報を操作してデータ処理装置間でのロックを確
    保した後に上記主記憶上の排他制御情報を操作してサブ
    システムにロックを与え、もし必要でなければ上記主記
    憶上の排他制御情報を操作してサブシステムにロックを
    与えることを特徴とする請求項1記載のシステム間デー
    タベース共用方法。 3、上記ロックマネジャは、上記主記憶および共用拡張
    記憶上の排他制御情報を参照して、複数データ処理装置
    にまたがったデッドロック発生の可能性を検出し、デッ
    ドロック発生の可能性がある場合は、関連する他のデー
    タ処理装置に連絡を行って実際にデッドロックが発生し
    ているかを確認することにより複数データ処理装置間で
    のデッドロックを検出することを特徴とする請求項1記
    載のシステム間データベース共用方法。 4、上記ロックマネジャは、システムに各種の故障が発
    生した場合、上記主記憶および共用拡張記憶上の排他制
    御情報を使用して、データ資源の整合性を保持するよう
    に、選択的にデータ資源をアクセス禁止にすることを特
    徴とする請求項1記載のシステム間データベース共用方
    法。 5、上記サブシステムは各々、共用データ資源へのアク
    セスを実行するためのバッファマネジャとバッファプー
    ルを備え、上記ロックマネジャおよび上記バッファマネ
    ジャは、サブシステムが実行したデータ資源に対する更
    新の発生を上記主記憶および共用拡張記憶上の排他制御
    情報を利用して他サブシステムに通知してバッファプー
    ル内容の整合性を保持することを特徴とする請求図1記
    載のシステム間データベース共用方法。 6、上記共用拡張記憶上に全サブシステムによって参照
    および更新されるカウンタを設け、サブシステムは各々
    そのカウンタ値をジャーナルレコードに記録することに
    より、そのカウンタ値をキーとして複数サブシステムが
    取得したジャーナルレコードを時系列に並べることを可
    能とすることを特徴とする請求項1記載のシステム間デ
    ータベース共用方法。7、請求項1〜6のいずれかに記
    載された、システム間データベース共用方法のための制
    御情報を記憶する共用拡張記憶装置。
JP63228683A 1988-09-02 1988-09-14 共用データの管理方法 Expired - Fee Related JP2685530B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP63228683A JP2685530B2 (ja) 1988-09-14 1988-09-14 共用データの管理方法
US07/397,679 US5251318A (en) 1988-09-02 1989-08-23 Multiprocessing system comparing information copied from extended storage before and after processing for serializing access to shared resource

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63228683A JP2685530B2 (ja) 1988-09-14 1988-09-14 共用データの管理方法

Publications (2)

Publication Number Publication Date
JPH0277868A true JPH0277868A (ja) 1990-03-16
JP2685530B2 JP2685530B2 (ja) 1997-12-03

Family

ID=16880173

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63228683A Expired - Fee Related JP2685530B2 (ja) 1988-09-02 1988-09-14 共用データの管理方法

Country Status (1)

Country Link
JP (1) JP2685530B2 (ja)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH052563A (ja) * 1991-06-26 1993-01-08 Hitachi Ltd 複数オンラインシステムの履歴フアイル共用方式
US5276835A (en) * 1990-12-14 1994-01-04 International Business Machines Corporation Non-blocking serialization for caching data in a shared cache
JPH08272723A (ja) * 1995-03-30 1996-10-18 Canon Inc 情報処理方法及び装置
US5630134A (en) * 1993-06-11 1997-05-13 Fujitsu Limited Inter-processor exclusive control apparatus for enabling one of a plurality of processors execute an executable unit process
US5845117A (en) * 1993-03-19 1998-12-01 Fujitsu Limited Deadlock detecting device
JP2000515657A (ja) * 1996-08-02 2000-11-21 トランソフト コーポレイション 共有資源の分散制御を可能にする方法と装置
JP2001175522A (ja) * 1999-12-15 2001-06-29 Hitachi Software Eng Co Ltd 排他制御方法及びシステム
JP2006171993A (ja) * 2004-12-14 2006-06-29 Fuji Xerox Co Ltd 文書レビュー支援装置、文書レビュー支援方法及び文書レビュー支援プログラム
WO2008032711A1 (fr) * 2006-09-13 2008-03-20 Panasonic Corporation Contrôleur mémoire, dispositif de stockage non volatil, dispositif d'accès et système de stockage non volatil

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5276835A (en) * 1990-12-14 1994-01-04 International Business Machines Corporation Non-blocking serialization for caching data in a shared cache
JPH052563A (ja) * 1991-06-26 1993-01-08 Hitachi Ltd 複数オンラインシステムの履歴フアイル共用方式
US5845117A (en) * 1993-03-19 1998-12-01 Fujitsu Limited Deadlock detecting device
US5630134A (en) * 1993-06-11 1997-05-13 Fujitsu Limited Inter-processor exclusive control apparatus for enabling one of a plurality of processors execute an executable unit process
JPH08272723A (ja) * 1995-03-30 1996-10-18 Canon Inc 情報処理方法及び装置
JP2000515657A (ja) * 1996-08-02 2000-11-21 トランソフト コーポレイション 共有資源の分散制御を可能にする方法と装置
JP2001175522A (ja) * 1999-12-15 2001-06-29 Hitachi Software Eng Co Ltd 排他制御方法及びシステム
JP2006171993A (ja) * 2004-12-14 2006-06-29 Fuji Xerox Co Ltd 文書レビュー支援装置、文書レビュー支援方法及び文書レビュー支援プログラム
WO2008032711A1 (fr) * 2006-09-13 2008-03-20 Panasonic Corporation Contrôleur mémoire, dispositif de stockage non volatil, dispositif d'accès et système de stockage non volatil

Also Published As

Publication number Publication date
JP2685530B2 (ja) 1997-12-03

Similar Documents

Publication Publication Date Title
US5317739A (en) Method and apparatus for coupling data processing systems
US5251318A (en) Multiprocessing system comparing information copied from extended storage before and after processing for serializing access to shared resource
US5537574A (en) Sysplex shared data coherency method
US8024528B2 (en) Global address space management
EP0549140A2 (en) Record updating method
US7240057B2 (en) System and method for implementing journaling in a multi-node environment
US8001333B2 (en) Memory management in a shared memory system
US6108654A (en) Method and system for locking resources in a computer system
US6389420B1 (en) File manager providing distributed locking and metadata management for shared data access by clients relinquishing locks after time period expiration
US5276835A (en) Non-blocking serialization for caching data in a shared cache
US7698523B2 (en) Hardware memory locks
US20130191330A1 (en) Reducing contention and messaging traffic in a distributed shared caching for clustered file systems
US5999976A (en) Parallel file system and method with byte range API locking
JPH06119232A (ja) 共用データ記憶制御システム、マスター処理装置の設定方法、及びデータ複写方法
JPH07191944A (ja) 多重プロセッサによる多数の資源への命令におけるデッドロックを防止するためのシステムおよび方法
JPH0522259B2 (ja)
JPH03161859A (ja) リクエスト管理方法及びアクセス制御システム
US20080082622A1 (en) Communication in a cluster system
JP2001265611A (ja) コンピュータシステム、メモリ管理方法、記憶媒体及びプログラム伝送装置
JP2685530B2 (ja) 共用データの管理方法
US6529933B1 (en) Method and apparatus for locking and unlocking a semaphore
JP4286857B2 (ja) ノード間共用ファイル制御方法
JP3866448B2 (ja) ノード間共用ファイル制御方式
JPS62145349A (ja) システム間デ−タベ−ス共用方式
JPH0820996B2 (ja) データアクセスシステム

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees