JPH10320203A - 共有メモリシステム - Google Patents

共有メモリシステム

Info

Publication number
JPH10320203A
JPH10320203A JP13152597A JP13152597A JPH10320203A JP H10320203 A JPH10320203 A JP H10320203A JP 13152597 A JP13152597 A JP 13152597A JP 13152597 A JP13152597 A JP 13152597A JP H10320203 A JPH10320203 A JP H10320203A
Authority
JP
Japan
Prior art keywords
virtual function
shared
address
class
pointer
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
JP13152597A
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 JP13152597A priority Critical patent/JPH10320203A/ja
Publication of JPH10320203A publication Critical patent/JPH10320203A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【課題】 オブジェクト指向システムの仮想関数を持つ
クラスのオブジェクトを複数のアプリケーションプロセ
スが共有するには、仮想関数テーブルのアドレスが各プ
ログラムによって異なるため、仮想関数を使えない。 【解決手段】 プロセス1と2の仮想関数テーブルのア
ドレスをオブジェクトを共有するすべてのプログラムで
同じにする。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、オブジェクト指向
システムのオブジェクトのような複雑な参照関係を持つ
データを共有するための共有メモリシステムに係り、特
に仮想関数を持つクラスのオブジェクトを共有するため
の共有メモリシステムに関する。
【0002】
【従来の技術】オブジェクト指向システムでは、複雑な
参照関係をもつオブジェクト構造を協調して働く複数の
プロセスから同時に参照・更新できることが求められ
る。
【0003】現在、このような共有オブジェクトは市販
のオブジェクト指向データベース管理システム(0bj
ect 0riented Data Base Ma
nagement System,OODBMS)を使
って実現されている。
【0004】オブジェクトの参照関係は、単純にはC+
+言語のポインタを用いて実現できる。しかし、市販の
OODBMSでは、図4に示すように、特別な参照構造
(レファレンス)を作って参照関係をアプリケーション
プロセスのアドレス空間から独立させている。
【0005】この方法ではCPUのアドレス空間を超え
る大きなオブジェクト構造を作れるなどのメリットもあ
るが、内部的には参照をたどるたびにポインタを計算す
るような形になるのでオーバーヘッドが大きい。また、
使い慣れたポインタの代わりにOODBM特有のレファ
レンスを使用するのでコードが書きにくい問題もある。
【0006】上記の欠点を補うため、参照構造を言語機
能に隠してポインタ同様に扱えるようにし、さらにOS
の仮想記憶機構を利用してポインタ計算をぺ一ジ(仮想
記憶の入れ替え単位)ごとに一括して行うようにしてい
るものもある(例:0bjectStore(T
M))。
【0007】この場合は、図5に示すように、べ一ジの
ロード(実メモリへの読み込み)時にだけポインタ計算
が行われるのでアクセスごとに計算するよりは効率がよ
い。
【0008】現状のシステムでは、参照へのアクセスご
と、あるいはべ一ジのロードごとにポインタ計算が必要
で参照関係を利用するためのオーバーへッドが大きい。
頻繁に参無関係を追うシステムや性能を要求されるリア
ルタイムシステムではこのオーバーヘッドは無視できな
い。
【0009】また、ページごとにポインタ計算をする方
法では、実メモリ上に存在するページの内容はプロセス
ごとにポインタ値が異なるものになるため、実メモリ上
のページ実体をプロセス間で共有するこどができず、実
メモリの利用効率が悪い。
【0010】これらの事情から、複数のアプリケーショ
ンプロセスから共有メモリのデータを参照するにおい
て、共有メモリをマッピングするアドレスを固定とし、
各アプリケーションプロセスによるデータの参照をポイ
ンタ値で行う共有オブジェクトシステムがある。
【0011】このシステムでは、図6に示すように、プ
ロセス1及びプロセス2がディスクで示す共有メモリ3
のオブジェクトデータを共有するのに、固定アドレスで
参照できる。こうすることで、オブジェクトはすべての
プロセスから同じアドレスに見え、参照関係を単なるポ
インタで構築することができる。これにより、 (1)参照関係を作るのに特別なデータ構造(レファレ
ンス)を使う必要がなくなる。
【0012】(2)アクセスのためにポインタ計算をす
る必要がなくなる。
【0013】(3)実メモリ上のべ一ジをプロセス間で
共有でき、実メモリの利用効率が良くなる。
【0014】
【発明が解決しようとする課題】従来の固定アドレスに
よる参照を行う共有メモリシステムでは、下記の事情に
より、仮想関数を持つクラスのオブジェクトを共有する
場合に不都合がある。
【0015】C++の仮想関数は、基底クラスのメソッ
ド(仮想関数)を導出クラスで再定義(オーバライド)
している場合に、導出クラスのオブジェクトを参照する
基底クラスのポインタからメソッドを呼出したとき、導
出クラスで再定義した関数が呼出されるようにする機能
である。
【0016】これを実現するために、コンパイラは仮想
関数を持つクラスのオブジェクトに(プログラマから)
隠れた変数を用意し、オブジェクトの所属クラスを識別
する情報を保持する。この情報は、通常、クラスの仮想
関数テーブル(仮想関数エントリを記述した配列)への
ポインタであり、クラスのコンストラクタ(構築子)の
中で正しく初期化される。そして、仮想関数呼出しは、
図7に示すように、aの参照→ポインタ*aの参照→隠
れた変数による仮想関数テーブルの参照→仮想関数のイ
ンデックス参照により、その仮想関数エントリへのジャ
ンプと、仮想関数実体へのジャンプになる二重ジャンプ
として実装される。
【0017】問題は、仮想関数テーブルのアドレスが各
プログラムによって異なるという点にある。この関係
は、図8に示し、あるプログラムで生成されたオブジェ
クトのクラス情報は、他のプログラムから見ると実際の
仮想関数テーブルとは全く無関係のところを指すポイン
タに見える可能性がある。その結果は、システムダウン
から一見正常に見える動作まで何が起きてもおかしくな
い。したがって、共有オブジェクトに対して仮想関数は
全く使えないことになる。
【0018】本発明の目的は、仮想関数を持った共有オ
ブジェクトを保存すること及び共有オブジェクトからの
仮想関数の呼出しも可能にした共有メモリシステムを提
供することにある。
【0019】
【課題を解決するための手段】本発明は、仮想関数テー
ブルのアドレスを固定することで共有オブジェクトの仮
想関数を使用可能にするもので、以下の構成を特徴とす
る。
【0020】オブジェクト指向システムの仮想関数を持
つクラスのオブジェクトを複数のアプリケーションプロ
セスが共有する共有メモリシステムにおいて、前記仮想
関数を持つクラスのオブジェクトを参照するための前記
各アプリケーションプロセスの仮想関数テーブルのアド
レス空間を同じにしたことを特徴とする。
【0021】また、前記共有オブジェクトのクラスを固
定アドレスの共有ライブラリで作成することにより各プ
ロセスのアドレス空間を同じにすることを特徴とする。
【0022】
【発明の実施の形態】本発明の実施形態では、図1に示
すように、プロセス1及び2の仮想関数テーブルのアド
レスをオブジェクトを共有するすべてのプログラムで同
じにする。
【0023】このためには、図2に示すように、共有オ
ブジェクトを作るクラスで仮想関数を持つものをロード
アドレスを固定にした共有ライブラリとして作成するこ
とで実現される。
【0024】例えば、WindowsNTのMS−Vi
sual C++環境では、仮想関数を持つクラスをロ
ードアドレスを固定したDLL(DynamicLin
kLibrary)に記述すればよい。DLLは、プロ
ジェクトの設定で、リンク指定に/base:xxxx
xx(xxxxxxは具体的なアドレス)でベースアド
レスを指定し、/fixedでリロケーション(アドレ
ス再配置)を禁止する。
【0025】画面設定での設定方法は、図3に示すよう
にベースアドレスを設定し、リロケーション禁止(/f
ixed)は、画面の設定項目にないため、Commo
nオプションに直接に書込んで設定する。なお、設定対
象になるDebug及びReleaseの両方を選択し
たままでは書込めないため、個別に書込んで設定する。
【0026】
【発明の効果】以上のとおり、本発明によれば、仮想関
数テーブルのアドレスを固定することとしたため、共有
オブジェクトシステムにおけるポインタによる参照構
造、アドレス計算不要、実メモリの共有機能を損なうこ
となく、仮想関数を持った共有オブジェクトを保存する
こと及び共有オブジェクトからの仮想関数の呼出しも可
能になる。
【図面の簡単な説明】
【図1】本発明の実施形態を示すアドレス一定の仮想関
数テーブル構造。
【図2】実施形態における共有ライブラリによるテーブ
ル作成。
【図3】実施形態におけるDLL設定画面。
【図4】従来のレファレンスによる共有オブジェクトの
参照。
【図5】従来のロード時にポインタ計算をする方法。
【図6】従来の固定アドレス構造。
【図7】仮想関数の呼出しと仮想関数テーブルの説明
図。
【図8】仮想関数テーブルのアドレス不明の説明図。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 オブジェクト指向システムの仮想関数を
    持つクラスのオブジェクトを複数のアプリケーションプ
    ロセスが共有する共有メモリシステムにおいて、 前記仮想関数を持つクラスのオブジェクトを参照するた
    めの前記各アプリケーションプロセスの仮想関数テーブ
    ルのアドレス空間を同じにしたことを特徴とする共有メ
    モリシステム。
  2. 【請求項2】 前記共有オブジェクトのクラスを固定ア
    ドレスの共有ライブラリで作成することにより各プロセ
    スのアドレス空間を同じにしたことを特徴とする請求項
    1に記載の共有メモリシステム。
JP13152597A 1997-05-22 1997-05-22 共有メモリシステム Pending JPH10320203A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP13152597A JPH10320203A (ja) 1997-05-22 1997-05-22 共有メモリシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP13152597A JPH10320203A (ja) 1997-05-22 1997-05-22 共有メモリシステム

Publications (1)

Publication Number Publication Date
JPH10320203A true JPH10320203A (ja) 1998-12-04

Family

ID=15060110

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13152597A Pending JPH10320203A (ja) 1997-05-22 1997-05-22 共有メモリシステム

Country Status (1)

Country Link
JP (1) JPH10320203A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7246135B2 (en) * 2001-01-08 2007-07-17 Intel Corporation Sharing classes between programs
US8495601B2 (en) 2010-06-09 2013-07-23 Lear Corporation Shared memory architecture
US8539472B2 (en) 2010-06-09 2013-09-17 Lear Corporation Method and system of updating shared memory
JP2013542497A (ja) * 2010-09-24 2013-11-21 インテル コーポレイション 計算プラットフォームのヘテロジニアスプロセッサの間で共有されるバーチャルメモリにおけるバーチャル機能の共有
JP2015038770A (ja) * 2014-10-23 2015-02-26 インテル コーポレイション 計算プラットフォームのヘテロジニアスプロセッサの間で共有されるバーチャルメモリにおけるバーチャル機能の共有
JP2016157445A (ja) * 2016-03-10 2016-09-01 インテル コーポレイション 計算プラットフォームのヘテロジニアスプロセッサの間で共有されるバーチャルメモリにおけるバーチャル機能の共有

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7246135B2 (en) * 2001-01-08 2007-07-17 Intel Corporation Sharing classes between programs
US8495601B2 (en) 2010-06-09 2013-07-23 Lear Corporation Shared memory architecture
US8539472B2 (en) 2010-06-09 2013-09-17 Lear Corporation Method and system of updating shared memory
US9195576B2 (en) 2010-06-09 2015-11-24 Lear Corporation Shared memory architecture
DE102011007714B4 (de) * 2010-06-09 2019-02-14 Lear Corp. Verfahren für die Verwendung mit einem Batterieüberwachungssystem, Batterieüberwachungssystem und Verwendung des Verfahrens
JP2013542497A (ja) * 2010-09-24 2013-11-21 インテル コーポレイション 計算プラットフォームのヘテロジニアスプロセッサの間で共有されるバーチャルメモリにおけるバーチャル機能の共有
KR20150006903A (ko) * 2010-09-24 2015-01-19 인텔 코오퍼레이션 컴퓨팅 플랫폼의 이종 프로세서들 간의 공유 가상 메모리에서의 가상 함수들의 공유
US8997113B2 (en) 2010-09-24 2015-03-31 Intel Corporation Sharing virtual functions in a shared virtual memory between heterogeneous processors of a computing platform
KR101534037B1 (ko) * 2010-09-24 2015-07-08 인텔 코포레이션 컴퓨팅 플랫폼의 이종 프로세서들 간의 공유 가상 메모리에서의 가상 함수들의 공유
JP2015038770A (ja) * 2014-10-23 2015-02-26 インテル コーポレイション 計算プラットフォームのヘテロジニアスプロセッサの間で共有されるバーチャルメモリにおけるバーチャル機能の共有
JP2016157445A (ja) * 2016-03-10 2016-09-01 インテル コーポレイション 計算プラットフォームのヘテロジニアスプロセッサの間で共有されるバーチャルメモリにおけるバーチャル機能の共有

Similar Documents

Publication Publication Date Title
US5774722A (en) Method for efficient external reference resolution in dynamically linked shared code libraries in single address space operating systems
JP3314378B2 (ja) 実行可能プログラムに対するメモリ割当を管理するシステムおよび方法
US6876996B2 (en) Method and apparatus for using a shared library mechanism to facilitate sharing of metadata
KR100518584B1 (ko) 공유 라이브러리 시스템 및 상기 시스템 구축 방법
US5692183A (en) Methods and apparatus for providing transparent persistence in a distributed object operating environment
JP2986075B2 (ja) ローカル・オブジェクト・アドレス及びグローバル・オブジェクト識別子を結合して単一オブジェクト・ポインタにするためのシステム
US6052528A (en) Process for managing the multiple inheritance of persistent and shared objects
US20010011368A1 (en) Implementation for an object oriented run-time extensible item
US6397384B1 (en) Run-time addition of interfaces
CN114756296A (zh) 可读写挂载启动方法、装置、存储介质及电子设备
US7028293B2 (en) Constant return optimization transforming indirect calls to data fetches
CN112650539B (zh) 面向异构众核处理器的动态链接运行支撑方法
US5062039A (en) Sharing of workspaces in interactive processing using workspace name tables for linking of workspaces
US5875487A (en) System and method for providing efficient shared memory in a virtual memory system
JP3844801B2 (ja) インターフェース継承を伴うオブジェクト上での呼出しのための方法および機構
JPH10320203A (ja) 共有メモリシステム
US20020066084A1 (en) Coalescing properties, methods and events
CN117056031B (zh) 一种基于虚拟进程的跨容器动态库共享方法
US7246135B2 (en) Sharing classes between programs
US5805887A (en) Universal pointer object
US6408305B1 (en) Access frontier for demand loading pages in object-oriented databases
KR101140522B1 (ko) 객체 관리 시스템 및 방법
US20070055644A1 (en) Global dynamic variable storage for SQL procedures
Corsini et al. The implementation of abstract objects in a capability based addressing architecture
JPS60241135A (ja) アドレス生成方式

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Effective date: 20050816

Free format text: JAPANESE INTERMEDIATE CODE: A131

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20051213