(57)【特許請求の範囲】
【請求項１】
計算機システム上で実行される複数のプロセスによって共有される単一の仮想記憶空間を利用し、ページングによる仮想記憶管理を行う仮想記憶管理方法において、
前記単一仮想記憶空間に配置され得る複数の領域の各々について、前記プロセス毎にアクセス可能な領域とその領域に対するアクセス保護の属性とを規定し、
あるプロセスのアクセス可能領域の中で物理メモリ内に現在読み込まれているページが属しているアクセス可能領域がアクセス可能で、且つその領域に対するアクセス保護属性が前記プロセスと同一のプロセスを検出し、
それらプロセス間で、仮想アドレスを物理アドレスに変換するためのアドレス変換テーブルを共有化させることを特徴とする仮想記憶管理方法。
【請求項２】
計算機システム上で実行される複数のプロセスによって共有される単一の仮想記憶空間を利用し、ページングによる仮想記憶管理を行う仮想記憶管理方法において、
前記単一仮想記憶空間に配置され得る複数の領域の各々について、前記プロセス毎にアクセス可能な領域とその領域に対するアクセス保護の属性とを規定し、
あるプロセスがアクセス可能な領域の中で現在物理メモリ内に読み込まれているページが属しているアクセス可能領域がアクセス可能で、且つその領域に対するアクセス保護属性が前記プロセスと同一のプロセスを検出し、
それらプロセス間で、仮想アドレスを物理アドレスに変換するためのアドレス変換テーブルを共有化させ、
ページフォルトの発生によって、前記アドレス変換テーブルを共有するプロセス間におけるアクセス保護の一貫性を保証できない新たな領域に属するページが前記物理メモリに読み込まれるとき、前記アドレス変換テーブルの共有化を解除することを特徴とする仮想記憶管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は仮想記憶管理方法に関し、特に計算機システム上で実行される全てのプロセスによって共有される単一の仮想記憶空間を利用し、ページングによる仮想記憶管理を行う仮想記憶管理方法に関する。
【０００２】
【従来の技術】
近年、計算機アーキテクチャの改良、記憶装置の大容量化、および、プロセッサの６４ビット化などによる利用可能な仮想記憶空間の大幅な拡大に伴い、複数のプログラムやデータを単一の仮想記憶空間上に配置することによって、これらを一元的に管理する手法が有効視されてきている。これは、すべてのプロセスに同一の仮想記憶空間を共有させることにより、仮想記憶上に配置されるプログラムやデータなどのオブジェクトと、仮想記憶上の仮想アドレスとを一意に対応づけて、それらオブジェクトを統一的に定義／管理しようというものである。
【０００３】
具体的な利点としては、ある計算機上の全てのプロセスについて、仮想アドレスと物理アドレスとの対応関係が同一となることにより、どのプロセスからもある特定の仮想アドレスによって同一のオブジェクトが参照できるというオブジェクトの同値性が保証されるだけでなく、オブジェクトの永続化、空間上に配置される複数のプログラム領域を跨るダイレクトなプロセス間通信、データ共有の容易化などが挙げられている。
【０００４】
こうした単一仮想記憶機構をＯＳなどの基本ソフトウェアで提供する際に問題となる点がいくつか挙げられている。
【０００５】
その一つに、単一仮想記憶空間上に配置される各領域の保護をどのように実現するかという問題がある。単一仮想空間自体は、生成されるプロセスすべてに対して全空間のアドレッシング可能性を提示しているが、マルチユーザ環境などで使用される場合には、実際に空間内に配置される個々の領域について、各ユーザあるいは各プロセスに対するアクセス保護を指定／設定できるようにすることが必要である。これは、不用意な参照や誤った操作による領域破壊、悪意のある操作などから領域を保護するためであり、この保護機能はＯＳにとって本質的に不可欠な機能となる。
【０００６】
領域毎にプロセスに対するアクセス保護属性を設定するということは、言い替えると、プロセス毎にアクセス可能な領域の範囲が規定されるということになる。
【０００７】
そこで、こうしたプロセス毎のアクセス可能な領域の範囲を「アクセス保護領域」と呼ぶことにし、以下、この保護機能を実現するための手法を考察する。ここでは、現在数多くのアーキテクチャで採用されているアドレス変換テーブル（これは、ページテーブルやＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）などを指す）を使用して仮想／物理アドレス変換を行なう仮想記憶管理機構を具備した計算機上で前述の保護機能を実現する場合を考える。
【０００８】
【発明が解決しようとする課題】
（１）まず、全プロセスで単一のアドレス変換テーブルを共有してプロセス毎のアクセス保護領域を実現することを考える。この場合、ページフォルト時には、ページフォルトの発生したページとプロセスの保護関係に従ってページング機能による保護検査を適用することができる。しかし、この保護検査はページフォルト時のみに行われるので、もしあるプロセスによって一度参照されたページを、アクセス許可を持たない他のプロセスが再度アクセスしようとすると、アドレス変換テーブル中の参照ページに対応するアドレス変換テーブルエントリが有効化されていた場合には、ページフォルトが発生しないため、この不法なアクセスをソフトウェア的にもハードウェア的にも探知することができない。この様子を図２５に示す。
【０００９】
図２５には、プロセス１，２が同一ページテーブルを共有しており、プロセス１のみがアクセス可能な領域Ａに対応するページが物理ページフレーム（物理メモリ）上に存在している場合において、アクセス権を持たないプロセス２によるそのページへの不当アクセスが行われる様子が示されている。
【００１０】
このように、プロセス間で、同一ページに対するｒｅａｄ，ｗｒｉｔｅ，ｅｘｅｃｕｔｅなどの保護属性の組合せが異なる場合には、同じアドレス変換テーブルを共有することはできない。
【００１１】
すなわち、アクセス保護領域の範囲／属性が異なるプロセス同士でアドレス変換テーブルを共有すると、領域保護に関する一貫性は保証できなくなってしまう。
【００１２】
（２）そこで、次に、各プロセス毎に別々のアドレス変換テーブルを保持させることを考える。この手法では、各プロセス毎にアクセス可能な領域の範囲は、図２６に示されているように、各々のアドレス変換テーブルによって独立して管理されることになるため、アクセス権を持たないプロセス２による領域Ａ内のページへのアクセスが禁止され、安全な空間利用が可能となる。プロセスは別々のアドレス変換テーブルを保持するため、プロセス切り替え毎に、このアドレス変換テーブルの切り替え（ＴＬＢを装備する場合はＴＬＢフラッシュも含む）を必ず伴うことになる。
【００１３】
この手法では、複数のプロセスで同じページを共有する場合、同時に参照している該ページに対応する各プロセス付随のアドレス変換テーブルエントリ状態はある時点で有効となる（ただし、該ページを参照可能なプロセスであっても、該ページを参照していない場合には、該アドレス変換テーブルエントリの状態は非有効のままでも構わない）。
【００１４】
その後、あるプロセスが新しいページを必要とするときに物理メモリ上に未使用ページが無ければ、ページアウトが行われる。このページアウト対象のページに現在複数のプロセスにより参照中の共有ページが選択される場合、テーブルの一貫性を保証するために、該ページに対して現在参照中の各プロセス対応アドレス変換テーブルエントリの状態をすべて非有効化にする必要が生じて、このための非有効化通知コストは参照プロセス数に応じて増加する。
【００１５】
更に、各プロセスが各々ページテーブルを保持しているため、多段階化されたページテーブルを採用するアーキテクチャを使用する場合であっても、こうした記憶管理用資源のために浪費される物理メモリや２次記憶の記憶領域の量はプロセス数に比例して増大することになってしまい、その結果、キャッシュヒット率の低下、プロセス切り替え時のページテーブル切り替えやＴＬＢフラッシュなどのオーバヘッドがシステムの効率に影響してくる。
【００１６】
以上のように、全プロセスで単一のアドレス変換テーブルを共有するという（１）の方法の場合には、記憶資源の消費は少なく、アドレス変換情報の一貫性の保持は容易に行なわれるが、アクセス保護の実現が不可能なため、システムが常に危険にさらされることになり安全に使用することができない。一方、プロセス毎にアドレス変換テーブルを別個に用いる（２）の方法では、メモリ資源の浪費などが引き起こされる問題がある。
【００１７】
（３）こうした問題点を解消するための手段として、アクセス保護領域の一致するプロセス間同士でのみ、アドレス変換テーブルを共有させて、プロセス毎のアクセス保護機能を維持したまま、記憶管理用資源の最適化をはかることが考えられる。
【００１８】
しかしながら、プロセス間でアクセス保護領域が完全に一致するためには、該アクセス保護領域がこのグループ化される複数プロセス内で固定的に定まるものでなければならないため、実行中のある時点で該複数プロセス中のあるプロセスに対してのみ、アクセス可能な保護領域の追加や変更を動的に行うような柔軟な保護機能の実現はこのままでは困難である。
【００１９】
一方、プロセス生成時にシステムにより設定されるアクセス保護領域の情報は、該生成プロセスが利用可能な領域のサブセットであり、空間内で利用可能なすべての情報を含まないのが一般的と考えられる。これは、広大な仮想記憶空間内には、どのプロセスからの参照でも許可する領域が多数存在している可能性があり、これらを逐一抽出し、生成プロセスに付随されるアクセス保護領域情報として反映させ、これを維持することは現実的ではないからである。よって、プロセスに付随されるアクセス保護領域の追加、削除などの変更は、プログラムからの指示や、現在のアクセス保護領域情報として保持されている領域以外の他の領域に対してアクセスを行なってページフォルトを起こし、アクセス許可の検査を受けて許可された場合に、動的に行なわれるという手法が自然と考えられる。このような状況下では、厳密な意味でのアクセス保護領域の完全な一致を保証することは難しい。
【００２０】
以上、単一仮想記憶空間を利用して、アクセス可能な領域の範囲をプロセス毎に柔軟に設定する機能を実現する際に問題となる事項を述べてきたが、多重仮想記憶空間を利用したアーキテクチャでも、あるアドレス空間内で走行するプロセスの、アドレス変換テーブルの共有化や、実用コンテキストの最小化などによりプロセスの軽量化をはかった最適化例がいくつか存在する。ただし、これらは一般に多重仮想記憶方式のような仮想記憶空間全体が保護領域と完全に一致しており、適用できる範囲がある仮想記憶空間内のみに限定されているため、これらの中で適用される手法では、単一仮想記憶空間上に複数個配置される領域の範囲が動的に変更されうるような状況において効率的に機能するアクセス保護機能の最適化手法に関する解を与えない。
【００２１】
次に、単一仮想記憶空間上でアクセス可能領域範囲を各々設定することが可能なプロセスをスケジューリングする際の問題点について述べる。通常、多重仮想記憶空間を利用するアーキテクチャでは、プロセスを実行待ち行列に収容し、これらを順番にディスパッチしていく場合、プロセス切り替え時に毎回、ページテーブル切り替えやＴＬＢフラッシュなどが必要となる。しかし、複数のプロセス間でページテーブルが共有できるような単一仮想記憶空間を利用するアーキテクチャでは、スケジューラが、次期実行プロセスとして選択するプロセスを、現実行プロセスとページテーブルを共有しているものと判定できる場合には、ディスパッチ時に上記の操作は本来不要である。しかし、従来のスケジューリング手法では、アドレス変換テーブルに関する共有化情報はスケジューリングに何ら利用されていないので、一般的なスケジューリング手法を単一仮想記憶空間を利用したアーキテクチャに適用すると、プロセス切り替え毎に必ずページテーブル切り替えやＴＬＢフラッシュが実行されてしまう。
【００２２】
次に、単一仮想記憶空間上でアクセス可能領域範囲を各々設定できるようなプロセスを分散メモリ型（疎結合型）マルチプロセッサシステム環境下でプロセッサに割り付ける場合の問題点について説明する。
【００２３】
該マルチプロセッサシステム環境下では、各ＣＰＵにＭＭＵ、局所メモリが付随する構成となるが、各ＣＰＵは自分に付随する局所メモリへの他ＣＰＵからのアクセスを許さないため、アドレス変換テーブルを共有する２つのプロセスが別々のＣＰＵに割り当てられた場合、一方のプロセスは、アドレス変換テーブルの複製を対応するＣＰＵの局所メモリ上に作成し、これを新たに利用することになる。この場合、アドレス変換テーブルを共有化しうるメリットを失い、キャッシュ内容も切り替わるため、プロセッサを移動するたびに再キャッシュしてデータを取り込む必要が生じてくる。
【００２４】
このような、各プロセッサ上のキャッシュの親和性を考慮した従来技術には、例えば、プロセス（スレッド）をなるべく同じプロセッサ上で実行するよう制御しようとするｃａｃｈｅ  ａｆｆｉｎｉｔｙ  ｓｃｈｅｄｕｌｉｎｇ［文献：Ｒ．Ｖａｓｗａｎｉ  ａｎｄ  Ｊ．Ｚａｈｏｒｊａｎ．“Ｔｈｅ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎｓ  ｏｆ  ｃａｃｈｅ  ａｆｆｉｎｉｔｙ  ｏｎ  ｐｒｏｃｅｓｓｏｒ  ｓｃｈｅｄｕｌｉｎｇ  ｆｏｒ  ｍｕｌｔｉｐｒｏｇｒａｍｍｅｄ，ｓｈａｒｅｄ  ｍｅｍｏｒｙ  ｍｕｌｔｉｐｒｏｃｅｓｓｏｒｓ”，Ｉｎ  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  １３ｔｈ  ＡＣＭ  Ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍｓ  Ｐｒｉｎｃｉｐｌｅｓ，ｐｐ．２６−４０，１９９１．］というスケジューリング方式が存在する。ただし、上記スケジューリング方式では、１つのプロセス（スレッド）をなるべく同一のプロセッサ上で実行するようプロセッサ割り付けを制御することによるキャッシュ効果の向上しか対象としておらず、これが割り付けられるプロセスと、アドレス変換テーブルの共有可能なプロセス群との親和性に関しては考慮されていない。
【００２５】
本発明は上記の問題点を考慮してなされたものであり、単一仮想記憶空間を全てのプロセスで共有するシステムにおいて、プロセスそれぞれについてのアクセス保護を保証しつつ、プロセス間でのアドレス変換テーブルの共有化可能性を十分に高められるようにし、信頼性が高く、且つ記憶管理用資源、プロセス切り替え時のコストの最小化を実現することが可能な仮想記憶管理方法を提供することを目的とする。
【００２６】
【課題を解決するための手段】
本発明は、計算機システム上で実行される複数のプロセスによって共有される単一の仮想記憶空間を利用し、ページングによる仮想記憶管理を行う仮想記憶管理方法において、前記単一仮想記憶空間に配置され得る複数の領域の各々について、前記プロセス毎にアクセス可能な領域とその領域に対するアクセス保護の属性とを規定し、あるプロセスのアクセス可能領域の中で物理メモリ内に現在読み込まれているページが属しているアクセス可能領域がアクセス可能で、且つその領域に対するアクセス保護属性が前記プロセスと同一のプロセスを検出し、それらプロセス間で、仮想アドレスを物理アドレスに変換するためのアドレス変換テーブルを共有化させることを特徴とする。
【００２７】
この仮想記憶管理方法においては、あるプロセスのアクセス可能領域の中で物理メモリ内に現在読み込まれているページが属しているアクセス可能領域に着眼し、そのアクセス可能領域がアクセス可能で、且つアクセス保護属性が同一の他のプロセスが存在すれば、それらプロセス間でアドレス変換テーブルが共有化される。したがって、アクセス可能領域およびアクセス保護属性が全て一致しなくても、現在物理メモリ内に読み込まれているページに対応する領域についてのみアクセス保護属性が一致すれば、アドレス変換テーブルの共有が行われる。これにより、プロセスそれぞれについてのアクセス保護機能を保証しつつ、プロセス間でのアドレス変換テーブルの共有化可能性を十分に高められるようになり、信頼性が高く、且つ記憶管理用資源、プロセス切り替え時のコストの最小化を実現することが可能となる。
【００２８】
また、ページフォルトの発生によって、前記アドレス変換テーブルを共有するプロセス間におけるアクセス保護の一貫性を保証できない新たな領域に属するページが前記物理メモリに読み込まれるときは、前記アドレス変換テーブルの共有化を解除することが好ましい。これにより、領域保護の一貫性を保証できる。
【００３３】
【発明の実施の形態】
以下、図面を参照してこの発明の実施形態を説明する。
【００３４】
図１〜図３には、この発明の一実施形態に係る仮想記憶管理方法が適用される計算機アーキテクチャの構成例が示されている。図１の計算機アーキテクチャは、単一プロセッサ計算機であり、１つのＣＰＵ１１と物理メモリ１３を有し、ＭＭＵ１２（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）などの仮想記憶を実現するための機構を装備している。この計算機は、ＯＳなどの基本ソフトウェアを有しており、その制御下で仮想記憶管理のための制御が行われる。また、２次記憶装置１４は、ｓｗａｐ用バッキングストレッジとして使用される。
【００３５】
図２は、複数のプロセッサから構成される分散メモリ型（疎結合型）マルチプロセッサシステムであり、各プロセッサは、１つのＣＰＵ１１と物理メモリ１３を有し、またＭＭＵ１２（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）などの仮想記憶を実現するための機構を装備している。また、２次記憶装置１４は、ｓｗａｐ用バッキングストレッジとしてプロセッサ間で共用される。
【００３６】
図３は、複数のプロセッサから構成される分散メモリ型（疎結合型）マルチプロセッサシステムの他の構成例であり、ＬＡＮやＷＡＮなどのネットワークを介して複数のプロセッサが結合される分散計算機システムが例示されている。各プロセッサの２次記憶装置１４は、通常ｓｗａｐ用バッキングストレッジとして使用されるが、ネットワーク環境下で他計算機上の２次記憶装置資源が該ｓｗａｐ領域として利用できる場合には、必ずしも各プロセッサ毎に別個に二次記憶を設ける必要はない。
【００３７】
図４は、前記計算機上での実行プロセスとデータとの関係の一例を説明するものである。前記計算機環境下で提供されるＯＳのプロセス管理機構及び仮想記憶管理機構により、図示する単一の仮想記憶空間上に全プログラムやデータなどの各種領域（これを「メモリセクション領域」と呼ぶことにする）が複数配置されうる形態を実現し、全走行プロセスからの単一仮想記憶空間の共有を可能とする。すなわち、各プロセスからある特定の仮想アドレス上へのデータ参照を行なう場合、全走行プロセスに対して同一のバイト列が見えることになる。また、全プロセスから同一仮想記憶空間を共有しているので、ある特定の仮想アドレス上のデータ変更は、変更を行なったプロセス以外の他プロセスに対しても即座に反映されることになる。
【００３８】
図４においては、メモリセクション領域Ａに配置されたプログラムＡ上で走行しているプロセス１がメモリセクション領域Ｂのデータを変更し、その変更されたデータを、メモリセクション領域Ｃに配置されたプログラムＢ上で走行しているプロセス２が参照している様子が示されている。
【００３９】
図５は、プロセス間仮想記憶管理の対象である各プロセスとアクセス保護領域範囲との関係の一例を示したものである。単一仮想記憶空間上で実行される複数のプロセスには、各々独立にアクセスの許可されうるメモリセクション領域範囲の設定／変更が可能なアクセス保護機構が提供される。すなわち、各プロセスには、単一仮想記憶空間上に配置される各メモリセクション領域に対して、読み込み可能、書き込み可能、実行可能など（以降、これら操作を総称してアクセスまたは参照と呼称する）のアクセス保護属性が指定されることにより、各プロセス単位にアクセス可能／不可能な領域範囲を自由に設定することができる。上記アクセス保護機構により、許可の無いプロセスからの意図的／不用意なアクセスから、該メモリセクション領域を保護することが可能となる。
【００４０】
図５においては、メモリセクション領域Ａ、Ｂ、Ｄがプロセス１のアクセス保護領域として割り当てられ、メモリセクション領域Ｄ、Ｅがプロセス２のアクセス保護領域として割り当てられ、メモリセクション領域Ｃ、Ｄ、Ｅがプロセス３のアクセス保護領域として割り当てられている。
【００４１】
図６には、この発明のプロセス間仮想記憶管理機構を実現するためのＯＳの一構成例が示されている。
【００４２】
図示のように、本プロセス間仮想記憶管理機構は、プロセス管理部２１と、仮想記憶管理部２２とから構成され、仮想記憶管理部２２は、ページテーブル管理部２３、メモリセクション管理部２４、保護領域管理部２５から構成される。なお、ここで例示するページング方式としては、仮想／物理アドレス変換テーブル用にページテーブルを採用したアーキテクチャを対象とするが、図示しないＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）のようなページテーブルエントリ専用のキャッシュメモリを搭載していても良い。
【００４３】
プロセス管理部２１は、前記計算機上で実行されうるプロセスの生成や複数プロセスのスケジューリングなどを担当する部分であり、プロセス生成部２１１、プロセス情報退避部２１２、プロセス・スケジューリング部２１３、プロセス・ディスパッチ部２１４、プロセス情報設定部２１５、プロセス情報取得部２１６などから構成され、プロセス情報やプロセス実行待ち行列などの情報を保持する。
【００４４】
ページテーブル管理部２３は、各プロセスに付随するページテーブルの生成、ページテーブルエントリの設定などを担当する部分であり、ページテーブル生成部２３１、ページテーブルエントリ設定部２３２、ページテーブルエントリ情報取得部２３３、などから構成される。
【００４５】
メモリセクション領域管理部２４は、プログラムやデータなど単一仮想記憶空間上に配置されうる領域  （メモリセクション領域）の配置や対プロセス／対メモリセクション領域に関する保護属性の設定やアクセスを認めるかどうかの判定時に必要となる保護属性情報の獲得などを担当する部分であり、メモリセクション生成部２４１、メモリセクション保護属性設定部２４２、メモリセクション領域情報取得部２４３などから構成される。
【００４６】
保護領域管理部２５は、各プロセスごとに設定されるアクセス保護領域情報（後述）、アクティブ保護領域情報（後述）を元に、ページテーブルのプロセス間共有／分離のための判定／実行を担当する部分で、アクセス保護領域設定部２５１、アクセス保護領域情報取得部２５２、アクティブ保護領域設定部２５３、アクティブ保護領域情報取得部２５４、ページテーブル共有判定部／実行部２５５、ページテーブル分離判定部／実行部２５６などから構成される。
【００４７】
各管理部は互いに関連し、各構成要素が連携をとってプロセス間仮想記憶制御機構の実現に必要な処理を行う。
【００４８】
次に、プロセスにおけるメモリセクション領域の保護属性の設定方法（対プロセス）について説明する。
【００４９】
メモリセクション領域は、各種プログラムの指示により各プロセスに対し設定される。ＯＳは、各メモリセクション領域に関するアクセス許可属性のリストを、「アクセス保護領域」情報として保持し、アクセス保護領域管理部２５によって管理している。あるプロセスに設定されるアクセス保護領域の範囲は、必ずしも単一仮想記憶空間内に複数配置される全領域に対する情報をカバーする必要は無く、プログラマあるいはシステムによって予め固定的に設定されるいくつかの領域範囲で十分である。これは、潜在的にアクセス可能／不可能な領域へのアクセス時に、動的にアクセス権のチェックが行われるからである。図７に、プロセス構造体の一例を示す。
【００５０】
プロセス構造体内には、優先度やプロセス属性、レジスタ退避情報、例外処理時の飛び先などの他に、ページテーブル先頭アドレス（ここではレジスタ退避情報とは区別している）、アクセス保護領域リスト管理用構造体、アクティブ保護領域リスト管理用構造体（後述）が記録される。アクセス／アクティブ保護領域リスト管理構造体は、対応するプロセスのアクセス／アクティブ保護領域についての情報格納位置を指定するポインタ群である。ここで、アクセス保護領域とは、そのプロセスがアクセス可能な全てのメモリセクションを示す。また、アクティブ保護領域とは、アクセス保護領域の中で現在物理メモリに読み込まれているページが属するメモリセクション領域を示す。
【００５１】
アクセス保護領域リスト管理構造体は、図８に示されているように、メモリセクション領域が配置される位置である仮想アドレスの昇順に連結されたメモリセクション領域構造体の先頭エントリおよび終端エントリから構成される。また、図のように最後に参照されたメモリセクション領域構造体エントリの位置を記録するようなヒントを含んでいてもよい。また、アクティブ保護領域リスト管理構造体も、アクセス保護領域リスト管理構造体と同様に、メモリセクション領域が配置される位置である仮想アドレスの昇順に連結されたアクティブなメモリセクション領域構造体の先頭エントリおよび終端エントリ、また、最後に参照されたメモリセクション領域構造体エントリの位置を記録するヒントから構成されている。
【００５２】
各メモリセクション領域構造体は、図９に示されているように、前／後方向リンク、メモリセクションＩＤ等が保持され、メモリセクション領域に対するアクセス権のキャッシュとして利用する保護属性を含んでいてもよい。
【００５３】
また、前記アクセス保護領域情報は、プロセスに対してのみ付随するのではなく、各メモリセクション領域に関して設定することも可能である。これは、通常、該領域が仮想記憶空間上に配置される際に指定／設定されうるもので、必要に応じて、配置後に動的にアクセス許可／不許可属性を変更する事も可能である。
【００５４】
この場合、メモリセクション領域管理用データ構造は、図８と同様の双方向リストなどによって実現できる。また、図１０に示すように、各メモリセクション領域構造体エントリ内には、該メモリセクション領域の先頭／終端仮想アドレス、前／後方向リンク、保護属性フラグ、対領域許可／不許可リスト、対プロセス許可／不許可リスト、などが含まれる。
【００５５】
これにより、各メモリセクション領域には、プログラムの格納されたメモリセクション領域に対して、および、個々のプロセスに対して、独立にアクセス許可／不許可の設定が可能になる。このために維持されるエントリ内容を図１１（ａ），（ｂ）に示す。それぞれ、メモリセクションＩＤ／プロセスＩＤの他に、読みだし／書き込み／実行などの保護属性が記録される。また、メモリセクション領域構造体エントリ内の保護属性フラグを用いて、全プロセス（メモリセクション領域）からアクセス（読みだし／書き込み／実行など）を許可する／禁止するなどの指定が行えるようにも設定可能である。
【００５６】
以降、これら各々を使用した実施形態について説明する。
【００５７】
本実施形態１では、プロセス間で各プロセスに付随するアクティブ保護領域情報とアクセス保護領域情報との包含関係に基づき、ページテーブル共有化可能性の判定、共有化制御が行われる。
【００５８】
このページテーブルの共有化可能性の判定や、実際に共有化を行う時期は、幾通りかあげられ、プログラマにより明示的に指定する場合や、ＯＳなどのシステムにより暗黙裏にページテーブル共有可能プロセスが探索され自動的に共有化される場合、などが挙げられる。
【００５９】
ここでは、プロセス生成時にプログラムがページテーブル共有相手となる他プロセスを指定する場合について例示する。
【００６０】
図１２では、プロセス１が既に生成されており、領域（Ａ），（Ｂ），（Ｃ）がプロセス１のアクセス保護領域としてアクセス保護領域管理部によって設定／管理されている状態を示している。
【００６１】
続いて、プロセス１の実行が開始され、領域（Ａ）と領域（Ｃ）内の数ページが物理フレーム上に読み込まれて、対応するページテーブルエントリが有効になったとする。ここで、有効化されたページテーブルエントリに対応するページを含む領域（Ａ），（Ｃ）がアクティブ保護領域となる（図１３）。
【００６２】
アクティブ保護領域は、ページテーブルに関して１対１に作成され、アクティブ保護領域管理部によって保持される。
【００６３】
続いて、新たにプロセス２を生成する際に、プロセス１のページテーブルを共有することを要求して生成するケースを示す。
【００６４】
図１４は、マップ時にプロセス２に設定されるアクセス保護領域が領域（Ａ），（Ｃ），（Ｄ）であることを示している。これらの状況をまとめた表を図１５に示す。
【００６５】
ここで、プロセス２の生成時に、プロセス２がプロセス１と同じページテーブルを共有可能ならばこれを共有するよう要求されてプロセス２を生成する場合の処理手順について、図１６を参照して説明する。
【００６６】
プロセス生成部では、プロセス構造体の割り当て、初期化などを行った後、ページテーブル管理部を呼び出して、ページテーブル共有に関する許可の判定を依頼する（Ｓ１５０１）。ページテーブル管理部では、ページテーブルの共有を要求されたプロセス１のアクティブ保護領域リストをアクティブ保護領域情報取得部より抽出し（Ｓ１５０２）、さらに、要求元であるプロセス２のアクセス保護領域リストをアクセス保護領域情報取得部より抽出する（Ｓ１５０３）。
【００６７】
次に、ページテーブル管理部は、これら抽出した２つの情報を、システムあるいはユーザにより指定されていた共有条件となる判定基準情報に基づき、ページテーブル共有化判定部により両者を比較する（Ｓ１５０４）。具体的な前記判定基準情報の一例としては、該アクセス保護領域範囲が該アクティブ保護領域範囲を包含している場合（保護属性は一致するものとする）には共有する、ということなどが考えられる。例えば、図１５のような状況においては、プロセス１のアクティブ保護領域Ａ，Ｃをプロセス２がアクセス可能であり、且つそれらアクティブ保護領域Ａ，Ｃのアクセス保護属性がプロセス１と２で同一であれば、共有化条件が満たされることになる。また、プロセス２がプロセス１のアクティブ保護領域Ｃをアクセスできない場合、またはアクティブ保護領域Ｃに関するアクセス保護属性が異なる場合であっても、そのアクティブ保護領域Ｃに対応するページを無効化すれば、アクセス保護の一貫性を保証した状態でページテーブルを共有するような前記判定基準を適用することもできる。
【００６８】
ページテーブル共有化がページテーブル共有化判定部により許可されると、ページテーブル管理部は、ページテーブル共有化実行部を呼び出し、実際に要求元プロセス（プロセス２）のアクティブ保護領域リストとページテーブル先頭アドレス情報を要求先プロセス（プロセス１）と共有化するための処理をする（Ｓ１５０６）。
【００６９】
最後に、ページテーブル管理部は、ページテーブル割り当て終了後、制御をプロセス生成部に移し、プロセス実行のために必要な準備を終了させ復帰する（Ｓ１５０９）。このときの共有状態（データ構造）を図１７に示す。
【００７０】
Ｓ１５０５において、共有化が許可されなかった場合は、要求元プロセスで独自にページテーブルを保持する必要があるために、新規ページテーブルの作成、該プロセスとの対応付け、ページテーブルエントリの設定や必要に応じてページインなどが行なわれ（Ｓ１５０７）。新たなアクティブ保護領域リストが要求元プロセスに対して設定される（Ｓ１５０８）。
【００７１】
このように、本実施形態では、アクティブ保護領域を導入し、現時点での一貫性を維持したままページテーブルの共有化を許可することによって、共有化条件の緩和を実現し、共有化可能な機会を増加させている。
【００７２】
条件が満たされない場合、共有化が認められず、上記のように別のページテーブルを作成して、これを新たにプロセス２が使用するか、もしくは、エラーを返して戻るということになる。こうした共有化に失敗した時の処理は、ページテーブルの共有化を要求してプロセスの生成を行うシステムコールなどのセマンティクスを、できる限り共有化をするが共有できない場合には別のページテーブルを用意してプロセスを生成する、あるいは、共有化できなければプロセスを生成しないというものにするかなどの方針の決め方に依存する。
【００７３】
本プロセス間仮想記憶制御機構では、プロセスに付随するアクセス保護領域情報に保持される範囲以外の領域に対しても、その領域を参照しようとするプロセスおよびそのプロセスとページテーブルを共有している他のプロセスに対するアクセス許可が下りてさえいれば、領域に対する参照は可能で、アクティブ保護領域情報および各プロセスのアクセス保護領域情報にこの領域に対応するエントリを追加して、一貫性を保証することが可能である。
【００７４】
なお、ここでは、共有対象ページテーブルの指定に、既に生成されたプロセスを指定する手法をとっているが、共有を要求するプロセス同士でグループを形成し、このグループ識別子を指定させて共有化を図る手法や、システムが自動的に共有可能なページテーブルを探索し、生成しようとするプロセスすべてに対してページテーブル共有化を試行するという手法などがこの変形として挙げられる。
次に、第２の実施形態について説明する。
【００７５】
処理の概要
実施形態１で共有化されたページテーブルは、各プロセス間から実際に参照されるページ領域範囲がアクセス保護の一貫性を崩さない限り継続して利用する事が出来る。しかしながら、ページテーブル共有プロセスの内のあるプロセス群においてはアクセスが許可されるが、他のいずれかのプロセスにおいては許可でないような領域をアクセスしようとする場合において、このままアクセスを許可して処理を継続すると、領域のアクセス保護を保証できなくなってしまう。
【００７６】
そこで、ページテーブルを共有化した後にこうしたアクセスが生じる際には、該アクセス要求を行うプロセスからページテーブルの共有を解約させ、新たに別のページテーブルを用意してこれを該プロセスが使用するよう制御することによって、アクセス保護の一貫性を保証するための機構を提供する。
【００７７】
こうしたページテーブル共有プロセス群からあるプロセスを分離させる時期は、実際にアクセス保護の一貫性が維持できない参照が行われる時（ページフォルト時に検知される）に行うという手法の他に、数通り挙げることができる。
【００７８】
例えば、このページフォルト時以外に、システムコールなどによるユーザ指定時、またそれぞれの契機に応じた併用も考えられる。
【００７９】
ここでは、まず、ページフォルト時にページテーブル共有プロセス群からのプロセスの分離の必要性を判定する場合の分離処理について説明する。例えば、図１８に示されているように、プロセス１が、そのプロセス１においてはアクセスが許可されるが、プロセス２においては許可でない領域Ｅを参照することによってページフォルトが発生すると、プロセス１がページテーブル共有化グループから分離される。
【００８０】
以下、図１９を参照して、ページフォルト発生時の分離処理の具体的手順を説明する。
【００８１】
ページフォルトが発生（Ｓ１８０１）すると、ページフォルトハンドラ内よりアクティブ保護リスト管理部を呼び出し、ページ参照元プロセス（実行中プロセス）に付随のアクティブ保護領域リストを抽出する（Ｓ１８０２）。これは、実行中プロセスのプロセス構造体内属性であるアクティブ保護領域リスト管理用構造体の取得に対応する。抽出した該リストからフォルト先仮想アドレスが該リストによって保持される領域範囲に含まれるかどうかが調査される（Ｓ１８０３）。これは、該リストの先頭エントリから、該エントリ内部属性であるメモリセクションＩＤ先により識別されるメモリセクション領域構造体内の領域範囲情報（領域先頭／終端アドレス）と該フォルト先仮想アドレスとを順次比較することにより行われる。なお、該アクティブ保護領域リスト用エントリは、それぞれ仮想アドレスの昇順に連結しておき、直前に選択されたエントリをヒント情報として維持し、これから逐次検査するような探索の効率化をはかっても良い。フォルト先仮想アドレスが該アクティブ保護領域リスト内の範囲に含まれると検知された場合、対応するアクティブ保護領域リスト用エントリの保護属性（メモリセクション領域構造体メンバよりキャッシュされたもの）と参照時の操作（ｒｅａｄ，ｗｒｉｔｅ，ｅｘｅｃｕｔｅなど）からアクセス権を調査する（Ｓ１８０４）。Ｓ１８０５にてアクセス許可されていると判断された場合、ページテーブルエントリの設定など（仮想／物理アドレス変換／保護属性設定、必要に応じｐａｇｅ−ｉｎ処理など）を行い（Ｓ１８１７）、復帰する（Ｓ１８１９）。Ｓ１８０５にてアクセス許可されていないと判断された場合、保護例外などのエラーを返して（Ｓ１８１８）、復帰する（Ｓ１８１９）。Ｓ１８０３にて、フォルト先アドレスが参照元プロセスのアクティブ保護領域の範囲外であると検知された場合、該プロセス付随のアクセス保護領域リストを抽出し（Ｓ１８０６）、該アクセス保護領域リスト内にフォルト先仮想アドレスを含むメモリセクション領域が含まれるかどうか調べる（Ｓ１８０７）。これが含まれる場合には、該メモリセクション領域に対応するアクセス保護領域リスト用エントリの保護属性（メモリセクション領域構造体メンバよりキャッシュされたもの）と参照時の操作（ｒｅａｄ，ｗｒｉｔｅ，ｅｘｅｃｕｔｅなど）からアクセス権を調査する（Ｓ１８０８）。Ｓ１８０９においてアクセス許可されていると判定される場合、他のページテーブル共有プロセス全てによってアクセス保護領域が共有されているかどうか調べる（Ｓ１８１０）。ページテーブル共有全プロセスから共有されている場合、ページテーブルエントリの設定などを行い、該プロセスのアクティブ保護領域リストに該ページを含むメモリセクション領域対応エントリを追加／設定して（Ｓ１８１７）、復帰する（Ｓ１８１９）。ページテーブル共有プロセス全てから共有されていない場合、ページテーブルを共有したままではアクセス保護の一貫性が維持できないため、該プロセス用に新たにページテーブルを作成するようページテーブル生成部に依頼し、必要であれば現在使用中の共有ページテーブルの内容を複写し、該プロセスをページテーブル共有プロセス群から分離し、新たに生成したページテーブルを該プロセスに付随させて、ページテーブルエントリの設定などを行い（Ｓ１８１１）、該プロセスのアクティブ保護領域リストに該ページを含むメモリセクション領域対応エントリを追加／設定して（Ｓ１８１２）、復帰する（Ｓ１８１９）。
【００８２】
Ｓ１８０９にてアクセス許可されていないと判定される場合、ｒｅａｄ，ｗｒｉｔｅ，ｅｘｅｃｕｔｅの組合せのいずれかで拒絶されているため、保護例外などのエラーを返して（Ｓ１８１８）、復帰する（Ｓ１８１９）。
【００８３】
Ｓ１８１７において、アクセス保護領域リスト内にフォルト先仮想アドレスが含まれない場合には、該フォルトページを含むメモリセクション領域情報を管理するメモリセクション領域リストを抽出し（Ｓ１８１３）、該メモリセクション領域管理用構造体メンバである、保護属性フラグ、対領域許可リスト、対領域不許可リスト、対プロセス許可リスト、対プロセス不許可リストより、該プロセスのアクセス権限を獲得する（Ｓ１８１４）。これによりアクセス権が認められていれば、該プロセスのアクセス保護領域リストに該ページを含むメモリセクション領域対応エントリを設定、仮想アドレスの昇順に挿入し、Ｓ１８１０へ制御を移す（Ｓ１８１６）。Ｓ１８１５にてアクセス権が認められなければ、保護例外などのエラーを返して（Ｓ１８１８）。復帰する（Ｓ１８１９）。なお、Ｓ１８１４によりアクセス権限が未定と判定される場合には、アクセス禁止とする。
【００８４】
なお、上記のページテーブルエントリの仮想／物理アドレス変換用に、図２０に示すような「仮想／物理アドレス変換共有マップ」のような多段化テーブルを用いて、アドレス変換情報を効率的に保持することも考えられる。これは、従来の多段化ページテーブルと同様な方式であり、仮想アドレスのページ識別部を２つに分け、前半をレベル１テーブル、後半をレベル２テーブル内のエントリへのオフセットとして使用する。各テーブル内エントリには、図２１に示されているように、（物理アドレス／ページサイズ）が設定され、ページテーブルのような保護属性は設定されない。かわりに、レベル２テーブル内エントリ内の残りの数ビットに、対応するメモリセクション領域構造体用識別子をキャッシュとして設定して、再度、フォルト時の仮想アドレスから該アドレスを含むメモリセクション情報を高速に検索するのに利用しても良い。
【００８５】
各プロセスに付随するページテーブル内のエントリは、上記の「仮想／物理アドレス変換共有マップ」の対応するエントリのアドレス変換情報が有効な場合（物理ページフレーム内に対応ページが読み込まれている場合）には、このエントリをコピーすることにより、高速に物理アドレス位置を設定することが出来る。対応するエントリのアドレス変換情報が無効な場合、必要に応じて、ページング処理が行われた後、仮想／物理アドレス変換共有マップのエントリが設定され、これが実行中のプロセス付随ページテーブル内の対応エントリ内に複写されることになる。アドレス変換情報の設定後、実行中プロセスの該メモリセクション領域へのアクセス権をもとに、該ページテーブルエントリ内の保護属性を設定することになる。
【００８６】
本実施形態では、アクセスを引き起こしたひとつのプロセスのみがページテーブル共有プロセス群から脱却する形態を例示しているが、この変形として、該アクセスによってアクセス保護を失わない他のプロセスがいくつか存在する場合には、これらを伴って脱却することも考えられる。この場合、脱却したプロセス群間で新たにひとつのページテーブルが作成され共有されることになる。
【００８７】
また、本実施形態では、ページテーブル共有プロセス群からの脱却の必要性に関して、ページフォルトを契機に判定させていたが、このページテーブル共有の解除を、プログラマによって明示的にシステムコールなどを用いて要求することも容易に実現できる。この場合、ページフォルト時の処理と異なる点は、（Ａ）ページフォルト時におけるページフォルト発生、ページフォルトハンドラ呼び出しが、システムコール要求、システムコール処理に置き換わり、（Ｂ）ＯＳ内部での分離判断処理が不要となり、必ず分離するよう処理されることにより、以降の処理は同様に実現することが可能である。
【００８８】
次に、第３の実施形態について説明する。
【００８９】
ここでは、アドレス変換テーブルを共有するプロセス群が連続的に実行されるようなスケジューリング方式が採用される。これにより、プロセス間切り替えコストを大幅に低減させることができる。
【００９０】
すなわち、ページテーブルが共有されるプロセス間では、ページテーブル切替え操作の必要は無いため、スケジューラのディスパッチ部に対して、プロセス実行待ち行列から選択される次期実行プロセスに付随するページテーブルが現在のものと等しいかどうか判定し、同値の場合にはページテーブルを変更しないという処理が行われる。実行中プロセスの実行コンテキスト退避からスケジューリングにより選択された次期実行プロセスへのディスパッチまでの簡単な流れを図２２に示す。
【００９１】
プロセス切り換え時には、まずＳ２００２においてプロセス管理部のプロセス情報退避部によってレジスタ情報などの実行コンテキストが退避され、スケジューラ（プロセススケジューリング部）により実行待ち行列から次期実行プロセスの選択などがスケジューリングポリシーなどに応じて行なわれる（Ｓ２００３）。次に、実行中プロセスと選択されたプロセスとのページテーブル先頭アドレス情報を比較し、同値かどうか判定する（Ｓ２００４）。これが同値の場合には、選択プロセスのページテーブル先頭アドレス情報以外の実行コンテキストの回復を行ない（Ｓ２００５）、復帰する（Ｓ２００７）。Ｓ２００４で同値でないと判定されれば、選択プロセスのページテーブル先頭アドレスを特定ハードウェアレジスタへ設定したりＴＬＢフラッシュなどを行なった（Ｓ２００６）後、選択されたプロセスのページテーブル先頭アドレス情報を除いた実行コンテキストを回復させ（Ｓ２００５）、復帰する（Ｓ２００７）。
【００９２】
このページテーブルの継続利用によって、ディスパッチ時には、ページテーブルの切り替えやＴＬＢフラッシュが不要となる。更に、プロセス切替え後には、直前のプロセスが参照したページへの再アクセス時に、該ページテーブルエントリが有効となっているページへの再アクセス時であれば、該ページテーブルエントリがそのまま利用できるため、該エントリの再設定コストも不要となる。
【００９３】
また、本最適化方針は、任意のプロセス間切替え時に適用することができ、優先度の異なるプロセス間で次期実行プロセスが選択される場合にも適用可能である。
【００９４】
また、次期実行プロセスを選択する際に同じ優先度を持つプロセスが複数個存在するときは、その中から直前に実行したプロセスと同じページテーブルを持つプロセスがあれば、それをなるべく選択するように制御することが好ましい。
【００９５】
この方針には、いくつかの変形が考えられる。（Ａ）スケジューラが次期実行プロセス選択時に直前に実行したプロセスと同じページテーブルを持つプロセスを実行待ち行列から順次探索する形式、（Ｂ）プロセス生成時やブロックされていたプロセスの再開時に優先度の同じ実行待ち行列内でページテーブルを共有するプロセスが存在する場合にその直後へプロセスエンティティを配置しなるべく連続させる形式、（Ｃ）実行中のプロセスがｓｌｅｅｐしているプロセスをｗａｋｅｕｐさせる際に対象プロセスが同じページテーブルを共有している場合優先的に次期実行スレッドとして選択する形式、などがある。これらを図示したものを図２３に示す。
【００９６】
上記の制御方式は、プロセス・エンティティの実行待ち行列内への登録時期、および、次期実行プロセス選択時期に、各プロセス構造体付随のページテーブル先頭アドレスを、システム／プログラマによって指定／規定されうる上記制御方針に基づき、比較／判定することによって実現することが出来る。
【００９７】
ただし、これらのスケジューリング方針を優先しすぎると、プロセスの飢餓や一部のプロセス群実行への偏向を引き起こす可能性もあるため、時間的要因などに応じてスケジューリングのための計算が行われる必要がある。
【００９８】
次に、第４の実施形態について説明する。
【００９９】
ここでは、分散メモリ型（疎結合型）マルチプロセッサシステム環境下で、アドレス変換テーブルの共有可能なプロセス同士をなるべく同じプロセッサ上で実行できるようなディスパッチが行われる。
【０１００】
図２４に、第４の実施形態によるプロセス生成時のプロセッサの割り付け処理手順を示す。
【０１０１】
ＯＳのプロセス管理部がプロセス生成要求を受信する（Ｓ２２０１）と、プロセス生成部が呼び出され、受信したプロセス生成要求に関してアドレス変換テーブルの共有可能なプロセスが存在するプロセッサ上へ配置されることを生成プロセス側が要求しているかどうか検査する（Ｓ２２０２）。この要求は、プロセス生成システムコールの引数内属性などを設定するなどしてプロセス生成側からＯＳに対して指示することにより可能となる。
【０１０２】
プロセス生成部では、上記の要求の指定が検知されない場合、該プロセス生成元プロセッサ上でのプロセス生成処理を行なう（Ｓ２２０６，Ｓ２２０８）。
【０１０３】
一方、このＳ２２０２の判定において、該テーブルの共有化要求の指定が検知される場合、該テーブル共有可能プロセス配置先プロセッサを探索するため、各プロセッサに対して探索依頼メッセージを送信する（Ｓ２２０３）。このメッセージ送信の手順として、まず、プロセッサ生成元プロセッサに対して探索を行なった後、検出できなかった場合に他のプロセッサに対する探索依頼を行なうようにしても良い。フローに戻って、Ｓ２２０３の探索要求が各プロセッサに通知され、該メッセージを受信した各プロセッサは該テーブル共有可能プロセスが自プロセッサ内に存在するかどうか探索する。この探索は、実施形態１に示したアドレス変換テーブル共有化判定手順と同様に、生成プロセス側のアクセス保護領域範囲と各プロセッサ内に格納されうる複数のアクティブ保護領域範囲に関する情報を比較するなどして処理することが可能である。
【０１０４】
次に、探索要求元プロセッサは、各プロセッサより返信される探索結果を受信し、アドレス変換テーブル共有可能プロセスを保持するプロセッサが検出の有無を判定する（Ｓ２２０４）。この判定処理の結果、該プロセッサが検出されなければ、プロセス生成元プロセッサを選択し、このプロセッサ上のプロセス生成部に生成プロセスの割り当て要求を生成部へ送信する。
【０１０５】
Ｓ２２０４の処理で、該アドレス変換テーブル共有可能プロセスを保持するプロセッサが検出されると、検出されたプロセッサ（群）にプロセス生成元プロセッサが含まれるかどうか調査する（Ｓ２２０５）。含まれる場合は、生成プロセス元プロセッサを選択後（Ｓ２２０６）、生成プロセスの割り当て要求を該生成プロセス元プロセッサのプロセス生成部へ送信する（Ｓ２２０８）。Ｓ２２０５で生成プロセス元プロセッサが含まれない場合には、検出プロセッサ（群）から任意のプロセッサを選択し（Ｓ２２０７）、該プロセッサ上のプロセス生成部へ生成プロセス割り当て要求を送信する（Ｓ２２０８）。該当するプロセッサが複数個検出された場合の選択方法は、いく通りが挙げられるが、最初に返信があったもの、あるいは、プロセッサ使用率、物理メモリの空き状態などを元にシステムやプログラマによって規定された選定基準に応じて適当なプロセッサを選択することが考えられる。
【０１０６】
上記の処理後、必要に応じて生成プロセスの選択プロセッサに付随する局所メモリ上への、プロセス情報、実行待ち行列エントリの配置処理が行われる。
【０１０７】
このように、疎結合型マルチプロセッサシステム環境下で、アドレス変換テーブルの共有可能なプロセス同士をなるべく同じプロセッサ上で実行できるようスケジューリングすることによって、記憶管理資源の削減、キャッシュ効率の向上がはかれる。また、有効化されたアドレス変換テーブルエントリの情報を利用してアドレス変換テーブルの共有化が行われているため、あらかじめ参照先のページが該プロセッサに付随する局所メモリに置かれている可能性が高いという特徴もある。
【０１０８】
本実施形態では、プロセス生成時にプロセッサへの配置の方法について述べたが、この応用例として、システムが暗黙裏かつ定期的に各局所メモリ上のアクティブ保護領域情報を調査し、あるアドレス変換テーブル共有可能なプロセスが複数プロセッサ上で配置されている状態を検出することによって、これらを一箇所の局所メモリ上へ移送し、結果的にプロセスマイグレーションを行うことも、本実施例を基にして比較的容易に実現できる。
【０１０９】
なお、以上の説明では、疎結合型マルチプロセッサシステム環境下でのアドレス変換テーブル共有可能プロセスのプロセッサ割り当て処理について説明したが、これを、各計算機ホストがネットワーク上に相互接続された図３のような分散システム環境下で適用する場合にも、基本的には疎結合タイプのマルチプロセッサと同等なメモリ配置形式となるため、一般性を失なうことなく実施形態４の制御機構により実現できる。
【０１１０】
以上説明したように、この発明の実施形態によれば、ＭＭＵを搭載し、ページングのアドレス変換方式にページングテーブルを使用する仮想的記憶管理機構を具備した計算機上で、単一の仮想記憶空間を提供し、単一仮想記憶空間内に複数配置される領域に対して、各プロセス毎にアクセス可能領域範囲を設定できるアクセス保護機構を提供するＯＳなどの基本ソフトウェア構成において、各プロセスに付随するアドレス変換テーブルにおいてて有効化されたエントリ情報に基づき有効ページ領域の範囲を算出して、複数プロセス間で領域に対するアクセス保護の一貫性を保証したアドレス変換テーブル共有化の機会を増加させることにより、仮想記憶空間管理用資源（ページテーブルやＴＬＢなど）の削減や、これに伴う物理メモリ収納可能領域サイズ（キャッシュ率）の向上、アドレス変換テーブル共有化による該アドレス変換テーブル数の減少によるアドレス変換テーブル間一貫性制御のための変更通知頻度の低減、などが可能になる。
【０１１１】
また、アドレス変換テーブルを共有したままではアクセス保護の一貫性が保証できない領域への参照が行われるまで、新たな別アドレス変換テーブルの作成／新規アドレステーブルの該当プロセスへの対応づけ時期を遅延することができる。
【０１１２】
また、次期実行プロセスの選択、プロセス実行待ち行列内でのプロセス・エンティティの配置を、可能な限りアドレス変換テーブル共有プロセス群を検出して、スケジューリング制御することにより、プロセス切り替え時に生じるページテーブル切り替えＴＬＢフラッシュ回数の低下、共有アドレス変換テーブルの継続使用によるキャッシュ率の向上、アドレス変換テーブルエントリの再設定の回避、などが可能になる。
【０１１３】
さらに、分散メモリ型（疎結合型）マルチプロセッサシステムにおいて、生成プロセスのアドレス変換テーブル共有可能性に着目したプロセッサ割り当てを行うことにより、各プロセッサの局所メモリごとに、仮想記憶空間管理用資源の削減や、仮想記憶管理用情報のプロセッサ間での一貫性制御通知頻度の低減、などが可能となる。
【０１１４】
なお、この発明は上述した各実施形態に限定されるものではなく、その要旨を逸脱しない範囲で、種々変形して実施することができる。
【０１１５】
【発明の効果】
以上説明したように、この発明によれば、単一仮想記憶空間を全てのプロセスで共有するシステムにおいて、プロセスそれぞれについてのアクセス保護機能を保証しつつ、プロセス間でのアドレス変換テーブルの共有化可能性を十分に高められるようになり、信頼性が高く、且つ記憶管理用資源、プロセス切り替え時のコストの最小化を実現することが可能となる。
【図面の簡単な説明】
【図１】この発明の一実施形態に係る仮想記憶管理方法が適用されるシングルプロセッサシステムの構成例を示すブロック図。
【図２】この発明の一実施形態に係る仮想記憶管理方法が適用されるマルチプロセッサシステムの第１の構成例を示すブロック図。
【図３】この発明の一実施形態に係る仮想記憶管理方法が適用されるマルチプロセッサシステムの第２の構成例を示すブロック図。
【図４】同実施形態における実行プロセスとデータとの関係の一例を示す図。
【図５】同実施形態における各プロセスとアクセス保護領域範囲との関係の一例を示す図。
【図６】同実施形態の仮想記憶管理方法を実現するためのＯＳの構成例を示すブロック図。
【図７】同実施形態の仮想記憶管理方法で使用されるプロセス構造体の一例を示す図。
【図８】同実施形態の仮想記憶管理方法で使用されるアクセス／アクティブ保護領域構造体の一例を示す図。
【図９】同実施形態の仮想記憶管理方法で使用されるアクセス／アクティブ保護領域リスト用エントリの構成を示す図。
【図１０】同実施形態の仮想記憶管理方法で使用されるメモリセクション領域構造体エントリの構成を示す図。
【図１１】同実施形態の仮想記憶管理方法で使用される対領域および対プロセスの許可／不許可エントリの構成を示す図。
【図１２】同実施形態におけるプロセス１のアクセス保護領域の配置を示す図。
【図１３】同実施形態におけるプロセス１実行中のアクティブ保護領域の配置を示す図。
【図１４】同実施形態におけるプロセス２のアクセス保護領域の配置を示す図。
【図１５】同実施形態におけるプロセス１，２間のアクセス／アクティブ保護領域の関係を示す図。
【図１６】同実施形態におけるプロセス指定によるページテーブル共有化の処理の手順を示すフローチャート。
【図１７】同実施形態におけるプロセス２によるプロセス１のアクティブ保護領域リストとページテーブルの共有化例を示す図。
【図１８】同実施形態においてプロセス１が領域（Ｅ）を実行中にアクセスした後のアクティブ保護領域と各アクセス保護領域との状態を図。
【図１９】同実施形態におけるページフォルト時におけるページテーブル共有化継続可能性の判定および分離時の処理手順を示すフローチャート。
【図２０】同実施形態における仮想／物理アドレス変換共有マップと現実行プロセスのページテーブルとの関係を示す図。
【図２１】図２０におけるページテーブルエントリの構成を示す図。
【図２２】同実施形態におけるページテーブル共有プロセス間でのディスパッチに対応したスケジューリングの流れを示すフローチャート。
【図２３】同実施形態におけるページテーブル共有プロセスに関するプロセス・エンティティの選択／配置例を示す図。
【図２４】同実施形態におけるプロセス生成時のプロセッサの割り付け処理の手順を示すフローチャート。
【図２５】従来の単一仮想記憶空間管理方法の一例を示す図。
【図２６】従来の単一仮想記憶空間管理方法の他の例を示す図。
【符号の説明】
１１…ＣＰＵ、１２…ＭＭＵ、１３…物理メモリ、１４…二次記憶、２１…プロセス管理部、２２…仮想記憶管理部、２３…ページテーブル管理部、２４…メモリセクション領域管理部、２５…保護領域管理部。
【図１】
0003557026.tif 000002
【図２】
0003557026.tif 000003
【図３】
0003557026.tif 000004
【図４】
0003557026.tif 000005
【図５】
0003557026.tif 000006
【図６】
0003557026.tif 000007
【図７】
0003557026.tif 000008
【図８】
0003557026.tif 000009
【図９】
0003557026.tif 000010
【図１０】
0003557026.tif 000011
【図１１】
0003557026.tif 000012
【図１２】
0003557026.tif 000013
【図１３】
0003557026.tif 000014
【図１４】
0003557026.tif 000015
【図１５】
0003557026.tif 000016
【図１６】
0003557026.tif 000017
【図１７】
0003557026.tif 000018
【図１８】
0003557026.tif 000019
【図１９】
0003557026.tif 000020
【図２０】
0003557026.tif 000021
【図２１】
0003557026.tif 000022
【図２２】
0003557026.tif 000023
【図２３】
0003557026.tif 000024
【図２４】
0003557026.tif 000025
【図２５】
0003557026.tif 000026
【図２６】
0003557026.tif 000027