JP3629507B2 - コンピュータ・システム内で共用仮想セグメント識別を使用して共用メモリを提供するシステムおよび方法 - Google Patents
コンピュータ・システム内で共用仮想セグメント識別を使用して共用メモリを提供するシステムおよび方法 Download PDFInfo
- Publication number
- JP3629507B2 JP3629507B2 JP13379996A JP13379996A JP3629507B2 JP 3629507 B2 JP3629507 B2 JP 3629507B2 JP 13379996 A JP13379996 A JP 13379996A JP 13379996 A JP13379996 A JP 13379996A JP 3629507 B2 JP3629507 B2 JP 3629507B2
- Authority
- JP
- Japan
- Prior art keywords
- address space
- shared
- list
- memory
- entry
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/656—Address space sharing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Memory System (AREA)
Description
【発明の属する技術分野】
本発明は、データ処理システムに関する。詳細には、本発明は、効率的な共用メモリを提供するためコンピュータ用の仮想メモリ・システムを動作させるシステムおよび方法に関する。
【0002】
【従来の技術】
関連出願
本願に記載した主題は、ウィリアム・エイチ・シュワルツ(William H.Schwartz)およびスレシュ・ヤナマダラ(Suresh Yanamadala)が本願とともに出願した同時係属出願第08/472364号(IBM整理番号BC9−95−014)「SYSTEM AND METHODFOR PROVIDING EFFICIENT SHARED MEMORY IN A VIRTUAL MEMORY SYSTEM」にも記載されている。
【0003】
上述の関連出願第08/472364号(IBM整理番号BC9−95−014)では、powerPCおよびそのオペレーティング・システムの特性を利用する共用メモリ・システムが記載されており、そこにおける概念は、本願に記載されているように、インテルi386やi486などの他のアーキテクチャにも応用できる。
【0004】
従来、仮想メモリ管理システムの共用メモリは、ページ・エイリアシングによって提供されていた。共用物理ページの各仮想マッピングには、個々のカーネル構造およびハードウェア・ページ・テーブル・エントリ資源が必要であった。そのような配置では、共用メモリを大幅に利用する、OS/2やpowerPC用OS/2(またはワークプレース・オペレーティング・システム)など、システムの冗長オーバヘッドが非常に大きくなる。そのようなシステムでは、共用メモリ属性を変更するのに、各マッピングを個別に修正することが必要になり、その結果性能が大きく低下する。
【0005】
仮想メモリ・システムの中には、各アドレス空間内の同じアドレスに現れる共用メモリ・バンドを特徴とするものがある。反対に、本願に記載したシステムは、任意のアドレスに選択的に接続することができる独立したアドレス空間の生成を使用する。
【0006】
本願に記載のシステムは、アドレス空間を生成し共用するものである。すなわち、アドレス空間は、メモリ・オブジェクト用の容器のようなものである。他の多くの共用メモリ方式は、メモリ・オブジェクトの共用を扱うだけである。メモリ・オブジェクトを共用すると、1つのタスクによる修正が多数のタスクから見えるようになる。アドレス空間を共用すると、メモリ・オブジェクトの生成や破壊などのアドレス空間の修正、および保護の変更などのメモリ・オブジェクトの属性の変更が、共用アドレス空間に対してだけこのオペレーションを実行することによって多数のタスクから見えるようになる。
【0007】
インテルi386アーキテクチャの場合、一般に共用メモリが多数のタスクにより使用されるために、各アドレス空間内のディレクトリ・ページが、それぞれ同一の物理ページを参照するページ・テーブル・エントリを含むページ・テーブルのページを指示することになる。また、アクセス保護を変更する場合など、このページのアクセスを変更する場合、すべてのページ・テーブルを修正する必要がある。したがって、共用メモリを提供するために、powerPC仮想セグメントIDをエミュレートするようにページ・テーブルのページを管理する効率的なデータ構造の構成が、本発明によって提供される。
【0008】
【発明が解決しようとする課題】
本発明の目的は、コンピュータ用の仮想メモリ管理システムを動作させる改善された方法を提供することである。
【0009】
本発明の他の目的は、システム資源を複製せずに、コンピュータ・システムの多数のタスクがメモリ空間を共用できるようにするシステムおよび方法を提供することである。
【0010】
【課題を解決するための手段】
本発明の上記その他の目的は、以下に説明するようにして達成される。仮想メモリ・システム内で効率的な共用メモリを提供する方法は、powerPCの反転ページ・テーブル・アーキテクチャおよびIBMマイクロカーネル仮想メモリ設計を利用する。
【0011】
本発明の共用メモリ方法は、ページ・エイリアシングの(システム資源の)費用の問題を解決する。多数のアドレス空間に「接続する」ことができる独立したアドレス空間が生成される。共用アドレス空間に変更があると、共用アドレス空間に対するただ1つのオペレーションにより、すべての接続アドレス空間に反映される。共用アドレス空間内のエンティティは、1組のシステム資源しか必要としない。すべての接続アドレス空間に同じpowerPC仮想セグメントIDが使用されるので、1組のpowerPCページ・テーブル・エントリしか必要でない。
【0012】
他の特徴は、共用メモリを保護を行うための制御特権付きでまた制御特権なしで接続することである。すなわち、特権を有するタスクは、通常の非共用アドレス空間の場合と同じオペレーションおよび基底アドレスを使用してアドレス空間を操作できる。通常の接続タスクは、オーバレイ共用アドレス空間内のメモリ・オブジェクトを参照できるだけであり、メモリ・オブジェクトを生成または破壊することができない。保護を行うため、共用アドレス空間は、共用マップ内のエントリを追加または差し引くための特権付きでまたは特権なしで接続することができる。制御特権付きの場合、割振り、アクセス保護の変更、削除などの仮想メモリ・オペレーションが可能である。制御特権なしの場合、データの読取りと書込みだけが可能である。アドレス空間を操作するオペレーションは拒絶される。
【0013】
アドレス空間内のメモリ・オブジェクトは、その属性を記述するためにカーネル制御構造を必要とする。共用メモリ・アドレス空間を接続するには、共用アドレス空間に記述をリダイレクトする特別の種類の構造を使用する。この構造は、接続が制御=yesか制御=noかを宣言する。あるオペレーションが許されるか否かを判断するとき、アドレス空間操作オペレーションでこのインジケータを検査する。
【0014】
本発明の特徴は、powerPC仮想セグメントIDを独立した共用アドレス空間と関連付け、次いでこの単一のセグメントIDを、タスクのアドレス空間と「重複」するように多数のタスク中にマップして、共用アドレス空間内のメモリ・オブジェクトに対する共用アクセスを提供することである。したがって、1組のカーネルとハードウェア資源だけが必要である。
【0015】
他の特徴は、多数の独立した共用アドレス空間を生成し、タスクのアドレス空間内の任意のアドレスにそれを接続できることである。
【0016】
同時係属出願第08/472364号(IBM整理番号BC9−95−014)の本発明の同じ概念は、本願では、インテルi386アーキテクチャに応用される。
【0017】
【発明の実施の形態】
次に図面、特に図1を参照すると、データ処理システム11が示されている。データ処理システム11は、システム中央演算処理装置またはCPU12、システム・メモリ13、大容量記憶制御装置14、ならびにデータおよびコマンドを交換するためにCPU12とメモリ13と大容量記憶制御装置14とを連結する通信リンク15を含む。通信リンク15は、システム・バスでもよく、ある種のネットワークでもよい。
【0018】
図2は、図1のシステム用の仮想メモリおよび物理メモリのマップである。仮想アドレス空間20は、i486、powerPCチップなど、CPU12内で使用されるマイクロプロセッサの種類によって確定される。例えば、i486は、1つの4GB仮想アドレス空間だけを示し、いくつかのタスクがこの4GB空間内の空間を使用するが、powerPCオペレーティング・システムは、各タスクごとに別々の4GB仮想アドレス空間をセットアップすることに留意されたい。物理メモリ13は、ブロック21によって表され、仮想アドレス空間よりもはるかに小さい。ページ・テーブル22は、通常はメモリ13内に格納され、空間20からの仮想アドレスを空間21内の物理アドレスに変換する。CPU12上で動作するタスク1は、仮想アドレス空間のブロック23を使用し、ブロック23内の個々の仮想ページ・アドレスをページ・テーブル22内で表引きして、物理アドレスを見つける。各ページ・テーブル・エントリ24は、仮想アドレス・フィールド25と、それに対応する物理アドレス・フィールド26を含む。ページ・テーブル・エントリはまた、保護情報と、そのページが物理メモリ13内にあるかそれともディスク記憶装置15内にあるか(後者の場合はページを使用する前に物理メモリへ移す必要がある)の指示を含む。CPU12上で動作するタスク2は、仮想メモリ・ブロック27を使用し、ページ・テーブル22内のエントリ24を参照する。これらのエントリの一部はタスク1のエントリと同じことがある。すなわち、タスクが物理メモリを共用する。これは、物理メモリ内のページがタスク1内でもタスク2内でも使用されるので、ページ・エイリアシングの例である。ただし、これらの位置は異なる仮想アドレスを有するので、2つのページ・テーブル・エントリ24が使用される。
【0019】
図3も、i486形アーキテクチャ用のメモリを共用する他の方法を示す、図2と同様の仮想メモリおよび物理メモリのマップである。図3では、タスク1とタスク2は重複領域31を有し、同じ仮想アドレスの一部が各タスク内に現われる。したがって、同じページ・テーブル・エントリ24が共用メモリの参照に使用され、そのためページ・テーブル・エントリの重複が回避される。例えば、各タスク内の仮想メモリ位置30は、ページ・テーブル22内の特定のエントリ24を指し、もちろんこのエントリ24は同じ物理メモリ位置を指す。これは、非常に有用な方法であり、本発明の概念によって達成されるが、それでもなおユーザに対する制約がある。すなわち、異なるタスクの共用アドレス空間が同じ仮想アドレスを有する必要がある。
【0020】
図4も、本発明によるメモリを共用する方法を示す図2および図3と同様の仮想メモリおよび物理メモリのマップである。図4では、タスク1とタスク2は、共用メモリ位置32または33を有し、このメモリ位置は、別のトランスレータ34によってページ・テーブル22内の同じエントリ24を、したがって物理メモリ21内の同じ位置35を指す。インテルi386やi486の一例では、トランスレータ34は、図5に示される形式のものでよい。共用メモリは、IBMpowerPC上では、同じ仮想セグメントIDを多数のアドレス空間中にマップすることによって効率的に生成できることが、W.シュワルツおよびS.ヤナマダラが本願とともに出願した同時係属出願第08/472364号(IBM整理番号BC9−95−014)に記載されている。図5は、仮想セグメントIDをエミュレートするために共用インテル・ページ・テーブルを管理する効率的なデータ構造の編成を示す。powerPC仮想セグメントIDの場合と同様に、256MB(28ビット・アドレス)の共用メモリ域を生成し、256MB境界上のアドレス空間中にマップすることができる。図5は、データ構造の編成、すなわち、OSによってメモリ内に生成される新しいデータ構造を示す。仮想アドレス空間20内の各共用メモリ域ごとに、「A」で示す構造が生成される。すべての「A」構造は互いに連結される。すなわち、各データ構造「A」は、次の構造「A」のアドレスを含む。共用メモリ域がタスク1やタスク2などのタスク中にマップされる仮想メモリ空間20内の各位置ごとに、タイプ「G」の構造が生成され、その「A」構造に分岐して連結される。すなわち、構造「A」はその中に第1の「G」のアドレスを有し、各「G」は次の「G」のアドレスを有する。各「G」構造は、共用メモリがタスク中にマップされた256MBスロットを記録する。多数の「G」構造は、同じタスク内で異なる256MBオフセット(28ビット・アドレス)で仮想アドレス空間20内に指示できる。タスク1やタスク2などの各タスクは、図6に示されるように、16エントリのアレイ36を有し、32ビット(4GB)仮想アドレス空間20内の各256MBスロットごとにアレイ内の1つのエントリ37がある。エントリ37は、共用メモリ域がタスク中のその256MBにスロットにマップされている場合、「A」構造を指す。「G」構造は、パス38を介して「T」構造内のオフセットを指示し、このオフセットはパス39を介してディレクトリ・ページ「D」をアドレスする。
【0021】
タスク1やタスク2などの各タスクは、それ自体のインテル・ディレクトリ・ページを有する。ディレクトリ・ページは図5に「D」で示されている。共用メモリ域「A」用のすべてのディレクトリ・ページ「D」内のディレクトリ・ページ・エントリはすべて、パス40を介して、図4のページ・テーブル22に対応する共通の1組の共用ページ・テーブル「P」を指す。
【0022】
図4および図5の編成では、既存のページ・テーブル・エントリを修正する仮想メモリ・オペレーションで、「P」内の共通のページ・テーブル・エントリ、すなわちページ・テーブル22内の単一のエントリ24を修正するだけでよい。共用メモリ域をマップしたすべてのタスクは、この変更の影響を受ける。
【0023】
ディレクトリ・ページ「D」を修正する仮想メモリ・オペレーションは、共用メモリ域を使用するすべてのディレクトリ・ページ「D」を修正しなければならない。例えば、新しい仮想変換を付加する場合、新しいページ・テーブルを割り振る必要がある。この場合には、図6の16エントリ・アレイ36を検査して、このアドレスが共用域内にあるかどうか確認する。アドレスが共用域内にない場合は、タスクのディレクトリ・ページが修正できる。修正が共用域の修正ある場合、「T」構造内のエントリは、パス41を介して、この共用域用の「A」構造を指す。この共用メモリの「G」リスト内のすべてのタスクのディレクトリ・ページが修正される。
【0024】
各仮想アドレスには、セグメント記述子およびページ・テーブル21内で、インテルi386またはi486アーキテクチャにおける様々なレベルのメモリ保護が関連付けられており、これらを使用して、共用メモリ域に対する各参照が共用位置からの読取りしかできないのか、それとも共用位置の読取りと書込みができるのかを制御することができる。
【0025】
本発明の方法によってエミュレートされるが、この場合インテルi386またはi486を使用する、同時係属出願第08/472364号(IBM整理番号BC9−95−014)に記載の共用メモリ方法が、図7の線図に概略的に示されている。この場合も、powerPC用のマイクロカーネル・オペレーティング・システムは、インテルi486形のアーキテクチャの場合と同様に、タスクに連続した4GB32ビット・アドレス空間を共用させるのではなく、各タスクごとに独立した仮想アドレス空間をセットアップすることに留意されたい。この図7には、タスク1、タスク2、タスク3の3つのタスクと、空間Aおよび空間Bと呼ばれる2つの独立した共用アドレス空間45および46が示されている。また、メモリ・オブジェクトMO−1、MO−2、MO−3、およびMO−4も示されている。タスク1には、共用アドレス45空間Aのアドレス空間が、パス47によって表される制御=yes付きで接続されている。これにより、タスク1が、共用アドレス空間Aが接続されるアドレスの範囲内でそれ自体のアドレス空間を操作することによって、共用アドレス空間A内でメモリ・オブジェクトを付加したり破壊することが可能になる。タスク2には、共用アドレス空間Aが、パス48によって表される制御=no付きで接続される。タスク2は、共用アドレス空間A内に含まれるメモリ・オブジェクトを参照することはできるが、そのアドレス空間内のこのアドレスの範囲内でメモリ・オブジェクトを付加したり破壊することはできない。タスク1は、共用アドレス空間Aに含まれるメモリ・オブジェクトに対して同一のアクセス権を有する。
【0026】
図7のタスク2には、共用アドレス空間Bが、パス49によって表される制御=yes付きで接続され、したがってタスク2が共用アドレス空間Bを操作することが可能になる。タスク3には、共用アドレス空間Bが、パス50によって表される制御=no付きで接続される。タスク3は、共用アドレス空間B内に含まれるメモリ・オブジェクトを参照できるだけである。
【0027】
共用アドレス空間のユーザは、各共用アドレス空間内のメモリ・オブジェクトを管理するのに必要なカーネル構造およびハードウェア資源の単一のインスタンスを共用するので、資源は保存される。ページ・エイリアシングは、共に図7のメモリ・オブジェクトMO−4へのアクセス権を有するタスク1およびタスク2によって例示されるように、各タスク内に(ページ・テーブル22内のページ・テーブル・エントリ24などの)複製された資源を必要とする。これは、これらの資源が共用されていないためである。共用アドレス空間が1つのオペレーションで接続されるすべての場所が明らかである、共用アドレス空間内で新しいメモリ・オブジェクトを割り振る場合と異なり、ページ・エイリアシングにより新しいメモリ・オブジェクトを割り振るには、オペレーションをそれが見える各アドレス空間内で実行する必要がある。
【0028】
タスク1は、図7の共用アドレス空間Bへのアクセス権を有しない。同様に、タスク3は、共用メモリ・アドレス空間Aまたは共用アドレス空間A内に含まれる他のメモリ・オブジェクトへのアクセス権を有しない。タスク2は、両方の共用アドレス空間内のメモリ・オブジェクトへのアクセス権を有する。
【0029】
異なるタスクのアドレス空間内の同じアドレスに異なる共用アドレス空間を接続し、それによってタスクが、共通のアドレスにある異なるメモリ・オブジェクトを参照できるようにすることも可能である。
【0030】
共用アドレス空間の典型的な使用法は、共用ライブラリや大域データなど、共用システム資源を共用アドレス空間内に配置し、共用アドレス空間を制御=no付きで同じ仮想アドレスにあるユーザ・タスク内に接続することである。システム・ローダは、共用アドレス空間が制御=yes付きで接続され、新しいライブラリがロードできるようになる。異なる普及パーソナリティを有するユーザ・タスクは、異なる共用アドレス空間に接続することができる。
【0031】
同時係属出願第08/472364号(IBM整理番号BC9−95−014)に記載されているように、powerPC用のIBMマイクロカーネル・オペレーティング・システムでは、上述のように、共用メモリ構成をセットアップするための特定のインタフェースまたはデータ構造が準備されている。いわゆるhost_shared_memory_create機能は、そのサイズが機械依存セグメントのサイズの倍数である仮想アドレス空間を生成する。インテルi386やi486では、セグメント・サイズは、4GBまでの任意のサイズとすることができる。この機能は、ホスト機械用のポートを指定し、また仮想アドレス空間用のvm_space_portと呼ばれるカーネル割振りポート名を指定する。これは、生成された仮想アドレス空間にアクセスするためのトークンとして使用され、このポートに対する他の呼出しはすべて失敗する。したがって、virtual_shared_memory_attach機能は、例えばタスクによる仮想アドレス空間へのアクセスを提供する。この機能は、仮想アドレス空間を所与のアドレス範囲にマップする。この範囲は、継承パラメータにより子タスクによって継承されるように設定できる。この範囲は、上述のように仮想アドレス空間に対する制御権を有するか否か、すなわち制御=yesまたは制御=noに設定できる。このvirtual_shared_memory_attach機能は、仮想アドレス空間をマップすべき仮想メモリ・アドレス空間のポートである、target_spaceと呼ばれる値を指定し、また仮想アドレス空間をマップすべきアドレスであるbase_addrと呼ばれる値を指定する。このアドレスは、機械依存セグメント境界でなければならない。virtual_shared_memory_attach機能はまた、マップすべき仮想アドレス空間のサイズである「size」値と、host_shared_memory_create機能によって戻されるポートであるvm_space_portと呼ばれる値を指定し、また真でも偽でもよい「inherit」と呼ばれる継承インジケータ、ならびに制御=yesまたは制御=noである制御インジケータを有する。同様に、virtual_shared_memory_detach機能は、あるタスクに関連する所与の仮想アドレス空間からマップする仮想アドレス空間を割振り解除する。共用メモリがマップされた範囲は、要求に応じて予約でき、そうでない場合には空になる。このvirtual_shared_memory_detach機能は、(inheritとcontrolを有さない点以外は)virtual_shared_memory_attach機能と全く同じパラメータを指定し、また予約インジケータである「reserve」と呼ばれる、真または偽の値を指定する。
【0032】
まとめとして、本発明の構成に関して以下の事項を開示する。
【0033】
(1)複数のタスクによって共用されるアドレス空間のリストを維持するステップと、
前記アドレス空間のリスト内の各エントリについて、前記共用メモリがタスク内にマップされた仮想アドレス空間内のスロットのリストを維持するステップと、
前記スロットのリスト内の各エントリについて、ディレクトリ・ページのオフセット・テーブルを維持するステップであって、前記オフセット・テーブル内の各エントリが、タスクのディレクトリ・ページを指示し、共用メモリのすべてのそのようなディレクトリ・ページ内のディレクトリ・ページ・エントリがすべて、一組のページ・テーブル・エントリを指示するステップとを含み、
各前記オフセット・テーブル内のエントリが、共用アドレス空間の前記リスト内のエントリを指示する、コンピュータ・メモリ管理システム内で仮想メモリ域を多数のタスクによって共用する方法。
(2)前記アドレス空間のリストがリンク・リストであることを特徴とする、上記(1)に記載の方法。
(3)前記スロットのリストがリンク・リストであることを特徴とする、上記(1)に記載の方法。
(4)さらに、前記タスクのうちの少なくとも1つについて前記ページ・テーブル・エントリのうちの1つのエントリを変更することによって、すべての前記共用メモリ・アドレス空間のメモリ・アクセス特性を変更するステップを含むことを特徴とする、上記(1)に記載の方法。
(5)前記アドレス空間のリスト内のエントリが、前記仮想アドレス空間内の複数の異なる位置を指示することを特徴とする、上記(4)に記載の方法。
(6)コンピュータ・メモリ管理システムを使用する、多数のタスクによって共用される仮想メモリ域を有するコンピュータ・システムにおいて、
複数のタスクによって共用されるアドレス空間のリストを維持する手段と、
前記アドレス空間のリスト内の各エントリについて、前記共用メモリがタスク内にマップされた仮想アドレス空間内のスロットのリストを維持する手段と、
前記スロットのリスト内の各エントリについて、ディレクトリ・ページのオフセット・テーブルを維持する手段であって、前記オフセット・テーブル内の各エントリが、タスクのディレクトリ・ページを指示し、共用メモリのすべてのそのようなディレクトリ・ページ内のディレクトリ・ページ・エントリがすべて、一組のページ・テーブル・エントリを指示する手段とを含み、
各前記オフセット・テーブル内のエントリが、共用アドレス空間の前記リスト内のエントリを指示するシステム。
(7)前記アドレス空間のリストがリンク・リストであることを特徴とする、上記(6)に記載のシステム。
(8)前記スロットのリストがリンク・リストであることを特徴とする、上記(6)に記載のシステム。
(9)さらに、前記タスクのうちの少なくとも1つが、前記ページ・テーブル・エントリのうちの1つのエントリを変更することによって、すべての前記共用メモリ・アドレス空間のメモリ・アクセス特性を変更することを特徴とする、上記(6)に記載のシステム。
(10)前記アドレス空間のリスト内のエントリが、前記仮想アドレス空間内に複数の異なる位置を指示することを特徴とする、上記(9)に記載のシステム。
【図面の簡単な説明】
【図1】本発明による仮想メモリ管理システムを使用するデータ処理システムの高水準ブロック図である。
【図2】ページ・テーブルによる変換を示す、図1のシステム用の仮想メモリおよび物理メモリのマップである。
【図3】メモリを共用する方法を使用するページ・テーブルによる変換を示す、図2と同様の、図1のシステム用の仮想メモリおよび物理メモリのマップである。
【図4】同時係属出願第08/472364号(IBM整理番号BC9−95−014)に記載の、本発明によるメモリを共用する方法を使用するページ・テーブルによる変換を示す、図2および図3のシステムと同様の、図1のシステム用の仮想メモリおよび物理メモリのマップである。
【図5】図4のメモリを共用する方法とともに使用するデータ構造の編成を示す図である。
【図6】図5の「T」構造のデータ構造を示す図である。
【図7】図4の本発明において、タスクがメモリ空間をどのように共用できるかの例を示すメモリ・マップと同様の図である。
【符号の説明】
11 データ処理システム
12 CPU
13 メモリ
14 大容量記憶制御装置
15 通信リンク
20 仮想アドレス空間
21 物理アドレス空間
22 ページ・テーブル
23 ブロック
24 ページ・テーブル・エントリ
25 仮想アドレス・フィールド
26 物理アドレス・フィールド
27 仮想メモリ・ブロック
30 仮想メモリ位置
31 重複領域
34 トランスレータ
36 16エントリ・アレイ
37 エントリ
38 パス
39 パス
40 パス
41 パス
45 共用アドレス空間
46 共用アドレス空間
47 パス
48 パス
49 パス
50 パス
Claims (10)
- コンピュータ・メモリ管理システムにおいて、仮想アドレス空間を複数のタスクによって共用する方法であって、前記コンピュータ・メモリ管理システムは、前記複数のタスクの各々に対して、ディレクトリ・ページのオフセット・テーブルを含み、各前記タスクに対する前記ディレクトリ・ページのオフセット・テーブル内の各エントリは、前記各タスクの1つのディレクトリ・ページを指示するものであり、該方法は、
複数のタスクによって共用される前記仮想アドレス空間内の共用アドレス空間のリストを維持するステップと、
前記共用アドレス空間のリスト内の各エントリについて、共用メモリがタスク内にマップされた前記仮想アドレス空間内のスロットのリスト内の各エントリが前記ディレクトリ・ページのオフセット・テーブル内の1つのエントリを指示する、前記スロットのリストを維持するステップと、
1つの共用アドレス空間に対応する各前記オフセット・テーブル内のエントリのすべてが前記共用アドレス空間のリスト内の1つのエントリを指示するように前記ディレクトリ・ページの各前記オフセット・テーブルを維持するステップと、
前記1つの共用アドレス空間に対応する各前記ディレクトリ・ページ内のエントリのすべてが共通の一組のページ・テーブル・エントリを指示するように各前記ディレクトリ・ページを維持するステップと、
前記共用アドレス空間の仮想アドレスを、前記共用アドレス空間のリスト、前記スロットのリスト、ディレクトリ・ページのオフセット・テーブルを使用して物理アドレスに変換するステップと
を含む方法。 - 前記アドレス空間のリストがリンク・リストであることを特徴とする、請求項1に記載の方法。
- 前記スロットのリストがリンク・リストであることを特徴とする、請求項1に記載の方法。
- さらに、少なくとも1つの前記共用アドレス空間に対して、前記ページ・テーブル・エントリのうちの1つのエントリを変更することによって、前記少なくとも1つの共用アドレス空間のメモリ・アクセス特性を変更するステップを含むことを特徴とする、請求項1に記載の方法。
- 前記アドレス空間のリスト内のエントリが、前記仮想アドレス空間内の複数の異なる位置を指示することを特徴とする、請求項4に記載の方法。
- 仮想アドレス空間、複数のタスク、コンピュータ・メモリ管理システムを含むコンピュータ・システムであって、前記コンピュータ・メモリ管理システムは、前記複数のタスクの各々に対して、ディレクトリ・ページのオフセット・テーブルを含み、各前記タスクに対する前記ディレクトリ・ページの各オフセット・テーブル内の各エントリは、前記各タスクの1つのディレクトリ・ページを指示するものであり、
複数のタスクによって共用される前記仮想アドレス空間内の共用アドレス空間のリストを維持する手段と、
前記共用アドレス空間のリスト内の各エントリについて、共用メモリがタスク内にマップされた前記仮想アドレス空間内のスロットのリスト内の各エントリが前記ディレクトリ・ページのオフセット・テーブル内の1つのエントリを指示する、前記スロットのリストを維持する手段と、
1つの共用アドレス空間に対応する各前記オフセット・テーブル内のエントリのすべてが前記共用アドレス空間のリスト内の1つのエントリを指示するように前記ディレクトリ・ページの各前記オフセット・テーブルを維持する手段と、
前記1つの共用アドレス空間に対応する各前記ディレクトリ・ページ内のエントリのすべてが共通の一組のページ・テーブル・エントリを指示するように各前記ディレクトリ・ページを維持する手段と、
前記共用アドレス空間の仮想アドレスを、前記共用アドレス空間のリスト、前記スロットのリスト、ディレクトリ・ページのオフセット・テーブルを使用して物理アドレスに変換する手段と
を含むコンピュータ・システム。 - 前記アドレス空間のリストがリンク・リストであることを特徴とする、請求項6に記載のシステム。
- 前記スロットのリストがリンク・リストであることを特徴とする、請求項6に記載のシステム。
- さらに、少なくとも1つの前記共用アドレス空間に対して、前記ページ・テーブル・エントリのうちの1つのエントリを変更することによって、前記少なくとも1つの共用アドレス空間のメモリ・アクセス特性を変更することを特徴とする、請求項6に記載のシステム。
- 前記アドレス空間のリスト内のエントリが、前記仮想アドレス空間内に複数の異なる位置を指示することを特徴とする、請求項9に記載のシステム。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/472,363 US5940869A (en) | 1995-06-07 | 1995-06-07 | System and method for providing shared memory using shared virtual segment identification in a computer system |
| US472363 | 1999-12-23 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH096668A JPH096668A (ja) | 1997-01-10 |
| JP3629507B2 true JP3629507B2 (ja) | 2005-03-16 |
Family
ID=23875219
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP13379996A Expired - Fee Related JP3629507B2 (ja) | 1995-06-07 | 1996-05-28 | コンピュータ・システム内で共用仮想セグメント識別を使用して共用メモリを提供するシステムおよび方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US5940869A (ja) |
| EP (1) | EP0747827B1 (ja) |
| JP (1) | JP3629507B2 (ja) |
| DE (1) | DE69622645D1 (ja) |
Families Citing this family (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6349355B1 (en) * | 1997-02-06 | 2002-02-19 | Microsoft Corporation | Sharing executable modules between user and kernel threads |
| US6209066B1 (en) * | 1998-06-30 | 2001-03-27 | Sun Microsystems, Inc. | Method and apparatus for memory allocation in a multi-threaded virtual machine |
| KR100354274B1 (ko) * | 1998-08-25 | 2002-12-11 | 주식회사 하이닉스반도체 | 주전산기의페이지디렉토리공유방법 |
| US6553466B1 (en) * | 1999-10-01 | 2003-04-22 | Infraworks Corporation | Shared memory blocking method and system |
| US6622229B2 (en) | 2001-02-28 | 2003-09-16 | International Business Machines Corporation | Virtual memory structure |
| US7975117B2 (en) | 2003-03-24 | 2011-07-05 | Microsoft Corporation | Enforcing isolation among plural operating systems |
| GB2420642B (en) * | 2004-11-30 | 2008-11-26 | Sendo Int Ltd | Memory management for portable electronic device |
| US8200738B2 (en) * | 2007-09-30 | 2012-06-12 | Oracle America, Inc. | Virtual cluster based upon operating system virtualization |
| CN102629221B (zh) * | 2012-02-28 | 2014-11-19 | 华为技术有限公司 | 用于分布式共享存储的任务同步方法、装置及系统 |
| CN103034544B (zh) * | 2012-12-04 | 2015-08-05 | 杭州迪普科技有限公司 | 一种用户态与内核态共享内存的管理方法和装置 |
| US9191360B2 (en) * | 2013-01-22 | 2015-11-17 | International Business Machines Corporation | Address management in an overlay network environment |
| CN105975407B (zh) * | 2016-03-22 | 2020-10-09 | 华为技术有限公司 | 一种内存地址的映射方法及设备 |
| US10769076B2 (en) | 2018-11-21 | 2020-09-08 | Nvidia Corporation | Distributed address translation in a multi-node interconnect fabric |
Family Cites Families (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4356549A (en) * | 1980-04-02 | 1982-10-26 | Control Data Corporation | System page table apparatus |
| US4758951A (en) * | 1985-04-09 | 1988-07-19 | Tektronix, Inc. | Method for translating virtual addresses into real addresses |
| US4742450A (en) * | 1986-01-16 | 1988-05-03 | International Business Machines Corporation | Method to share copy on write segment for mapped files |
| JPH02202652A (ja) * | 1989-02-01 | 1990-08-10 | Hitachi Ltd | 多重仮想記憶管理方式 |
| JPH04506720A (ja) * | 1990-03-23 | 1992-11-19 | イーストマン・コダック・カンパニー | ディジタル・データ処理システムのための仮想メモリ管理及び割付け装置 |
-
1995
- 1995-06-07 US US08/472,363 patent/US5940869A/en not_active Expired - Fee Related
-
1996
- 1996-05-09 DE DE69622645T patent/DE69622645D1/de not_active Expired - Lifetime
- 1996-05-09 EP EP96303231A patent/EP0747827B1/en not_active Expired - Lifetime
- 1996-05-28 JP JP13379996A patent/JP3629507B2/ja not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| EP0747827B1 (en) | 2002-07-31 |
| DE69622645D1 (de) | 2002-09-05 |
| JPH096668A (ja) | 1997-01-10 |
| EP0747827A1 (en) | 1996-12-11 |
| US5940869A (en) | 1999-08-17 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP0238158B1 (en) | Copy-on-write segment sharing in a virtual memory, virtual machine data processing system | |
| JP3571667B2 (ja) | 割り込みフラグ管理方法 | |
| US6813522B1 (en) | Method of sharing memory in a multi-processor system including a cloning of code and data | |
| KR101137172B1 (ko) | 가상 머신의 메모리를 관리하기 위한 시스템, 방법 및 프로그램 | |
| US6895491B2 (en) | Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching | |
| EP2997477B1 (en) | Page table data management | |
| US5539899A (en) | System and method for handling a segmented program in a memory for a multitasking data processing system utilizing paged virtual storage | |
| US5875487A (en) | System and method for providing efficient shared memory in a virtual memory system | |
| US5835961A (en) | System for non-current page table structure access | |
| US7890691B2 (en) | Memory cache sharing in hybrid hard disk | |
| JP3629507B2 (ja) | コンピュータ・システム内で共用仮想セグメント識別を使用して共用メモリを提供するシステムおよび方法 | |
| US4989137A (en) | Computer memory system | |
| JPS61112255A (ja) | コンピユ−タ装置 | |
| US8006055B2 (en) | Fine granularity hierarchiacal memory protection | |
| US20040268084A1 (en) | Protected RAM filesystem | |
| EP0403124A2 (en) | Overlay swapping | |
| CN118210622A (zh) | 一种内存分配方法及计算设备 | |
| Aron et al. | The SawMill framework for virtual memory diversity | |
| US6286089B1 (en) | Coupling facility using dynamic address translation | |
| US4042913A (en) | Address key register load/store instruction system | |
| JP3808058B2 (ja) | 複数のホストが圧縮データを記憶するメモリ・セクタの集合を共用できるようにするための装置 | |
| CN114217982A (zh) | 一种进程间内存共享方法和装置 | |
| AU623446B2 (en) | System and method for virtual memory management | |
| CN100334566C (zh) | 在文件系统中访问硬盘任意扇区的方法 | |
| US20260086934A1 (en) | Multi-domain hardware memory compression |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040114 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040406 |
|
| A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040427 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040726 |
|
| A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20040928 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041102 |
|
| RD14 | Notification of resignation of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7434 Effective date: 20041102 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041111 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20071224 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081224 Year of fee payment: 4 |
|
| LAPS | Cancellation because of no payment of annual fees |