(57)【要約】【課題】仮想アドレス・スペースを有する情報処理システムの共用仮想記憶を管理する。【解決手段】６４ビット仮想アドレス・スペース２０２は、最大５レベルの動的アドレス変換（ＤＡＴ）テーブル３０２を必要とする。仮想アドレス３０４の１以上の共用範囲は、複数の仮想アドレス・スペース２０２のそれぞれに対して、共通する１セットの実アドレス３０６にマップされる。オペレーティング・システム１０６は、アドレス変換のために共用アドレス・スペースで使用される共用された１セットのＤＡＴテーブルを参照するシステム・レベルＤＡＴテーブルで共用範囲を管理する。仮想アドレスの共用範囲は、異なる第３レベルＤＡＴテーブルで用いられる範囲間の２42バイト境界を跨ぎ、個々のアドレス・スペースが低位専用範囲および３レベルのＤＡＴテーブルのみに使用される共用範囲の両方をマップできるように、低位専用範囲と高位専用範囲との間に位置する。【選択図】図３
2004326771.tif 000002
【特許請求の範囲】
【請求項１】
オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有する情報処理システムにおいて、共用仮想記憶を管理する方法であって、
テーブル参照の変換パスを与えることによって仮想アドレス参照を実アドレスに変換する1セットのプロセス・レベル動的アドレス変換（ＤＡＴ）テーブルを、複数の仮想アドレス・スペースのそれぞれに対して与えるステップを含み、前記複数セットのＤＡＴテーブルは、前記仮想アドレス・スペースに共通であり、共通する１セットの実アドレスに前記仮想アドレス・スペースのそれぞれの仮想アドレスの共用範囲をマップする共用の１サブセットのＤＡＴテーブルを有し、
前記共用範囲を管理する1セットの１以上のシステム・レベルＤＡＴテーブルを与えるステップを含み、前記システム・レベルＤＡＴテーブルは、前記プロセス・レベルＤＡＴテーブルの前記共用の１サブセットのＤＡＴテーブルを参照するが、前記プロセス・レベルＤＡＴテーブルのいずれかの変換パス内にはない共用仮想記憶を管理する方法。
【請求項２】
前記複数セットのプロセス・レベルＤＡＴテーブルは、前記仮想アドレス・スペースに共通でない非共用の複数サブセットのＤＡＴテーブルを更に有し、前記非共用の複数サブセットのＤＡＴテーブルは、前記仮想アドレス・スペースによってもはや必要とされないときでも維持される請求項１に記載の方法。
【請求項３】
オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有し、複数レベルの変換テーブルが、前記仮想アドレス・スペースを実記憶にマップするために使用される情報処理システムにおいて、共用仮想記憶を管理する方法であって、
前記仮想アドレス・スペースの１つに対して、仮想アドレス参照を実アドレスに変換する１セットの動的アドレス変換（ＤＡＴ）テーブルを作成するステップを含み、前記１セットのＤＡＴテーブルは、他の仮想アドレス・スペースと共用される共用の１サブセットのＤＡＴテーブルを有し、他の仮想アドレス・スペースと共用されない非共用の１サブセットのＤＡＴテーブルを有し、
前記仮想アドレス・スペースによってもはや必要とされないときでも前記非共用の１サブセットのＤＡＴテーブル維持するステップを含む共用仮想記憶を管理する方法。
【請求項４】
前記複数セットのＤＡＴテーブルは、前記仮想アドレス・スペースに共通でない非共用の複数サブセットのＤＡＴテーブルを有し、スワップ・イン処理の際に、前記非共用の複数サブセットのＤＡＴテーブルのみが再構築され、前記共用の１サブセットのＤＡＴテーブルが再構築されない請求項３に記載の方法。
【請求項５】
オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有し、所定の最大数のレベルの変換テーブルが、前記仮想アドレス・スペースを実記憶にマップするために可能性として使用される情報処理システムにおいて、共用仮想記憶を管理する方法であって、
仮想アドレス・スペースに対して、共通する１セットの実アドレスに他のアドレス・スペースの仮想アドレス範囲と共にマップされる仮想アドレスの共用範囲を定義するステップを含み、
前記仮想アドレス・スペースに対して、前記仮想アドレスの共用範囲より低く、前記アドレス・スペースに専用である第１の１セットの実アドレスにマップされる仮想アドレスの第１の専用範囲を定義するステップを含み、前記共用範囲および前記第１の専用範囲は、前記所定の最大数のレベルの前記変換テーブルより小さいレベルの変換テーブルを必要とする仮想アドレス範囲を占有し、
前記仮想アドレス・スペースに対して、前記仮想アドレスの共用範囲より高く、前記アドレス・スペースに専用である第２の１セットの実アドレスにマップされる仮想アドレスの第２の専用範囲を定義するステップを含む共用仮想記憶を管理する方法。
【請求項６】
最大５レベルの変換テーブルは、前記仮想アドレス・スペースを実記憶にマップするために使用され、前記共用範囲および前記第１の専用範囲は、３個以下のレベルの前記変換テーブルを必要とする仮想アドレス範囲を占める請求項５に記載の方法。
【請求項７】
前記仮想アドレス・スペースは、６４ビット・アドレス・スペースであり、前記共用範囲および前記第１の専用範囲は、４２ビット以下を用いてアドレス可能である仮想アドレス範囲を占有する請求項５に記載の方法。
【請求項８】
オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有する情報処理システムにおいて、共用仮想記憶を管理する方法であって、
複数の仮想アドレス・スペースのそれぞれに対して、共通する１セットの実アドレスにマップされる仮想アドレスの共用範囲を定義するステップを含み、
各仮想アドレス・スペースが同じアクセス権を有するグローバル・アクセス権、または各仮想アドレス・スペースが個別に前記共通範囲に対して指定されたアクセス権を有するローカル・アクセス権を用いて、前記共通する１セットの実アドレスが、前記仮想アドレス・スペースにより共用されるか否かを指定するステップを含む共用仮想記憶を管理する方法。
【請求項９】
異なる仮想アドレス・スペースの仮想アドレスの複数の共用範囲が、複数の共通セットの実アドレスのそれぞれにマップされる請求項８に記載の方法であって、
前記指定するステップは、前記共通範囲のそれぞれに対して、前記共通範囲が、グローバル・アクセス権またはローカル・アクセス権を用いて共用されるか否かを個別に指定するステップを含む方法。
【請求項１０】
グローバル・アクセス権またはローカル・アクセス権は、仮想アドレスの共用範囲に対して、共用範囲が最初に定義されるときのみ指定可能である請求項８に記載の方法。
【請求項１１】
前記仮想アドレス・スペースの１つに対して前記共通範囲に対するアクセス権を指定するステップを更に含む請求項８に記載の方法。
【請求項１２】
前記共通する１セットの実アドレスがローカル・アクセス権を用いて共用されるならば、前記仮想アドレス・スペースの１つのみのアクセス権を変更するステップと、
前記共通する１セットの実アドレスがグローバル・アクセス権を用いて共用されるならば、前記仮想アドレス・スペースのそれぞれのアクセス権を対応して変更するステップとを更に含む請求項１１に記載の方法。
【請求項１３】
前記仮想アドレス・スペースの１つは、その仮想アドレスを実アドレスにマップするために１セットの変換テーブルを使用し、前記共通範囲に対する前記仮想アドレス・スペースの１つのアクセス権は、前記変換テーブル内に指定される請求項１１に記載の方法。
【請求項１４】
前記共通範囲に対する前記仮想アドレス・スペースの１つのアクセス権は、ローカル・アクセス権であり、他のアドレス・スペースにより共用されない前記変換テーブルの一部内に指定される請求項１３に記載の方法。
【請求項１５】
オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有する情報処理システムにおいて、共用仮想記憶を管理する装置であって、
複数の仮想アドレス・スペースのそれぞれに対して、テーブル参照の変換パスを与えることによって仮想アドレス参照を実アドレスに変換する1セットのプロセス・レベル動的アドレス変換（ＤＡＴ）テーブルを備え、前記複数セットのＤＡＴテーブルは、前記仮想アドレス・スペースに共通であり、共通する１セットの実アドレスに前記仮想アドレス・スペースのそれぞれの仮想アドレスの共用範囲をマップする共用の１サブセットのＤＡＴテーブルを有し、
前記共用範囲を管理する1セットの１以上のシステム・レベルＤＡＴテーブルを備え、前記システム・レベルＤＡＴテーブルは、前記プロセス・レベルＤＡＴテーブルの前記共用の１サブセットのＤＡＴテーブルを参照するが、前記プロセス・レベルＤＡＴテーブルのいずれかの変換パス内にはない共用仮想記憶を管理する装置。
【請求項１６】
オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有し、複数レベルの変換テーブルが、前記仮想アドレス・スペースを実記憶にマップするために使用される情報処理システムにおいて、共用仮想記憶を管理する装置であって、
仮想アドレス・スペースの1つに対して、仮想アドレス参照を実アドレスに変換する1セットの動的アドレス変換（ＤＡＴ）テーブルを作成するロジックを備え、前記複数セットのＤＡＴテーブルは、他の仮想アドレス・スペースと共用される共用の１サブセットのＤＡＴテーブルを有し、他の仮想アドレス・スペースと共用されない非共用の１サブセットのＤＡＴテーブルを有し、
前記仮想アドレス・スペースによってもはや必要とされないときでも前記非共用の１サブセットのＤＡＴテーブル維持するロジックを備える共用仮想記憶を管理する装置。
【請求項１７】
前記複数セットのＤＡＴテーブルは、前記仮想アドレス・スペースに共通でない非共用の複数サブセットのＤＡＴテーブルを備え、スワップ・イン処理の際に、前記非共用の複数サブセットのＤＡＴテーブルのみが再構築され、前記共用の１サブセットのＤＡＴテーブルが再構築されない請求項１６に記載の装置。
【請求項１８】
オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有し、所定の最大数のレベルの変換テーブルが、前記仮想アドレス・スペースを実記憶にマップするために可能性として使用される情報処理システムにおいて、共用仮想記憶を管理する装置であって、
仮想アドレス・スペースに対して、共通する１セットの実アドレスに他のアドレス・スペースの仮想アドレス範囲と共にマップされる仮想アドレスの共用範囲を定義するロジックを備え、
前記仮想アドレス・スペースに対して、前記仮想アドレスの共用範囲より低く、前記アドレス・スペースに専用される第１の１セットの実アドレスにマップされる仮想アドレスの第１の専用範囲を定義するロジックを備え、前記共用範囲および前記第１の専用範囲は、前記所定の最大数のレベルの前記変換テーブルより小さいレベルの変換テーブルを必要とする仮想アドレス範囲を占有し、
前記仮想アドレス・スペースに対して、前記仮想アドレスの共用範囲より高く、前記アドレス・スペースに専用である第２の１セットの実アドレスにマップされる仮想アドレスの第２の専用範囲を定義するロジックを備える共用仮想記憶を管理する装置。
【請求項１９】
オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有する情報処理システムにおいて、共用仮想記憶を管理する装置であって、
複数の仮想アドレス・スペースのそれぞれに対して、実アドレスの共通範囲にマップされる仮想アドレスの共用範囲を定義するロジックを備え、
各仮想アドレス・スペースが同じアクセス権を有するグローバル・アクセス権、または各仮想アドレス・スペースが個別に前記共通範囲に対して指定されたアクセス権を有するローカル・アクセス権を用いて、前記共通する１セットの実アドレスが、前記仮想アドレス・スペースにより共用されるか否かを指定するロジックを備える共用仮想記憶を管理する装置。
【請求項２０】
オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有する情報処理システムにおける共用仮想記憶を管理する方法ステップを実行するために、マシンによって実行可能な命令のプログラムを含む、マシンによって読み取り可能なプログラム記憶装置であって、
前記方法ステップは、
複数の仮想アドレス・スペースのそれぞれに対して、テーブル参照の変換パスを与えることによって仮想アドレス参照を実アドレスに変換する1セットのプロセス・レベル動的アドレス変換（ＤＡＴ）テーブルを与えるステップを含み、前記複数セットのＤＡＴテーブルは、前記仮想アドレス・スペースに共通であり、共通する１セットの実アドレスに前記仮想アドレス・スペースのそれぞれの仮想アドレスの共用範囲をマップする共用の１サブセットのＤＡＴテーブルを有し、
前記共用範囲を管理する1セットの１以上のシステム・レベルＤＡＴテーブルを与えるステップを含み、前記システム・レベルＤＡＴテーブルは、前記プロセス・レベルＤＡＴテーブルの前記共用の１サブセットのＤＡＴテーブルを参照するが、前記プロセス・レベルＤＡＴテーブルのいずれかの変換パス内にはないプログラム記憶装置。
【請求項２１】
オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有し、複数レベルの変換テーブルが、前記仮想アドレス・スペースを実記憶にマップするために使用される情報処理システムにおける共用仮想記憶を管理する方法ステップを実行するために、マシンによって実行可能な命令のプログラムを含む、マシンによって読み取り可能なプログラム記憶装置であって、
前記方法ステップは、
前記仮想アドレス・スペースの１つに対して、仮想アドレス参照を実アドレスに変換する１セットの動的アドレス変換（ＤＡＴ）テーブルを作成するステップを含み、前記１セットのＤＡＴテーブルは、他の仮想アドレス・スペースと共用される共用の１サブセットのＤＡＴテーブルを有し、他の仮想アドレス・スペースと共用されない非共用の１サブセットのＤＡＴテーブルを有し、
前記仮想アドレス・スペースによってもはや必要とされないときでも前記非共用の１サブセットのＤＡＴテーブル維持するステップを含むプログラム記憶装置。
【請求項２２】
前記複数セットのＤＡＴテーブルは、前記仮想アドレス・スペースに共通でない非共用の複数サブセットのＤＡＴテーブルを有し、スワップ・イン処理の際に、前記非共用の複数サブセットのＤＡＴテーブルのみが再構築され、前記共用の１サブセットのＤＡＴテーブルが再構築されない請求項２１に記載のプログラム記憶装置。
【請求項２３】
オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有し、所定の最大数のレベルの変換テーブルが、前記仮想アドレス・スペースを実記憶にマップするために可能性として使用される情報処理システムにおける共用仮想記憶を管理する方法ステップを実行するために、マシンによって実行可能な命令のプログラムを含む、マシンによって読み取り可能なプログラム記憶装置であって、
前記方法ステップは、
仮想アドレス・スペースに対して、共通する１セットの実アドレスに他のアドレス・スペースの仮想アドレス範囲と共にマップされる仮想アドレスの共用範囲を定義するステップを含み、
前記仮想アドレス・スペースに対して、前記仮想アドレスの共用範囲より低く、前記アドレス・スペースに専用である第１の１セットの実アドレスにマップされる仮想アドレスの第１の専用範囲を定義するステップを含み、前記共用範囲および前記第１の専用範囲は、前記所定の最大数のレベルの前記変換テーブルより小さいレベルの変換テーブルを必要とする仮想アドレス範囲を占有し、
前記仮想アドレス・スペースに対して、前記仮想アドレスの共用範囲より高く、前記アドレス・スペースに専用である第２の範囲の実アドレスにマップされる仮想アドレスの第２の専用範囲を定義するステップを含むプログラム記憶装置。
【請求項２４】
オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有する情報処理システムにおける共用仮想記憶を管理する方法ステップを実行するために、マシンによって実行可能な命令のプログラムを含む、マシンによって読み取り可能なプログラム記憶装置であって、
前記方法ステップは、
複数の仮想アドレス・スペースのそれぞれに対して、共通する１セットの実アドレスにマップされる仮想アドレスの共用範囲を定義するステップを含み、
各仮想アドレス・スペースが同じアクセス権を有するグローバル・アクセス権、または各仮想アドレス・スペースが個別に前記共通範囲に対して指定されたアクセス権を有するローカル・アクセス権を用いて、前記共通する１セットの実アドレスが、前記仮想アドレス・スペースにより共用されるか否かを指定するステップを含むプログラム記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・システムにおける仮想記憶管理に関する。特に、本発明は、専用スペースと共用スペースの両方を含む仮想メモリ・システム内の共用仮想記憶のレイアウトおよび管理に関する。
【背景技術】
【０００２】
コンピュータ・システムにおける仮想記憶の使用は、別個のプロセスによって所有されるデータを分離するためのシステム内の複数の仮想スペースの使用を含み、広く受け入れられている。このことは、ＩＢＭ  ｚ／ＯＳ（登録商標）オペレーティング・システムのようなオペレーティング・システムに例示され、ＩＢＭ刊行物である非特許文献１に記載されている。
【０００３】
アドレス変換が階層形式で行われることは、仮想記憶環境では一般的である。仮想アドレスからのビットのグループは、次の層の変換のための動的アドレス変換（ＤＡＴ）テーブルから実記憶アドレスをフェッチするインデックスとして利用でき、仮想アドレス自体の実記憶位置を定める。これらのＤＡＴテーブルは、一般にページ・テーブルと呼ばれるが、ＩＢＭ  ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ（登録商標）では、極最近では、どのレベルが参照されるかによってリージョン・テーブル、セグメント・テーブルおよびページ・テーブルと呼ばれる。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの最新バージョンにおけるテーブルのレベルの数は、マップされる仮想記憶の総数により２，３，４または５である。このことは、ＩＢＭ刊行物である非特許文献２に記載されている。
【０００４】
アドレス変換を行うために、マシン・ハードウエアは、各テーブルから順次フェッチし、変換の次の層に進む。各アドレス変換のこのオーバーヘッドを避けるために、従来のアドレス変換の結果（または部分的結果）が保存されるハードウエア変換バッファまたはハードウエア変換キャッシュがそこにあることは一般的である。このことは、非特許文献３および非特許文献４に記載されている。ハードウエア変換バッファがフル状態であるときにどのアドレスを保持するかを決定するために使用される参照の場所、ハードウエア変換バッファのサイズおよびアルゴリズムに依存して、プログラム実行と関連付けられた更に少量または多量のアドレス変換オーバーヘッドがある。このために、オペレーティング・システム設計者は、アドレス変換のレベルの数を最小にすることが任意の場合でも、アドレス変換のレベルの数を最小にするように大いに動機を与えられる。
【特許文献１】米国特許第５４７９６３１号明細書
【非特許文献１】ｚ／ＯＳ  ＭＶＳ  Ｉｎｉｔｉａｌｉｚａｔｉｏｎ  ａｎｄ  Ｔｕｎｉｎｇ  Ｇｕｉｄｅ，ＳＡ２２−７５９１−０１（２００２年３月）
【非特許文献２】ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｐｒｉｎｃｉｐｌｅｓ  ｏｆ  Ｏｐｅｒａｔｉｏｎ，ＳＡ２２−７８３２−０１（２００１年１０月）
【非特許文献３】Ａ．Ｒｕｔｃｈｋａ“Ｔｗｏ  Ｌｅｖｅｌ  Ｔｒａｎｓｌａｔｉｏｎ”ＩＢＭ  Ｔｅｃｈｎｉｃａｌ  Ｄｉｓｃｌｏｓｕｒｅ  Ｂｕｌｌｅｔｉｎ，Ｖｏｌ．１３，Ｎｏ．８，１９７１年１月
【非特許文献４】Ｗ．Ｓｒｕｔｈ“Ｄｙｎａｍｉｃ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ  ｆｏｒ  Ｍｕｌｔｉｐｒｏｃｅｓｓｉｎｇ  Ｓｙｓｔｅｍ”ＩＢＭ  Ｔｅｃｈｎｉｃａｌ  Ｄｉｓｃｌｏｓｕｒｅ  Ｂｕｌｌｅｔｉｎ，Ｖｏｌ．１４，Ｎｏ．５，１９７１年１０月
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ｚ／ＯＳの従来のシステムおよびＯＳ／３９０（登録商標）、ＭＶＳ／ＥＳＡ（登録商標）、ＭＶＳ／ＸＡ（登録商標）等のような初期の技術では、仮想アドレス・スペースは、全アドレス・スペースに渡って実際に共用された１６ＭＢ（２24バイト）に及ぶ専用スペースおよび共通領域からなる。（このアプリケーションでは、記憶アドレスの問題においては慣例であるように、キロ（Ｋ）、メガ（Ｍ）、ギガ（Ｇ）等のような乗数は、１０の累乗ではなく２の累乗を指す。したがって、キロバイト（ＫＢ）は、１０3 バイトではなく、２10を意味し、メガバイト（ＭＢ）は、１０6 バイトではなく、２20を意味し、ギガバイト（ＧＢ）は、１０9 バイトではなく、２30を意味する。）全ての共用技術に関しては、共用は、複数のアドレス・スペースに渡って所定ページのために同じ実フレームを用いることによって行われる。共通領域の場合には、全ての共通セグメントは、各アドレス・スペースのセグメント・テーブルの適切なエントリによって示される１セットの共通ページ・テーブルによってマップされる。システム（またはカーネル）コードおよび制御構造は、許可コードおよび制御構造と共に、この共通領域内にある。これらの従来のシステムにおけるページ・テーブル（およびセグメント・テーブル）は、仮想化され、したがって、各専用スペース内に約８ＭＢの事前割り当て仮想スペースを使用する。共通スペースにアクセスを与えるために、共通セグメントのためのセグメント・テーブル・エントリは、各アドレス・スペースの内容と同じである。
【０００６】
これらのシステムの最も初期のデータ共用は、共通領域を介して行われたが、データ共用は、特権コードにより利用できるだけである。後に、汎用データ共用が、ページ・テーブル・エントリのハードウエア強制保護ビットを用いて、異なるビュー（ｖｉｅｗ）に異なるアクセス・モード（例えば、読み取り／書き込みモード対読み取り専用モード）を与えることが可能であるページ指向ベースで与えられた。これは、小さい範囲には充分であったが、共用データの量が増えるとデータ共用グループ内のページの状態を追跡するために望ましくないオーバーヘッドを生じた。これには、後のリリースにおいて、セグメント指向範囲におけるデータ共用のための機能が付随された。したがって、全てのページ・テーブルを共用できた。この場合、セグメント・テーブル・エントリは、２つ以上のアドレス・スペースが、同じセグメントを共用できるように、共用ページ・テーブルのアドレスを記録する。これらの技術は、これらのサービスが導入された時点で存在した基礎アーキテクチャのために２ＧＢ（２31バイト）未満のアドレス範囲に制限された。
【０００７】
ｚ／ＯＳにおける６４ビット・アドレッシングの導入については、アドレス幅を２倍にすることによって与えられるアドレス可能度の大幅な拡大で高まった更に十分なデータ共用機能を与える要望があった。仮想化されたＤＡＴテーブルの継続使用は、全６４ビット・アドレッシング能力のために約２56バイトを使用する。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは、２44個のセグメントがあり、各セグメントは、４ＫＢ（４０９６バイト）ページ・テーブルを必要とする。仮想記憶管理目的の仮想スペースのこの非常に大きなロスを避けるために、新たな方法が強く望まれた。このｚ／Ａｒｃｈｉｔｅｃｔｕｒｅの役割は、ＤＡＴ使用可能モードで実行しながらでも、実記憶アドレスを直接に参照する能力を与える。これは、米国特許第５４７９６３１号明細書“Ｓｙｓｔｅｍ  ｆｏｒ  Ｄｅｓｉｇｎａｔｉｎｇ  Ｒｅａｌ  Ｍａｉｎ  Ｓｔｏｒａｇｅ  Ａｄｄｒｅｓｓｅｓ  ｉｎ  Ｉｎｓｔｒｕｃｔｉｏｎｓ  Ｗｈｉｌｅ  Ｄｙｎａｍｉｃ  Ａｄｄｒｅｓｓ  Ｔｒａｎｓｌａｔｉｏｎ  Ｉｓ  Ｏｎ”（前記した特許文献１）および前記したｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ刊行物に記載されている。この機能については、オペレーティング・システムが、仮想アドレス可能度のアプリケーションのプールから仮想記憶を除去することなくＤＡＴテーブルを更新することを含む仮想記憶管理を与えることは可能である。仮想化されないＤＡＴテーブルを用いるこの技術は、リリース１．２以来、ｚ／ＯＳで利用可能となった。
【課題を解決するための手段】
【０００８】
一般に、本発明は、プロセスに対して唯一の専用スペースと、１つ以上のプロセスに対して範囲によって選択的にアクセスできる共用スペースとからなる複数の仮想アドレス・スペースを備える仮想記憶システムの方法および装置を与える。すなわち、どのプロセスが関与することを許可されるかを制御する能力がある。共用スペース内の各範囲は、０個、１個または複数個のプロセスによってアクセス可能であり、関与プロセスは、各アドレス範囲について異なるようにできる。各共用範囲は、インストール・ポリシーを条件として、あるプロセスによって動的に作成される。
【０００９】
さらに、このようなアドレス範囲のそれぞれは、全ての関与プロセスに同じアクセス権（読み取り／書き込み、読み取り専用、または隠し）で共用されても良いし（グローバル・アクセス権と呼ばれる）、関与プロセスのそれぞれが、与えられた範囲に異なるアクセス権を有していても良い（ローカル・アクセス権と呼ばれる）。さらに、関与プロセスのそれぞれのアクセス権は、プロセスの存続期間の間、変更可能である。したがって、ローカル・アクセス権の場合には、１つのグループの関与プロセスが、更新権限を有することができ、もう１つのグループの関与プロセスが、読み取り専用権限を有することができ、範囲をその他の関与プロセスに対して隠し（アクセス不可能）状態にすることができる。そして、これは、範囲に対する各プロセスの存続期間の間、動的に変更可能である。もちろん、グローバル・アクセス権の場合には、アクセス権の変更は、全ての関与プロセスに等しく影響し、全ての関与プロセスに同じ新たなモードのアクセスを生じる。グローバル対ローカルのアクセス権特性は、共用範囲が存続する間、不変である。
【００１０】
共用スペースの合計サイズが、インストールによって指定でき、仮想記憶レイアウトが、インストール指定についての共用スペースと専用スペースの両方をアドレスするために必要であるＤＡＴテーブルの層の数を最小にすることが本発明の特徴である。共用スペース内にどのような種類のデータが存在できるかについての制限はない。すなわち、事前定義サブエリアは、スタック、ヒープ、実行可能プログラム、データベース等のためには存在しない。さらに、本発明は、ＤＡＴテーブルの仮想記憶が利用されない従来の技術を拡張する。本発明は、アプリケーションに利用可能な仮想記憶の総数を最大にし、必要とされる実記憶リソースを低減する。特に、他のＤＡＴテーブルのみにマップするＤＡＴテーブルはない。
【００１１】
本発明は、共用スペースにプロセス専用スペースをマップする必要がないので、各アドレス・スペース内の使用できないスペースを最小にする。代わりに、各プロセスは、プロセスに固有のアクセス権によって拘束される共用仮想アドレスを直接にアクセスする。プロセスに使用できないスペースは、したがって、共用可能スペースのサイズからプロセスによって利用される共用スペースの総数を引いたサイズである。他の方法は、アクセス権を制御するために、プロセスが共用データをプロセス専用スペースにマップすることを必要とした。このことは、使用できないスペースが、全ての共用可能スペースのサイズであることを意味し、このことは、さらに多くの使用できないスペースがこれらの他の方法には存在することを意味する。
【００１２】
アドレス・スペースのレイアウトは、アドレス０バイト〜２31−１バイトが、既存システム（これは、既存３１ビット仮想アドレッシングに対応する）におけると同様に機能するように、互換性考慮事項によって拘束される。この発明では、上位仮想アドレスのレイアウトは、リージョン第２テーブルが必要となる、境界を中心とする共用可能範囲を与える。共用可能範囲は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは偶然に２42バイトである。共用可能範囲のサイズは、カスタマーによって構成可能である。共用可能範囲の低位境界は、特殊境界から下に、範囲の半分ほど低いことを許されるが、共用可能範囲が２42バイトより小さいと高くなる。共用可能範囲の上位境界は、低位境界に追加されるカスタマー指定合計サイズによって判断される。このレイアウトは、共用仮想記憶が２41バイトより小さいときに、リージョン第３テーブルを満足させることができるとともに、各スペースに約２41バイトの専用記憶を同時に与える。専用サイズと共用可能サイズとの間の他のトレードオフを行うことができる。他のトレードオフは、１つのリージョン第３テーブル以下に対してこの同じ要件、および２ＧＢ未満の既存の互換性要件と整合している。
【００１３】
２ＧＢを超え、かつこの共用可能範囲の外側の仮想アドレスは、アドレス・スペース（専用スペース）に対してアドレス可能度を有するプロセスに認識されるだけである。この共用可能範囲内のアドレスは、オペレーティング・システム記憶管理インターフェースを用いて他のプロセスとともに選択的に共用可能である。共用可能スペースは、リージョン（リージョンは、全セグメント・テーブルによってマップされるアドレスの範囲であり、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは偶然に２ＧＢである。）に合わせられる境界から始まり、リージョン・サイズの倍数となる。このことは、低レベル（すなわち第３）リージョン・テーブルの各エントリが、共用可能範囲と専用範囲のどちらかを記述することを意味する。
【００１４】
共用範囲に接続される各アドレス・スペースは、与えられたスペースに対してどの範囲が、認識されるかを記述するシャドー・テーブルによって管理される。シャドー・テーブルは、作成された全ての共用可能範囲を追跡するシステム・ワイド・テーブルのサブセットである。スペースが、障害を起こし、または共用可能範囲の仮想アドレスに対してオペレーティング・システム・サービスを要求すると、アドレスは、スペースによって接続された範囲内にあることを検証される。このような範囲のそれぞれは、共用範囲が全システムに渡って、もはや使用されていないときに、システムが容易に追跡できるようにするために関連付けられた対象カウントを有する。
【００１５】
オペレーティング・システムは、アドレス変換に必要な実アドレスを含み、共用ページの状態を記述する、それ自体の使用のための１セットのＤＡＴテーブルを維持する。しかしながら、これらのシステム関連テーブルは、オペレーティング・システムの役割が、ＤＡＴテーブルを維持することにあるので、ハードウエアＤＡＴ構造に接続されない。オペレーティング・システムは、共用データ自体を実際に参照することに関心がない。代わりに、オペレーティング・システムは、ハードウエア自体によって使用されるのと同様の方法で、ルート制御ブロックから開始するこれらのテーブルをトラバースする。テーブルを非接続状態にしておくこの選択は、ＤＡＴテーブルを接続／非接続にすることに関連付けられたオーバーヘッドを回避し、さらに、仮想記憶（例えば、仮想化されたＤＡＴテーブル）を参照するためにそれらを使用することのオーバーヘッドを回避する。この同じルート制御ブロックは、ＤＡＴテーブルのフレーム関連制御ブロック（オペレーティング・システムによって使用されるＤＡＴテーブルおよびプロセス所有共用可能範囲のハードウエア変換パスの一部を構成する共用ＤＡＴテーブルの両方のフレーム関連制御ブロック）を固定する。
【００１６】
上述したように、各アドレス・スペースは、専用（共用不可能）領域を記述する１セットのＤＡＴテーブルを所有する。これらのテーブルの幾つかは、オペレーティング・システムによって管理される共用ＤＡＴテーブルを指すエントリを有する。スラッシングを避けるために、新たなレベルの接続ＤＡＴテーブルが、仮想アドレスの参照をサポートするために構築されると、たとえ必要とされなくても、接続ＤＡＴテーブルは、そのままにされる。変換の現行トップ層（３つのリージョン・テーブル・タイプのいずれかである）の除去は、キャッシュされた変換テーブルを除去するために、全てのプロセッサに信号を送る必要があるために複雑になる。しかしながら、この複雑さは、ＤＡＴテーブルが非接続のままであるので、オペレーティング・システムにインプリメントされた共用可能範囲のＤＡＴテーブルには与えられない。
【００１７】
全てのビューワー（ｖｉｅｗｅｒ）に対してグローバル・アクセス権を有する共用範囲については、アクセス制御は、（セグメント・レベル共用の）セグメントまたは（リージョン・レベル共用の）共用セグメント・テーブル・エントリをマップする共用ページ・テーブル・エントリに維持される。前者の場合、保護状態は、また、簡易単一サマリー・ビットとして機能するようにセグメントの非接続ＤＡＴテーブル・エントリに保存される。（ＤＡＴテーブル・フォーマットが、ソフトウエア予約済フィールドを与えると、同様のことが、隠れ属性に概念的に行われる。）セグメント障害解決処理またはリージョン障害解決処理は、それぞれ、ＤＡＴのプロセスにおける最高位（最速の）可能レベルでハードウエアに状態を知らせるために、正しいアクセス権が、非接続ＤＡＴテーブル・エントリからプロセス関連セグメント・テーブル・エントリまたはプロセス関連リージョン・テーブル・エントリにまで広がることを保証する。
【００１８】
各ビューワーに対して異なるアクセス保護（ローカル・アクセス権）を有することが可能な共用範囲については、制御は、（セグメント・レベル共用の）セグメントをマップするプロセス関連ＤＡＴテーブル・エントリに維持される。リージョン・レベル共用は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅが保護のためのリージョン・テーブル・エントリ制御を有しないので、ローカル・アクセス権をサポートしない。
【００１９】
スワップ・アウト処理の際に、アドレス・スペースによって所有され、共用範囲を（間接的に）マップする全てのＤＡＴテーブルは、オペレーティング・システムによって所有される共用テーブルにおいて対象を抹消した後に廃棄される。ローカル・アクセス権の場合には、スワップ・アウトは、プロセス関連ＤＡＴテーブルのこの情報を知り、プロセス関連ＤＡＴテーブルに送り出す前に情報を保存する。共有ＤＡＴテーブルは、オペレーティング・システムによって所有され、アドレス・スペースによって所有されない。したがって、共有ＤＡＴテーブルは、スワップ・アウトによって影響を受けない。スワップ・アウトのこの方法は、各アドレス・スペースによるページの使用が、ハードウエア参照ビットが関係する範囲では全ての他のスペースによる使用から区別できないという事実に関係する共用仮想記憶の問題に対処する。このことは、アドレス・スペースがそれらのＤＡＴテーブルを積極的に使用しているか否かを、オペレーティング・システムが判断できないので、アドレス・スペースが、ページを一度だけ参照してもよく、さらに、その関連ＤＡＴテーブルを使用し続けていてもよいことを意味する。ページは、他の変換パスを用いて他のスペースにより参照されてもよく、このことは、ページにつき１つのハードウエア参照ビットがあるだけであるので、オペレーティング・システムによって検出できない。この方法は、スワップ・アウトにこの望ましくない動作を制限することを可能にする。したがって、プロセスは、少しのＤＡＴテーブルを再構築するための１回限りのコストと引き換えに、スワップ・イン後にＤＡＴテーブルの必要性を示すことを強いられる。
【００２０】
制御ブロックが、システム管理共用リソースのルート・アンカー・ブロックに固定されるフレームは、既存の共通領域サポート、すなわちＵＩＣ更新およびスチーリングに関しては同様のページング・アルゴリズムの影響を受け、本発明において検討される必要のある特有の特徴を有しない。
【００２１】
本発明は、コンピュータ・オペレーティング・システムの一部としてインプリメントされることが好ましい。このようなソフトウエア・インプリメンテーションは、本発明の方法を実行するためにハードウエア・マシンにより実行可能である命令のプログラムの形でロジックを含む。命令のプログラムは、半導体、磁気、光学または他の記憶技術を用いて１つ以上のボリュームを有するプログラム記憶装置に組み入れてもよい。
【発明を実施するための最良の形態】
【００２２】
概要
図１は、本発明を組み込むコンピュータ・システム１００を示す。コンピュータ・システム１００は、別個の物理マシンか、このような物理マシンの別個の論理区画のいずれかを備えることができる。コンピュータ・システム１００は、ハードウエア層１０２およびソフトウエア層１０４を有する。ハードウエア層１０２は、１つ以上の中央演算処理装置（ＣＰＵ）、動的アドレス変換テーブル、主記憶、リモート記憶（例えば、ディスク・ドライバ）等を含むシステム１００のハードウエア要素を有する。これらのハードウエア要素は、本発明では従来のように動作し、したがって、図１には別個に示されていない。本発明は、特定のハードウエア・プラットフォームに制限されないが、好ましい実施例では、ハードウエア層１０２は、上述した非特許文献２に明記された６４ビット・アーキテクチャを有するＩＢＭ  ｚＳｅｒｉｅｓ（登録商標）サーバを含む。
【００２３】
ソフトウエア層１０４は、オペレーティング・システム１０６および１つ以上のユーザ・プロセス１０８を含む。さらに、本発明は、特定のソフトウエア・プラットフォームに制限されないが、好ましい実施例では、オペレーティング・システムは、上述した非特許文献１のような文献に記載された、ＩＢＭ  ｚ／ＯＳオペレーティング・システムのバージョンを含む。特に指示がなければ、以下における“システム”は、オペレーティング・システム１０６である。
【００２４】
図２によれば、仮想アドレス・スペース２０２は、各ユーザ・プロセス１０８に関連付けられ、プロセス１０８によって参照され、ゼロからアドレス・スペース・サイズより１小さい値にわたるアドレスの範囲を表している。各仮想アドレス・スペース２０２は、２ＧＢ（２31バイト）の１個のリージョン２０４か、合計２64バイトに対して２ＧＢ境界で配列される最大２33個の２ＧＢのリージョン２０４かのいずれかから成る。各リージョン２０４は、順に、１ＭＢ境界で配列された各々が１ＭＢ（２20バイト）の２０４８（２11）個のセグメント２０６からなり、各セグメント２０６は、順に、４ＫＢ境界で配列された各々が４ＫＢ（２12バイト）の２５６（２8 ）個のページ２０８から成る。
【００２５】
図３によれば、ハードウエア層１０２は、プロセス１０８により使用される仮想アドレス・スペース２０２の仮想アドレス３０４を主記憶３０８の実アドレス３０６に変換する動的アドレス変換（ＤＡＴ）ユニット３０２を有する。変換は、仮想アドレス・スペース２０２のページ２０８が、実記憶３０８の対応するページ３１０にマップされるようにページ・レベルで行われる。図４〜図６は、アドレス変換手順を更に詳細に示す。
【００２６】
まず、図４によれば、６４ビット仮想アドレス３０４は、ビット０〜ビット６３で構成される。ビット０が最上位ビット（ＭＳＢ）であり、ビット６３が最下位ビット（ＬＳＢ）である。アドレス３０４は、アドレスの最上位部分から最下位部分まで順に以下のように構成されているものと考えることができる。
【００２７】
１．３３ビットのリージョン・インデックス（ＲＸ）（ビット０〜ビット３２）４０２は、最大２64バイトの仮想アドレス・スペース２０２内の特定の２ＧＢのリージョン２０４を識別する。明らかなように、このリージョン・インデックス４０２は、さらに、１１ビットのリージョン第１インデックス（ＲＦＸ）４０４（ビット０〜ビット１０）、１１ビットのリージョン第２インデックス（ＲＳＸ）４０６（ビット１１〜ビット２１）および１１ビットのリージョン第３インデックス（ＲＴＸ）４０８（ビット２２〜ビット３２）に分けられる。
【００２８】
２．１１ビットのセグメント・インデックス（ＳＸ）４１０（ビット３３〜ビット４３）は、２ＧＢのリージョン２０４内の特定の１ＭＢのセグメント２０６を識別する。
【００２９】
３．８ビットのページ・インデックス（ＰＸ）４１２（ビット４４〜ビット５１）は、１ＭＢのセグメント２０６内の特定の４ＫＢのページ２０８を識別する。
【００３０】
４．１２ビットのバイト・インデックス（ＢＸ）４１４（ビット５２〜ビット６３）は、４ＫＢのページ２０８内の特定のバイトを識別する。
【００３１】
種々の仮想アドレス部分４０４〜４１４は、アドレス変換のときにそれらが示すテーブルのために、このように名付けられている。図５は、ＤＡＴユニット３０２のアドレス変換パイプライン５００を示し、図６は、結果として生成される実アドレス３０６を示す。工夫されたこれらの図によれば、アドレス変換プロセスは、以下のように処理される。
【００３２】
１．特定のアドレス・スペース２０２のために生成されるリージョン第１テーブル起点（ＲＦＴＯ）として知られるアドレス５０２は、リージョン第１テーブル（ＲＦＴ）５０４の実ベース・アドレスを指す。１１ビットのリージョン第１インデックス（ＲＦＸ）４０４は、ＲＦＴ５０４の特定のエントリをアクセスするためにベース・アドレス５０２（ＲＦＴＯ）に（テーブル・エントリ間の変位を乗算された後）オフセットとして付加される。リージョン第１テーブル・エントリ（ＲＦＴＥ）として知られるこのエントリは、（対応する１セットのリージョンが実記憶３０８に存在しないので）１にセットされた場合にエントリがアドレス変換に使用できない無効エントリであることを示す無効ビット（Ｉ）を含む。エントリが有効ならば、特定のリージョン第２テーブル（ＲＳＴ）５０８の実ベース・アドレスを指すリージョン第２テーブル起点（ＲＳＴＯ）として知られるアドレス５０６をも含む。
【００３３】
２．１１ビットのリージョン第２インデックス（ＲＳＸ）４０６は、ＲＳＴ５０８の特定のエントリをアクセスするためにベース・アドレス５０６（ＲＳＴＯ）に（テーブル・エントリ間の変位を乗算された後）オフセットとして付加される。リージョン第２テーブル・エントリ（ＲＳＴＥ）として知られるこのエントリは、（対応する１セットのリージョンが実記憶３０８に存在するので）エントリがアドレス変換のために使用できる有効エントリであるか否かを示す無効ビット（Ｉ）を含む。エントリが有効ならば、特定のリージョン第３テーブル（ＲＴＴ）５１２の実ベース・アドレスを指すリージョン第３テーブル起点（ＲＴＴＯ）として知られるアドレス５１０をも含む。
【００３４】
３．１１ビットのリージョン第３インデックス（ＲＴＸ）４０８は、ＲＴＴ５１２の特定のエントリをアクセスするために実ベース・アドレス５１０（ＲＴＴＯ）に（テーブル・エントリ間の変位を乗算された後）オフセットとして付加される。リージョン第３テーブル・エントリ（ＲＴＴＥ）として知られるこのエントリは、（対応するリージョンが実記憶３０８に存在するので）エントリがアドレス変換のために使用できる有効エントリであるか否かを示す無効ビット（Ｉ）を含む。エントリが有効ならば、特定のセグメント・テーブル（ＳＴ）５１６の実ベース・アドレスを指すセグメント・テーブル起点（ＳＴＯ）として知られるアドレス５１４をも含む。
【００３５】
４．１１ビットのセグメント・インデックス（ＳＸ）４１０は、ＳＴ５１６の特定のエントリをアクセスするためにベース・アドレス５１４（ＳＴＯ）に（テーブル・エントリ間の変位を乗算された後）オフセットとして付加される。セグメント・テーブル・エントリ（ＳＴＥ）として知られるこのエントリは、（対応するセグメントが実記憶３０８に存在するので）エントリがアドレス変換のために使用できる有効エントリであるか否かを示す無効ビット（Ｉ）、および（特定のページのＰビットが１がセットされなくても）１にセットされた場合に、書き込みアクセスがセグメントに行えないことを示す保護ビット（Ｐ）を含む。エントリが有効ならば、特定のページ・テーブル（ＰＴ）５２０の実ベース・アドレスを指すページ・テーブル起点（ＰＴＯ）として知られるアドレス５１８をも含む。
【００３６】
５．８ビットのページ・インデックス（ＰＸ）４１２は、ＰＴ５２０の特定のエントリをアクセスするために、このベース・アドレスに（テーブル・エントリ間の変位を乗算された後）オフセットとして付加される。ページ・テーブル・エントリ（ＰＴＥ）として知られるこのエントリは、（対応するページが実記憶３０８に存在するので）エントリがアドレス変換のために使用できる有効エントリであるか否かを示す無効ビット（Ｉ）、および（書き込みアクセスがセグメントに行うことができるならば）書き込みアクセスがページに行えるか否かを示す保護ビット（Ｐ）を含む。エントリが有効ならば、６４ビットの実アドレス３０６の最上位５２ビットを構成するページ・フレーム実アドレス（ＰＦＲＡ）５２２として知られるものを含む。右詰で１２個のゼロが埋め込まれると、実記憶３０８のページ３１０のベース・アドレスを表す。
【００３７】
６．最後に、図６によれば、ＰＦＲＡ５２２は、実アドレス３０６を構成するために１２ビットのバイト・インデックス（ＢＸ）４１４と連結される。
【００３８】
上述したｚ／Ａｒｃｈｉｔｅｃｔｕｒｅ刊行物に説明されているように、全てのＤＡＴテーブルは、特定のアドレス・スペースのために必ずしも使用される必要はない。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅが、各々が２ＧＢ（２31バイト）の最大２33個のリージョン２０４のアドレス・スペース２０２を許可しても、特定のアドレス・スペース２０２は、更に小さくなるように構成できる。したがって、アドレス・スペース２０２が、１個の２ＧＢのリージョン２０４から成るならば、アドレスのビット０〜ビット３２は、ゼロにセットされ、セグメント・テーブル５１６は、最高レベルＤＡＴテーブルとして使用される。同様に、アドレス・スペースのサイズが、２11個のリージョン２０４（２42バイト）以下ならば、アドレスのビット０〜ビット２１は、ゼロにセットされ、リージョン第３テーブル５１２は、最高レベルＤＡＴテーブルとして使用される。同様に、アドレス・スペースのサイズが、２22個のリージョン２０４（２53バイト）以下ならば、アドレスのビット０〜ビット１０は、ゼロにセットされ、リージョン第２テーブル５０８は、最高レベルＤＡＴテーブルとして使用される。仮想アドレス・スペース２０２が２22個よりも多いリージョン２０４を含む場合にのみ、リージョン第１テーブル５０４が必要とされる。
【００３９】
マシン・ハードウエアによって参照される最高レベル変換テーブルは、最高レベル・テーブルによって直接または間接に参照される全ての低レベル変換テーブルと共に、変換ハードウエアに“接続される（ａｔｔａｃｈｅｄ）”と言い得る。（ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは、最高レベル・テーブルは、上述したアーキテクチャ刊行物に記載されているように、接続アドレス・スペース制御要素（ＡＳＣＥ）によって指定されるときに接続される。）特定のアドレス変換のために使用される最高レベル・テーブルから最低レベル（ページ）テーブルへのアドレス参照の列は、“変換パス”として知られているものを構成する。
【００４０】
アドレス共用
この背景により、アドレス共用に関する本発明の概念を説明できる。種々のプロセス１０８の仮想アドレス・スペース２０２の大部分は、実記憶３０８の重なり部分にマップしないという意味で専用である。これに対して、仮想アドレス・スペースの共用部分は、実記憶３０８の共通部分にマップする。したがって、図７は、実記憶３０８の共通部分７０４にマップする共用部分７０２（ここでは“共用可能スペース”とも呼ばれる）を有する１対の仮想アドレス・スペース２０２を示す。
【００４１】
本発明によれば、インストール特定可能値ｓｈｒ＿ｓｉｚｅは、共用可能スペース７０２のサイズを定義するために与えられる。この説明のために、この値は、値ゼロを含みリージョン・サイズ（実施例では２ＧＢ）の倍数であると仮定する。値ゼロの場合は、新たな共用可能スペースは存在しない。この特別な場合とは別に、アドレス・スペース２０２内には３つの領域がある。共用可能スペース７０２は、１つの領域を構成し、高位アドレスを有する専用スペース７０６と低位アドレスを有する専用スペース７０８によって囲まれる。（ｚ／ＯＳでは、低位専用スペース７０８は、実際には、互換性のために従来のリリースされたものと同じレイアウトを有する２31−１バイト未満の範囲を含み、したがって、排他的に専用ではなく、それは、上述した共通領域を含む。２ＧＢ未満のこの特別な範囲は、本発明と密接な関係がないので、アドレス・スペース２０２は、３つの領域を有するとして扱われる。）システム初期化の際に、このｓｈｒ＿ｓｉｚｅ値は、３つの領域７０２，７０６，７０８の境界を計算するために使用される。各プロセス１０８は、システム・リソースおよびアドレス変換のコストを最小にするために、最初に、２つのレベルのＤＡＴ変換（上述したセグメント・テーブルおよびページ・テーブル）を有するアドレス・スペース２０２を割り当てられる。プロセス１０８は、更なる仮想記憶を得ることをインストールによって許可され、その場合に、最大３個の追加レベルのＤＡＴテーブルが、アドレス参照が行われる時点で要求できる。
【００４２】
図８は、アドレス共用を行うためにＤＡＴテーブルがどのように用いられるかを示す。図に示すように、アドレス・スペースＡおよびＢのそれぞれは、２つのアドレス・スペースによって共用される１つの低レベル・テーブル７５６の起点を指すエントリ７５４ａおよび７５４ｂを含む高レベル・テーブル７５２ａおよび７５２ｂを有する。したがって、高レベル・テーブル７５２ａおよび７５２ｂは、共用セグメント・テーブル５１６を指すエントリ７５４ａおよび７５４ｂを含むリージョン第３テーブル５１２でもよく、この場合には、共用セグメント・テーブル５１６に対応するリージョン２０４が、２つのアドレス・スペースＡおよびＢによって共用される。同様に、高レベル・テーブル７５２ａおよび７５２ｂは、共用ページ・テーブル５２０を指すエントリ７５４ａおよび７５４ｂを含むセグメント・テーブル５１６でもよく、その場合には、共用ページ・テーブル５２０に対応するセグメント２０６が、２つのアドレス・スペースＡおよびＢによって共用される。エントリ７５４ａおよび７５４ｂが、各テーブル７５２ａおよび７５２ｂ内の同じ位置に発生するか否かによって（そして同様に、更に高レベル・テーブルの全てのエントリが直接または間接にテーブル７５２ａおよび７５２ｂを参照して）、共用範囲７０４（図７）は、２つのアドレス・スペースＡおよびＢの仮想アドレスの同じ範囲に対応することができる場合もあり、または対応することができない場合もある。実施例では、しかしながら、共用アドレス範囲は、範囲を共用するアドレス・スペースの各々において、仮想アドレスの同じ数値範囲に対応するように示されている。図８は、２つの高レベル・テーブル７５２ａおよび７５２ｂのみを示すが、多くの高レベル・テーブルが、追加の仮想アドレス・スペース２０２に渡ってアドレス共用を行うために、１つの低レベル・テーブルを参照できる。さらに、図８は、共用低レベル・テーブル７５６を参照する高レベル・テーブル７５２ａおよび７５２ｂの１対のエントリ７５４ａおよび７５４ｂのみを示すが、共用範囲のサイズを大きくするため、または追加の共用範囲を作成するために、高レベル・テーブル７５２ａおよび７５２ｂに複数対のエントリ（各対は、異なる共用低レベル・テーブル７５６を参照する）を有することもできる。
【００４３】
図９は、複数個のアドレス・スペースの中で、共用可能スペース７０２のサイズ（ｓｈｒ＿ｓｉｚｅ）が、リージョン第３テーブル５１２の幅（実施例では２42バイト）以上である１つのアドレス・スペース２０２のレイアウトを示す。この環境における最低位の共用可能アドレス（ｌｏｗ＿ｓｈｒ）は、リージョン第３テーブル５１２の幅の半分（すなわち、テーブル幅２42バイトに対して２41バイト）であり、最高位の共用可能アドレスは、ｌｏｗ＿ｓｈｒ＋ｓｈｒ＿ｓｉｚｅ−１である。この場合、範囲０〜２42−１バイトのリージョン第３テーブル５１２の半分は、専用スペースをマップし、他の半分は、共用可能スペースをマップする。ｓｈｒ＿ｓｉｚｅの値に依存して、リージョン第２テーブル５０８またはリージョン第１テーブル５０４は、共用可能スペース７０２のハイ・エンドをマップするために必要とされる場合がある。
【００４４】
図９に示すマッピングは、ユーザ・プロセスが、非共用スペースのために２41バイト以下を必要とし、共用範囲が２42バイト未満に収まるときには、“スモール”ユーザ・プロセスが、１つのリージョン第３テーブル内に収まることを可能にする。このようなユーザ・プロセスが、非共用スペースのために２41バイトより多く必要とするとき、または共用スペースが、割り当てられた共用範囲のために２41バイトより多く必要とするときのみ、このようなユーザ・プロセスは、もう１つのリージョン第３テーブルを必要とする。
【００４５】
図１０は、複数個のアドレス・スペースの中で、共用可能スペース７０２のサイズ（ｓｈｒ＿ｓｉｚｅ）が、リージョン第３テーブル５１２の幅より小さい１つのアドレス・スペース２０２のレイアウトを示す。この環境における最低位の共用可能アドレス（ｌｏｗ＿ｓｈｒ）は、リージョン第３テーブル５１２の幅からｓｈｒ＿ｓｉｚｅの半分を引いたもの（すなわち、２42−ｓｈｒ＿ｓｉｚｅ／２）であり、最高位の共用可能アドレスは、リージョン第３テーブル５１２の幅にｓｈｒ＿ｓｉｚｅの半分から１を引いたものを加えたもの（すなわち、２42＋ｓｈｒ＿ｓｉｚｅ／２−１）である。（ｓｈｒ＿ｓｉｚｅ／２が、リージョン・サイズの整数倍でなければ、丸め（ｒｏｕｎｄｉｎｇ）が、リージョン境界を維持するために行われる。）この場合、共用可能スペース７０２の半分は、リージョン第３テーブル５１２内に収まり、リージョン第３テーブル５１２によってマップされる専用スペース７０８は、リージョン第３テーブルの幅の半分を超える。全ての共用可能スペース７０２は、この場合、１つのリージョン第２テーブル５０８によって差し渡される。この方法は、ｓｈｒ＿ｓｉｚｅが、あるインストール特定可能しきい値未満であるときには、全ての共用可能スペース７０２が、リージョン第３テーブル５１２のハイ・エンドによってマップされることを可能にするように容易に変更できる。
【００４６】
データ構造
図１１は、好ましい実施例における編成のための共用ソート済みテーブル（ＳＳＴ）と呼ばれるテーブル１０００を示す。これは、システム・レベル・テーブルであり、オペレーティング・システム１０６内に、全ての割り当てられた共用メモリ範囲７０２を追跡するための１つのこのような共用ソート済みテーブル１０００があることを意味する。このテーブル１０００の各エントリ１００２は、制御ブロック１００４によって概念的に表される別個でかつ異なった共用範囲７０２を表す。各範囲７０２は、関連付けられた起点１００６、サイズ１００８および属性１０１０を有し、そこでは、属性は、特にローカル対グローバルのアクセス・スコープへの指示を含むことができる。好ましい実施例では、エントリ１００２は、特定の仮想アドレスのためにテーブル１０００を“スキャン”するときに二分検索が使用できるように、対応する共用範囲７０２のために昇順仮想アドレスによってソートされる。しかしながら、ソートされた順序付け以外に共用テーブル１０００をインプリメントする他の方法が可能である。
【００４７】
図１２は、図１１に示すエンティティおよび多くの他のエンティティを示す。特に、図１２は、共用範囲７０２に関連した全てのシステム管理制御情報のためのシステム・レベル・ルート・アンカー・ブロック１１００を示す。このルート・アンカー・ブロック１１００には、共用ソート済みテーブル１０００へのポインタ１１０２と、低レベル共用ＤＡＴテーブル１１０８へのポインタを含むトップ共用ＤＡＴテーブル１１０６の実記憶位置へのポインタ１１０４とが含まれる。このトップ共用ＤＡＴテーブル１１０６は、低レベル共用ＤＡＴテーブル１１０８がどこに配置されるかを追跡するために記憶管理によって排他的に使用され、リージョン・テーブルと同じフォーマットを有していても、ハードウエア変換装置には接続されない。接続される低レベル・システム関連ＤＡＴテーブル１１０８は、まさに、低レベル・システム関連ＤＡＴテーブル１１０８を通るアクティブ・アドレッシング・パスを有する１つ以上のアドレス・スペースで共用されるものであり、したがって、低レベル・システム関連ＤＡＴテーブル１１０８は、好ましい実施例では、ページ・テーブルおよびセグメント・テーブルに限られる。ルート・アンカー・ブロック１１００は、また、フリー・スペース・キュー記述子１１１０を含む。好ましい実施例では、記述子１１１０は、昇順仮想アドレス順序でソートされるフリー・スペース・ブロック１１１４のキュー１１１２を指し、したがって、フリー・スペースの検索は、範囲７０２を常時捜し出す。範囲７０２は、必要とされる新たな共用範囲７０２を保持するのに十分な第１のフリー・ブロック１１１４としてアドレス可能度のための最小数のレベルのＤＡＴテーブルを必要とする。
【００４８】
図１３は、一般的なアドレス・スペース２０２のルート・アンカー・ブロック１２００を示す。このルート・アンカー・ブロック１２００には、プロセス１０８のトップＤＡＴテーブル１２０６へのポインタ１２０４が含まれる。トップＤＡＴテーブル１２０６は、プロセス１０８の低レベルＤＡＴテーブル１２０８へのポインタを含み、アドレス・スペース２０２がスワップインされるときにハードウエア変換装置３０２に接続される。このルート・アンカー・ブロック１２００は、また、アドレス・スペースが共用範囲に接続されるようになると、シャドー共用ソート済みテーブル１２１０へのポインタ１２０２を含む。シャドー共用ソート済みテーブル１２１０は、アドレス・スペース２０２へ接続される共用範囲７０２を表すシステム・ワイド共用ソート済みテーブル１０００のエントリのサブセットを含む。シャドー共用ソート済みテーブル１２１０の各エントリは、システム・ワイド共用ソート済みテーブル１０００と同じ情報を含む。一例を示すと、この情報は、他のブロック１２１４へのポインタ１２１２であり、このブロック１２１４のアドレスは、また、共用ソート済みテーブル１０００に存在する。一般に、１つのアドレス・スペース２０２は、全ての割り当てられた共用範囲７０２への接続を妨げられないが、全ての割り当てられた共用範囲７０２のセットのうちの適切なサブセットに接続される。ルート・アンカー・ブロック１２００は、一般に、フレーム情報キュー、カウンタ、状態情報等のアンカーのような他の記憶管理情報を含む。
【００４９】
図１４は、２つのプロセス１０８ａ，１０８ｂ（プロセスＡおよびＢ）のルート・アンカー・ブロック１２００ａ，１２００ｂおよびシステム・ルート・アンカー・ブロック１１００を示す。プロセス１０８ａ，１０８ｂのトップＤＡＴテーブル１２０６ａ，１２０６ｂのレベルが互いに異なっていてもよく、システム関連トップＤＡＴテーブル１１０６のレベルと異なっていてもよいことに注意すべきである。図１４は、プロセスＡがトップＤＡＴテーブル１２０６ａのリージョン第３テーブル５１２を有し、プロセスＢがトップＤＡＴテーブル１２０６ｂのリージョン第２テーブル５０８を有し、システム関連トップ共用ＤＡＴテーブル１１０６が同様にリージョン第３テーブル５１２である場合に適用できるであろう。共用セグメント・テーブル５１６は、リージョン・レベル共用が存在することを示す。リージョン・レベル共用を用いる１つの共用範囲７０２が、完全なアドレス可能度を与えるために１つ以上のこのような共用セグメント・テーブル５１６を必要とすることに注意すべきである。
【００５０】
共用範囲７０２が作成されると、記憶管理は、必要な連続するスペースを割り当て、範囲にアクセスするために必要なＤＡＴテーブルのレベルの数を最小にするために下位アドレスに優先を与える。上述したように、共用範囲７０２は、図１２のフリー・スペース制御１１１０〜１１１４を使用し、好ましい実施例では、必要とされる範囲を保持するのに十分な第１フリー・ブロック１１１４を単に選択することによってＤＡＴ変換レベルを最小化するこの特性を自動的に満たす。インストール・ポリシーは、アドレス・スペース２０２が、共用範囲７０２を作成することを許可されるか否かを判断するために呼び出される。範囲７０２の適切な情報は保存され、図１２の共用ソート済みテーブル１１００は更新される。共用可能範囲７０２を作成する操作と、範囲をプロセスに接続する操作は、この実施例では別個であるが、インプリメンテーションによってこれらを結合できることに注意すべきである。したがって、実施例では、共用範囲７０２は、システム関連共用ソート済みテーブル１０００には現れるが、共用範囲７０２の作成後にプロセス１０８のシャドー共用ソート済みテーブル１２１０には現れない。
【００５１】
共用範囲７０２が接続されると、記憶管理は、範囲７０２が接続されるアドレス・スペース２０２のシャドー共用ソート済みテーブル１２１０（図１３）にエントリ１２１２を作成し、共用範囲をアクセスして対象参加プログラムとしてこのスペースを適切に追跡する。このアドレス・スペース２０２に設定するアクセス権（読み取り／書き込み、読み取り専用、または隠し）は、接続インターフェース（すなわち、範囲をスペースと関連付けるために使用されるプログラミング・インターフェース）で指定される。作成インターフェース（すなわち、共用範囲を作成するために使用されるプログラミング・インターフェース）については、インストール・ポリシーは、アドレス・スペース２０２が、指定されたアクセス権で共用範囲７０２を接続することを許可されるか否かを判断するために呼び出される。接続要求が処理されるときには、新たなＤＡＴテーブルも作られないし、共用範囲７０２に対するアドレス可能度も設定されない。これらは、ＤＡＴ例外を解決するために必要とされるとき、または共用範囲のページに影響を与えるシステム・インターフェースをサポートするために必要とされるときにインスタンス化される。
【００５２】
共用範囲７０２がアドレス・スペース２０２に接続されると、関連付けられたプロセス１０８は、アドレス・スペースの接続に対して有効なアクセス権を条件として共用範囲７０２内のバイトを参照することを許可される。アドレス・スペース２０２を所有するプロセス１０８は、また、共用範囲７０２のページの状態を変えるために、権限制御およびインストール・ポリシーを条件として、オペレーティング・システム・サービスを呼び出すことができる。１つのこのようなサービスは、プロセス１０８に対して有効なアクセス権を変更するであろう。
【００５３】
変換例外解決
次に、変換例外を生じるバイトに対して変換例外を解決するためのＤＡＴ構造を構築するプロセスについて説明する。以下の説明において、変換例外を生じるバイト・アドレスは、変換例外アドレス（ＴＥＡ）と呼ばれる。仮想バイト・アドレスは、それがプログラムによって参照されるとき、無効ビットが、そのアドレスの変換パス内のＤＡＴテーブル・エントリ（例えば、ページ・テーブル・エントリまたはセグメント・テーブル・エントリ）にセットされるならば、変換例外を生じる。しかしながら、システム・サービスが呼び出されて共用範囲に作用する場合は、同じ汎用ステップも適用される。変換例外解決説明後に、アクセス権を変更することに関連付けられた操作が説明され、その際には、アドレス変換構造を構築するプロセスについて詳しく述べる必要はないであろう。
【００５４】
図１５によれば、プロセス１０８が、システム・サービスにより共用範囲７０２を参照し、または共用範囲７０２に作用すると、オペレーティング・システム１０６は、まず、プロセス１０８が、操作のための必要なアクセス権と接続されることを保証する（ステップ１４０２）。このことは、アドレス・スペース２０２のシャドー共用ソート済みテーブル１２１０（図１３）の使用によって検証される。好ましい実施例では、このことは、エントリ１２１２の二分検索によって行われる。一例として、共用可能スペース７０２の変換例外について、システムは、まず、参照されたアドレスが、スペースの最下位に割り当てられた共用範囲起点（シャドー共用ソート済みテーブル１２１０の第１エントリ１２１２を介して得られた情報）より上位であり、スペースの最高位に割り当てられた共用範囲アドレス（シャドー共用ソート済みテーブル１２１０の最上位の使用中エントリ１２１２を介して得られた情報）より下位であることを検証する。
【００５５】
次のチェックは、アドレスが、最上位の使用中インデックスの半分に等しいインデックスを有するエントリ等によって与えられる範囲７０２の起点より上位か否かを判断する。計算が１つのエントリに収斂すると、アドレスがエントリ１２１２によって与えられる範囲７０２内に存在するか否かを調べるために、１つのチェックが行われる。全てのエントリ１２１２の逐次検索等を含み、他の方法が可能である。
【００５６】
参照が正当であることが確かめられると、処理は、ステップ１４０４を続行し、ステップ１４０４で、上位拡張（Ｅｘｔｅｎｄ  Ｕｐｗａｒｄ）機能（図１６）がプロセス１０８のために呼び出される。このことは、以下の概要の後に説明する。話を戻すと、システム１０６は、ハードウエア変換装置３０２の新たなトップＤＡＴテーブル１２０６の実アドレスを保存する（ステップ１４０６）。処理は、リージョン・レベル解決（図１７）を続行する。
【００５７】
変換例外解決のプロセスは、図１４〜図２０に示される一連のステップを続行する。システムは、変換例外アドレスが、スペースの現行トップＤＡＴテーブル１２０６によって記述される範囲内に存在するか否かを判断する。ルート・アンカー・ブロック１２００（図１３）に維持されるこのテーブル１２０６のレベルは、このことを完全に判断する。ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅでは、ハードウエアは、アドレスが変換され、その状態のための固有の割り込みコードを生成するときにこの判断を行う。この最適化は、本発明の一部ではない。アドレスが、システム・サービスの呼び出しにより暗黙的に参照されると、オペレーティング・システム１０６は、トップＤＡＴテーブル１２０６のレベル（状態情報（図１３の１２１６）に保持されている）を調べることによってこの判断を行う。アドレスがトップＤＡＴテーブル１２０６によりマップされないと、システムは、変換例外アドレスが、該当する範囲内となるまで、１つ以上の高レベル・トップＤＡＴテーブル１２０６を構築する。このことは、上位拡張処理として以下に説明する。このことは、アドレスが共用可能スペース内に存在するという事実には依存しない。それは、参照の実行可能性にのみ依存する。上位拡張処理が、共用ＤＡＴテーブルの状態を追跡するためにプロセス所有ＤＡＴテーブルおよびシステム関連テーブルの両方に使用されることに注意すべきである。
【００５８】
図１６は、上位拡張処理を示す。この図によれば、システムは、まず、トップＤＡＴテーブル１２０６のレベル（図１３の状態情報１２１６に保持されている）が、セグメント・テーブル５１６のためのものであるか否かをチェックする（ステップ１５０２）。上位拡張処理が、システム関連ルート・アンカー・ブロック１１００に使用され（後に説明する）、トップＤＡＴテーブル１１０６または１２０６が、プロセス１０８のためのみのセグメント・テーブル５１６であることに注意すべきである。システム関連ルート・アンカー・ブロック１１００は、常時、リージョン・テーブル５１２，５０８または５０４のフォームと関連付けられる。アドレス・スペース２０２のみが、セグメント・テーブル５１６を所有すると、システムは、リージョン第３テーブル５１２を構築し（ステップ１５０４）、プロセス１０８のルート・アンカー・ブロック１２００の１２０４にその実アドレスを保存する。この処理の役割は、リージョン第３テーブル５１２のエントリ０にセグメント・テーブル５１６の実アドレスを保存することであり、そのエントリを有効とマークすることである（ステップ１５０６）。エントリ０の使用は、アドレス範囲０〜２31−１が“専用”であり、常時存在しているという互換前提事項から生じる。実際には、上述したように、アドレス・スペース２０２は、最初に、仮想アドレス０〜２31−１をマップするためにセグメント・テーブル５１６のみを所有する。
【００５９】
上位拡張処理は、次に、変換例外アドレス（ＴＥＡ）がトップＤＡＴテーブルによってマップされるか否かをチェックする共通ステップ１５０８に続く。トップＤＡＴテーブルが存在せず（システム関連ルート・アンカー・ブロックに対してのみ可能性がある）、またはＴＥＡをマップすることが充分でない場合は、システムは、図１６のステップ１５１０に進む。ステップ１５１０は、次に高レベルのリージョン・テーブル５０４，５０８または５１２を構築し、またはトップＤＡＴテーブルが存在しない場合は、リージョン第３テーブル５１２を構築する。このリージョン第３テーブル５１２は、ＴＥＡと関連付けられ、リージョン第３境界に丸められ、ルート・アンカー・ブロック（図１３）の状態情報１２１６に記録される。トップＤＡＴテーブルがすでに存在する場合は、この処理（ステップ１５１２）の役割は、新たなリージョン・テーブルの最適なエントリに現行トップＤＡＴテーブルの実アドレスを保存することである。リージョン第１、第２または第３境界に丸められた現行起点であるアドレスに関連付けられたエントリは、有効とマークされる。処理は、上述したステップ１５０８を続行する。ＴＥＡがトップＤＡＴテーブルによってマップされると、処理は、図１７に示されるように続行する。
【００６０】
残りのステップを詳細に説明する前に、以下のことを高い視点で見ることは有用である。処理が、更に高レベルのＤＡＴテーブルが必要とされないことを保証したので、システムは、ハードウエアの変換パスを更に低いレベルにする。トップ・レベルがレベル１（リージョン第１テーブル５０４）であるとき、システムは、レベル２ＤＡＴテーブル（リージョン第２テーブル４０８）を構築し、次に変換例外アドレスのためのレベル３ＤＡＴテーブル（リージョン第３テーブル５１２）を構築する。あるいはまた、トップ・レベルは、単にレベル２またはレベル３であるかもしれない。その場合、更に小さいレベルの変換テーブルが構築される。これらの新たなテーブルの実アドレスは、直近の高レベル・テーブルの適切なエントリに保存され、これらのエントリは、有効とマークされる。
【００６１】
リージョン第３テーブル５１２が、ＤＡＴ構造に取り込まれると、共用の範囲が判断される。共用がリージョン・レベルであると、システムは、システム共用セグメント・テーブル５１６を検出し、または構築してプロセスの変換パスに挿入する。このセグメント・テーブル５１６は、プロセス１０８により所有されず、変換に用いられる。その後、システム所有共用ページ・テーブル５２０は、システム所有セグメント・テーブル・エントリに挿入される。共用がセグメント・レベルであると、システムは、プロセス所有セグメント・テーブル５１６の構築および挿入に進む。その後、システム共用ページ・テーブル５２０は、プロセス所有変換パスに挿入される。
【００６２】
アドレスが、トップＤＡＴテーブルによって記述される範囲内になると、処理は、図１７に示すように進む。ループが、ＤＡＴ下位変換をＴＥＡまで拡張するために呼び出される。ループをセットアップするために、ステップ１６０２は、プロセス・ルート・アンカー・ブロック１２００からトップＤＡＴテーブルの現行レベル（状態情報１２１６に保持されている）を取り出し、現行ＤＡＴテーブルの起点の実アドレスをセットアップする。ステップ１６０４は、ＴＥＡのために現行レベルＤＡＴテーブル内のエントリの実アドレスを計算し、この計算は、そのレベルに関連付けられたアドレス・ビットを受け取り、それらを現行レベルＤＡＴテーブルのインデックスとして使用することによって行われる。エントリ・アドレスが分かると、エントリが既に有効であるか否かを調べるために、ステップ１６０６でチェックが行われる。
【００６３】
ステップ１６０６が、エントリが有効であることを判断すると、処理はステップ１６０８およびステップ１６１０で続行する。ステップ１６０８は、レベルを次に低いレベルに更新することによってループの次の反復に単に備える。ステップ１６１０は、ステップ１６０６において有効であることが分かったエントリからフェッチすることによって新たな現行ＤＡＴテーブルの起点の実アドレスを設定する。この時、セグメント・テーブルのレベルにあると、ステップ１６１２は、図１８に処理を導く。そうでなければ、前述したステップ１６０４でループを続行する。
【００６４】
ステップ１６０６のテストが、エントリが有効でないことを示すと、処理は、ステップ１６１４に進む。ステップ１６１４で、テストは、現行レベルがリージョン第１テーブル５０４のためのものであるか、またはリージョン第２テーブル５０８のためのものであるかを判断するために行われる。そうであれば、ステップ１６１６は、次に低いレベルのリージョン・テーブルを構築するために呼び出され、現行エントリに実アドレスを保存し、現行エントリを有効とマークする。ステップ１６１６は、前述したステップ１６０８に続く。ステップ１６１４のテストが偽であれば、リージョン第３テーブル５１２を扱い、ステップ１６１８に進む。ステップ１６１８は、共用がリージョン・レベルであるか、またはセグメント・レベルであるかを判断する。共用レベル情報は、範囲記述ブロック属性（図１１の１０１０）に保持される。
【００６５】
ステップ１６１８が、共用がリージョン・レベルであることを認知すると、ステップ１６２０は、次に図１９に示すＤＡＴテーブル作成機能を呼び出す。これは、次にステップ１６２２に続く。ステップ１６２２は、プロセス１０８のリージョン第３テーブル・エントリにシステム共用セグメント・テーブル５１６の実アドレスを保存し（これは、ＴＥＡのためのエントリのループ現行実アドレスによって与えられる）、このリージョン第３テーブル・エントリを有効とマークする。このシステム共用セグメント・テーブル５１６が存在することを、ＤＡＴテーブル作成が保証し、既に存在しないならばそれを構築することに注意すべきである。処理は、前述したステップ１６０８で続行する。
【００６６】
ステップ１６１８が、共用がセグメント・レベルであることを認知すると、処理は、ステップ１６２４で続行する。ステップ１６２４は、プロセス所有セグメント・テーブル５１６を得て、フォーマットする。このテーブルの実アドレスは、エントリを有効とマークして現行リージョン第３テーブル・エントリに保存される。処理は、前述したステップ１６０８で続行する。
【００６７】
図１８のセグメント障害解決は、セグメント・テーブル５１６のレベルに達する場合に図１７の前半のループから処理を続行する。まず、ステップ１７０２は、ＴＥＡのためにセグメント・テーブル・エントリの実アドレスを計算する。次に、ステップ１７０４は、セグメント２０６が有効か否かを判断する。セグメント２０６が有効であれば、処理は、ページ・レベルで続行する。新たなページ・レベル制御またはページ・レベル状態がないので、ページ・レベル処理は、本発明と密接な関係がない。次に説明する処理は、ページ・テーブル・エントリに正しい状態がセットされることを保証する（グローバル変更アクセスおよびセグメント・レベル共用に関係があり、そうでなければ、ページ・テーブル・エントリは、共用状態を追跡しない）。
【００６８】
ステップ１７０４が、セグメントが無効であることを認知すると、ステップ１７０６は、共用がリージョン・レベルであるか、またはセグメント・レベルであるかを判断する。この情報は、属性のための範囲記述ブロック（図１１の１０１０）に保持される。
【００６９】
ステップ１７０６が、共用がリージョン・レベルであることを認知すると、処理は、ステップ１７０８で続行し、ステップ１７０８は、図２０に示すページ・テーブル構築（Ｂｕｉｄ  ＰＧＴ）機能を呼び出す。その後ステップ１７１０に続き、ステップ１７１０は、セグメント・テーブル・エントリに、ページ・テーブル構築によって作成されるページ・テーブル５２０の実アドレスを保存し、エントリを有効とマークする。この場合、共用がリージョン・レベルであるので、セグメント・テーブル・エントリがシステム所有共用セグメント・テーブル５１６内にあることに注意すべきである。リージョン・レベル共用の場合を続けると、処理は、ステップ１７１４を続行する。ステップ１７１４は、処理がページ・レベルで続行することを判断する。ページ・レベルは、前述したように本発明とは密接な関係がない。
【００７０】
ステップ１７０６が、共用がセグメント・レベルであることを認知すると、処理は、ステップ１７１６で続行し、図１９に示すＤＡＴテーブル作成機能を呼び出す。次に、ステップ１７１８は、共用システム・セグメント・テーブル・エントリの実アドレスを計算する（ＤＡＴテーブル作成は、セグメント・テーブル５１６が存在することを保証し、既に存在しないならばそれを構築する）。この後、ステップ１７２０に続き、ステップ１７２０は、共用システム・セグメント２０６が有効とマークされるか否かを判断する。
【００７１】
ステップ１７２０が、このセグメントが有効であることを認知すると、処理は、ステップ１７２２を続行し、有効とマークされるプロセス・セグメント・テーブル・エントリにシステム共用ページ・テーブル５２０の実アドレスを保存する。最後に、処理は、前述したように本発明とは密接な関係がないページ・レベル処理を続行する。ステップ１７２０が、共用システム・セグメント２０６が有効でないことを認知すると、追加の（今説明した）ステップ１７２２が、このセグメント・レベル共用フローのステップ１７１４の後に続くということを除き、処理は、前述したステップ１７０８を続行する。
【００７２】
図１９は、図１７のステップ１６２０および図１８のステップ１７１６で以前に呼び出されたＤＡＴテーブル作成機能を説明する。ＤＡＴテーブル作成の目的は、システム共用セグメント・テーブル５１６およびシステム共用ページ・テーブル５２０の状態を追跡するために、必要な非接続ＤＡＴテーブルを構築することにある。非接続とは、ハードウエア変換装置３０２が、これらのテーブルを見い出せない性質を言う（オペレーティング・システムは、前述したようにシステム・ルート・アンカー・ブロック１１００によりこれらのテーブルを配置する）。セグメント・テーブル５１６は、入力ＴＥＡのために完成時に存在する。これらの後者のテーブルは、図１７のステップ１６２２および図１８のステップ１７２２で説明したように、明示的または暗黙的（暗黙的とは、ページの状態を更新するためにシステム・サービスを使用することを言う）に参照が行われるときに、共用範囲７０２に接続されるプロセス１０８の変換パスに挿入される。
【００７３】
図１９の処理は、図１６で説明した上位拡張機能の呼び出しであるステップ１８０２から開始する。処理は、ステップ１８０４を続行し、ステップ１８０４は、現行ＤＡＴテーブルとしてのトップＤＡＴテーブルの起点の実アドレスと共に、ループに備えてシステム・ルート・アンカー・ブロック１１００からシステム・トップＤＡＴテーブルの現行レベル（図１２の状態情報１１１６に保持されている）を取り出す。ループの目的は、ＴＥＡに対して共用システムＤＡＴテーブルを下位拡張することにある。ループ内で、ステップ１８０６は、ＴＥＡをマップする現行ＤＡＴテーブルのエントリの実アドレスを計算し、この計算は、そのレベルに関連付けられたアドレス・ビットを受け取り、それらを現行レベルＤＡＴテーブルのインデックスとして使用することによって行われる。次に、ステップ１８０８は、このエントリが有効か否かを判断する。
【００７４】
ステップ１８０８が、エントリが有効であることを認知すると、処理は、ステップ１８１０で続行し、次にステップ１８１２で続行する。ステップ１８１０は、レベルを次に低いレベルに設定することによってループの次の反復に単に備える。ステップ１８１２は、有効であると認知されたエントリからフェッチすることによって新たな現行ＤＡＴテーブルの起点の実アドレスを設定する。この時、セグメント・テーブルのレベルにあると、ステップ１８１４は、呼び出し元にリターンを生じさせる。そうでなければ、前述したようにステップ１８０６でループを続行する。
【００７５】
ステップ１８０８におけるテストが、エントリが有効でないことを示すと、処理は、ステップ１８１６に進む。ステップ１８１６では、テストは、現行レベルがリージョン第１テーブル５０４であるか、またはリージョン第２テーブル５０８であるかを判断するために行われる。この情報は、システム・ルート・アンカー・ブロック属性（図１２の１１１６）に保持される。これが真であると、ステップ１８１８は、次に低いレベルのリージョン・テーブルを構築し、現行エントリにその実アドレスを保存し、現行エントリを有効とマークするために呼び出される。ステップ１８１８は、前述したステップ１８１０に続く。ステップ１８１６のテストが偽であると、リージョン第３テーブル５１２と関わり、ステップ１８２０に進む。ステップ１８２０は、システム所有セグメント・テーブル５１６を得て、システム所有セグメント・テーブル５１６をフォーマットする。このテーブルの実アドレスは、エントリを有効とマークして現行リージョン第３テーブル・エントリに保存される。この時点で、処理は完了し、呼び出し元にリターンが行われる。
【００７６】
図２０は、図１８のステップ１７０８で以前に呼び出されたページ・テーブル構築機能を説明する。ページ・テーブル構築機能の目的は、ページ・テーブル５２０を構築することにある。テーブルの実アドレスは、さらにセグメント・テーブル・エントリに挿入される。ページ・テーブルは、共用がリージョン・レベルまたはセグメント・レベルである（決してページ・レベルではない）ので、常に共用のエンティティであるが、対応するセグメント・テーブル・エントリは、共用がリージョン・レベルであるか、またはセグメント・レベルであるかにより、システム関連またはプロセス関連のセグメント・テーブル内にそれぞれ存在する。
【００７７】
ページ・テーブル構築機能は、ページ・テーブル５２０に主記憶を割り当てるステップ１９０２、および関連するアーキテクチャの仕様に従ってページ・テーブル５２０内のエントリをフォーマットするステップ１９０４から開始する。次に、ステップ１９０６は、共用範囲がグローバル変更アクセス制御で作成されたか否かを判断する。この情報は、図１１の共用範囲記述ブロック属性１０１０に保持される。この場合、隠し属性は、ステップ１９０８においてセグメント・テーブル・エントリから各ページ・テーブル・エントリにコピーされる（隠し属性は、前もって変更アクセス要求によってセットされている）。全ての場合において、処理は、範囲がリージョン・レベルで共用されるか、またはセグメント・レベルで共用されるかを判断するステップ１９１０を続行する。後者の場合には、ステップ１９１２は、セグメント・テーブル・エントリから各ページ・テーブル・エントリに保護ビットをコピーするために呼び出される。更なる処理は、その機能には必要とされず、制御は、呼び出し元に戻される。
【００７８】
変更アクセス処理
サポートされる第２の主要な機能は、ローカル範囲およびグローバル範囲の両方に対する変更アクセスである。この処理は、図２１、図２２、図２３および図２４に示され、プロセス要求が検証されたポイント、すなわち、プロセス１０８が、要求された範囲に適切に接続されるポイントから開始する。特に、共用範囲記述ブロック（図１１の１００４）は、共用ソート済みテーブル１０００の“検索”後に配置されている。この検証活動は、変換例外解決について以前に説明したものと同じである。問題とされる変更アクセス処理は、変更できる最も小さい細分度である１つのセグメント２０６を想定する。その結果、ループは、複数のセグメント２０６が影響を受ける場合に適切であろう。このことは、問題の本質に影響を与えない。セグメント・レベル共用をサポートする共用範囲７０２に対する変更アクセスの操作が、最初に与えられ、この後に、リージョン・レベル共用をサポートする共用範囲７０２に対する変更アクセスの操作が続く。
【００７９】
セグメント・レベル共用をサポートする共用範囲７０２に対する変更アクセス要求に対して、この処理の目的は、ＤＡＴに好ましい動作をさせ、またはセグメント障害処理に正しい状態を作成させる最も経済的な場所に新たな状態（隠し状態、読み取り専用状態、または読み取り／書き込み状態）を保存することにある。
【００８０】
ローカル変更アクセス・スコープ・メモリ・オブジェクトは、プロセス関連セグメント・テーブル・エントリによって常時制御され（隠しセグメントは、無効のままであり、保護ビットは、セグメントが読み取り専用状態であるかまたは読み取り／書き込み状態であるかを表す）、決してページ・テーブル・エントリ・レベル制御を使用しない。
【００８１】
グローバル変更アクセス・スコープ・メモリ・オブジェクトは、プロセス所有セグメント・テーブル・エントリおよび対応するシステム関連セグメント・テーブル・エントリについては、幾つかの可能状態のうちの１つにすることができる。プロセス関連セグメント・テーブル・エントリおよびシステム関連セグメント・テーブル・エントリは、両方とも有効にすることができ、この場合、ターゲット変更アクセス状態は、共用ページ・テーブル・エントリに保存される（システム関連セグメント・テーブル・エントリに維持される保護状態を除く）。次に、プロセス関連セグメント・テーブル・エントリを無効にして、システム関連セグメント・テーブル・エントリを有効にすることができ、この場合、ターゲット変更アクセス状態は、共用ページ・テーブル・エントリに保存される（同様に、システム関連セグメント・テーブル・エントリに維持される保護状態を除く）。最後に、プロセス関連セグメント・テーブル・エントリおよびシステム関連セグメント・テーブル・エントリの両方を無効にすることができ、この場合、変更アクセス状態は、システム関連セグメント・テーブル・エントリ（これは無効のままである）に保存される。
【００８２】
第２のケースは、最初にプロセス関連セグメント・テーブルを用いて、または用いることなく生ずる。プロセス関連セグメント・テーブルが最初に存在しないと、プロセス関連セグメント・テーブルは、全く必要とされないので、作成されない。プロセス関連セグメント・テーブルがエントリに存在すると、共用ページ・テーブルの実アドレスは、プロセス・セグメント・テーブル・エントリに保存される。
【００８３】
第３のケースは、プロセスまたはシステム関連のセグメント・テーブルを用いて、または用いることなく生ずる。システム関連セグメント・テーブルは、この場合には常時構築されるが、ページ・テーブルは、セグメントのためには全く構築されない。プロセス関連セグメント・テーブルが最初に存在しないと、この処理の結果として、それは全く構築されない。プロセス関連セグメント・テーブルがエントリに存在すると、それは、そのままである。
【００８４】
グローバル変更アクセス・スコープ・メモリ・オブジェクトのシステム関連セグメント・テーブル・エントリに保護状態を保存できる間、隠し状態は、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅのソフトウエアに利用できるビットが無いので、有効なシステム関連セグメント・テーブル・エントリに保存できないことに注意すべきである。したがって、隠し状態は、ページ・テーブル・エントリに維持されるだけである。
【００８５】
図２１および図２２によれば、セグメント・レベル共用の変更アクセス処理は、ステップ２００２から開始する。ステップ２００２は、影響を受けたセグメント２０６のプロセス所有セグメント・テーブル・エントリの実アドレスを計算する。すなわち、プロセス関連ルート・アンカー・ブロック１２００は、トップＤＡＴテーブルである開始点で使用され、続いて、次に低いテーブルの起点をフェッチし、ハードウエア自体がテーブル・アドレスを繰り返してフェッチするときに、最適なエントリ・アドレス等を計算する。
【００８６】
次に、ステップ２００４は、（セグメント・テーブル・エントリの無効指示を用いて）プロセス関連セグメントが無効であるか否かを判断する。セグメントが有効であると、処理は、ステップ２００６を続行する。ステップ２００６は、共用範囲７０２が、共用範囲記述ブロック（図１１の１０１０）の属性であるローカル変更アクセス・スコープで作られたか否かを判断する。
【００８７】
ローカル変更アクセス・スコープについては、処理は、ステップ２００８で完了する。ステップ２００８は、プロセス関連セグメント・テーブル・エントリに、望ましい状態情報をセットする。新たな状態が、隠し状態であると、セグメント・テーブル・エントリを無効にし、ハードウエア変換バッファをパージすることが必要であり、同時に、セグメント・テーブル・エントリに保護ビットをリセットし、隠しビットをセットする。新たな状態が読み取り専用状態または読み取り／書き込み状態であると、ハードウエア変換バッファをパージしながら、セグメントは有効のままにし、同時に、２つの場合についてそれぞれ保護ビットをセット／リセットする。
【００８８】
ステップ２００６は、共用範囲がグローバル変更アクセス・スコープを有することを判断すると、処理は、ステップ２０１０で続行する。ステップ２０１０は、システム関連セグメント・テーブル・エントリ・アドレスを計算し、次に、システム関連セグメント・テーブル・エントリに望ましい状態情報をセットする。ターゲット状態が読み取り専用状態であれば、保護ビットが、システム関連セグメント・テーブル・エントリにセットされ、そうでなければ、保護ビットはクリアされる（ステップ２０１２）。ｚ／シリーズのアーキテクチャの制限により、隠し状態は、有効なセグメント・テーブル・エントリに保存できず、したがって、ステップ２０１４は、これらの問題に対処するために使用される。ステップ２０１４は、ページ・テーブル・エントリのそれぞれを介してループする。ページ・テーブル・エントリの起点は、有効なセグメント・テーブル・エントリに現れる。基本的には、ターゲット状態が隠し状態でないときは、ページを再び有効にするが、各エントリは、保護状態を変更するため、またはページを隠し状態にするために無効にされる。ターゲット状態が隠し状態であると、システムは、次の変更アクセスがページを隠し状態以外にするまで、現行データがアクセス可能でなくても、現行データのコピーを保持する。
【００８９】
ステップ２００４は、プロセス関連セグメントが無効であることを判断すると、処理はステップ２０１６を続行する。ステップ２０１６は、共用範囲が、共用範囲記述ブロック１００４（図１１）の属性１０１０であるローカル変更アクセス・スコープで作成されたか否かを判断する。
【００９０】
ローカル変更アクセス・スコープについては、処理は、ステップ２０１８を続行し、ステップ２０１８は、セグメントを含むリージョンのプロセス関連リージョン第３エントリが、それ自体有効とマークされたか否かを判断する。エントリが無効であると、ＤＡＴテーブル作成機能（図１９）は、セグメント・テーブルおよび未着の高レベル・リージョン・テーブルを含むプロセス関連ＤＡＴ構造を構築するために呼び出される（ステップ２０２０）。処理は、プロセス関連リージョン第３エントリの有効性とは無関係にステップ２０２２を続行する。ステップ２０２２は、必要なターゲット状態のためにセグメント・テーブル・エントリに状態情報をセットする。このことは、単に、次のように、セグメント・テーブル・エントリに保護ビットおよび隠しビットをセットすることを伴う。読み取り／書き込みターゲット状態では、保護ビットおよび隠しビットの両方がオフであり、読み取り専用ターゲット状態では、保護ビットがオンで隠しビットがオフであり、隠しターゲット状態では、隠しビットがオンで保護ビットがオフである。
【００９１】
ステップ２０１６は、グローバル変更アクセスが、共用範囲について有効であることを判断すると、処理は、ステップ２０２４を続行する。ステップ２０２４は、システム関連トラッキングＤＡＴ構造を構築するために単にＤＡＴテーブル作成機能（図１９）を呼び出す。次に、ステップ２０２６は、システム関連セグメント・テーブル・エントリが有効か否かを判断する。エントリが無効であると、処理は、ステップ２０２２を続行する。ステップ２０２２では、更新されるのはシステム関連セグメント・テーブル・エントリである。エントリが有効である場合には、処理は、セグメントを含むリージョンのプロセス関連リージョン第３エントリが有効か否かを判断するためにステップ２０２８を続行する。このリージョン第３エントリが有効である（このことはセグメント・テーブルが存在することを意味する）と、処理は、処理されるセグメントのプロセス関連セグメント・テーブル・エントリにページ・テーブルの実アドレスを保存するためにステップ２０３０を続行する。ステップ２０２８がプロセス関連リージョン第３エントリを有効であると認定するか否かとは無関係に、処理は、ステップ２０３２を続行し、ステップ２０３２は、単に、システム関連セグメント・テーブル・エントリに保護指示を設定する。最後に、処理は、使用されるのがシステム関連セグメント・テーブル・エントリであることを除き、以前に説明したステップ２０１４で終了する。これにより、共用がセグメント・レベルのときに処理を終了する。
【００９２】
共用がリージョン・レベルであると、ローカル変更アクセスはサポートされない。これは、ｚ／Ａｒｃｈｉｔｅｃｔｕｒｅが、ローカル変更アクセスを可能にするために必要であるハードウエア保護をリージョン・レベルでサポートしないという事実のためである。そのかわりに、セグメント・テーブル・エントリ・レベルでのハードウエア保護ビットは、グローバル変更アクセス制御を与えるために使用される。
【００９３】
図２３および図２４によれば、リージョン・レベル共用の変更アクセス処理は、ステップ２１０２から開始する。ステップ２１０２は、プロセス関連リージョン第３テーブル５１２が存在するか否かを判断し、影響を受けたセグメントを含むリージョンのリージョン第３エントリが有効か否かを判断する（ステップ２１０４）。両方の状態が真であると、処理は、単にプロセス関連セグメント・テーブル・エントリをその後のステップで使用させる（ステップ２１０６）。ステップ２１０２とステップ２１０４のいずれかが偽であると、処理は、ステップ２１０８を続行する。ステップ２１０８は、影響を受けたセグメントの必要なシステム関連リージョンテーブルおよびシステム関連セグメント・テーブルを構築するためにＤＡＴテーブル作成（図１９）を呼び出す。プロセス・リージョン第３エントリは、プロセス・リージョン第３テーブルが存在すると、セグメント・テーブルの実アドレスを有効にする（ステップ２１１０）。ステップ２１１２は、単にシステム関連セグメント・テーブル・エントリ・アドレスをその後のステップで使用させる。
【００９４】
共通処理は、ステップ２１１４で再び開始する。ステップ２１１４は、ターゲット・セグメントが有効か否かを判断する。ターゲット・セグメントが無効であると、処理は、ターゲット状態を反映するためにセグメント・テーブル・エントリ内容を更新するステップ２１１６で終了する。具体的には、隠し状態が要求されると、保護ビットがリセットされ、隠しビットがセットされる。読み取り専用状態が要求されると、保護ビットがセットされ、隠しビットがリセットされる。読み取り／書き込み状態が要求されると、隠しビットと保護ビットの両方がリセットされる。
【００９５】
あるいはまた、ステップ２１１４が、ターゲット・セグメントが有効であることを判断すると、処理は、ステップ２１１８を続行し、セグメントが現在保護されているか否かを判断する。セグメントが保護されていると、処理は、ステップ２１２０を続行し、ターゲット状態が読み取り専用状態であるか否かを判断する。ターゲット状態が読み取り専用状態であるときは、更なる処理は必要とされない。ターゲット状態が読み取り専用状態でないときは、処理は、ステップ２１２２を続行し、ステップ２１２２は、セグメント・テーブル・エントリを無効にすると共に同時に保護ビットをリセットする。ステップ２１２２は、また、セグメントについての情報を含む、少なくともこれらのハードウエア変換バッファをフラッシュする。ステップ２１２２の次に、ステップ２１２４は、ターゲット状態が隠し状態であるか否かを判断する。ターゲット状態が隠し状態でないときは（ターゲット状態は、この時に読み取り／書き込み状態であろう）、処理は、セグメントを再び有効にするステップ２１２６で終了する。ステップ２１２４が、ターゲット状態が隠し状態であることを判断すると、ステップ２１２８は、次に、ページ・テーブル・エントリのそれぞれを無効とマークし、ページを隠し状態とマークする前に各ページのデータを保存する。最後に、ステップ２１２６は、セグメントを有効にするために使用される。これにより、ターゲット状態が読み取り専用状態ではない有効な保護セグメントの処理を終了する。
【００９６】
ステップ２１１８が、セグメントが保護されていないことを判断すると、処理は、ステップ２１３０を続行し、セグメント・テーブル・エントリからページ・テーブル起点を取り出す。次に、ステップ２１３２は、セグメントが現在望ましいターゲット状態であるか否かを判断する。このことは、ターゲット状態が隠し状態ならば、セグメントが現在隠し状態であることを意味する（このことは、セグメント内の全てのページが同じ隠し属性を有するので、第１ページ・テーブル・エントリから隠し指示を取り出すことによって判断できる）。次に、ターゲット状態が保護されていると、正しい状態は、保護ビットをセグメント・テーブル・エントリにセットさせるであろう（これはステップ２１１８により真でないと既に分かっている）。最後に、ターゲットが、読み取り／書き込み状態であると、正しい状態は、セグメント保護ビットをセットさせず、隠し状態をセットさせないであろう。セグメントが望ましい状態であると、更なる処理は必要とされない。
【００９７】
セグメントが正しい状態でないときは、セグメントは、次に、無効にされる（ステップ２１３４）。このセグメント無効化は、また、ステップ２１２２で説明したようにハードウエア変換バッファをフラッシュする。次に、ステップ２１３６は、ターゲット状態が隠し状態か否かを判断する。ステップ２１３６が、ターゲット状態が隠し状態であることを認知すると、ステップ２１３８は、次に、ステップ２１２８と同じようにセグメント内の全てのページを隠し状態に変換する。処理は、セグメントを有効にするステップ２１４０で終了する。
【００９８】
ステップ２１３６が、ターゲット状態が隠し状態でないことを判断すると、ステップ２１４２は、セグメントが現在隠し状態（セグメント内の第１ページのページ・テーブル・エントリに反映されている）であるか否かを判断する。セグメントが隠し状態であるときは、ステップ２１４４は、次に、各ページ・テーブル・エントリにおいて隠し状態をリセットする。セグメントが隠し状態であっても無くても、次のステップ（ステップ２１４６）は、ターゲットが読み取り専用状態か否かを判断する。ターゲットが読み取り専用状態であるときは、処理は、次に、セグメント保護ビットをセットし（ステップ２１４８）、次に、セグメントを有効にする（ステップ２１４０）。ターゲットが読み取り専用状態でない（読み取り／書き込み状態である）ときは、処理は、最終ステップ２１４０に進み、セグメントを有効にする。これにより、リージョン・レベル共用範囲の変更アクセス要求の処理を終了する。
【００９９】
本発明は、管理目的のために全てのアドレス・スペースに渡って仮想記憶の新たなバンドを割り当てることなく他のインプリメンテーションに広く用いられていた共用をサポートする方法を与える。本発明は、仮想化された汎用ページ・テーブルに戻るために実記憶の必要性を排除する技術を拡張する。このことは現在の技術で必要とされている。
【０１００】
本発明は、共用の管理のために使用される汎用ページ・テーブルをハードウエア変換機構に接続しないので、さらなる利点を受ける。したがって、全てのプロセッサに信号を送り、終了の操作（一般的には終了の命令）に達するまでそれらを待ち、変換バッファをパージすることを含む、このような管理テーブルと非接続で関連付けられたオーバーヘッドは、回避される。プロセス所有ＤＡＴテーブルが、ＤＡＴを実行するためにハードウエアに順次接続されるので、この活動は、プロセス所有ＤＡＴテーブルに関しては、依然として必要である。
【０１０１】
本発明は、同様に、共用仮想記憶が復帰するときにＤＡＴテーブルのレベルの数を低減しないように選択することによってこの無効オーバーヘッドを低減する。さもなければ更に少ないレベルの変換を可能にする。このことは、アプリケーションが、同じレベルの変換階層で共用仮想記憶へのアクセスを再獲得するならば、現れるスラッシング状態を避ける。最小数のレベルのＤＡＴテーブルは、無効オーバーヘッドが既に組み込まれていると、スワップ・アウト／スワップ・イン処理の際に再設定される。
【０１０２】
本発明の方法のもとでは、このスワップ・イン・ロジックは、共用範囲のためのＤＡＴテーブルも構築しない。それは、作業セット専用ページのためのＤＡＴテーブルを構築するだけである。どのプロセスがそれにセットされるのか区別されない（専用ページについては同じ）共用ページのための１つの参照ビットがあるので、このことは、オペレーティング・システムが、共用範囲のどのページが実際にプロセスによって使用中であるかを判断できないという共用記憶の問題を解決する。プロセスが共用アドレスに再アクセスすると、ＤＡＴ構造は、現行使用に必要であるとして拡張される。
【０１０３】
本発明は、完全６４ビット・アドレス範囲をサポートすると共に、共用仮想記憶および専用仮想記憶の両方をリージョン第３テーブルの幅まで取り扱う最小限の３レベルのＤＡＴテーブルを更に認める。他の方法は、１つの専用共用可能境界を有するが、本発明は、２つのこのような境界を導入する。前者の方法は、１つの領域の合計サイズをリージョン第３テーブル未満まで制限するか、または１つの領域の全ての部分をアクセスするためにリージョン第２（または第１）テーブルの使用を強要するかのいずれかである。
【０１０４】
本発明は、共用可能範囲内において仮想アドレスの選択的使用を、これらのアドレスを専用記憶にマップすることなく可能にする。このような制限は、マップされた範囲が、専用領域と共用可能領域における仮想記憶を占有するので、全てのアプリケーションに対して有効アドレッシングを半分に切り取る。共用可能領域の未使用部分は、全ての方法において使用可能スペースを損なう。
【０１０５】
本発明は、新たなプログラムまたは変更プログラムに対して（詳細に説明したように）グローバル共用アクセス・モードおよびローカル共用アクセス・モードの両方をサポートすると共に、既存の３１ビットアプリケーションが変更無く実行できるようにする方法で上述の特徴を与える。
【０１０６】
特定の実施例を示して説明したが、種々の変形が可能であることは、当業者には明らかであろう。
【０１０７】
まとめとして、本発明の構成に関して以下の事項を開示する。
（１）オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有する情報処理システムにおいて、共用仮想記憶を管理する方法であって、
テーブル参照の変換パスを与えることによって仮想アドレス参照を実アドレスに変換する1セットのプロセス・レベル動的アドレス変換（ＤＡＴ）テーブルを、複数の仮想アドレス・スペースのそれぞれに対して与えるステップを含み、前記複数セットのＤＡＴテーブルは、前記仮想アドレス・スペースに共通であり、共通する１セットの実アドレスに前記仮想アドレス・スペースのそれぞれの仮想アドレスの共用範囲をマップする共用の１サブセットのＤＡＴテーブルを有し、
前記共用範囲を管理する1セットの１以上のシステム・レベルＤＡＴテーブルを与えるステップを含み、前記システム・レベルＤＡＴテーブルは、前記プロセス・レベルＤＡＴテーブルの前記共用の１サブセットのＤＡＴテーブルを参照するが、前記プロセス・レベルＤＡＴテーブルのいずれかの変換パス内にはない共用仮想記憶を管理する方法。
（２）前記複数セットのプロセス・レベルＤＡＴテーブルは、前記仮想アドレス・スペースに共通でない非共用の複数サブセットのＤＡＴテーブルを更に有し、前記非共用の複数サブセットのＤＡＴテーブルは、前記仮想アドレス・スペースによってもはや必要とされないときでも維持される上記（１）に記載の方法。
（３）オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有し、複数レベルの変換テーブルが、前記仮想アドレス・スペースを実記憶にマップするために使用される情報処理システムにおいて、共用仮想記憶を管理する方法であって、
前記仮想アドレス・スペースの１つに対して、仮想アドレス参照を実アドレスに変換する１セットの動的アドレス変換（ＤＡＴ）テーブルを作成するステップを含み、前記１セットのＤＡＴテーブルは、他の仮想アドレス・スペースと共用される共用の１サブセットのＤＡＴテーブルを有し、他の仮想アドレス・スペースと共用されない非共用の１サブセットのＤＡＴテーブルを有し、
前記仮想アドレス・スペースによってもはや必要とされないときでも前記非共用の１サブセットのＤＡＴテーブル維持するステップを含む共用仮想記憶を管理する方法。
（４）前記複数セットのＤＡＴテーブルは、前記仮想アドレス・スペースに共通でない非共用の複数サブセットのＤＡＴテーブルを有し、スワップ・イン処理の際に、前記非共用の複数サブセットのＤＡＴテーブルのみが再構築され、前記共用の１サブセットのＤＡＴテーブルが再構築されない上記（３）に記載の方法。
（５）オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有し、所定の最大数のレベルの変換テーブルが、前記仮想アドレス・スペースを実記憶にマップするために可能性として使用される情報処理システムにおいて、共用仮想記憶を管理する方法であって、
仮想アドレス・スペースに対して、共通する１セットの実アドレスに他のアドレス・スペースの仮想アドレス範囲と共にマップされる仮想アドレスの共用範囲を定義するステップを含み、
前記仮想アドレス・スペースに対して、前記仮想アドレスの共用範囲より低く、前記アドレス・スペースに専用である第１の１セットの実アドレスにマップされる仮想アドレスの第１の専用範囲を定義するステップを含み、前記共用範囲および前記第１の専用範囲は、前記所定の最大数のレベルの前記変換テーブルより小さいレベルの変換テーブルを必要とする仮想アドレス範囲を占有し、
前記仮想アドレス・スペースに対して、前記仮想アドレスの共用範囲より高く、前記アドレス・スペースに専用である第２の１セットの実アドレスにマップされる仮想アドレスの第２の専用範囲を定義するステップを含む共用仮想記憶を管理する方法。
（６）最大５レベルの変換テーブルは、前記仮想アドレス・スペースを実記憶にマップするために使用され、前記共用範囲および前記第１の専用範囲は、３個以下のレベルの前記変換テーブルを必要とする仮想アドレス範囲を占める上記（５）に記載の方法。
（７）前記仮想アドレス・スペースは、６４ビット・アドレス・スペースであり、前記共用範囲および前記第１の専用範囲は、４２ビット以下を用いてアドレス可能である仮想アドレス範囲を占有する上記（５）に記載の方法。
（８）オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有する情報処理システムにおいて、共用仮想記憶を管理する方法であって、
複数の仮想アドレス・スペースのそれぞれに対して、共通する１セットの実アドレスにマップされる仮想アドレスの共用範囲を定義するステップを含み、
各仮想アドレス・スペースが同じアクセス権を有するグローバル・アクセス権、または各仮想アドレス・スペースが個別に前記共通範囲に対して指定されたアクセス権を有するローカル・アクセス権を用いて、前記共通する１セットの実アドレスが、前記仮想アドレス・スペースにより共用されるか否かを指定するステップを含む共用仮想記憶を管理する方法。
（９）異なる仮想アドレス・スペースの仮想アドレスの複数の共用範囲が、複数の共通セットの実アドレスのそれぞれにマップされる上記（８）に記載の方法であって、
前記指定するステップは、前記共通範囲のそれぞれに対して、前記共通範囲が、グローバル・アクセス権またはローカル・アクセス権を用いて共用されるか否かを個別に指定するステップを含む方法。
（１０）グローバル・アクセス権またはローカル・アクセス権は、仮想アドレスの共用範囲に対して、共用範囲が最初に定義されるときのみ指定可能である上記（８）に記載の方法。
（１１）前記仮想アドレス・スペースの１つに対して前記共通範囲に対するアクセス権を指定するステップを更に含む上記（８）に記載の方法。
（１２）前記共通する１セットの実アドレスがローカル・アクセス権を用いて共用されるならば、前記仮想アドレス・スペースの１つのみのアクセス権を変更するステップと、
前記共通する１セットの実アドレスがグローバル・アクセス権を用いて共用されるならば、前記仮想アドレス・スペースのそれぞれのアクセス権を対応して変更するステップとを更に含む上記（１１）に記載の方法。
（１３）前記仮想アドレス・スペースの１つは、その仮想アドレスを実アドレスにマップするために１セットの変換テーブルを使用し、前記共通範囲に対する前記仮想アドレス・スペースの１つのアクセス権は、前記変換テーブル内に指定される上記（１１）に記載の方法。
（１４）前記共通範囲に対する前記仮想アドレス・スペースの１つのアクセス権は、ローカル・アクセス権であり、他のアドレス・スペースにより共用されない前記変換テーブルの一部内に指定される上記（１３）に記載の方法。
（１５）オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有する情報処理システムにおいて、共用仮想記憶を管理する装置であって、
複数の仮想アドレス・スペースのそれぞれに対して、テーブル参照の変換パスを与えることによって仮想アドレス参照を実アドレスに変換する1セットのプロセス・レベル動的アドレス変換（ＤＡＴ）テーブルを備え、前記複数セットのＤＡＴテーブルは、前記仮想アドレス・スペースに共通であり、共通する１セットの実アドレスに前記仮想アドレス・スペースのそれぞれの仮想アドレスの共用範囲をマップする共用の１サブセットのＤＡＴテーブルを有し、
前記共用範囲を管理する1セットの１以上のシステム・レベルＤＡＴテーブルを備え、前記システム・レベルＤＡＴテーブルは、前記プロセス・レベルＤＡＴテーブルの前記共用の１サブセットのＤＡＴテーブルを参照するが、前記プロセス・レベルＤＡＴテーブルのいずれかの変換パス内にはない共用仮想記憶を管理する装置。
（１６）オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有し、複数レベルの変換テーブルが、前記仮想アドレス・スペースを実記憶にマップするために使用される情報処理システムにおいて、共用仮想記憶を管理する装置であって、
仮想アドレス・スペースの1つに対して、仮想アドレス参照を実アドレスに変換する1セットの動的アドレス変換（ＤＡＴ）テーブルを作成するロジックを備え、前記複数セットのＤＡＴテーブルは、他の仮想アドレス・スペースと共用される共用の１サブセットのＤＡＴテーブルを有し、他の仮想アドレス・スペースと共用されない非共用の１サブセットのＤＡＴテーブルを有し、
前記仮想アドレス・スペースによってもはや必要とされないときでも前記非共用の１サブセットのＤＡＴテーブル維持するロジックを備える共用仮想記憶を管理する装置。
（１７）前記複数セットのＤＡＴテーブルは、前記仮想アドレス・スペースに共通でない非共用の複数サブセットのＤＡＴテーブルを備え、スワップ・イン処理の際に、前記非共用の複数サブセットのＤＡＴテーブルのみが再構築され、前記共用の１サブセットのＤＡＴテーブルが再構築されない上記（１６）に記載の装置。
（１８）オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有し、所定の最大数のレベルの変換テーブルが、前記仮想アドレス・スペースを実記憶にマップするために可能性として使用される情報処理システムにおいて、共用仮想記憶を管理する装置であって、
仮想アドレス・スペースに対して、共通する１セットの実アドレスに他のアドレス・スペースの仮想アドレス範囲と共にマップされる仮想アドレスの共用範囲を定義するロジックを備え、
前記仮想アドレス・スペースに対して、前記仮想アドレスの共用範囲より低く、前記アドレス・スペースに専用される第１の１セットの実アドレスにマップされる仮想アドレスの第１の専用範囲を定義するロジックを備え、前記共用範囲および前記第１の専用範囲は、前記所定の最大数のレベルの前記変換テーブルより小さいレベルの変換テーブルを必要とする仮想アドレス範囲を占有し、
前記仮想アドレス・スペースに対して、前記仮想アドレスの共用範囲より高く、前記アドレス・スペースに専用である第２の１セットの実アドレスにマップされる仮想アドレスの第２の専用範囲を定義するロジックを備える共用仮想記憶を管理する装置。
（１９）オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有する情報処理システムにおいて、共用仮想記憶を管理する装置であって、
複数の仮想アドレス・スペースのそれぞれに対して、実アドレスの共通範囲にマップされる仮想アドレスの共用範囲を定義するロジックを備え、
各仮想アドレス・スペースが同じアクセス権を有するグローバル・アクセス権、または各仮想アドレス・スペースが個別に前記共通範囲に対して指定されたアクセス権を有するローカル・アクセス権を用いて、前記共通する１セットの実アドレスが、前記仮想アドレス・スペースにより共用されるか否かを指定するロジックを備える共用仮想記憶を管理する装置。
（２０）オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有する情報処理システムにおける共用仮想記憶を管理する方法ステップを実行するために、マシンによって実行可能な命令のプログラムを含む、マシンによって読み取り可能なプログラム記憶装置であって、
前記方法ステップは、
複数の仮想アドレス・スペースのそれぞれに対して、テーブル参照の変換パスを与えることによって仮想アドレス参照を実アドレスに変換する1セットのプロセス・レベル動的アドレス変換（ＤＡＴ）テーブルを与えるステップを含み、前記複数セットのＤＡＴテーブルは、前記仮想アドレス・スペースに共通であり、共通する１セットの実アドレスに前記仮想アドレス・スペースのそれぞれの仮想アドレスの共用範囲をマップする共用の１サブセットのＤＡＴテーブルを有し、
前記共用範囲を管理する1セットの１以上のシステム・レベルＤＡＴテーブルを与えるステップを含み、前記システム・レベルＤＡＴテーブルは、前記プロセス・レベルＤＡＴテーブルの前記共用の１サブセットのＤＡＴテーブルを参照するが、前記プロセス・レベルＤＡＴテーブルのいずれかの変換パス内にはないプログラム記憶装置。
（２１）オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有し、複数レベルの変換テーブルが、前記仮想アドレス・スペースを実記憶にマップするために使用される情報処理システムにおける共用仮想記憶を管理する方法ステップを実行するために、マシンによって実行可能な命令のプログラムを含む、マシンによって読み取り可能なプログラム記憶装置であって、
前記方法ステップは、
前記仮想アドレス・スペースの１つに対して、仮想アドレス参照を実アドレスに変換する１セットの動的アドレス変換（ＤＡＴ）テーブルを作成するステップを含み、前記１セットのＤＡＴテーブルは、他の仮想アドレス・スペースと共用される共用の１サブセットのＤＡＴテーブルを有し、他の仮想アドレス・スペースと共用されない非共用の１サブセットのＤＡＴテーブルを有し、
前記仮想アドレス・スペースによってもはや必要とされないときでも前記非共用の１サブセットのＤＡＴテーブル維持するステップを含むプログラム記憶装置。
（２２）前記複数セットのＤＡＴテーブルは、前記仮想アドレス・スペースに共通でない非共用の複数サブセットのＤＡＴテーブルを有し、スワップ・イン処理の際に、前記非共用の複数サブセットのＤＡＴテーブルのみが再構築され、前記共用の１サブセットのＤＡＴテーブルが再構築されない上記（２１）に記載のプログラム記憶装置。
（２３）オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有し、所定の最大数のレベルの変換テーブルが、前記仮想アドレス・スペースを実記憶にマップするために可能性として使用される情報処理システムにおける共用仮想記憶を管理する方法ステップを実行するために、マシンによって実行可能な命令のプログラムを含む、マシンによって読み取り可能なプログラム記憶装置であって、
前記方法ステップは、
仮想アドレス・スペースに対して、共通する１セットの実アドレスに他のアドレス・スペースの仮想アドレス範囲と共にマップされる仮想アドレスの共用範囲を定義するステップを含み、
前記仮想アドレス・スペースに対して、前記仮想アドレスの共用範囲より低く、前記アドレス・スペースに専用である第１の１セットの実アドレスにマップされる仮想アドレスの第１の専用範囲を定義するステップを含み、前記共用範囲および前記第１の専用範囲は、前記所定の最大数のレベルの前記変換テーブルより小さいレベルの変換テーブルを必要とする仮想アドレス範囲を占有し、
前記仮想アドレス・スペースに対して、前記仮想アドレスの共用範囲より高く、前記アドレス・スペースに専用である第２の範囲の実アドレスにマップされる仮想アドレスの第２の専用範囲を定義するステップを含むプログラム記憶装置。
（２４）オペレーティング・システムによって管理される複数のプロセスのそれぞれが、実記憶のアドレスを表わす、対応する１セットの実アドレスにマップされる仮想アドレスの範囲からなる仮想アドレス・スペースを有する情報処理システムにおける共用仮想記憶を管理する方法ステップを実行するために、マシンによって実行可能な命令のプログラムを含む、マシンによって読み取り可能なプログラム記憶装置であって、
前記方法ステップは、
複数の仮想アドレス・スペースのそれぞれに対して、共通する１セットの実アドレスにマップされる仮想アドレスの共用範囲を定義するステップを含み、
各仮想アドレス・スペースが同じアクセス権を有するグローバル・アクセス権、または各仮想アドレス・スペースが個別に前記共通範囲に対して指定されたアクセス権を有するローカル・アクセス権を用いて、前記共通する１セットの実アドレスが、前記仮想アドレス・スペースにより共用されるか否かを指定するステップを含むプログラム記憶装置。
【図面の簡単な説明】
【０１０８】
【図１】本発明を組み込むコンピュータ・システムを示す図である。
【図２】図１のコンピュータ・システムにおける仮想アドレス・スペースの種々の区分を示す図である。
【図３】高レベルでのアドレス変換プロセスを示す図である。
【図４】６４ビット仮想アドレスの構成を示す図である。
【図５】仮想アドレスを実アドレスに変換するためにアドレス・スペースに使用される変換テーブルを示す図である。
【図６】ページ・フレーム実アドレス（ＰＦＲＡ）とバイト・インデックス（ＢＸ）による実アドレスの形成を示す図である。
【図７】仮想アドレス・スペース間のアドレス共用の一般的な概念を示す図である。
【図８】アドレス共用を行うためにＤＡＴテーブルがどのように使用されるかを示す図である。
【図９】サイズがリージョン第３テーブルの幅以上である共用可能スペースを有するアドレス・スペースを示す図である。
【図１０】サイズがリージョン第３テーブルの幅より小さい共用可能スペースを有するアドレス・スペースを示す図である。
【図１１】本発明のシステム・ワイド共用ソート済みテーブル（ＳＳＴ）を示す図である。
【図１２】図１１に示すシステム・ワイド・ルート・アンカー・ブロックを関連データ構造と共に示す図である。
【図１３】プロセス・レベル・ルート・アンカー・ブロックと関連データ構造を示す図である。
【図１４】図１１および図１２に示すシステム・ワイド・ルート・アンカー・ブロックと、２つのプロセスのルート・アンカー・ブロックとの間の関係を示す図である。
【図１５】アドレス変換例外解決の手順を示す図である。
【図１６】上位拡張機能を示す図である。
【図１７】リージョン・レベル解決の手順を示す図である。
【図１８】セグメント障害解決の手順を示す図である。
【図１９】ＤＡＴテーブルを作成する手順（ＤＡＴテーブル作成）を示す図である。
【図２０】ページ・テーブルを構築する手順（ページ・テーブル構築）を示す図である。
【図２１】セグメント・レベル共用へのアクセスを変更する手順を示す図である。
【図２２】セグメント・レベル共用へのアクセスを変更する手順を示す図である。
【図２３】リージョン・レベル共用へのアクセスを変更する手順を示す図である。
【図２４】リージョン・レベル共用へのアクセスを変更する手順を示す図である。
【符号の説明】
【０１０９】
１００  コンピュータ・システム
１０２  ハードウエア層
１０４  ソフトウエア層
１０６  オペレーティング・システム
１０８  ユーザ・プロセス
２０２  仮想アドレス・スペース
２０４  リージョン
２０６  セグメント
２０８，３１０  ページ
３０２  動的アドレス変換（ＤＡＴ）ユニット
３０４  仮想アドレス
３０６  実アドレス
３０８  実記憶
４０２  リージョン・インデックス
４０４  リージョン第１インデックス
４０６  リージョン第２インデックス
４０８  リージョン第３インデックス
４１０  セグメント・インデックス
４１２  ページ・インデックス
４１４  バイト・インデックス
５０２，５０６，５１０，５１４，５１８  アドレス
５０４  リージョン第１テーブル
５０８  リージョン第２テーブル
５１２  リージョン第３テーブル
５１６  セグメント・テーブル
５２０  ページ・テーブル
５２２  ページ・フレーム実アドレス
７０２  共用可能スペース
７０４  共通部分
７０６，７０８  専用スペース
７５２ａ，７５２ｂ  高レベル・テーブル
７５４ａ，７５４ｂ，１００２，１２１２  エントリ
７５６  低レベル・テーブル
１０００  共用ソート済みテーブル
１００４  共用範囲記述ブロック
１００６  起点
１００８  サイズ
１０１０  属性
１１０２，１１０４，１２０２  ポインタ
１１０６  トップ共用ＤＡＴテーブル
１１０８  低レベル共用ＤＡＴテーブル
１１１０  フリー・スペース・キュー記述子
１１１２  キュー
１１１４  フリー・スペース・ブロック
１２００，１２００ａ，１２００ｂ  ルート・アンカー・ブロック
１２０４  ポインタ
１２０６，１２０６ａ，１２０６ｂ  トップＤＡＴテーブル
１２０８  低レベルＤＡＴテーブル
１２１０  シャドー共用ソート済みテーブル
１２１４  他のブロック
１２１６  状態情報
【図１】
2004326771.tif 000003
【図２】
2004326771.tif 000004
【図３】
2004326771.tif 000005
【図４】
2004326771.tif 000006
【図５】
2004326771.tif 000007
【図６】
2004326771.tif 000008
【図７】
2004326771.tif 000009
【図８】
2004326771.tif 000010
【図９】
2004326771.tif 000011
【図１０】
2004326771.tif 000012
【図１１】
2004326771.tif 000013
【図１２】
2004326771.tif 000014
【図１３】
2004326771.tif 000015
【図１４】
2004326771.tif 000016
【図１５】
2004326771.tif 000017
【図１６】
2004326771.tif 000018
【図１７】
2004326771.tif 000019
【図１８】
2004326771.tif 000020
【図１９】
2004326771.tif 000021
【図２０】
2004326771.tif 000022
【図２１】
2004326771.tif 000023
【図２２】
2004326771.tif 000024
【図２３】
2004326771.tif 000025
【図２４】
2004326771.tif 000026