JPH1031604A - 共有メモリシステム並びにデータベースシステム - Google Patents

共有メモリシステム並びにデータベースシステム

Info

Publication number
JPH1031604A
JPH1031604A JP8183903A JP18390396A JPH1031604A JP H1031604 A JPH1031604 A JP H1031604A JP 8183903 A JP8183903 A JP 8183903A JP 18390396 A JP18390396 A JP 18390396A JP H1031604 A JPH1031604 A JP H1031604A
Authority
JP
Japan
Prior art keywords
shared memory
memory
data
block
page
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP8183903A
Other languages
English (en)
Inventor
Takanori Hayashi
孝則 林
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.)
Meidensha Corp
Meidensha Electric Manufacturing Co Ltd
Original Assignee
Meidensha Corp
Meidensha Electric Manufacturing Co 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 Meidensha Corp, Meidensha Electric Manufacturing Co Ltd filed Critical Meidensha Corp
Priority to JP8183903A priority Critical patent/JPH1031604A/ja
Publication of JPH1031604A publication Critical patent/JPH1031604A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【課題】 複数のアプリケーションプロセスから共有メ
モリの参照・更新をするのに、データベース管理システ
ムによるのではポインタ計算などのため、オーバヘッド
が大きく、実メモリの利用効率も悪い。 【解決手段】 共有メモリ10をマッピングするアドレ
スを固定とし、各アプリケーションプロセス12による
データの参照をポインタ値で行う。この共有メモリのア
クセスの同期・排他制御には、共有メモリのデータをブ
ロック単位又はページ単位で読み書き可能にするマネー
ジャプロセス11を設け、アプリケーションプロセスは
読み出し専用とし、共有メモリのデータ更新は、1ブロ
ックの更新用メモリに共有メモリの該等ブロックをコピ
ーしておき、更新用メモリに対してデータの更新を行
い、マネージャプロセスが更新用メモリをブロック毎に
対応する共有メモリのブロックにコピーする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、オブジェクト指向
システムのオブジェクトのような複雑な参照関係をもつ
データを共有するための共有メモリシステム、並びに、
共有メモリシステムに対するトランザクション処理のた
めのデータベースシステムに関する。
【0002】
【従来の技術】
(A)共有メモリシステム(オブジェクト)について。
【0003】オブジェクト指向システムでは、複雑な参
照関係をもつオブジェクト構造を協調して働く複数のプ
ロセスから同時に参照・更新できることが求められる。
【0004】現在、このような共有オブジェクトは市販
のオブジェクト指向データベース管理システム(0bj
ect 0riented Data Base Ma
nagement System,OODBMS)を使
って実現されている。
【0005】オブジェクトの参照関係は、単純にはC+
+言語のポインタを用いて実現できる。しかし市販のO
ODBMSでは、図16に示すように、特別な参照構造
(レファレンス)を作って参照関係をアプリケーション
プロセスのアドレス空間から独立させている。
【0006】この方法ではCPUのアドレス空間を超え
る大きなオブジェクト構造を作れるなどのメリットもあ
るが、内部的には参照をたどるたびにポインタを計算す
るような形になるのでオーバーヘッドが大きい。また、
使い慣れたポインタの代わりにOODBM特有のレファ
レンスを使用するのでコードが書きにくい問題もある。
【0007】上記の欠点を補うため、参照構造を言語機
能に隠してポインタ同様に扱えるようにし、さらにOS
の仮想記憶機構を利用してポインタ計算をぺ一ジ(仮想
記憶の入れ替え単位)ごとに一括して行うようにしてい
るものも存在する(例:0bjectStore(T
M))。
【0008】この場合は、図17に示すように、べ一ジ
のロード(実メモリへの読み込み)時にだけポインタ計
算が行われるのでアクセスごとに計算するよりは効率が
よい。
【0009】(B)同期・排他制御機構について。
【0010】共有オブジェクトを参照・書替えするの
に、複数のプロセスが共有メモリに安全にアクセスでき
るための同期・排他制御機構が必要となる。
【0011】この機構は、市販のOODBMSではトラ
ンザクションという処理単位によって実現している。ト
ランザクションでは、図18に示すように、データベー
ス処理の最小単位とされ、1トランザクション中のデー
タベースへの更新は全て反映される(コミットの場合)
か、全く反映されない(アボートの場合)かの何れかに
なるようにされる。
【0012】この機構の実現のため、図19に示すよう
に、トランザクションではデータベースの読み書きに対
してオブジェクトをロックし(通常、同一べ一ジ内の他
のオブジェクトも同時にロックされる)、トランザクシ
ョンが終了するまで他のトランザクションが該当のオブ
ジェクトにアクセスできないようにする。但し、読み出
しは複数のトランザクションから同時にできる。
【0013】
【発明が解決しようとする課題】
(第1の課題)市販のOODBMSが提供する大規模な
オブジェクト構造は、多くの利用には必要なくオーバー
スペックである。
【0014】一方、現状のシステムでは、参照へのアク
セスごと、あるいはべ一ジのロードごとにポインタ計算
が必要で参照関係を利用するためのオーバーへッドが大
きい。頻繁に参無関係を追うシステムや性能を要求され
るリアルタイムシステムではこのオーバーヘッドは無視
できない。
【0015】また、ページごとにポインタ計算をする方
法では、実メモリ上に存在するページの内容はプロセス
ごとにポインタ値が異なるものになるため、実メモリ上
のページ実体をプロセス間で共有するこどができず、実
メモリの利用効率が悪い。
【0016】本発明の目的は、オーバーヘッドを小さく
してデータを参照できる共有メモリシステムを提供する
ことにある。
【0017】本発明の他の目的は、実メモリの利用効率
を高めた共有メモリシステムを提供することにある。
【0018】(第2の課題)複数のプロセスが共有メモ
リに安全にアクセスできるための同期・排他制御機構に
ついて、トランザクションがオブジェクトをロックする
と他のトランザクションからは該等オブジェクトにアク
セスできなくなり、ロックが解除されるまで待たなけれ
ばならない。これは高性能を求められるリアルタイムシ
ステムでは問題である。
【0019】一方、監視制御システムでは、オブジェク
トを参照するプロセスは多いが特定のオブジェクトを更
新するプロセスは少ないことが多い。したがって、読み
出し時にロックが掛からないようにすることで性能の向
上が期待できる。
【0020】本発明の他の目的は、共有メモリシステム
に対するアクセス効率を高めたデータベースシステムを
提供することにある。
【0021】
【課題を解決するための手段】
(第1の発明)本発明は、複数のアプリケーションプロ
セスから共有メモリのデータを参照するにおいて、前記
共有メモリをマッピングするアドレスを固定とし、各ア
プリケーションプロセスによるデータの参照をポインタ
値で行うことを特徴とする。
【0022】(第2の発明)本発明は、複数のアプリケ
ーションプロセスから共有メモリのデータを参照・更新
するにおいて、前記共有メモリをマッピングするアドレ
スを固定とし、前記共有メモリのデータをブロック単位
で読み書き可能にするマネージャプロセスを設け、前記
アプリケーションプロセスは前記共有メモリに対してブ
ロック単位の読み出し専用とし、前記アプリケーション
プロセスによる共有メモリのデータ更新は、1ブロック
の更新用メモリに前記共有メモリの該等ブロックをコピ
ーしておき、前記更新用メモリに対してデータの更新を
行い、前記マネージャプロセスは前記更新用メモリをブ
ロック毎に対応する共有メモリのブロックにコピーする
ことを特徴とする。
【0023】(第3の発明)本発明は、複数のアプリケ
ーションプロセスから共有メモリのデータを参照・更新
するにおいて、前記共有メモリをマッピングするアドレ
スを固定とし、前記共有メモリのデータをブロック内の
ページ単位で読み書き可能にするマネージャプロセスを
設け、前記アプリケーションプロセスは前記共有メモリ
に対してページ単位の読み出し専用とし、前記アプリケ
ーションプロセスによる共有メモリのデータ更新は、1
ページの更新用メモリに前記共有メモリの該等ページを
コピーしておき、前記更新用メモリに対してデータの更
新を行い、前記マネージャプロセスは前記更新用メモリ
をページ毎に対応する前記共有メモリのページにコピー
することを特徴とする。
【0024】
【発明の実施の形態】
(第1の実施形態)…共有メモリシステム。
【0025】最近の32bitOS(Windows、
NTなど)では、各プロセスに4Gbyteのアドレス
空間が与えられており、これは、アドレス空間を使い捨
てにしない眼り、通常のアプリケーションには十分なサ
イズである。
【0026】またOSの機能として特定のアドレスにメ
モリをマッピングして共有する機能が提供されている。
【0027】本実施形態では、これら機能を利用して、
システムのすべてのプロセスで共有メモリを同じアドレ
スにマッピングする固定アドレス方式とする。この状態
は、図1に示すようになり、プロセス1及びプロセス2
がディスクで示す共有メモリ3のオブジェクトデータを
共有するのに、固定アドレスで参照できる。
【0028】こうすることで、オブジェクトはすべての
プロセスから同じアドレスに見え、参照関係を単なるポ
インタで構築することができる。
【0029】なお、マッピングは全体を一括してマップ
しておけばよい。そうすることでOSの仮想記憶機構に
より実際の使用状況に応じて効率的に実メモリを利用す
ることができる。
【0030】以上のとおり、本実施形態によれば、共有
メモリをマッピングするアドレスを固定したことにより
参照関係を単なるポインタ値とすることができる。これ
により、 (1)参照関係を作るのに特別なデータ構造(レファレ
ンス)を使う必要がなくなる。
【0031】(2)アクセスのためにポインタ計算をす
る必要がなくなる。
【0032】(3)実メモリ上のべ一ジをプロセス間で
共有でき、実メモリの利用効率が良くなる。
【0033】(第2の実施形態)…基本的なトランザク
ション処理。
【0034】図2は、本発明におけるデータベースシス
テムの構成を示す。本システムは、固定アドレスマッピ
ングになる共有メモリ10を生成管理するマネージャプ
ロセス11と、マッピングして利用する複数のアプリケ
ーションプロセス12からなる。ハードディスク13
は、共有メモリ10の仮想記憶手段にされる。
【0035】共有メモリ10は、マネージャプロセス1
1では読み書き可能に、アプリケーションプロセス12
では読み出し専用に、すべてのプロセスでアドレスが同
一になるようにマッピングする。この時、アプリケーシ
ョンプロセス12ではマッピングはすべて一括してでは
なくマッピングできる最小単位(以下「ブロック」と呼
ぶ。Windows NTでは64KBサイズ)ごとに
分割してマッピングする。このマッピング状況は図3に
示すようになる。
【0036】共有メモリ10は、すべてのプロセスで同
一アドレスに読み出し可能にマッピングされているので
読み出しに関しては自由にできる。
【0037】共有メモリ10を更新するアプリケーショ
ンプロセス12は以下のような手順を実行する。
【0038】(1)初めに図4に示すトランザクション
の開始処理を行い、この中で更新用メモリを確保する。
更新用メモリはトランザクション処理中の中間状態を保
持するためのものでトランザクションを実行するアプリ
ケーションプロセスが作り、終了処理時にはマネージャ
プロセスからも参照される。また、開始処理ではアクセ
ス例外の処理を登録する。
【0039】(2)アプリケーションプロセスは、トラ
ンザクション処理を実行し共有メモリを更新しようとす
るが共有メモリは読み出し専用でマッピングされている
のでOSがアクセス例外を発生させる。
【0040】(3)図5及び図6に示すように、アクセ
ス例外を検出すると、共有メモリの該当アドレスを含む
ブロックがロックされているかどうかチエツクして、ロ
ックされていない場合は該当ブロックをアンマッピング
する。そうして替わりにそのアドレスに更新用メモリの
1ブロックを読み書き可能でマッピングする。このブロ
ックにはアンマッピングされた元の共有メモリの内容を
コピーしておく。さらに、更新用メモリが共有メモリの
どこを代替したかは記録しておく。
【0041】書き込もうとしたブロックがすでにロック
されている場合にはデッドロックを避けるためトランザ
クションを一旦失敗させトランザクションの初めから再
実行する。
【0042】(4)例外処理から戻ると例外の原因とな
った更新処理から再実行され、今度は読み書き可能にな
っているので正常に実行される。この時点で該当アプリ
ケーションプロセスからは共有メモリが更新されたよう
に見えるが、他のプロセスからは更新されていない。
【0043】(5)図7乃至図9に示すように、トラン
ザクション処理を終えると終了処理を行い、この中で実
際の更新を行う。終了処理ではマネージャプロセスに更
新用メモリを与え、マネージャでは更新用メモリをブロ
ックごとに対応する共有メモリのブロックにコピーす
る。
【0044】この際、ブロックをコピーする前にトラン
ザクション実行中の他のプロセスに通知し、各プロセス
で更新前のブロックをローカルにコピーさせる。これに
よって各トランザクションは開始時の共有メモリ状態を
参照することが保証される。更新が完了するとコミット
となり不要になつた更新用メモリはアプリケーションプ
ロセスで破棄される。
【0045】したがって、本実施形態になるデータベー
スシステムは、共有メモリを各プロセスで同一アドレス
に常時マッピングしており、かつ他プロセスでの書き込
み時にもロックが掛からないように設計しているので読
み出しは何時でもできる。
【0046】そして、共有メモリ更新時も事前に各トラ
ンザクションで前状態のコピーを作らせているのでトラ
ンザクションではダーティリード(矛盾のあるデータ読
み出し)の問題も回避される。
【0047】さらに、更新時以外は共有メモリのコピー
がなく、ポインタ計算なども必要ないので効率が良い。
【0048】(第3の実施形態)…管理単位を小さくし
たトランザクション処理。
【0049】第2の実施形態の方法では処理の単位がす
べてブロックになっているがWindows NTなど
では、これが64KBとなり一度にロックしたりコピー
を作るには少し大きい。これをぺ一ジ(OSが仮想記憶
でメモリを入れ替える単位。Windows NTでは
44〜8KBサイズ)単位に処理するには、次のように
する。
【0050】図10乃至図13に示すように、第2の実
施形態の項目(3)で、ロックはアクセスしたアドレス
を含むページにチェックするようにする。共有メモリの
アンマッピングと更新用メモリのマッピングはブロツク
単位のままである。ただしコピーはそこでアクセスされ
たページだけ行い、他のページは読み書き禁止状態に設
定しておく。このときのマッピングの切り替えは図14
に示す。
【0051】上の結果として、図15に第2の実施形態
の場合と本実施形態の場合のページ状態遷移のパターン
を示すように、第2の実施形態に比べて、ページ状態の
パターンが増える。まず、すでに更新用メモリにマッピ
ングされたブロックに対して、読み出しでアクセス例号
が発生する場合が出てくる。この時は該当ページをコピ
ーして読み出し専用に設定する。また書き込みでのアク
セス例外でもすでに更新用メモリがマップされている場
合がある。この場合は必要ならば該当ページをコピーし
て読み書き可能に設定する。
【0052】図12及び図13に示すトランザクション
の終了処理では、マネージャプロセスは更新用メモリの
各ブロックで更新されたページだけを共有メモリにコピ
ーする。
【0053】以上のことから、本実施形態では、ロッ
ク,コピーの単位をページ単位にしているので読み出し
でページコピーする場合もあるが、全体としてのコピー
量は第2の実施形態以下であり、一般的にはさらに効率
が良い。
【0054】
【発明の効果】以上のとおり、本発明によれば、共有メ
モリをマッピングするアドレスを固定としたため、各ア
プリケーションプロセスによるデータの参照をポインタ
値で行うことができ、オーバーヘッドを小さくしてデー
タを参照でき、実メモリの利用効率を高めることができ
る。
【0055】また、本発明は、共有メモリのデータをブ
ロック又はページ単位で読み書き可能にするマネージャ
プロセスを設け、アプリケーションプロセスによる共有
メモリのデータ更新は、マネージャプロセスを介してブ
ロック又はページ単位で行うようにしたため、書込みで
ロックが掛からないようにして読み出し時にロックが掛
からないようになり、共有メモリシステムに対するアク
セス効率を高めることができる。
【0056】また、共有メモリに書込む前に各アプリケ
ーションプロセスでコピーをとることでダーティリード
を防ぐことができる。
【図面の簡単な説明】
【図1】本発明の実施形態を示す固定アドレス構造。
【図2】本発明の他の形態を示すシステム構成図。
【図3】実施形態における共有メモリのマッピング。
【図4】実施形態におけるトランザクションの開始処
理。
【図5】実施形態における書込みアクセス例外処理。
【図6】実施形態における書込み時のマッピング切り替
え。
【図7】実施形態におけるトランザクション終了処理。
【図8】図7における前状態の保持処理。
【図9】状態形態におけるトランザクション終了時の処
理。
【図10】実施形態におけるページ単位処理での書込み
アクセス例外処理。
【図11】実施形態におけるページ単位処理での読み出
しアクセス例外処理。
【図12】実施形態におけるページ単位処理でのトラン
ザクション終了処理。
【図13】図12における前状態の保持処理。
【図14】コピーをページ単位にした書込み時のマッピ
ング切り替え。
【図15】実施形態におけるページ状態遷移のパター
ン。
【図16】従来のレファレンスによる共有オブジェクト
の参照。
【図17】従来のロード時にポインタ計算をする方法。
【図18】従来のトランザクション。
【図19】従来のトランザクションとロック。
【符号の説明】
1、2、12…アプリケーションプロセス 3、10…共有メモリ 11…マネージャプロセス 13…ハードディスク

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 複数のアプリケーションプロセスから共
    有メモリのデータを参照するにおいて、前記共有メモリ
    をマッピングするアドレスを固定とし、各アプリケーシ
    ョンプロセスによるデータの参照をポインタ値で行うこ
    とを特徴とする共有メモリシステム。
  2. 【請求項2】 複数のアプリケーションプロセスから共
    有メモリのデータを参照・更新するにおいて、前記共有
    メモリをマッピングするアドレスを固定とし、前記共有
    メモリのデータをブロック単位で読み書き可能にするマ
    ネージャプロセスを設け、前記アプリケーションプロセ
    スは前記共有メモリに対してブロック単位の読み出し専
    用とし、前記アプリケーションプロセスによる共有メモ
    リのデータ更新は、1ブロックの更新用メモリに前記共
    有メモリの該等ブロックをコピーしておき、前記更新用
    メモリに対してデータの更新を行い、 前記マネージャプロセスは前記更新用メモリをブロック
    毎に対応する共有メモリのブロックにコピーすることを
    特徴とするデータベースシステム。
  3. 【請求項3】 複数のアプリケーションプロセスから共
    有メモリのデータを参照・更新するにおいて、前記共有
    メモリをマッピングするアドレスを固定とし、前記共有
    メモリのデータをブロック内のページ単位で読み書き可
    能にするマネージャプロセスを設け、前記アプリケーシ
    ョンプロセスは前記共有メモリに対してページ単位の読
    み出し専用とし、前記アプリケーションプロセスによる
    共有メモリのデータ更新は、1ページの更新用メモリに
    前記共有メモリの該等ページをコピーしておき、前記更
    新用メモリに対してデータの更新を行い、 前記マネージャプロセスは前記更新用メモリをページ毎
    に対応する前記共有メモリのページにコピーすることを
    特徴とするデータベースシステム。
JP8183903A 1996-07-15 1996-07-15 共有メモリシステム並びにデータベースシステム Pending JPH1031604A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP8183903A JPH1031604A (ja) 1996-07-15 1996-07-15 共有メモリシステム並びにデータベースシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP8183903A JPH1031604A (ja) 1996-07-15 1996-07-15 共有メモリシステム並びにデータベースシステム

Publications (1)

Publication Number Publication Date
JPH1031604A true JPH1031604A (ja) 1998-02-03

Family

ID=16143838

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8183903A Pending JPH1031604A (ja) 1996-07-15 1996-07-15 共有メモリシステム並びにデータベースシステム

Country Status (1)

Country Link
JP (1) JPH1031604A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000011290A (ja) * 1998-06-22 2000-01-14 Hitachi Ltd 旅行時間・渋滞情報推定方法及び装置
KR20010084512A (ko) * 2000-02-26 2001-09-06 박종섭 가변적 통계항목 처리가 가능한 서비스 관리 시스템 및 그제어방법
GB2450538A (en) * 2007-06-28 2008-12-31 Symbian Software Ltd Copying computer files when manipulation is requested
JP2009251853A (ja) * 2008-04-04 2009-10-29 Nec Corp メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法
JP2015095262A (ja) * 2013-11-08 2015-05-18 三星電子株式会社Samsung Electronics Co.,Ltd. 更新されたファイルにアクセスする方法、及びそれを具現するコンピュータとソフトウェア製品

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000011290A (ja) * 1998-06-22 2000-01-14 Hitachi Ltd 旅行時間・渋滞情報推定方法及び装置
KR20010084512A (ko) * 2000-02-26 2001-09-06 박종섭 가변적 통계항목 처리가 가능한 서비스 관리 시스템 및 그제어방법
GB2450538A (en) * 2007-06-28 2008-12-31 Symbian Software Ltd Copying computer files when manipulation is requested
JP2009251853A (ja) * 2008-04-04 2009-10-29 Nec Corp メモリデータベース、メモリデータベースシステム及びメモリデータベース更新方法
US8380660B2 (en) 2008-04-04 2013-02-19 Nec Corporation Database system, database update method, database, and database update program
JP2015095262A (ja) * 2013-11-08 2015-05-18 三星電子株式会社Samsung Electronics Co.,Ltd. 更新されたファイルにアクセスする方法、及びそれを具現するコンピュータとソフトウェア製品

Similar Documents

Publication Publication Date Title
JP2559959B2 (ja) 複数の非同期的プロセスによりレコードを更新する方法
EP1040433B1 (en) A fine-grained consistency mechanism for optimistic concurrency control using lock groups
US5287496A (en) Dynamic, finite versioning for concurrent transaction and query processing
KR101203297B1 (ko) 직접 업데이트 소프트웨어 트랜잭션 메모리
US4912629A (en) Real-time garbage collection for list processing using restructured cells for increased reference counter size
US5522077A (en) Object oriented network system for allocating ranges of globally unique object identifiers from a server process to client processes which release unused identifiers
US5410697A (en) Concurrency management using version identification of shared data as a supplement to use of locks
US5890153A (en) Database lock control method
US7949839B2 (en) Managing memory pages
US20040181560A1 (en) Method and apparatus for interrupting updates to a database to provide read-only access
US5832516A (en) Caching data in recoverable objects
JPH06332778A (ja) トランザクション管理方法
JPH0359734A (ja) データ・セツト回復方法
JP4290337B2 (ja) 参照ハンドルの生成および検証
US4779191A (en) Method and apparatus for expanding the address space of computers
JPH0776944B2 (ja) 仮想索引機構
EP0460934A2 (en) Fault tolerant relocation of storage with atomicity
JPH08504528A (ja) データベースにおけるメモリ空間の最適化方法
US20090164524A1 (en) Shadow-page deferred-update recovery technique integrating shadow page and deferred update techniques in a storage system
US7831642B1 (en) Page cache management for a shared file
US5276878A (en) Method and system for task memory management in a multi-tasking data processing system
JPH08328933A (ja) 並列処理システムのファイルアクセス制御方式
EP0410210A2 (en) Method for dynamically expanding and rapidly accessing file directories
JPH1031604A (ja) 共有メモリシステム並びにデータベースシステム
JPH04155465A (ja) ファイル共用方法