(57)【特許請求の範囲】
【請求項１】
コンピュータ・メモリ管理システムにおいて、仮想アドレス空間を複数のタスクによって共用する方法であって、前記コンピュータ・メモリ管理システムは、前記複数のタスクの各々に対して、ディレクトリ・ページのオフセット・テーブルを含み、各前記タスクに対する前記ディレクトリ・ページのオフセット・テーブル内の各エントリは、前記各タスクの１つのディレクトリ・ページを指示するものであり、該方法は、
複数のタスクによって共用される前記仮想アドレス空間内の共用アドレス空間のリストを維持するステップと、
前記共用アドレス空間のリスト内の各エントリについて、共用メモリがタスク内にマップされた前記仮想アドレス空間内のスロットのリスト内の各エントリが前記ディレクトリ・ページのオフセット・テーブル内の１つのエントリを指示する、前記スロットのリストを維持するステップと、
１つの共用アドレス空間に対応する各前記オフセット・テーブル内のエントリのすべてが前記共用アドレス空間のリスト内の１つのエントリを指示するように前記ディレクトリ・ページの各前記オフセット・テーブルを維持するステップと、
前記１つの共用アドレス空間に対応する各前記ディレクトリ・ページ内のエントリのすべてが共通の一組のページ・テーブル・エントリを指示するように各前記ディレクトリ・ページを維持するステップと、
前記共用アドレス空間の仮想アドレスを、前記共用アドレス空間のリスト、前記スロットのリスト、ディレクトリ・ページのオフセット・テーブルを使用して物理アドレスに変換するステップと
を含む方法。
【請求項２】
前記アドレス空間のリストがリンク・リストであることを特徴とする、請求項１に記載の方法。
【請求項３】
前記スロットのリストがリンク・リストであることを特徴とする、請求項１に記載の方法。
【請求項４】
さらに、少なくとも１つの前記共用アドレス空間に対して、前記ページ・テーブル・エントリのうちの１つのエントリを変更することによって、前記少なくとも１つの共用アドレス空間のメモリ・アクセス特性を変更するステップを含むことを特徴とする、請求項１に記載の方法。
【請求項５】
前記アドレス空間のリスト内のエントリが、前記仮想アドレス空間内の複数の異なる位置を指示することを特徴とする、請求項４に記載の方法。
【請求項６】
仮想アドレス空間、複数のタスク、コンピュータ・メモリ管理システムを含むコンピュータ・システムであって、前記コンピュータ・メモリ管理システムは、前記複数のタスクの各々に対して、ディレクトリ・ページのオフセット・テーブルを含み、各前記タスクに対する前記ディレクトリ・ページの各オフセット・テーブル内の各エントリは、前記各タスクの１つのディレクトリ・ページを指示するものであり、
複数のタスクによって共用される前記仮想アドレス空間内の共用アドレス空間のリストを維持する手段と、
前記共用アドレス空間のリスト内の各エントリについて、共用メモリがタスク内にマップされた前記仮想アドレス空間内のスロットのリスト内の各エントリが前記ディレクトリ・ページのオフセット・テーブル内の１つのエントリを指示する、前記スロットのリストを維持する手段と、
１つの共用アドレス空間に対応する各前記オフセット・テーブル内のエントリのすべてが前記共用アドレス空間のリスト内の１つのエントリを指示するように前記ディレクトリ・ページの各前記オフセット・テーブルを維持する手段と、
前記１つの共用アドレス空間に対応する各前記ディレクトリ・ページ内のエントリのすべてが共通の一組のページ・テーブル・エントリを指示するように各前記ディレクトリ・ページを維持する手段と、
前記共用アドレス空間の仮想アドレスを、前記共用アドレス空間のリスト、前記スロットのリスト、ディレクトリ・ページのオフセット・テーブルを使用して物理アドレスに変換する手段と
を含むコンピュータ・システム。
【請求項７】
前記アドレス空間のリストがリンク・リストであることを特徴とする、請求項６に記載のシステム。
【請求項８】
前記スロットのリストがリンク・リストであることを特徴とする、請求項６に記載のシステム。
【請求項９】
さらに、少なくとも１つの前記共用アドレス空間に対して、前記ページ・テーブル・エントリのうちの１つのエントリを変更することによって、前記少なくとも１つの共用アドレス空間のメモリ・アクセス特性を変更することを特徴とする、請求項６に記載のシステム。
【請求項１０】
前記アドレス空間のリスト内のエントリが、前記仮想アドレス空間内に複数の異なる位置を指示することを特徴とする、請求項９に記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理システムに関する。詳細には、本発明は、効率的な共用メモリを提供するためコンピュータ用の仮想メモリ・システムを動作させるシステムおよび方法に関する。
【０００２】
【従来の技術】
関連出願
本願に記載した主題は、ウィリアム・エイチ・シュワルツ（Ｗｉｌｌｉａｍ  Ｈ．Ｓｃｈｗａｒｔｚ）およびスレシュ・ヤナマダラ（Ｓｕｒｅｓｈ  Ｙａｎａｍａｄａｌａ）が本願とともに出願した同時係属出願第０８／４７２３６４号（ＩＢＭ整理番号ＢＣ９−９５−０１４）「ＳＹＳＴＥＭ  ＡＮＤ  ＭＥＴＨＯＤＦＯＲ  ＰＲＯＶＩＤＩＮＧ  ＥＦＦＩＣＩＥＮＴ  ＳＨＡＲＥＤ  ＭＥＭＯＲＹ  ＩＮ  Ａ  ＶＩＲＴＵＡＬ  ＭＥＭＯＲＹ  ＳＹＳＴＥＭ」にも記載されている。
【０００３】
上述の関連出願第０８／４７２３６４号（ＩＢＭ整理番号ＢＣ９−９５−０１４）では、ｐｏｗｅｒＰＣおよびそのオペレーティング・システムの特性を利用する共用メモリ・システムが記載されており、そこにおける概念は、本願に記載されているように、インテルｉ３８６やｉ４８６などの他のアーキテクチャにも応用できる。
【０００４】
従来、仮想メモリ管理システムの共用メモリは、ページ・エイリアシングによって提供されていた。共用物理ページの各仮想マッピングには、個々のカーネル構造およびハードウェア・ページ・テーブル・エントリ資源が必要であった。そのような配置では、共用メモリを大幅に利用する、ＯＳ／２やｐｏｗｅｒＰＣ用ＯＳ／２（またはワークプレース・オペレーティング・システム）など、システムの冗長オーバヘッドが非常に大きくなる。そのようなシステムでは、共用メモリ属性を変更するのに、各マッピングを個別に修正することが必要になり、その結果性能が大きく低下する。
【０００５】
仮想メモリ・システムの中には、各アドレス空間内の同じアドレスに現れる共用メモリ・バンドを特徴とするものがある。反対に、本願に記載したシステムは、任意のアドレスに選択的に接続することができる独立したアドレス空間の生成を使用する。
【０００６】
本願に記載のシステムは、アドレス空間を生成し共用するものである。すなわち、アドレス空間は、メモリ・オブジェクト用の容器のようなものである。他の多くの共用メモリ方式は、メモリ・オブジェクトの共用を扱うだけである。メモリ・オブジェクトを共用すると、１つのタスクによる修正が多数のタスクから見えるようになる。アドレス空間を共用すると、メモリ・オブジェクトの生成や破壊などのアドレス空間の修正、および保護の変更などのメモリ・オブジェクトの属性の変更が、共用アドレス空間に対してだけこのオペレーションを実行することによって多数のタスクから見えるようになる。
【０００７】
インテルｉ３８６アーキテクチャの場合、一般に共用メモリが多数のタスクにより使用されるために、各アドレス空間内のディレクトリ・ページが、それぞれ同一の物理ページを参照するページ・テーブル・エントリを含むページ・テーブルのページを指示することになる。また、アクセス保護を変更する場合など、このページのアクセスを変更する場合、すべてのページ・テーブルを修正する必要がある。したがって、共用メモリを提供するために、ｐｏｗｅｒＰＣ仮想セグメントＩＤをエミュレートするようにページ・テーブルのページを管理する効率的なデータ構造の構成が、本発明によって提供される。
【０００８】
【発明が解決しようとする課題】
本発明の目的は、コンピュータ用の仮想メモリ管理システムを動作させる改善された方法を提供することである。
【０００９】
本発明の他の目的は、システム資源を複製せずに、コンピュータ・システムの多数のタスクがメモリ空間を共用できるようにするシステムおよび方法を提供することである。
【００１０】
【課題を解決するための手段】
本発明の上記その他の目的は、以下に説明するようにして達成される。仮想メモリ・システム内で効率的な共用メモリを提供する方法は、ｐｏｗｅｒＰＣの反転ページ・テーブル・アーキテクチャおよびＩＢＭマイクロカーネル仮想メモリ設計を利用する。
【００１１】
本発明の共用メモリ方法は、ページ・エイリアシングの（システム資源の）費用の問題を解決する。多数のアドレス空間に「接続する」ことができる独立したアドレス空間が生成される。共用アドレス空間に変更があると、共用アドレス空間に対するただ１つのオペレーションにより、すべての接続アドレス空間に反映される。共用アドレス空間内のエンティティは、１組のシステム資源しか必要としない。すべての接続アドレス空間に同じｐｏｗｅｒＰＣ仮想セグメントＩＤが使用されるので、１組のｐｏｗｅｒＰＣページ・テーブル・エントリしか必要でない。
【００１２】
他の特徴は、共用メモリを保護を行うための制御特権付きでまた制御特権なしで接続することである。すなわち、特権を有するタスクは、通常の非共用アドレス空間の場合と同じオペレーションおよび基底アドレスを使用してアドレス空間を操作できる。通常の接続タスクは、オーバレイ共用アドレス空間内のメモリ・オブジェクトを参照できるだけであり、メモリ・オブジェクトを生成または破壊することができない。保護を行うため、共用アドレス空間は、共用マップ内のエントリを追加または差し引くための特権付きでまたは特権なしで接続することができる。制御特権付きの場合、割振り、アクセス保護の変更、削除などの仮想メモリ・オペレーションが可能である。制御特権なしの場合、データの読取りと書込みだけが可能である。アドレス空間を操作するオペレーションは拒絶される。
【００１３】
アドレス空間内のメモリ・オブジェクトは、その属性を記述するためにカーネル制御構造を必要とする。共用メモリ・アドレス空間を接続するには、共用アドレス空間に記述をリダイレクトする特別の種類の構造を使用する。この構造は、接続が制御＝ｙｅｓか制御＝ｎｏかを宣言する。あるオペレーションが許されるか否かを判断するとき、アドレス空間操作オペレーションでこのインジケータを検査する。
【００１４】
本発明の特徴は、ｐｏｗｅｒＰＣ仮想セグメントＩＤを独立した共用アドレス空間と関連付け、次いでこの単一のセグメントＩＤを、タスクのアドレス空間と「重複」するように多数のタスク中にマップして、共用アドレス空間内のメモリ・オブジェクトに対する共用アクセスを提供することである。したがって、１組のカーネルとハードウェア資源だけが必要である。
【００１５】
他の特徴は、多数の独立した共用アドレス空間を生成し、タスクのアドレス空間内の任意のアドレスにそれを接続できることである。
【００１６】
同時係属出願第０８／４７２３６４号（ＩＢＭ整理番号ＢＣ９−９５−０１４）の本発明の同じ概念は、本願では、インテルｉ３８６アーキテクチャに応用される。
【００１７】
【発明の実施の形態】
次に図面、特に図１を参照すると、データ処理システム１１が示されている。データ処理システム１１は、システム中央演算処理装置またはＣＰＵ１２、システム・メモリ１３、大容量記憶制御装置１４、ならびにデータおよびコマンドを交換するためにＣＰＵ１２とメモリ１３と大容量記憶制御装置１４とを連結する通信リンク１５を含む。通信リンク１５は、システム・バスでもよく、ある種のネットワークでもよい。
【００１８】
図２は、図１のシステム用の仮想メモリおよび物理メモリのマップである。仮想アドレス空間２０は、ｉ４８６、ｐｏｗｅｒＰＣチップなど、ＣＰＵ１２内で使用されるマイクロプロセッサの種類によって確定される。例えば、ｉ４８６は、１つの４ＧＢ仮想アドレス空間だけを示し、いくつかのタスクがこの４ＧＢ空間内の空間を使用するが、ｐｏｗｅｒＰＣオペレーティング・システムは、各タスクごとに別々の４ＧＢ仮想アドレス空間をセットアップすることに留意されたい。物理メモリ１３は、ブロック２１によって表され、仮想アドレス空間よりもはるかに小さい。ページ・テーブル２２は、通常はメモリ１３内に格納され、空間２０からの仮想アドレスを空間２１内の物理アドレスに変換する。ＣＰＵ１２上で動作するタスク１は、仮想アドレス空間のブロック２３を使用し、ブロック２３内の個々の仮想ページ・アドレスをページ・テーブル２２内で表引きして、物理アドレスを見つける。各ページ・テーブル・エントリ２４は、仮想アドレス・フィールド２５と、それに対応する物理アドレス・フィールド２６を含む。ページ・テーブル・エントリはまた、保護情報と、そのページが物理メモリ１３内にあるかそれともディスク記憶装置１５内にあるか（後者の場合はページを使用する前に物理メモリへ移す必要がある）の指示を含む。ＣＰＵ１２上で動作するタスク２は、仮想メモリ・ブロック２７を使用し、ページ・テーブル２２内のエントリ２４を参照する。これらのエントリの一部はタスク１のエントリと同じことがある。すなわち、タスクが物理メモリを共用する。これは、物理メモリ内のページがタスク１内でもタスク２内でも使用されるので、ページ・エイリアシングの例である。ただし、これらの位置は異なる仮想アドレスを有するので、２つのページ・テーブル・エントリ２４が使用される。
【００１９】
図３も、ｉ４８６形アーキテクチャ用のメモリを共用する他の方法を示す、図２と同様の仮想メモリおよび物理メモリのマップである。図３では、タスク１とタスク２は重複領域３１を有し、同じ仮想アドレスの一部が各タスク内に現われる。したがって、同じページ・テーブル・エントリ２４が共用メモリの参照に使用され、そのためページ・テーブル・エントリの重複が回避される。例えば、各タスク内の仮想メモリ位置３０は、ページ・テーブル２２内の特定のエントリ２４を指し、もちろんこのエントリ２４は同じ物理メモリ位置を指す。これは、非常に有用な方法であり、本発明の概念によって達成されるが、それでもなおユーザに対する制約がある。すなわち、異なるタスクの共用アドレス空間が同じ仮想アドレスを有する必要がある。
【００２０】
図４も、本発明によるメモリを共用する方法を示す図２および図３と同様の仮想メモリおよび物理メモリのマップである。図４では、タスク１とタスク２は、共用メモリ位置３２または３３を有し、このメモリ位置は、別のトランスレータ３４によってページ・テーブル２２内の同じエントリ２４を、したがって物理メモリ２１内の同じ位置３５を指す。インテルｉ３８６やｉ４８６の一例では、トランスレータ３４は、図５に示される形式のものでよい。共用メモリは、ＩＢＭｐｏｗｅｒＰＣ上では、同じ仮想セグメントＩＤを多数のアドレス空間中にマップすることによって効率的に生成できることが、Ｗ．シュワルツおよびＳ．ヤナマダラが本願とともに出願した同時係属出願第０８／４７２３６４号（ＩＢＭ整理番号ＢＣ９−９５−０１４）に記載されている。図５は、仮想セグメントＩＤをエミュレートするために共用インテル・ページ・テーブルを管理する効率的なデータ構造の編成を示す。ｐｏｗｅｒＰＣ仮想セグメントＩＤの場合と同様に、２５６ＭＢ（２８ビット・アドレス）の共用メモリ域を生成し、２５６ＭＢ境界上のアドレス空間中にマップすることができる。図５は、データ構造の編成、すなわち、ＯＳによってメモリ内に生成される新しいデータ構造を示す。仮想アドレス空間２０内の各共用メモリ域ごとに、「Ａ」で示す構造が生成される。すべての「Ａ」構造は互いに連結される。すなわち、各データ構造「Ａ」は、次の構造「Ａ」のアドレスを含む。共用メモリ域がタスク１やタスク２などのタスク中にマップされる仮想メモリ空間２０内の各位置ごとに、タイプ「Ｇ」の構造が生成され、その「Ａ」構造に分岐して連結される。すなわち、構造「Ａ」はその中に第１の「Ｇ」のアドレスを有し、各「Ｇ」は次の「Ｇ」のアドレスを有する。各「Ｇ」構造は、共用メモリがタスク中にマップされた２５６ＭＢスロットを記録する。多数の「Ｇ」構造は、同じタスク内で異なる２５６ＭＢオフセット（２８ビット・アドレス）で仮想アドレス空間２０内に指示できる。タスク１やタスク２などの各タスクは、図６に示されるように、１６エントリのアレイ３６を有し、３２ビット（４ＧＢ）仮想アドレス空間２０内の各２５６ＭＢスロットごとにアレイ内の１つのエントリ３７がある。エントリ３７は、共用メモリ域がタスク中のその２５６ＭＢにスロットにマップされている場合、「Ａ」構造を指す。「Ｇ」構造は、パス３８を介して「Ｔ」構造内のオフセットを指示し、このオフセットはパス３９を介してディレクトリ・ページ「Ｄ」をアドレスする。
【００２１】
タスク１やタスク２などの各タスクは、それ自体のインテル・ディレクトリ・ページを有する。ディレクトリ・ページは図５に「Ｄ」で示されている。共用メモリ域「Ａ」用のすべてのディレクトリ・ページ「Ｄ」内のディレクトリ・ページ・エントリはすべて、パス４０を介して、図４のページ・テーブル２２に対応する共通の１組の共用ページ・テーブル「Ｐ」を指す。
【００２２】
図４および図５の編成では、既存のページ・テーブル・エントリを修正する仮想メモリ・オペレーションで、「Ｐ」内の共通のページ・テーブル・エントリ、すなわちページ・テーブル２２内の単一のエントリ２４を修正するだけでよい。共用メモリ域をマップしたすべてのタスクは、この変更の影響を受ける。
【００２３】
ディレクトリ・ページ「Ｄ」を修正する仮想メモリ・オペレーションは、共用メモリ域を使用するすべてのディレクトリ・ページ「Ｄ」を修正しなければならない。例えば、新しい仮想変換を付加する場合、新しいページ・テーブルを割り振る必要がある。この場合には、図６の１６エントリ・アレイ３６を検査して、このアドレスが共用域内にあるかどうか確認する。アドレスが共用域内にない場合は、タスクのディレクトリ・ページが修正できる。修正が共用域の修正ある場合、「Ｔ」構造内のエントリは、パス４１を介して、この共用域用の「Ａ」構造を指す。この共用メモリの「Ｇ」リスト内のすべてのタスクのディレクトリ・ページが修正される。
【００２４】
各仮想アドレスには、セグメント記述子およびページ・テーブル２１内で、インテルｉ３８６またはｉ４８６アーキテクチャにおける様々なレベルのメモリ保護が関連付けられており、これらを使用して、共用メモリ域に対する各参照が共用位置からの読取りしかできないのか、それとも共用位置の読取りと書込みができるのかを制御することができる。
【００２５】
本発明の方法によってエミュレートされるが、この場合インテルｉ３８６またはｉ４８６を使用する、同時係属出願第０８／４７２３６４号（ＩＢＭ整理番号ＢＣ９−９５−０１４）に記載の共用メモリ方法が、図７の線図に概略的に示されている。この場合も、ｐｏｗｅｒＰＣ用のマイクロカーネル・オペレーティング・システムは、インテルｉ４８６形のアーキテクチャの場合と同様に、タスクに連続した４ＧＢ３２ビット・アドレス空間を共用させるのではなく、各タスクごとに独立した仮想アドレス空間をセットアップすることに留意されたい。この図７には、タスク１、タスク２、タスク３の３つのタスクと、空間Ａおよび空間Ｂと呼ばれる２つの独立した共用アドレス空間４５および４６が示されている。また、メモリ・オブジェクトＭＯ−１、ＭＯ−２、ＭＯ−３、およびＭＯ−４も示されている。タスク１には、共用アドレス４５空間Ａのアドレス空間が、パス４７によって表される制御＝ｙｅｓ付きで接続されている。これにより、タスク１が、共用アドレス空間Ａが接続されるアドレスの範囲内でそれ自体のアドレス空間を操作することによって、共用アドレス空間Ａ内でメモリ・オブジェクトを付加したり破壊することが可能になる。タスク２には、共用アドレス空間Ａが、パス４８によって表される制御＝ｎｏ付きで接続される。タスク２は、共用アドレス空間Ａ内に含まれるメモリ・オブジェクトを参照することはできるが、そのアドレス空間内のこのアドレスの範囲内でメモリ・オブジェクトを付加したり破壊することはできない。タスク１は、共用アドレス空間Ａに含まれるメモリ・オブジェクトに対して同一のアクセス権を有する。
【００２６】
図７のタスク２には、共用アドレス空間Ｂが、パス４９によって表される制御＝ｙｅｓ付きで接続され、したがってタスク２が共用アドレス空間Ｂを操作することが可能になる。タスク３には、共用アドレス空間Ｂが、パス５０によって表される制御＝ｎｏ付きで接続される。タスク３は、共用アドレス空間Ｂ内に含まれるメモリ・オブジェクトを参照できるだけである。
【００２７】
共用アドレス空間のユーザは、各共用アドレス空間内のメモリ・オブジェクトを管理するのに必要なカーネル構造およびハードウェア資源の単一のインスタンスを共用するので、資源は保存される。ページ・エイリアシングは、共に図７のメモリ・オブジェクトＭＯ−４へのアクセス権を有するタスク１およびタスク２によって例示されるように、各タスク内に（ページ・テーブル２２内のページ・テーブル・エントリ２４などの）複製された資源を必要とする。これは、これらの資源が共用されていないためである。共用アドレス空間が１つのオペレーションで接続されるすべての場所が明らかである、共用アドレス空間内で新しいメモリ・オブジェクトを割り振る場合と異なり、ページ・エイリアシングにより新しいメモリ・オブジェクトを割り振るには、オペレーションをそれが見える各アドレス空間内で実行する必要がある。
【００２８】
タスク１は、図７の共用アドレス空間Ｂへのアクセス権を有しない。同様に、タスク３は、共用メモリ・アドレス空間Ａまたは共用アドレス空間Ａ内に含まれる他のメモリ・オブジェクトへのアクセス権を有しない。タスク２は、両方の共用アドレス空間内のメモリ・オブジェクトへのアクセス権を有する。
【００２９】
異なるタスクのアドレス空間内の同じアドレスに異なる共用アドレス空間を接続し、それによってタスクが、共通のアドレスにある異なるメモリ・オブジェクトを参照できるようにすることも可能である。
【００３０】
共用アドレス空間の典型的な使用法は、共用ライブラリや大域データなど、共用システム資源を共用アドレス空間内に配置し、共用アドレス空間を制御＝ｎｏ付きで同じ仮想アドレスにあるユーザ・タスク内に接続することである。システム・ローダは、共用アドレス空間が制御＝ｙｅｓ付きで接続され、新しいライブラリがロードできるようになる。異なる普及パーソナリティを有するユーザ・タスクは、異なる共用アドレス空間に接続することができる。
【００３１】
同時係属出願第０８／４７２３６４号（ＩＢＭ整理番号ＢＣ９−９５−０１４）に記載されているように、ｐｏｗｅｒＰＣ用のＩＢＭマイクロカーネル・オペレーティング・システムでは、上述のように、共用メモリ構成をセットアップするための特定のインタフェースまたはデータ構造が準備されている。いわゆるｈｏｓｔ＿ｓｈａｒｅｄ＿ｍｅｍｏｒｙ＿ｃｒｅａｔｅ機能は、そのサイズが機械依存セグメントのサイズの倍数である仮想アドレス空間を生成する。インテルｉ３８６やｉ４８６では、セグメント・サイズは、４ＧＢまでの任意のサイズとすることができる。この機能は、ホスト機械用のポートを指定し、また仮想アドレス空間用のｖｍ＿ｓｐａｃｅ＿ｐｏｒｔと呼ばれるカーネル割振りポート名を指定する。これは、生成された仮想アドレス空間にアクセスするためのトークンとして使用され、このポートに対する他の呼出しはすべて失敗する。したがって、ｖｉｒｔｕａｌ＿ｓｈａｒｅｄ＿ｍｅｍｏｒｙ＿ａｔｔａｃｈ機能は、例えばタスクによる仮想アドレス空間へのアクセスを提供する。この機能は、仮想アドレス空間を所与のアドレス範囲にマップする。この範囲は、継承パラメータにより子タスクによって継承されるように設定できる。この範囲は、上述のように仮想アドレス空間に対する制御権を有するか否か、すなわち制御＝ｙｅｓまたは制御＝ｎｏに設定できる。このｖｉｒｔｕａｌ＿ｓｈａｒｅｄ＿ｍｅｍｏｒｙ＿ａｔｔａｃｈ機能は、仮想アドレス空間をマップすべき仮想メモリ・アドレス空間のポートである、ｔａｒｇｅｔ＿ｓｐａｃｅと呼ばれる値を指定し、また仮想アドレス空間をマップすべきアドレスであるｂａｓｅ＿ａｄｄｒと呼ばれる値を指定する。このアドレスは、機械依存セグメント境界でなければならない。ｖｉｒｔｕａｌ＿ｓｈａｒｅｄ＿ｍｅｍｏｒｙ＿ａｔｔａｃｈ機能はまた、マップすべき仮想アドレス空間のサイズである「ｓｉｚｅ」値と、ｈｏｓｔ＿ｓｈａｒｅｄ＿ｍｅｍｏｒｙ＿ｃｒｅａｔｅ機能によって戻されるポートであるｖｍ＿ｓｐａｃｅ＿ｐｏｒｔと呼ばれる値を指定し、また真でも偽でもよい「ｉｎｈｅｒｉｔ」と呼ばれる継承インジケータ、ならびに制御＝ｙｅｓまたは制御＝ｎｏである制御インジケータを有する。同様に、ｖｉｒｔｕａｌ＿ｓｈａｒｅｄ＿ｍｅｍｏｒｙ＿ｄｅｔａｃｈ機能は、あるタスクに関連する所与の仮想アドレス空間からマップする仮想アドレス空間を割振り解除する。共用メモリがマップされた範囲は、要求に応じて予約でき、そうでない場合には空になる。このｖｉｒｔｕａｌ＿ｓｈａｒｅｄ＿ｍｅｍｏｒｙ＿ｄｅｔａｃｈ機能は、（ｉｎｈｅｒｉｔとｃｏｎｔｒｏｌを有さない点以外は）ｖｉｒｔｕａｌ＿ｓｈａｒｅｄ＿ｍｅｍｏｒｙ＿ａｔｔａｃｈ機能と全く同じパラメータを指定し、また予約インジケータである「ｒｅｓｅｒｖｅ」と呼ばれる、真または偽の値を指定する。
【００３２】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３３】
（１）複数のタスクによって共用されるアドレス空間のリストを維持するステップと、
前記アドレス空間のリスト内の各エントリについて、前記共用メモリがタスク内にマップされた仮想アドレス空間内のスロットのリストを維持するステップと、
前記スロットのリスト内の各エントリについて、ディレクトリ・ページのオフセット・テーブルを維持するステップであって、前記オフセット・テーブル内の各エントリが、タスクのディレクトリ・ページを指示し、共用メモリのすべてのそのようなディレクトリ・ページ内のディレクトリ・ページ・エントリがすべて、一組のページ・テーブル・エントリを指示するステップとを含み、
各前記オフセット・テーブル内のエントリが、共用アドレス空間の前記リスト内のエントリを指示する、コンピュータ・メモリ管理システム内で仮想メモリ域を多数のタスクによって共用する方法。
（２）前記アドレス空間のリストがリンク・リストであることを特徴とする、上記（１）に記載の方法。
（３）前記スロットのリストがリンク・リストであることを特徴とする、上記（１）に記載の方法。
（４）さらに、前記タスクのうちの少なくとも１つについて前記ページ・テーブル・エントリのうちの１つのエントリを変更することによって、すべての前記共用メモリ・アドレス空間のメモリ・アクセス特性を変更するステップを含むことを特徴とする、上記（１）に記載の方法。
（５）前記アドレス空間のリスト内のエントリが、前記仮想アドレス空間内の複数の異なる位置を指示することを特徴とする、上記（４）に記載の方法。
（６）コンピュータ・メモリ管理システムを使用する、多数のタスクによって共用される仮想メモリ域を有するコンピュータ・システムにおいて、
複数のタスクによって共用されるアドレス空間のリストを維持する手段と、
前記アドレス空間のリスト内の各エントリについて、前記共用メモリがタスク内にマップされた仮想アドレス空間内のスロットのリストを維持する手段と、
前記スロットのリスト内の各エントリについて、ディレクトリ・ページのオフセット・テーブルを維持する手段であって、前記オフセット・テーブル内の各エントリが、タスクのディレクトリ・ページを指示し、共用メモリのすべてのそのようなディレクトリ・ページ内のディレクトリ・ページ・エントリがすべて、一組のページ・テーブル・エントリを指示する手段とを含み、
各前記オフセット・テーブル内のエントリが、共用アドレス空間の前記リスト内のエントリを指示するシステム。
（７）前記アドレス空間のリストがリンク・リストであることを特徴とする、上記（６）に記載のシステム。
（８）前記スロットのリストがリンク・リストであることを特徴とする、上記（６）に記載のシステム。
（９）さらに、前記タスクのうちの少なくとも１つが、前記ページ・テーブル・エントリのうちの１つのエントリを変更することによって、すべての前記共用メモリ・アドレス空間のメモリ・アクセス特性を変更することを特徴とする、上記（６）に記載のシステム。
（１０）前記アドレス空間のリスト内のエントリが、前記仮想アドレス空間内に複数の異なる位置を指示することを特徴とする、上記（９）に記載のシステム。
【図面の簡単な説明】
【図１】本発明による仮想メモリ管理システムを使用するデータ処理システムの高水準ブロック図である。
【図２】ページ・テーブルによる変換を示す、図１のシステム用の仮想メモリおよび物理メモリのマップである。
【図３】メモリを共用する方法を使用するページ・テーブルによる変換を示す、図２と同様の、図１のシステム用の仮想メモリおよび物理メモリのマップである。
【図４】同時係属出願第０８／４７２３６４号（ＩＢＭ整理番号ＢＣ９−９５−０１４）に記載の、本発明によるメモリを共用する方法を使用するページ・テーブルによる変換を示す、図２および図３のシステムと同様の、図１のシステム用の仮想メモリおよび物理メモリのマップである。
【図５】図４のメモリを共用する方法とともに使用するデータ構造の編成を示す図である。
【図６】図５の「Ｔ」構造のデータ構造を示す図である。
【図７】図４の本発明において、タスクがメモリ空間をどのように共用できるかの例を示すメモリ・マップと同様の図である。
【符号の説明】
１１  データ処理システム
１２  ＣＰＵ
１３  メモリ
１４  大容量記憶制御装置
１５  通信リンク
２０  仮想アドレス空間
２１  物理アドレス空間
２２  ページ・テーブル
２３  ブロック
２４  ページ・テーブル・エントリ
２５  仮想アドレス・フィールド
２６  物理アドレス・フィールド
２７  仮想メモリ・ブロック
３０  仮想メモリ位置
３１  重複領域
３４  トランスレータ
３６  １６エントリ・アレイ
３７  エントリ
３８  パス
３９  パス
４０  パス
４１  パス
４５  共用アドレス空間
４６  共用アドレス空間
４７  パス
４８  パス
４９  パス
５０  パス
【図１】
0003629507.tif 000002
【図２】
0003629507.tif 000003
【図３】
0003629507.tif 000004
【図４】
0003629507.tif 000005
【図５】
0003629507.tif 000006
【図６】
0003629507.tif 000007
【図７】
0003629507.tif 000008