JP3385091B2 - 計算機間の排他制御装置 - Google Patents

計算機間の排他制御装置

Info

Publication number
JP3385091B2
JP3385091B2 JP09974694A JP9974694A JP3385091B2 JP 3385091 B2 JP3385091 B2 JP 3385091B2 JP 09974694 A JP09974694 A JP 09974694A JP 9974694 A JP9974694 A JP 9974694A JP 3385091 B2 JP3385091 B2 JP 3385091B2
Authority
JP
Japan
Prior art keywords
shared memory
distributed shared
exclusive control
computer
data
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.)
Expired - Fee Related
Application number
JP09974694A
Other languages
English (en)
Other versions
JPH07306838A (ja
Inventor
隆史 坂倉
ホゼ ウエムラ
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP09974694A priority Critical patent/JP3385091B2/ja
Priority to US08/433,145 priority patent/US5625795A/en
Publication of JPH07306838A publication Critical patent/JPH07306838A/ja
Application granted granted Critical
Publication of JP3385091B2 publication Critical patent/JP3385091B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、排他制御装置、特に複
数の計算機間で共有する、例えばディスク装置等に記憶
されたデータベース等の共有資源に対して複数計算機間
で行われるべき排他制御装置に関する。
【0002】
【従来の技術】近年、計算機におけるダウンサイジング
に伴い、データベースをより安全に、より高速に、ま
た、より高い稼働率で、いわゆるワークステーションと
呼ばれる計算機上で運用する技術が開発されてきてい
る。データベースサービスに求められるこれらの課題を
解決するアプローチとして、米オラクル社はパラレルサ
ーバと呼ばれる製品を提供している。これは、ネットワ
ークで接続された複数の計算機上で実行されるデータベ
ースプログラムで、複数の計算機で共有するディスク装
置上にある同一データベースに対して、各々の計算機上
でデータベースプログラムが並列に実行される。これに
より、並列実行によるデータベースサービスの高速化及
び仮に同一データベース上で動作している計算機のいず
れかに故障が発生したとしても、故障していない他の計
算機上で実行されているデータベースプログラムにより
データベースサービスは続行されることから稼働率の向
上をも達成している。
【0003】このような複数計算機間で共有する同一の
データベースに対して、複数データベースプログラムを
実行する場合、同一データへの同時更新を避けるため排
他制御が必要となる。米オラクル社自身あるいは米ピラ
ミッド社などのシステムベンダは、この排他制御機構と
してネットワークを介してデータ交換を行うソフトウェ
アという形態で実現し提供している。ただし、ソフトウ
ェアによる実現方法は、ネットワークトラフィック、計
算機のロードアベレージなどという要因にその性能を左
右されやすく、その排他制御のためのコストがデータベ
ースシステム全体の性能にとってかなりの負担となって
いる。
【0004】以上のように、同一データベース上で動作
する複数計算機間では排他制御を必要とし、その排他制
御機構をソフトウェアによって実現する場合はその性能
が問題となる。
【0005】ところで、複数計算機間で、ある資源を共
有するときの排他制御は、ソフトウェアのみならずハー
ドウェアによっても行われる。例えば、特開平4−36
4514号公報は、マルチホスト構成としたSCSI
(Small Computer Systems I
nterface)バス上のデバイスに対して複数計算
機、つまり、マルチホストを構成している各々の計算機
からアクセスする場合について開示している。SCSI
プロトコルは本来複数計算機を接続可能な仕様となって
おり、排他制御はリザーブ、リリースというSCSIコ
マンドをデータアクセスを行うコマンドをはさむように
投入することにより行う。
【0006】特開平4−364514号公報には、この
リザーブ、リリースのコスト、また、SCSIの仕様が
そのターゲットコントローラすべてにバスリセットの自
由を与えているために、あるホストがリザーブコマンド
発行後に、いずれかのターゲットコントローラによって
リセットが行われるとマルチホスト間の排他制御のため
のステートが矛盾するという課題をSCSIバスに並行
して設ける排他制御コントローラによって解決すること
が開示されている。
【0007】また、特開昭63−148365号公報に
は、2つの計算機間に共有メモリを配し、両計算機間で
共有するディスクのデータに対して、共有メモリ上のデ
ータを操作することによって排他制御する方法が開示さ
れている。
【0008】
【発明が解決しようとする課題】しかしながら、従来に
おいて、複数計算機間で排他制御が必要となる場合に一
般に多く採用されるネットワークを用いたデータ交換と
ソフトウェアによる排他制御機構では、性能面で問題と
なることが多かった。
【0009】また、従来の共有メモリ装置を計算機間に
配して、共有メモリ上のデータで排他制御する方式で
は、当該共有メモリに障害が発生した場合、排他制御処
理が続行不能になるという問題があった。
【0010】また、共有メモリ装置は特殊なハードウェ
アとしてシステムに供給されるため、コストが高くなる
という問題があった。この問題は、その性能面での課題
があるにもかかわらず、ネットワークによるデータ交
換、および、ソフトウェアによる排他制御方式が多用さ
れる理由である。
【0011】また、1つの共用メモリを使用する方法に
おいても、排他制御を必要とし、ある資源を共有する計
算機の数が増えることにより資源の占有権獲得のための
試行が増大し、システム性能にとって多大な負担となる
という問題があった。
【0012】本発明の解決すべきもう一つの課題は計算
機間の通信路の確保である。例えば、パーソナルコンピ
ュータで多重系システムを構成しようとした場合、通信
路が単点故障となるのを避けるため、多重の、信頼性の
高い通信路が必要となる。
【0013】本発明は以上のような課題を解決するため
になされたものであり、その目的は、いずれかの計算機
において障害が発生したとしてもシステム全体としての
稼働を維持しつつ共有資源の排他制御を確実を行うこと
のできる計算機間の排他制御装置を提供することにあ
る。
【0014】
【課題を解決するための手段】以上の目的を達成するた
めに、本発明に係る計算機間の排他制御装置は、CP
U、分散共有メモリ、コントローラを搭載し、ネットワ
ーク及び分散共有メモリバスに接続された複数の計算機
の共有資源に対する排他制御を行う計算機間の排他制御
装置において、前記分散共有メモリは、計算機による共
有資源へのアクセス位置に対応した各分散共有メモリに
おけるアドレス位置には、当該アクセス位置をアクセス
した計算機を識別可能な排他制御データがそれぞれ書き
込まれ、前記分散共有メモリバスは、前記ネットワーク
とは別個に設けられ、前記各分散共有メモリを相互にデ
ータ交換可能に接続し、リセット信号、アサートされる
ことでバスの占有を示すバスアービトレーション信号、
書込み時にアサートされる読出し/書込み信号、排他制
御データがセットされるデータ信号及び排他制御データ
が書き込まれるアドレス位置がセットされるアドレス信
号用の各信号線で構成され、前記コントローラは、前記
CPUが前記分散共有メモリバスを確保する際に送出す
るバス確保命令に応じて、前記バスアービトレーション
信号がネゲート状態のときにはアサートし、アサート後
前記CPUからバス解放命令が送出されるか、リセット
信号が送出されるまでそのアサート状態を保ち、また、
前記分散共有メモリバスを確保した前記計算機に搭載さ
れた前記CPUによる書込み命令に応じて、データ信号
により表現された当該排他制御データを、アドレス信号
により表現される分散共有メモリのアドレス位置に書き
込むように動作し、前記CPUは、排他制御プログラム
を含むソフトウェアを実行することによって、当該計算
機上で動作するアプリケーションからの共有資源のアク
セス要求に基づき共有資源上のアクセス位置のロック取
得/解放要求処理を実行し、ロック取得要求処理におい
、そのアクセス要求に応じて前記分散共有メモリバ
確保命令を送出し共有資源管理表から当該アクセス
要求によるアクセス位置に対応した当該計算機搭載の分
散共有メモリのアドレス位置を参照することによって当
該アクセス位置の使用状態を確認し、当該アドレス位置
に排他制御データが書き込まれていないときには使用可
能と判断してその排他制御データの書込み要求を出し、
ロック解放要求処理においては、当該アクセス位置の使
用完了時に前記分散共有 メモリバス確保命令を送出した
後、排他制御データが書き込まれた当該アドレス位置に
所定の情報の書込み要求を出し、アクセス要求をした計
算機のコントロ−ラは排他制御データを前記分散共有メ
モリバスにセットし、他のコントローラは排他制御デー
タが前記分散共有メモリバスにセットされることを監視
することで、当該排他制御データによって全ての前記分
散共有メモリの当該アドレス位置を同時に更新するもの
である。
【0015】また、いずれかの前記計算機がダウンした
とき、ダウンしていないいずれかの前記計算機に搭載さ
れている前記CPUは、ソフトウェアを実行することに
よって、そのダウンした計算機の排他制御データと前記
分散共有メモリに書き込まれている排他制御データとを
比較し、一致したときにはロック解放要求処理を実行し
当該アドレス位置を未使用状態に変更するものであ
る。
【0016】
【0017】
【0018】
【作用】発明によれば、いずれかの計算機分散共有
メモリに書込みが行われると、コントローラは、分散共
有メモリバスを確保する。他の全ての計算機のコントロ
ーラは、分散共有メモリバス上のデータを取得し自計算
機の分散共有メモリ上のデータを書き換え反映させる。
その後、データの書込みが行われた計算機のコントロー
ラは、分散共有メモリバスを解放する。このようにし
て、排他制御が高速に行われ、各計算機は、共有資源
自分散共有メモリに保持するので、いずれかの計算機に
おいて障害が発生したとしても残りの計算機で排他制御
を続行できる。
【0019】また、ダウンした計算機の排他制御データ
と前記分散共有メモリに書き込まれている排他制御デー
タとを比較し、一致したときには当該アドレス位置を未
使用状態に変更する。これにより、ダウンした計算機が
分散共有メモリ上に確保していた部分を解放することが
できる。
【0020】
【0021】
【0022】
【実施例】以下、図面に基づいて本発明に係る好適な実
施例について説明する。
【0023】実施例1.図1は、本発明に係る計算機間
の排他制御装置の第1実施例が適用される計算機システ
ムの構成図である。パソコン等の各計算機101、10
2、103は、LAN105及び本実施例の特徴である
分散共有メモリカードそれぞれを接続する分散共有メモ
リバス104に接続されている。更に各計算機101、
102、103は、すべての計算機101、102、1
03から随時アクセス可能であるディスク106を共有
している。
【0024】図2は、図1における各計算機のブロック
構成図であり、計算機200は、図1に示した各計算機
101、102、103それぞれに相当する。図2にお
いて、CPU201及びメモリ202が接続されたメモ
リバス203は、計算機200内部のI/Oバス204
に接続されている。I/Oバス204には、図1におけ
る分散共有メモリバス104に接続するための分散共有
メモリカード205、ディスクに接続するためのSCS
Iカード206及びLANに接続するためのLANカー
ド207などの入出力インターフェイスが接続されてい
る。
【0025】図3は、分散共有メモリカードのブロック
構成図であり、分散共有メモリカード302は、図2に
示した分散共有メモリカード205に相当する。分散共
有メモリカード302は、各計算機の排他制御データ
分散させて持たせる分散共有メモリ304と、図1にお
ける分散共有メモリバス104に相当し他の計算機に搭
載された分散共有メモリ304との間で相互にデータ交
換可能にする分散共有メモリバス301と、計算機内の
図2におけるI/Oバス204に相当するI/Oバス3
05と、に接続され、更には内部バスを通して分散共有
メモリ304に接続される分散共有メモリコントローラ
303と、を有している。この分散共有メモリコントロ
ーラ303は、分散共有メモリと分散共有メモリバスと
を制御する。
【0026】図4は、図2に示した計算機200に搭載
されるソフトウェア構成を示した図であり、複数計算機
間のデータベース等の共有資源を利用するアプリケーシ
ョンプログラム401と、共有資源に対して排他制御を
行う排他制御プログラム402と、を有する。排他制御
プログラム402は、システムコールインターフェイス
を通してオペレーティングシステム403にアクセス
し、更にオペレーティングシステム403を介して分散
共有メモリドライバ404に分散共有メモリ304への
読出しあるいは書込みを依頼する。本実施例において
は、オペレーティングシステム403としてUNIXを
採用している。また、本実施例におけるアプリケーショ
ンプログラム401はデータベースプログラムである。
排他制御プログラム402もデータベースに即したプロ
グラムである。これらの各ソフトウェアは、ソフトウェ
ア実行手段としてCPU201により実行される。
【0027】図5は、各々の計算機101、102、1
03上の排他制御プログラム402が持つ同一の共有資
源管理表を示した図である。図において、共有資源管理
表501の左側の列にはデータベースのブロック番号5
02が、右側の列にはブロック番号502に対応する分
散共有メモリ上のアドレス503が、それぞれ格納され
ている。この例では1ブロックにつき1バイトのロック
データ領域が分散共有メモリ上に割り当てられており、
本実施例における当該データベースのブロックサイズを
2KBとすると、この共有資源管理表501では102
4個のブロックを管理することができるので2MBのデ
ータベースを管理できることになる。もちろん、管理す
べきブロック数及びブロックサイズはこれに限られたも
のではない。
【0028】以下、本実施例における動作を説明する。
【0029】いま、アプリケーションプログラム401
で管理表上はブロック番号1のデータブロックに書込み
の必要が発生したとする。アプリケーションプログラム
401は、オペレーティングシステム403に書込み要
求を出す前に、書込みを行いたいデータブロックのブロ
ック番号をパラメータとして排他制御プログラム402
のロック取得要求プログラムをコールする。ロック取得
の要求は、分散共有メモリ304上のデータブロックに
対応するアドレスの排他制御要求となる。なお、本実施
例では、シンプルロック方式をとるので、排他制御にお
いて書込みと読出しの区別はない。
【0030】排他制御プログラム402は、アプリケー
ションプログラム401から排他制御要求を受け取ると
アプリケーションプログラム401から渡されたブロッ
ク番号及び管理表から分散共有メモリ上のアドレスを知
る。排他制御プログラム402は、その分散共有メモリ
のアドレス及び書き込みたいデータとともに排他書込み
コマンドによって、直ちにオペレーティングシステム4
03のioctlインターフェイスを通し分散共有メモ
リドライバ404をコールする。ここで、書き込むべき
データは、各計算機固有に割り付けられた識別番号であ
るマシンIDである。なお、ioctlインターフェイ
スの詳細については後述する。
【0031】分散共有メモリドライバ404は、オペレ
ーティングシステム403を通して排他制御プログラム
402からの排他書込みコマンドにより分散共有メモリ
上のアドレス及びマシンIDを得る。図6は、I/Oス
ペースにマップされている分散共有メモリカード205
のレジスタの内容を示した図であり、分散共有メモリド
ライバ404は、図6に示すレジスタに制御データを書
き込み分散共有メモリカード205を操作する。図6に
おいてレジスタは、コマンドビット領域603〜606
と、読出し及び書込みが行われる際のデータが格納され
るデータ領域602と、アクセスする分散共有メモリ3
04のアドレスが格納されるアドレス領域601と、で
構成される。上記コマンドビット領域603〜606と
は、分散共有メモリ304の状態を示すステータスビッ
ト606と、分散共有メモリバスを確保したいときにO
Nにする確保命令ビット605と、確保した分散共有メ
モリバス301を解放したいときにONにするバス解放
命令ビット604と、バス確保命令ビット605及びバ
ス解放命令ビット604がともにOFFのとき0が読出
し命令、1が書込み命令となる読出し/書込みビット6
03と、で構成される。なお、本実施例における共有分
散メモリバス301の空間のサイズは1MBである。
【0032】分散共有メモリドライバ404は、排他制
御プログラム402からの排他書込み命令を受け取った
ならば、レジスタのバス確保命令ビット605をONに
し、ステータスビット606をチェックする。バス確保
に失敗した場合は、確保に成功するまで再試行する。バ
ス確保後、読出し命令とアドレスをセットし、データを
読み出す。読み出したデータは退避しておく。
【0033】ここで、読み出したデータの内容が−1、
つまり、分散共有メモリ304上の指定したアドレスの
場所が未使用状態であったのなら使用可能と判断でき
る。従って、排他制御プログラム402から受け取った
マシンIDをデータとしてデータ領域602にセット
し、書込み命令をセットする。セットした後、バス解放
命令ビット604をONにすることでバスを解放する。
【0034】一方、読み出したデータの内容が−1以
外、つまり、指定したアドレスの場所が使用中であった
場合は使用不可なので、何もセットせずに直ちにバスを
解放する。このようにして、このマシンIDがすべての
分散共有メモリ304上の該アドレスに書き込まれる。
この後、退避してあった読出しデータをioctlイン
ターフェイスを通して、排他制御プログラム402に返
す。
【0035】このようなソフトウェア操作に対して、分
散共有メモリカード302は、次のように動作する。
【0036】分散共有メモリカード302がバス確保命
令を受けとったとき、分散共有メモリバス301上のバ
スアービトレーション(BA)信号がアサートされてい
れば他の計算機によりすでに占有されていると判断し、
ステータスビット606に1をセットしバスを確保でき
なかった旨のエラー報告をする。BA信号がネゲート状
態であれば、アサートした後ステータスビット606に
0をセットし、バス確保に成功した旨の報告をする。B
A信号はその後バス解放命令がソフトウェアによってな
されるまで、アサート状態に保つ。ただし、ステータス
ビット606への書込みにより、分散共有メモリバス3
01上にリセット(RST)信号が送出されるとネゲー
ト状態にしバスを解放する。書込み命令は、分散共有メ
モリバス301上のデータ(DATA)信号704によ
って表現される1バイトのデータとアドレス(ADD
R)信号703によって表現されるアドレスとによって
与えられるが、分散共有メモリバス301に接続された
すべての分散共有メモリカード302は、読出し/書込
み(R/W)信号を監視しており、アサート状態、つま
り書込み命令であったならば、各計算機は、自分散共有
メモリ304のデータを分散共有メモリバス301上の
データで書き換える。
【0037】このように、いずれかの分散共有メモリへ
の書込み等更新要求により、分散共有メモリバス301
に接続されたすべての分散共有メモリは、分散共有メモ
リバス301上のデータで書き換えられ、反映される。
図7にバス確保の上、読出し/書込みを行う時の分散共
有メモリバス301の動作タイミングを、図8にバスを
確保しない書込みの分散共有メモリバス301の動作タ
イミングを、それぞれ示す。図7及び図8において、R
/W信号701、801は、書込み時にアサートされる
信号を示し、BA信号702、802は、アサートする
ことでバスを占有していることを示す信号である。
【0038】排他制御プログラム402は、排他書込み
コマンドによる分散共有メモリドライバ404から分散
共有メモリ304へのアクセス要求に対する実行結果を
示す戻り値が−1であれば、分散共有メモリ304上の
当該アドレスのロック取得が成功したと判断し、アプリ
ケーションプログラム401に制御を戻す。これによ
り、アプリケーションプログラム401は、データブロ
ックへの書込みを開始する。当該戻り値が−1でなけれ
ば、成功するまで再試行する。
【0039】アプリケーションプログラム401は、デ
ータブロックへの書込みが完了すると、分散共有メモリ
304上の当該アドレスのロック取得の時と同じアドレ
ス、すなわちデータブロックのブロック番号でロック解
放プログラムをコールする。排他制御プログラム402
は、ロック取得の時と同じく、ioctlインターフェ
イスを通して、分散共有メモリドライバ404を書込み
コマンドで当該アドレスと未使用状態を表すデータ−1
とともにコールする。分散共有メモリドライバ404
は、レジスタのデータ領域602に−1を、アドレス領
域601に指定されたアドレスを、そして、読出し/書
込みビット603にONを、それぞれセットする。この
ように、分散共有メモリドライバ404は、分散共有メ
モリ904の当該アドレスに−1を書き込むことで当該
アドレスを未使用状態とする。そして、確保していたロ
ックは解放される。
【0040】以上のようにして、複数の計算機により構
成される計算機システムにおいて共有資源の排他的制御
が行われる。
【0041】ところで、分散共有メモリ304の初期化
は、オペレーティングシステムの立ち上がり時に、分散
共有メモリドライバ404の初期化ルーチンがコールさ
れることによって行われ、分散共有メモリ304の内容
は未使用状態を表すデータである−1に初期化される。
この初期化時には、他の全ての計算機が稼働状態である
ように調停される。分散共有メモリ304への−1の書
込みは、計算機システムのうちクラスタを構成する計算
機のうちの一台によって行われる。本実施例ではマスタ
となる計算機を一台、静的に決定しておき、そのマスタ
計算機がすべての計算機からの準備完了メッセージを受
けとる方法で行った。従って、本実施例においては、計
算機システムのうちクラスタとして登録されていない計
算機が排他制御セッションに途中から参加することはで
きない。
【0042】また、クラスタを構成している計算機のう
ちいずれかがクラスタの稼働中にダウンしたとすると、
ダウンした計算機が確保していた全ての分散共有メモリ
304上の内容を未使用状態とする必要がある。これ
は、次のようにして行われる。すなわち、計算機がダウ
ンしたことは、依然として稼働している計算機上のアプ
リケーションプログラム401に通知される。その通知
を受けたアプリケーションプログラム401は、お互い
に通信して後処理を行う計算機を決定する。後処理を行
うこととなった計算機のアプリケーションプログラム4
01は、排他制御プログラム402のロック解除ルーチ
ンを、ダウンした計算機のマシンIDでコールする。排
他制御プログラム402は、更にioctlインターフ
ェイスを通し、共有資源管理表で管理するすべてのアド
レスに対して読出しコマンドで読み出し、ダウンした計
算機のマシンIDと一致したら、書込みコマンドを用い
て分散共有メモリ304に−1を書き込み、ダウンした
計算機が確保していた分散共有メモリ304上の内容を
未使用状態とする。このようにして、ダウンした計算機
が確保していた分散共有メモリ304上の内容のロック
解放処理を行う。これにより、確保されていたままのデ
ータについての排他制御処理を続行することが可能とな
る。
【0043】以上のように、本実施例によれば、複数台
の計算機によって構成されるクラスタ内の共有資源の排
他制御を、各計算機に同じ規格のカードを装着すること
で低コスト化を図りつつ高速に行うことができる。
【0044】実施例2.以下、本発明に係る第2実施例
について説明する。本実施例における計算機間の排他制
御装置が適用される計算機システム及び各計算機は、第
1実施例と同様、図1及び図2に示した構成を有する。
また、本実施例におけるソフトウェア構成は図4に示し
たように第1実施例と同様である。すなわち、アプリケ
ーションプログラム401は、データベースプログラム
を想定しており、そのアプリケーションプログラム40
1が共有ディスク上のデータベースをアクセスし、この
データへの排他制御を排他制御プログラム402がデー
タベースのデータブロック単位に行う。
【0045】図9は、本実施例における分散共有メモリ
カードのブロック構成図であり、分散共有メモリカード
902は、図2に示した分散共有メモリカード205に
相当する。分散共有メモリカード902は、第1実施例
とほぼ同様の分散共有メモリコントローラ903と分散
共有メモリ904とを有している。
【0046】本実施例において特徴的なことは、分散共
有メモリカード902にプロセッサ(CPU)906を
設けたことである。例えば、上記第1実施例に示したよ
うに、共有資源の排他制御を単純な分散共有メモリを利
用してシンプルロック方式により行う場合において、共
有資源に対する競合が激しいときには各々の計算機のC
PU時間をロック取得のために消費する割合が増加す
る。従って、本実施例においては、共有資源に対する排
他制御を行い、分散共有メモリカード902に高レベル
のコマンドを実行させるCPU906を設けることによ
り計算機200のCPU201の負担を軽減することが
できる。
【0047】以下、本実施例の動作について説明する。
【0048】第1実施例と同様のアプリケーションプロ
グラム401から同様のデータブロックに書込みの必要
が発生したときは、排他制御プログラム402のロック
取得要求ルーチンをコールする。本実施例においてもシ
ンプルロック方式をとるので、排他制御に関し、書込み
と読出しの区別はない。排他制御プログラム402は、
アプリケーションプログラム401から排他制御要求を
受け取るとアプリケーションプログラム401から渡さ
れたブロック番号と、排他制御プログラム402の保有
する共有資源管理表から分散共有メモリ上のアドレスを
知る。排他制御プログラム402は、ioctlインタ
ーフェイスを通し、排他書込みコマンドで分散共有メモ
リ904のアドレス及び書込みデータをパラメータとし
分散共有メモリドライバ404をコールすることで、分
散共有メモリ904上のデータブロックに対応するアド
レスのロック取得の要求を出す。ここで、書き込むべき
データは、当該計算機のマシンIDである。
【0049】分散共有メモリドライバ404は、オペレ
ーティングシステム403を通して排他制御プログラム
402からの排他書込みコマンドにより分散共有メモリ
上のアドレス及びマシンIDを得る。ところで、本実施
例においては、第1実施例で使用した図6の分散共有メ
モリカード902のレジスタと同様のフォーマットのレ
ジスタを有している。分散共有メモリドライバ404
は、排他書込みコマンドを受け取ると、このレジスタに
データ及びアドレスをセットすることで排他書込みコマ
ンドを生成する。具体的には、排他書込みコマンドは、
図6に示したバス確保命令ビット605の位置に割り当
てられた排他書込みビットと読出し/書込みビット60
3とをともにONにすることで表現される。分散共有メ
モリドライバ404は、排他書込みコマンドがセットさ
れるとスリープし、分散共有メモリカード902からの
完了割込みを待つ。
【0050】分散共有メモリカード902におけるCP
U906は、排他書込みコマンドを受け取ると、ファー
ムウェア907により図10に示した論理で処理を行
う。なお、第1及び第2実施例における分散共有メモリ
カードの構造上の違いは、図3と図9とを比較すると明
らかなように、より複雑な制御のためのプロセッサ90
6及びそのためのファームウェア907が加わったこと
であるが、分散共有メモリバス901上の動作は全く同
じである。
【0051】以下、図10に示したフローチャートを用
いてCPU906における排他書込み処理について説明
する。
【0052】まず、分散共有メモリカード902が分散
共有メモリバス901の排他使用を行うための確保を行
う(ステップ1002)。確保できた場合は、指定され
たアドレスのデータを読み出す(ステップ1003)。
読み出したデータの値は、指定されたアドレスに対応す
るデータブロックがいずれかの計算機により占有されて
いるのならばその計算機のマシンIDであり、占有され
ていなければ未使用状態を表す−1である。データが−
1でなければ、分散共有メモリバス901を解放しステ
ップ1002から再試行する。なお、デッドロックの検
出機能は本実施例の特徴でないため説明を省略する。既
に確保しているデータに対しさらにロックをしようとす
ると、デッドロックの検出機能がなければステップ10
04において無限にループする。データが−1であった
ならば、自マシンIDの書込みを行う。書込みは第1実
施例と同様に分散共有メモリバス901に接続されてい
るすべての分散共有メモリ904に反映される(ステッ
プ1005)。書込みが終了したならば、分散共有メモ
リバス901を解放し、ロック取得が完了した旨を計算
機のCPU201に対して割込みにより通知する。割込
みを受けたCPU201は、分散共有メモリドライバ4
04へ復帰する。分散共有メモリドライバ404は、i
octlインターフェイスを通し、排他制御プログラム
402へ排他書込みの完了報告を行う。排他制御プログ
ラム402は、アプリケーションプログラム401へ制
御を戻す。
【0053】アプリケーションプログラム401が当該
データブロックへのアクセスを完了すると、排他制御プ
ログラム402のロック解除ルーチンをコールする。排
他制御プログラム402は、分散共有メモリドライバ4
04の書込みルーチンを当該アドレスと未使用状態を表
すデータである−1とともにコールする。分散共有メモ
リドライバ404は、レジスタのデータ領域602に−
1を、アドレス領域601に指定されたアドレスを、そ
して、読出し/書込みビット603にONを、それぞれ
セットする。これにより、分散共有メモリ904の当該
アドレスに−1が書き込まれ、当該アドレスは未使用状
態となり、確保していたロックは解放される。
【0054】ところで、分散共有メモリ904の初期化
及びロックを保持したまま計算機がダウンした場合の後
処理は、分散共有メモリカード902に対してコマンド
を発行することにより行う。オペレーティングシステム
403の立ち上がり時に、分散共有メモリドライバ40
4の初期化ルーチンがコールされる。初期化ルーチン
は、図6に示したバス解放命令ビット604の位置に割
り当てられたイニシャライズビットをONにする。これ
により、分散共有メモリカード902は稼働状態とな
る。
【0055】更に、初期化ルーチンは、クラスタ内でブ
ートアップしている計算機が自計算機以外に一台のみ以
下であるかチェックし、そうであったならば、イニシャ
ライズビット604及び読出し/書込みビット603に
ONをセットする。これにより、分散共有メモリ904
は、分散共有メモリカード902内のCPU906によ
り、未使用状態を表す−1に初期化される。つまり、一
台のみの計算機の稼働であれば、共有となる資源はない
はずであるから、他の計算機の分散共有メモリ904の
内容を反映させる必要はない。上記処理の完了は割込み
によって通知される。
【0056】クラスタ内に自計算機以外にすでに二台以
上の計算機がブートアップしているときには、他の計算
機に分散共有メモリ904の初期化を依頼する。分散共
有メモリドライバ404は、ブートアップ済みの他の計
算機の管理デーモンにメモリ初期化要求のメッセージを
送ると、メッセージを受けた管理デーモンは、自分散共
有メモリドライバ404の同期コマンドをコールする。
これにより、分散共有メモリドライバ404は、読出し
/書込みビット603、イニシャライズビット604及
び排他書込みビット605にすべて1をセットする。こ
れにより、分散共有メモリカード902内のCPU90
6は、分散共有メモリバス901を確保した後、自分散
共有メモリ904内のすべてのデータの読出し/書込み
を行う。これにより、稼働状態にあるすべての分散共有
メモリカード902上の分散共有メモリ904に当該デ
ータがコピーされる。この初期化処理の完了通知は割込
みにて行われる。分散共有メモリドライバ404は、割
込みにより初期化処理の完了を知り、その旨を管理デー
モンに知らせる。管理デーモンは、メッセージの初期化
を依頼した分散共有メモリドライバ404に返送する。
これにより、ブートアップしている計算機に搭載された
分散共有メモリの初期化が完了し、分散共有メモリドラ
イバ404の初期化ルーチンを終了する。
【0057】なお、本実施例では、以上のような初期化
の実現方式をとったが、第1実施例のように各計算機上
の分散共有メモリドライバ404の初期化ルーチン同士
が同期をとり一斉に自分散共有メモリ初期化コマンドを
発行することも可能であるし、複数の後からブートアッ
プされる計算機を1つの同期コマンドで処理する方法も
考えられる。
【0058】また、ロックを取得したままクラスタ内の
いずれかの計算機がダウンした場合のロックの復旧は、
次のような方法で行うことができる。すなわち、第1実
施例と同様に後処理を行うマスタ計算機を決定した後、
排他制御プログラムのロック解除ルーチンをダウンした
計算機のマシンIDでコールする。排他制御プログラム
402は、分散共有メモリドライバ404をioctl
インターフェイスのロック解除コマンドによりマシンI
Dを渡してコールする。
【0059】分散共有メモリドライバ404は、これを
受けてイニシャライズビット604及び排他書込みビッ
ト605にONを、データ領域602に当該マシンID
をセットする。これにより、CPU906は、分散共有
メモリ904内のデータを読み出し、当該マシンIDと
一致したなら未使用状態を表す−1を書き込む。分散共
有メモリドライバ404は、割込みにより通知を受け、
処理の完了を排他制御プログラム402に通知する。
【0060】ここで、第1及び第2の実施例についての
まとめと補足を行う。第1及び第2の実施例は、もっと
も簡単な構成により説明した。すなわち、各計算機10
1、102、103に搭載される分散共有メモリカード
は、お互いに分散共有メモリバス104で接続され分散
共有メモリバス104上のBA信号と、読込み/書込み
を示すR/W信号によってお互いを制御していた。
【0061】分散共有メモリ304、904への書込み
は、分散共有メモリバス104のR/W信号をアサート
し、20ビットのアドレス(ADDR)信号、8ビット
のデータ(DATA)信号を送出し、分散共有メモリバ
ス104に接続されたすべての分散共有メモリカード3
02、902の分散共有メモリコントローラ303、9
03が、これを自分散共有メモリ304、904の当該
アドレスに書き込むことによって行われる。
【0062】分散共有メモリ304、904からの読出
しは、各計算機が有する自分散共有メモリ304、90
4から行われるが、BA信号が、分散共有メモリバス1
04上の他の分散共有メモリカード902によりアサー
トされているときは書込みを行うことができない。
【0063】読出しを行うためのBA信号の確保は、他
の分散共有メモリカード302、902によりBA信号
がアサートされていなければ、随時行うことができる。
BA信号の確保、解放、分散共有メモリ304、904
への読出し/書込みは、ユーザから分散共有メモリコン
トローラ303、903へのレジスタを経由してのコマ
ンド投入により行われる。第1実施例におけるユーザ
は、第2実施例における分散共有メモリコントローラ9
03に対するCPU906に相当する。上述したよう
に、分散共有メモリカード902上のCPU906は、
排他書込みコマンドを受け取ると、排他書込みが成功す
るまで再試行するが、再試行がなされている間にステー
タスビット606に1の書込みをレジスタに受けると再
試行を終了し、データ領域602に当該アドレスから読
み出したデータをセットする。従って、先の排他書込み
要求はクリアされ、これを起因とする計算機への割込み
も発生しない。
【0064】次に、分散共有メモリドライバ404のイ
ンターフェイスとその機能について説明する。
【0065】分散共有メモリドライバ404は、インタ
ーフェイスとして、 1)オープン 2)クローズ 3)排他書込み 4)書込み 5)読出し 6)初期化ルーチン を持っており、第2実施例においては更に、 7)メモリ内容同期 8)ロック解除 の2つのインターフェイスを持つている。分散共有メモ
リドライバ404のフレームワークとしては、3)〜
5)及び7)、8)はioctlインターフェイスのコ
マンドとして提供される。以下、各ioctlインター
フェイスについて説明する。
【0066】UNIXシステムにおいてはデバイスもフ
ァイルシステムを介した特殊ファイルとしてアクセスさ
れる。そのため、1)オープン並びに2)クローズは、
ファイルのオープン、クローズに伴って、分散共有メモ
リドライバ404がデバイスドライバとして必要な処理
を行うために用意されているioctlインターフェイ
スであるが、分散共有メモリドライバ404では特に機
能を必要としない。
【0067】3)排他書込みは、ioctlインターフ
ェイスの1コマンドとして実装されている。当機能を利
用するアプリケーションプログラムは、オープンシステ
ムコールで得たファイルディスクリプタ、排他書込みを
示すコマンド種別、書込みアドレス及びデータをもって
コールする。当該機能は既に説明したように、第1実施
例では、バスロックを行い指定されたアドレスの内容が
−1、つまり、未使用状態であったのならデータ書込み
を行い、戻り値として正常終了を意味する0を返す。一
方、未使用状態でなければ戻り値として−1を返す。排
他書込みの成功/不成功に関わらず、当該アドレスから
読み出した元の値をアプリケーションプログラムにデー
タ領域602に格納することによって報告する。
【0068】第2実施例においては、分散共有メモリカ
ード902上のCPU906は、排他書込みに成功する
まで再試行し、書込みに成功したら、割込みによって通
知され、戻り値として0を、またデータとして−1を、
それぞれ当該アプリケーションプログラム(厳密には上
記第1及び第2実施例においては排他制御プログラム)
に通知する。UNIXはマルチタスクオペレーティング
システムであるので、複数のアプリケーションプログラ
ムが同一のデバイスドライバを見かけ上同時にコールす
ることが可能である。従って、UNIXは、あるアプリ
ケーションプログラムが分散共有メモリカード902の
排他書込みの成功を待ってスリープしているときに、更
に別のアプリケーションプログラムからの排他書込み要
求を実行することができる。
【0069】当該機能において分散共有メモリドライバ
404は、排他書込み要求キューを保持している。排他
書込み要求は、要求のあった順番にキューに接続されて
いく。排他書込み要求は、キューイングされると、分散
共有メモリカードへコマンド発行がなされてから分散共
有メモリドライバ404で設定されるタイムアウト値を
越える時間が経過するまで実行される。時間経過後、当
該分散共有メモリカードのコントロールレジスタのステ
ータスビットに1をセットして、排他書込みの再試行を
終了する。ここで、排他書込み要求が、実行途中であっ
たならば、終了時点におけるデータ等を実行コンテキス
トとして保持して排他書込み要求キューの最後尾に接続
される。この処理は、排他書込みが終了するまで繰り返
し行われる。
【0070】このように、ある排他書込み要求による分
散共有メモリカードの占有を防ぐための論理は、新規要
求のキュー接続時のみではなく、コールアウトと呼ばれ
る定期的にオペレーティングシステム内で実行されるサ
ブルーチン内でも実行される。また、アプリケーション
プログラムからも、排他書込みの中断を要求することが
できる。すでに投入した排他書込み要求のアドレスで、
データとして−1を設定し、ioctlインターフェイ
スを、例えば、ユーザのシグナルハンドラ中からコール
することでも排他書込みを中断させることができる。そ
の一方で、スリープしていた排他書込み要求は、保持し
ている実行コンテキストに基づいてウェイクアップを実
行する。ウェイクアップにより再び実行を始めた排他書
込みは、当該キュー中の読出しデータをインターフェイ
スのデータ領域にセットし、戻り値として−1を返し
て、アプリケーションプログラムに戻る。
【0071】4)書込み並びに5)読出しコマンドのイ
ンターフェイスは、上記各実施例に共通で、ioctl
インターフェイスとしてファイルディスクリプタ、書込
みあるいは読出しのコマンド種別、分散共有メモリ上の
アドレス、また、書込み時ではデータ、読出し時では空
のデータエリアが用意されている。
【0072】書込み時、分散共有メモリドライバ404
は、レジスタの書込みビットに1を更にはアドレス及び
データをセットする。その終了時にはステータスビット
を参照し、その成功を確認する。アドレスに不正のない
限り、あるいは他の計算機によりバスロックが行われて
いない限り、データ書込みは成功する。本iostイン
ターフェイス内のサブルーチンにおいてアドレスのチェ
ックは行われるので、アドレスの不正は発生しないが、
バスロックによるエラーは発生し得る。第1実施例では
iostインターフェイスの中で成功するまで再試行す
る。第2実施例における分散共有メモリカードでは、ス
テータスビットに1をセットすることにより割込みによ
り完了通知させることも可能であるが、第1実施例と同
様に分散共有メモリドライバ404が再試行を行う。結
果として、分散共有メモリへの書込みに成功したならば
0を、アドレス不正を含め失敗したならば−1を戻り値
としてアプリケーションプログラムに返す。
【0073】一方、読出し時、レジスタにアドレスのみ
をセットするとレジスタのデータ領域に自分散共有メモ
リから読み出したデータがセットされる。つまり、分散
共有メモリドライバ404は、その値をioctlイン
ターフェイスで指定されたデータ領域に格納し、戻り値
として0を返す。なお、このレジスタは、常にダブルワ
ード(4バイト)でアクセスされる。ここで、分散共有
メモリカードに対してコマンドを発行し、その終了同期
の方法について言及すると、本実施例すべてにおいて、
割込みによる終了通知を行う以外は、無為命令の挿入な
どにより十分な時間を計算機側で用意することにより行
う。
【0074】6)初期化ルーチンは、オペレーティング
システム立上り時に、分散共有メモリドライバ404の
初期化のためのオペレーティングシステム403から呼
ばれる分散共有メモリドライバ404のioctlイン
ターフェイスである。いずれの実施例においてもすべて
の有効な計算機が同時に初期化ルーチンを実行し調停を
行う必要があるため、その調停手段としてLAN105
等のネットワークが使用できることを前提としている。
通常のデバイスドライバの初期化ルーチンは、システム
ブートプロセスの早い時期にコールされるが、本実施例
では、ネットワークが使用可能となった後、ドライバモ
ジュールのダウンローディングという方法でこれを実現
している。
【0075】第1実施例では、あるタイムアウト期間の
後、IP(Internet Protocol)アド
レスの一番低いものがマスタとなり、上述した方法で初
期化を行う。初期化終了の後、他の計算機の初期化ルー
チンに処理の終了を調停手段を通して通知する。第2実
施例においても同様の調停を行い、分散共有メモリカー
ド902の起動を行う。分散共有メモリカード902を
起動しない限り、分散共有メモリカード902は、休止
状態をとり続ける。上述したように、同期コマンドをレ
ジスタにセットして、分散共有メモリカード902から
の割込み通知を待つ。割込み通知を受けると処理が完了
したものとして、第1実施例と同様に他の計算機に通知
する。
【0076】また、第2実施例では、すでにある分散共
有メモリ904のセッションに途中から、新たな計算機
が参加することを可能としている。このために用意され
たioctlインターフェイスの7)メモリ内容同期コ
マンドは、初期化の必要が生じた計算機に依頼された計
算機上の管理デーモンからコールされる。iostイン
ターフェイスは、ファイルディスクリプタを渡すのみで
ある。
【0077】8)ロック解除は、いずれかの計算機がダ
ウンした時に、その計算機が確保していたロックの解除
を行うときに利用されるioctlインターフェイスで
ある。ファイルディスクリプタロック解除コマンドの種
別及びマシンIDを指定してコールされる。コールされ
ると当該ioctlインターフェイスは、分散共有メモ
リカードのコントロールレジスタに、ロック解除命令を
セットして、割込み通知を待つ。割込み通知を受ける
と、戻り値0をセットして戻る。
【0078】実施例3.以下、本発明に係る第3実施例
について説明する。本実施例における計算機間の排他制
御装置が適用される計算機システム及び各計算機は、第
1実施例と同様、図1及び図2に示した構成を有する。
本実施例におけるソフトウェア構成は図4に示したよう
に第1実施例とほぼ同様であるが、本実施例において特
徴的なことは、システムコールインターフェイスを通し
てオペレーティングシステム403にアクセスを行い通
信機能を提供する通信プログラムを用いることである。
通信プログラムは、図4で言えば排他制御プログラム4
02と同様の位置に配置され、CPU201において実
行される。これにより、排他制御機能のみならず通信機
能を提供することができる。通常時における通信機能
は、LAN105を用いて提供されているが、本実施例
によれば、この通信プログラムを実行させることによ
り、分散共有メモリバス104をLAN105に何らか
の障害が発生した場合の通信路として利用することがで
き、また、LAN105にかかる負荷の軽減を図ること
ができる。
【0079】本実施例における通信プログラムは、通信
路確保、セマフォ操作、及び読出し/書込みのインター
フェイスを有している。以下、通信プログラムにおける
各々のインターフェイス及びその動作について説明す
る。
【0080】通信路確保は、キー、領域サイズを引数と
して渡し、通信路確保インターフェイスをコールする。
キーは通信領域の指定子、領域サイズはバイト単位で各
々256を越えることはできない。通信領域確保インタ
ーフェイスがコールされると、すでに領域確保が行われ
ていないかチェックし、システムコンフィグレーション
によりあらかじめ与えられた分散共有メモリ上の領域か
ら、各々1バイトのキー登録、領域サイズ、セマフォ用
領域及び通信領域の確保を試みる。確保に成功したなら
ば、キー登録エリアに指定されたキーを登録し、領域サ
イズに指定サイズを設定する。設定には分散共有メモリ
ドライバの排他書込みが用いられる。内部的には、キー
が登録されているということは、その領域の領域サイズ
+3バイトが使用中であることを意味する。通信領域確
保インターフェイスは、確保した通信領域のアドレス、
サイズを登録した管理情報及び通信管理プログラムのデ
ータのインデックスとなる通信領域IDを戻り値として
返して終了する。失敗した時は戻り値としてその旨を表
す−1を返す。すでに確保されたキーに対して通信路確
保インターフェイスがコールされたときは、指定された
領域サイズがすでに確保したサイズ以下であれば、初回
と同様に管理情報をセットし、同じく通信領域IDを返
す。ただし、同一の計算機からあるキーに対しての2回
目以降の通信路確保は許さない。
【0081】次に、セマフォ操作のインターフェイスに
ついて説明する。
【0082】セマフォ操作は通信領域に対するロック操
作である。但し、書込みを行う、つまり、送信を行う計
算機が常に同一であるならばこの操作の必要はない。こ
のセマフォ操作は、通信領域IDを引数としてセマフォ
確保/セマフォ解放ルーチンをコールすることによって
行われる。セマフォ確保に成功したならば0、そうでな
ければ−1を戻り値として返す。エラー発生要因は不正
な通信領域IDである。内部的には、通信領域IDから
管理情報を得てセマフォ用領域にシステムコンフィグレ
ーションによって与えられているマシンIDを排他書込
みすることによって行われる。セマフォ解放は、通信領
域を確保した計算機がセマフォ用領域に未使用状態を表
す−1を書き込むことにより行う。セマフォ確保/セマ
フォ解放が完了すると0を返し終了する。
【0083】読出し/書込みは、通信領域ID、通信領
域上のアドレス、また、書込み時には書き込むべきデー
タを、読出し時はデータを読み出す1バイトのデータ領
域のアドレスを引数として読出し/書込みのインターフ
ェイスをコールすることによって行われる。通信プログ
ラムは分散共有メモリドライバの読出し/書込み機能に
よって与えられたアドレスを分散共有メモリ上のアドレ
スに変換し、読出し/書込みを行う。成功時には0を失
敗時には−1を戻り値として返して終了する。失敗する
要因は、通信領域IDの不正、または、アドレスの不正
である。このように通信機能を提供する。
【0084】以上のように、本実施例によれば、排他制
御機能のみならず通信機能をも提供することができる。
【0085】実施例4.以下、本発明に係る第4実施例
について説明する。本実施例における計算機間の排他制
御装置が適用される計算機システム及び各計算機は、第
1実施例と同様、図1及び図2に示した構成を有する。
また、本実施例におけるソフトウェア構成は図4に示し
たように第1実施例と同様である。
【0086】本実施例において特徴的なことは、分散共
有メモリバスに各計算機を識別しうる情報の転送を行う
信号線を設けたことである。各計算機を識別しうる情報
として本実施例ではマシンIDを用いる。また、コンフ
ィグレーション可能な計算機台数分のマシンIDに対応
した信号線(以下、マシンID信号線という)が分散共
有メモリバス104に付加されることで各計算機を識別
させるようにし、またマシンIDの指定読出し/書込み
のコマンドインターフェイスを用意する。上記第1及び
第2実施例では、分散共有メモリドライバのioctl
インターフェイスの一機能である初期化ルーチンを実現
するとき、計算機間の調停をLAN105によるネット
ワーク機能を利用して実現することについてすでに述べ
たが、本実施例においては、分散共有メモリバス104
にマシンID信号線を設けたことで、LAN105を用
いたアプリケーションプログラム等計算機の他のサブシ
ステムによる調停手段を用いることなく計算機間の調停
を実現することができる。すなわち、本実施例における
分散共有メモリバス104を用いることで、ある計算機
から任意に選択した計算機上の分散共有メモリに対して
アクセスすることができる。
【0087】マシンID信号線は、計算機が分散共有メ
モリバス104につながる可能性のある本数分用意され
る。以下に示す本実施例においては8本のマシンID信
号線を設けることとする。従って、最大8台の計算機を
接続できることになる。
【0088】以下、本実施例における動作について説明
する。
【0089】あるマシンID信号線を流れる信号(以
下、ID信号という)がアサートされ、R/W信号がネ
ゲートされると、マシンIDに対応する計算機の分散共
有メモリカードは、BA信号をアサートし、送出されて
いるアドレスに対応するデータを送出する。ID信号の
いずれかがアサートされているときは、通常のトランザ
クションは禁止される。つまり、排他制御されることに
なる。
【0090】R/W信号がアサートされていると、書込
み時にはマシンIDに対応する計算機の分散共有メモリ
カードは、BA信号をアサートし、分散共有メモリバス
上のADDR信号で示されるアドレスにDATA信号で
示される分散共有メモリバス上のデータを書込みに行
く。このとき、相手先となる計算機の分散共有メモリカ
ードは、割込みを自計算機に対して発生させる。
【0091】読出し時、コマンドインターフェイスとし
てステータスビットをONにし、またデータ領域にマシ
ンIDを、アドレス領域にアドレスをそれぞれセットし
実行される。一方、書込み時には、ステータスビットを
ON、読出し/書込みビットをON、マシンIDをコン
トロールレジスタに書き込む。その後、更にデータを書
き込むべき分散共有メモリデータ上のアドレス及びその
データを書き込むことにより実行される。
【0092】次に、本実施例における分散共有メモリド
ライバの初期化ルーチンについて説明する。
【0093】イニシャライズビットを1に設定すること
で分散共有メモリカードをアクティブにする。8本それ
ぞれに割り付けられた信号線の番号ID0からID7ま
での分散共有メモリの先頭アドレスの個別読出しを順次
行う。但し、本実施例において、分散共有メモリのアド
レス0は自計算機のマシンID等管理情報を格納する領
域として使用するためアプリケーションプログラムが利
用することはできない。ある計算機のセッションがすで
に開始されているならば、その計算機の分散共有メモリ
カードから−1が読み出せる。この時、読出し時にエラ
ーとなるマシンIDの計算機は、まだ分散共有メモリカ
ードがアクティブとなっていない。セッションを開始し
ている計算機には割込みがかかるので、分散共有メモリ
ドライバの割込みルーチンは、レジスタの読出しを行っ
た結果、ステータスビット及びイニシャライズビットが
ONになっていることから、この割込みがマシンID指
定の読出しの結果の割込みであることを知る。ここで、
自マシンIDがセッションに参加している分散共有メモ
リカードのなかで一番小さいマシンIDであると判断さ
れれば、第2実施例にあるメモリ内容同期処理を行う。
処理の終了後、まだセッションに参加していなかった分
散共有メモリのアドレス0に対し−1を書き込むこと
で、マシンIDの指定書込みを行う。これにより、新規
にセッションに参加しようとした計算機に割込みがあ
り、これが、スリープしていた初期化ルーチンをウェイ
クアップさせ、初期化ルーチンは自分散共有メモリのア
ドレス0に−1がセットされたことを確認して処理を終
了する。
【0094】まだ1台もブートアップしていない時はそ
のまま終了する。
【0095】すでに1台の計算機だけブートアップして
いた時はスリープし、このマシンIDの指定読出しによ
って受けた割込みルーチンにおいて、自計算機が最初の
1台であることから第2実施例と同様の初期化処理を行
う。自分散共有メモリのアドレス0とまだセッションに
参加していない、つまり、自計算機以外のすべての計算
機のアドレス0に未使用状態を表す−1の書込みを行
う。これによりスリープしていた初期化ルーチンは続行
され、終了する。
【0096】以上のようにして、本実施例によれば、分
散共有メモリバス104にマシンID信号線を設けたこ
とで、LANを用いたアプリケーションプログラム等計
算機の他のサブシステムによる調停手段を用いることな
く計算機間の調停を実現することができる。
【0097】なお、上記各実施例において、具体的な例
として示した値、例えばビットデータをフラグとして使
用した場合の0と1、正常終了か否かを示す戻り値、初
期値等は、一般的に用いられる値で示しただけであり、
この値に限られるものではない。
【0098】
【発明の効果】請求項1記載の発明によれば、排他制御
を行うための分散共有メモリバス並びに分散共有メモリ
バスを制御するコントローラを各計算機に設けたことに
より、複数台の計算機によって構成されるクラスタ内の
共有資源の排他制御を高速に行うことが可能となる。
【0099】また、各々の計算機には同じ規格の分散共
有メモリを用意すればよく、低コスト化が容易に図るこ
とが可能となる。
【0100】また、各分散共有メモリがそれぞれに排他
制御データを保持しているため、仮にいずれかの計算機
がダウンしたとしても、他の計算機において排他制御処
理を続行することが可能となる。
【0101】また、ダウンした計算機が使用していた分
散共有メモリのアドレス位置部分を未使用状態に変更す
ることにより、その計算機が分散共有メモリ上に確保し
ていた部分を解放することができる。
【0102】
【0103】
【図面の簡単な説明】
【図1】 本発明に係る計算機間の排他制御装置の第1
実施例が適用される計算機システムの構成図である。
【図2】 図1における各計算機のブロック構成図であ
る。
【図3】 第1実施例における分散共有メモリカードの
ブロック構成図である。
【図4】 図2に示した計算機に搭載されるソフトウェ
ア構成を示した図である。
【図5】 図2に示した各計算機上の排他制御プログラ
ムが持つ同一の共有資源管理表を示した図である。
【図6】 第1実施例における分散共有メモリカードの
レジスタの内容を示した図である。
【図7】 第1実施例においてバス確保の上、読出し/
書込みを行うときの分散共有メモリバスの動作タイミン
グを示した図である。
【図8】 第1実施例においてバスを確保しない書込み
の分散共有メモリバス301の動作タイミングを示した
図である。
【図9】 第2実施例における分散共有メモリカードの
ブロック構成図である。
【図10】 第2実施例における排他書込み処理を示し
たフローチャートである。
【符号の説明】
101、102、103、200 計算機、104、3
01、901 分散共有メモリバス(DSMバス)、1
05 LAN、205、302、902 分散共有メモ
リカード(DSMカード)、303、903 分散共有
メモリコントローラ(DSMコントローラ)、304、
904 分散共有メモリ、401 アプリケーションプ
ログラム、402 排他制御プログラム、404 分散
共有メモリドライバ(DSMドライバ)、501 共有
資源管理表、502 ブロック番号、503 アドレ
ス、601 DSMアドレス領域、602 データ領
域、603 読出し/書込みビット、604 バス解放
命令ビット、605 バス確保命令ビット、606 ス
テータスビット、701、801 R/W信号、70
2、802 BA信号、703、803 ADDR信
号、704、804 DATA信号、906 CPU、
907 ファームウェア。
───────────────────────────────────────────────────── フロントページの続き (56)参考文献 特開 昭63−228367(JP,A) 特開 平3−232052(JP,A) (58)調査した分野(Int.Cl.7,DB名) G06F 15/177

Claims (2)

    (57)【特許請求の範囲】
  1. 【請求項1】 CPU、分散共有メモリ、コントローラ
    を搭載し、ネットワーク及び分散共有メモリバスに接続
    された複数の計算機の共有資源に対する排他制御を行う
    計算機間の排他制御装置において、前記分散共有メモリは 、計算機による共有資源へのアク
    セス位置に対応した各分散共有メモリにおけるアドレス
    位置には、当該アクセス位置をアクセスした計算機を識
    別可能な排他制御データがそれぞれ書き込まれ、 前記分散共有メモリバスは、 前記ネットワークとは別個
    に設けられ、前記各分散共有メモリを相互にデータ交換
    可能に接続し、リセット信号、アサートされることでバ
    スの占有を示すバスアービトレーション信号、書込み時
    にアサートされる読出し/書込み信号、排他制御データ
    がセットされるデータ信号及び排他制御データが書き込
    まれるアドレス位置がセットされるアドレス信号用の各
    信号線で構成され、 前記コントローラは、 前記CPUが前記分散共有メモリ
    バスを確保する際に送出するバス確保命令に応じて、前
    記バスアービトレーション信号がネゲート状態のときに
    はアサートし、アサート後前記CPUからバス解放命令
    が送出されるか、リセット信号が送出されるまでそのア
    サート状態を保ち、また、前記分散共有メモリバスを確
    保した前記計算機に搭載された前記CPUによる書込み
    命令に応じて、データ信号により表現された当該排他制
    御データを、アドレス信号により表現される分散共有メ
    モリのアドレス位置に書き込むように動作し、 前記CPUは 、排他制御プログラムを含むソフトウェア
    を実行することによって、当該計算機上で動作するアプ
    リケーションからの共有資源のアクセス要求に基づき共
    有資源上のアクセス位置のロック取得/解放要求処理
    実行し、ロック取得要求処理において、そのアクセス
    要求に応じて前記分散共有メモリバス確保命令を送出
    共有資源管理表から当該アクセス要求によるアクセ
    ス位置に対応した当該計算機搭載の分散共有メモリのア
    ドレス位置を参照することによって当該アクセス位置の
    使用状態を確認し、当該アドレス位置に排他制御データ
    が書き込まれていないときには使用可能と判断してその
    排他制御データの書込み要求を出し、ロック解放要求処
    理においては、当該アクセス位置の使用完了時に前記
    散共有メモリバス確保命令を送出した後、排他制御デー
    タが書き込まれた当該アドレス位置に所定の情報の書込
    み要求を出し、 アクセス要求をした計算機のコントロ−ラは排他制御デ
    ータを前記分散共有メモリバスにセットし、他のコント
    ローラは排他制御データが前記分散共有メモリバスにセ
    ットされることを監視することで、当該排他制御データ
    によって全ての前記分散共有メモリの当該アドレス位置
    を同時に更新することを特徴とする計算機間の排他制御
    装置。
  2. 【請求項2】 いずれかの前記計算機がダウンしたと
    き、ダウンしていないいずれかの前記計算機に搭載され
    ている前記CPUは、ソフトウェアを実行することによ
    って、そのダウンした計算機の排他制御データと前記分
    散共有メモリに書き込まれている排他制御データとを比
    較し、一致したときにはロック解放要求処理を実行して
    当該アドレス位置を未使用状態に変更することを特徴と
    する請求項1記載の計算機間の排他制御装置。
JP09974694A 1994-05-13 1994-05-13 計算機間の排他制御装置 Expired - Fee Related JP3385091B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP09974694A JP3385091B2 (ja) 1994-05-13 1994-05-13 計算機間の排他制御装置
US08/433,145 US5625795A (en) 1994-05-13 1995-05-03 Exclusive control unit for a resource shared among computers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP09974694A JP3385091B2 (ja) 1994-05-13 1994-05-13 計算機間の排他制御装置

Publications (2)

Publication Number Publication Date
JPH07306838A JPH07306838A (ja) 1995-11-21
JP3385091B2 true JP3385091B2 (ja) 2003-03-10

Family

ID=14255577

Family Applications (1)

Application Number Title Priority Date Filing Date
JP09974694A Expired - Fee Related JP3385091B2 (ja) 1994-05-13 1994-05-13 計算機間の排他制御装置

Country Status (2)

Country Link
US (1) US5625795A (ja)
JP (1) JP3385091B2 (ja)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802295A (en) * 1994-09-12 1998-09-01 Canon Kabushiki Kaisha Information processing method and system therefor
JPH0962558A (ja) * 1995-08-29 1997-03-07 Fuji Xerox Co Ltd データベース管理システム及び方法
US5842015A (en) * 1996-07-26 1998-11-24 Hewlett-Packard Company System and method for real-time control of hardware in a multiprocessing environment
US6076105A (en) * 1996-08-02 2000-06-13 Hewlett-Packard Corp. Distributed resource and project management
US6324592B1 (en) 1997-02-25 2001-11-27 Keystone Aerospace Apparatus and method for a mobile computer architecture and input/output management system
JPH1124947A (ja) * 1997-07-08 1999-01-29 Sanyo Electric Co Ltd コンピュータシステムの排他制御方法及びコンピュータシステム
JPH11149387A (ja) * 1997-11-17 1999-06-02 Hitachi Ltd 共有装置制御方法及びその実施装置
US6185662B1 (en) 1997-12-22 2001-02-06 Nortel Networks Corporation High availability asynchronous computer system
FR2773935A1 (fr) * 1998-01-19 1999-07-23 Canon Kk Procedes de communication entre systemes informatiques et dispositifs les mettant en oeuvre
US6154787A (en) * 1998-01-21 2000-11-28 Unisys Corporation Grouping shared resources into one or more pools and automatically re-assigning shared resources from where they are not currently needed to where they are needed
US6167475A (en) * 1998-07-06 2000-12-26 International Business Machines Corporation Data transfer method/engine for pipelining shared memory bus accesses
US6438604B1 (en) * 1998-10-05 2002-08-20 Canon Kabushiki Kaisha Digital video network interface
FR2785408A1 (fr) * 1998-10-30 2000-05-05 Canon Research Centre France S Procede et dispositif de communication d'information numerique et appareils les mettant en oeuvre
JP3254434B2 (ja) * 1999-04-13 2002-02-04 三菱電機株式会社 データ通信装置
US6622163B1 (en) * 2000-03-09 2003-09-16 Dell Products L.P. System and method for managing storage resources in a clustered computing environment
US7073089B2 (en) * 2000-10-31 2006-07-04 Hewlett-Packard Development Company, L.P. External fault tolerant shared memory unit in a distributed multiprocessing system
US7155524B1 (en) * 2000-12-04 2006-12-26 Lucent Technologies Inc. Backoff protocols and methods for distributed mutual exclusion and ordering
JP2002189607A (ja) * 2000-12-22 2002-07-05 Nec Corp メモリ管理方法及び情報処理装置
JP2003108420A (ja) * 2001-09-27 2003-04-11 Hitachi Ltd データストレージシステム及びこの制御方法
JP2005352839A (ja) * 2004-06-11 2005-12-22 Matsushita Electric Ind Co Ltd データ通信装置
US8443158B2 (en) * 2005-10-25 2013-05-14 Harris Corporation Mobile wireless communications device providing data management and security features and related methods
US7752367B2 (en) * 2005-12-22 2010-07-06 International Business Machines Corporation File-based access control for shared hardware devices
US7949815B2 (en) 2006-09-27 2011-05-24 Intel Corporation Virtual heterogeneous channel for message passing
WO2008099931A1 (ja) * 2007-02-15 2008-08-21 Fujitsu Ten Limited マイクロコンピュータの模擬装置
JP5233817B2 (ja) * 2009-04-23 2013-07-10 富士通株式会社 ドライバ・プログラム、デバイス管理方法及びコンピュータ装置
CN103403688A (zh) * 2011-02-21 2013-11-20 富士通株式会社 处理器管理方法
JP5900272B2 (ja) * 2012-10-02 2016-04-06 株式会社ソシオネクスト アクセス制御回路、アクセス制御方法
US9405689B2 (en) * 2012-11-19 2016-08-02 Marvell World Trade Ltd. Locally caching data from a shared storage

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4403286A (en) * 1981-03-06 1983-09-06 International Business Machines Corporation Balancing data-processing work loads
JPS63148365A (ja) * 1986-12-12 1988-06-21 Mitsubishi Electric Corp 多重計算機の共有資源管理装置
JPH0394321A (ja) * 1989-06-21 1991-04-19 Hitachi Ltd アクセス制御方法
GB9008366D0 (en) * 1990-04-12 1990-06-13 British Aerospace Data interaction architecture(dia)for real time embedded multi processor systems
EP0472829A3 (en) * 1990-08-31 1993-01-07 International Business Machines Corporation Multicomputer complex and distributed shared data memory
WO1992005490A1 (en) * 1990-09-18 1992-04-02 Fujitsu Limited Exclusive control method for shared memory
JPH04251338A (ja) * 1990-10-10 1992-09-07 Fuji Xerox Co Ltd プロセス間通信の制御方式
JP3014494B2 (ja) * 1991-06-11 2000-02-28 三菱電機株式会社 デュアルポートディスク制御装置
JPH056344A (ja) * 1991-06-28 1993-01-14 Fujitsu Ltd プログラム走行情報採取処理方式
US5295133A (en) * 1992-02-12 1994-03-15 Sprint International Communications Corp. System administration in a flat distributed packet switch architecture

Also Published As

Publication number Publication date
US5625795A (en) 1997-04-29
JPH07306838A (ja) 1995-11-21

Similar Documents

Publication Publication Date Title
JP3385091B2 (ja) 計算機間の排他制御装置
US5682512A (en) Use of deferred bus access for address translation in a shared memory clustered computer system
US6094699A (en) Apparatus and method for coupling devices to a PCI-to-PCI bridge in an intelligent I/O controller
JP4567125B2 (ja) データ・ストレージとデータ処理システムにおける書き込みキャッシュデータの転送方法及びその装置
US7865646B1 (en) Sharing of functions between an embedded controller and a host processor
JP3669653B2 (ja) コンピュータ・システム
US6105085A (en) Lock mechanism for shared resources having associated data structure stored in common memory include a lock portion and a reserve portion
US4819159A (en) Distributed multiprocess transaction processing system and method
JP4536840B2 (ja) 並列処理コンピュータ・システムにおけるデータの転送方法
US20110167189A1 (en) Storage apparatus and its data transfer method
US5682551A (en) System for checking the acceptance of I/O request to an interface using software visible instruction which provides a status signal and performs operations in response thereto
US20110016235A1 (en) System and method for transforming pcie sr-iov functions to appear as legacy functions
JP2000148705A (ja) 共用資源を動的に結合するための方法及びその装置
JP3807250B2 (ja) クラスタシステム、コンピュータ及びプログラム
CA1209272A (en) Control mechanism for multiprocessor systems
US6993612B2 (en) Arbitration method for a source strobed bus
US7080128B2 (en) Inter-processor communication method using a disk cache in a network storage system
JPH096711A (ja) セグメント化したメモリを備えたコンピュータ・システム
JP2002503847A (ja) 2次バスからのメッセージング・ユニットへのアクセス
JP3195489B2 (ja) 外部記憶制御装置およびバス切り替え制御方法
US6356985B1 (en) Computer in multi-cluster system
JP3576647B2 (ja) コンピュータシステム
CN116303207A (zh) 一种总线传输方法、装置、设备及存储介质
JPH0981507A (ja) コンピュータシステム
WO2022194021A1 (zh) 并发控制方法、网卡、计算机设备、存储介质

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071227

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081227

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091227

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees