仮想メモリ

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
仮想メモリは、 DASD [a]上のアクティブRAMと非アクティブメモリを組み合わせて、広範囲の連続したアドレスを形成します。

コンピューティングにおいて、仮想メモリ、または仮想ストレージ[b]は、「特定のマシンで実際に利用可能なストレージリソースの理想的な抽象化」[3]を提供するメモリ管理手法であり、「非常に大規模なユーザーに幻想を生み出します。 (メイン)メモリ」。[4]

コンピュータのオペレーティングシステムは、ハードウェアとソフトウェアの組み合わせを使用して、仮想アドレスと呼ばれるプログラムによって使用されるメモリアドレスを、コンピュータメモリ内の物理アドレスにマップします。プロセスまたはタスクから見たメインストレージは、連続したアドレス空間または連続したセグメントのコレクションとして表示されます。オペレーティングシステムは、仮想アドレス空間と仮想メモリへの実メモリの割り当てを管理します。CPUのアドレス変換ハードウェア。メモリ管理ユニットと呼ばれることもあります。(MMU)、仮想アドレスを物理アドレスに自動的に変換します。オペレーティングシステム内のソフトウェアは、たとえばディスクストレージを利用してこれらの機能を拡張し、実際のメモリの容量を超えて、コンピュータに物理的に存在するよりも多くのメモリを参照できる仮想アドレス空間を提供できます。

仮想メモリの主な利点には、アプリケーションが共有メモリスペースを管理する必要がないこと、プロセス間でライブラリが使用するメモリを共有する機能、メモリの分離によるセキュリティの強化、物理的に利用可能なメモリよりも多くのメモリを概念的に使用できることが含まれます。ページングまたはセグメンテーション の手法。

プロパティ

仮想メモリは、物理メモリの断片化を隠すことにより、アプリケーションプログラミングを容易にします。メモリ階層を管理する負担をカーネルに委任する(プログラムがオーバーレイを明示的に処理する必要をなくす)。また、各プロセスが専用のアドレススペースで実行される場合は、プログラムコードを再配置したり、相対アドレスを使用してメモリにアクセスしたりする必要がなくなります。

メモリの仮想化は、仮想メモリの概念の一般化と見なすことができます。

使用法

仮想メモリは、最新のコンピュータアーキテクチャの不可欠な部分です。実装には通常、ハードウェアサポートが必要であり、通常はCPUに組み込まれたメモリ管理ユニットの形式で行われます。必須ではありませんが、エミュレーター仮想マシンは、ハードウェアサポートを使用して、仮想メモリ実装のパフォーマンスを向上させることができます。[5] 1960年代のメインフレーム用のオペレーティングシステムや1980年代初期から中期のパーソナルコンピュータ用のオペレーティングシステム(DOSなど)などの古いオペレーティングシステム[6]には、一般に仮想メモリ機能がありません[疑わしい ]ただし、1960年代のメインフレームの注目すべき例外は次のとおりです。

1960年代から70年代初頭にかけて、コンピュータのメモリは非常に高価でした。仮想メモリの導入により、メモリを大量に要求するソフトウェアシステムを、実メモリの少ないコンピュータで実行できるようになりました。これによる節約は、すべてのシステムで仮想メモリに切り替える強いインセンティブを提供しました。仮想アドレス空間を提供する追加機能により、セキュリティと信頼性のレベルがさらに向上し、仮想メモリが市場にとってさらに魅力的なものになりました。

仮想メモリをサポートする最新のオペレーティングシステムのほとんどは、各プロセスを専用のアドレス空間で実行します。したがって、各プログラムは仮想メモリへの唯一のアクセス権を持っているように見えます。ただし、一部の古いオペレーティングシステム(OS / VS1OS / VS2 SVSなど)や最新のオペレーティングシステム( IBM iなど)でさえ、仮想化メモリで構成される単一のアドレス空間ですべてのプロセスを実行する 単一のアドレス空間オペレーティングシステムです。

非常に高速および/または非常に一貫した応答時間を必要とする組み込みシステムおよびその他の特殊用途のコンピュータシステムは、決定論が低下するため、仮想メモリを使用しないことを選択する場合があります。仮想メモリシステムは、特にトラップがセカンダリメモリからメインメモリにデータを読み込む必要がある場合に、入力に応答して望ましくない予測できない遅延を生成する可能性のある予測できないトラップをトリガーします。仮想アドレスを物理アドレスに変換するハードウェアは、通常、実装するためにかなりのチップ領域を必要とし、組み込みシステムで使用されるすべてのチップにそのハードウェアが含まれているわけではありません。これは、一部のシステムが仮想メモリを使用しないもう1つの理由です。

歴史

1940年代[要出典]と1950年代には、すべての大規模なプログラムに、オーバーレイなどのプライマリストレージとセカンダリストレージを管理するためのロジックが含まれていなければなりませんでしたそのため、仮想メモリは、プライマリメモリを拡張するだけでなく、プログラマがそのような拡張をできるだけ簡単に使用できるようにするために導入されました。[7]マルチプログラミングマルチタスクを可能にするために、多くの初期のシステムは、レジスタを介したPDP-10の初期モデルなど、仮想メモリのない複数のプログラム間でメモリを分割していました

仮想メモリの概念は、1956年にベルリン工科大学のドイツの物理学者 Fritz-RudolfGüntschが博士論文「複数の非同期回転ドラムと自動高速メモリ操作を備えたデジタルコンピュータの論理設計」で最初に開発したという主張[8] [9]は注意深い精査に耐えられません。Güntschによって提案された(しかし構築されていない)コンピューターは、ドラムの105ワードに正確にマッピングされた105ワードのアドレス空間を持っていました つまりアドレス実際のアドレスであり、間接マッピングの形式はありませんでした。仮想メモリ。ギュンチが発明したのは、彼の高速メモリは、ドラムから取得したコードまたはデータのいくつかのブロックのコピーを含むことを目的としていたため、キャッシュメモリ。実際、彼は次のように書いています(翻訳[10]で引用):「プログラマーはプライマリメモリの存在を尊重する必要はありません(存在することさえ知る必要はありません)。ストレージが1つしかないかのようにプログラムできます。」これはまさにキャッシュメモリを備えたコンピュータの状況であり、その最も初期の商用例の1つはIBM System / 360モデル85でした。[11]モデル85では、すべてのアドレスはメインコアストアを参照する実際のアドレスでした。ユーザーには見えない半導体キャッシュストアは、現在実行中のプログラムによって使用されているメインストアの一部のコンテンツを保持していました。これは、マルチプログラミングに伴う問題を解決するのではなく、パフォーマンスを向上させる手段として設計されたGüntschのシステムとまったく同じです。

マンチェスター大学のAtlasComputer、真の仮想メモリを備えた最初のコンピュータでした。

最初の真の仮想メモリシステムは、マンチェスター大学で実装され、 AtlasComputerの一部として1レベルのストレージシステム[12]を作成したものでした。ページングメカニズムを使用して、プログラマーが使用できる仮想アドレスを、16,384ワードのプライマリコアメモリと98,304ワードのセカンダリドラムメモリで構成される実メモリにマッピングしました。[13]最初のアトラスは1962年に委託されましたが、ページングの実用的なプロトタイプは1959年までに開発されました。[7] :2  [14] [15] 1961年、バロース社ページングではなくセグメンテーションを備えた、仮想メモリを備えた最初の商用コンピュータであるB5000を独自にリリースしました。[16] [17]

仮想メモリを主流のオペレーティングシステムに実装する前に、多くの問題に対処する必要がありました。動的アドレス変換には、高価で構築が難しい専用ハードウェアが必要でした。初期の実装では、メモリへのアクセスがわずかに遅くなりました。[7]セカンダリストレージを利用する新しいシステム全体のアルゴリズムは、以前に使用されていたアプリケーション固有のアルゴリズムよりも効果が低いのではないかという懸念がありました。1969年までに、商用コンピュータの仮想メモリに関する議論は終わりました。[7] David Sayreが率いるIBMの研究チームは、仮想メモリオーバーレイシステムが、手動で制御される最高のシステムよりも一貫して優れていることを示しました。[18]1970年代を通じて、仮想ストレージベースのオペレーティングシステムを実行するIBM 370シリーズは、ビジネスユーザーが複数の古いシステムを、価格/パフォーマンスが向上した、より少数のより強力なメインフレームに移行する手段を提供しました。仮想メモリを導入した最初のミニコンピューターはノルウェーのNORD-1でした。1970年代に、他のミニコンピューター、特にVMSを実行するVAXモデルが仮想メモリを実装しました。

仮想メモリはIntel 80286プロセッサのプロテクトモードを備えたx86アーキテクチャに導入されましたが、そのセグメントスワッピング技術は、より大きなセグメントサイズへの拡張が不十分でした。Intel 80386は、既存のセグメンテーションレイヤーの下にページングサポートを導入し、ページフォールト例外が二重フォールトなしで他の例外とチェーンできるようにしましたただし、セグメント記述子のロードはコストのかかる操作であったため、オペレーティングシステムの設計者は、ページングとセグメンテーションの組み合わせではなく、ページングに厳密に依存することになりました。[要出典]

ページングされた仮想メモリ

仮想メモリの現在の実装のほぼすべてが、仮想アドレス空間ページ、つまり連続する仮想メモリアドレスのブロックに分割します。最新の[c]システムのページは、通常、少なくとも4キロバイトのサイズです。大きな仮想アドレス範囲または大量の実メモリを備えたシステムは、通常、より大きなページサイズを使用します。[19]

ページテーブル

ページテーブルは、アプリケーションによって認識される仮想アドレスを、ハードウェアが命令を処理するために使用する物理アドレスに変換するために使用されます。[20]この特定の変換を処理するこのようなハードウェアは、メモリ管理ユニットと呼ばれることがよくあります。ページテーブルの各エントリには、対応するページが実メモリにあるかどうかを示すフラグがあります。実メモリにある場合、ページテーブルエントリには、ページが格納されている実メモリアドレスが含まれます。ハードウェアによってページが参照されたときに、そのページのページテーブルエントリが現在実メモリにないことを示している場合、ハードウェアはページフォールト 例外を発生させ、のページングスーパーバイザコンポーネントを呼び出します。オペレーティングシステム

システムは、システム全体に対して1つのページテーブル、アプリケーションとセグメントごとに個別のページテーブル、大きなセグメントに対してページテーブルのツリー、またはこれらの組み合わせを持つことができます。ページテーブルが1つしかない場合、同時に実行されているさまざまなアプリケーションが、単一範囲の仮想アドレスのさまざまな部分を使用します。複数のページテーブルまたはセグメントテーブルがある場合は、複数の仮想アドレススペースがあり、別々のページテーブルを持つ同時アプリケーションは異なる実アドレスにリダイレクトされます。

SDS 940など、実際のメモリサイズが小さい一部の初期のシステムでは、アドレス変換にメモリ内のページテーブルの代わりに ページレジスタを使用していました。

ページングスーパーバイザー

オペレーティングシステムのこの部分は、ページテーブルを作成および管理します。ハードウェアがページフォールト例外を発生させた場合、ページングスーパーバイザーはセカンダリストレージにアクセスし、ページフォールトの原因となった仮想アドレスを持つページを返し、仮想アドレスの物理的な場所を反映するようにページテーブルを更新し、変換メカニズムに次のように指示します。リクエストを再開します。

すべての物理メモリがすでに使用されている場合、ページングスーパーバイザは、スワップインされたページを保持するためにプライマリストレージのページを解放する必要があります。スーパーバイザーは、解放するページを決定するために最近使用されたものなど、さまざまなページ置換アルゴリズムの1つを使用します。

固定されたページ

オペレーティングシステムには、固定されたメモリ領域があります(セカンダリストレージにスワップされることはありません)。使用される他の用語は、ロックされた固定された、または有線のページです。たとえば、割り込みメカニズムは、 I / O完了やページフォールトなど、ハンドラーへのポインターの配列に依存していますこれらのポインタまたはそれらが呼び出すコードを含むページがページング可能である場合、特にページフォールトの割り込みの場合、割り込み処理ははるかに複雑で時間がかかります。したがって、ページテーブル構造の一部はページングできません。

一部のページは短期間に固定される場合があり、他のページは長期間固定される場合があり、さらに他のページは永続的に固定される必要がある場合があります。例えば:

  • ページが存在するセカンダリストレージデバイスのページングスーパーバイザーコードとドライバーは、永続的に固定する必要があります。そうしないと、必要なコードが利用できないため、ページングも機能しません。
  • 可変のページング遅延を回避するために、タイミングに依存するコンポーネントを固定することができます。
  • ダイレクトメモリアクセスまたはI / Oチャネルを使用する周辺機器によって直接アクセスされるデータバッファは、I / O操作の進行中、ピン留めされたページに存在する必要があります。物理メモリアドレスで。バスにI / O用のメモリ管理ユニットがあるかどうかに関係なく、ページフォールトが発生した場合に転送を停止し、ページフォールトが処理されたときに転送を再開することはできません。[なぜ?]

System / 370以降のシステム用のIBMのオペレーティング・システムでは、この用語は「固定」であり、そのようなページは長期的に固定されるか、短期的に固定されるか、または固定されない(つまり、ページング可能)場合があります。システム制御構造は、多くの場合、長期的に固定されます(壁時計時間で測定されます。つまり、1秒の何分の1かで測定される時間ではなく、秒で測定されます)が、I / Oバッファーは通常、短期的に固定されます(通常は大幅に測定されます)。実時間よりも短い時間、場合によっては数十ミリ秒)。実際、OSには、これらの短期固定データバッファを「高速修正」するための特別な機能があります(修正は、時間のかかるスーパーバイザー呼び出し命令に頼ることなく実行されます)。

Multicsは「有線」という用語を使用しました。ActiveXWindowsは、一時的にページング不可にされたページ(I / Oバッファーに関して)を「ロック」と呼び、ページング可能にならないページについては単に「ページング不可」と呼びます。Single UNIX Specificationでは、多くのUnixライクなシステムのマニュアルページと同様仕様で「ロック」という用語も使用して います。 mlock()mlock()

バーチャルリアルオペレーション

OS / VS1および同様のOSでは、システムメモリの一部が「V = R」と呼ばれる「仮想リアル」モードで管理されます。このモードでは、すべての仮想アドレスが同じ実アドレスに対応します。このモードは、割り込みメカニズム、古いシステムのページングスーパーバイザとページテーブル、および非標準のI / O管理を使用するアプリケーションプログラムに使用されます。たとえば、IBMのz / OSには、3つのモード(仮想仮想、仮想実、仮想固定)があります。[21] [必要なページ]

スラッシング

ページングページスティーリングを使用すると、「スラッシング」と呼ばれる問題が発生する可能性があります。この問題では、コンピュータがバッキングストアとの間でページを転送するのに不適切な時間がかかり、有用な作業が遅くなります。タスクのワーキングセットは、タスクが有用な進行を遂げるためにメモリ内にある必要があるページの最小セットです。スラッシングは、アクティブなすべてのプログラムのワーキングセットを格納するために使用できるメモリが不足している場合に発生します。実メモリの追加は最も簡単な対応ですが、アプリケーションの設計、スケジューリング、およびメモリ使用量を改善すると役立つ場合があります。もう1つの解決策は、システム上のアクティブなタスクの数を減らすことです。これにより、1つ以上のプロセスのワーキングセット全体がスワップアウトされるため、実メモリの需要が減少します。

セグメント化された仮想メモリ

Burroughs B5500などの一部のシステム[22]は、ページングの代わりにセグメンテーションを使用して、仮想アドレス空間を可変長のセグメントに分割します。ここでの仮想アドレスは、セグメント番号とセグメント内のオフセットで構成されます。Intel 80286は、オプションとして同様のセグメンテーションスキームをサポートしていますが、使用されることはめったにありませんセグメンテーションとページングは​​、各セグメントをページに分割することで一緒に使用できます。MulticsやIBMSystem / 38など、このメモリ構造を備えたシステムは、通常、ページングが主流であり、セグメンテーションがメモリ保護を提供します。[23] [24] [25]

Intel 80386以降IA-32プロセッサでは、セグメントは32ビットの線形ページアドレス空間に存在します。セグメントは、そのスペースに出入りすることができます。そこにあるページは、メインメモリに「ページ」したり、メインメモリから「ページ」したりして、2つのレベルの仮想メモリを提供できます。代わりにページングのみを使用するオペレーティングシステムがあるとしてもごくわずかです。x86ページングは​​2つの保護ドメインしか提供しないのに対し、VMM、ゲストOS、またはゲストアプリケーションスタックは3つ必要であるため、初期の非ハードウェア支援x86仮想化ソリューションはページングとセグメンテーションを組み合わせました。[26] :22 ページングシステムとセグメンテーションシステムの違いは、メモリの分割だけではありません。セグメンテーションは、メモリモデルのセマンティクスの一部として、ユーザープロセスに表示されます。したがって、単一の大きなスペースのように見えるメモリの代わりに、複数のスペースに構造化されます。

この違いは重要な結果をもたらします。セグメントは、可変長のページでも、アドレス空間を長くする簡単な方法でもありません。プロセスメモリとファイルシステムの間に区別がない単一レベルのメモリモデルを提供できるセグメンテーションは、プロセスの潜在的なアドレス空間にマップされたセグメント(ファイル)のリストのみで構成されます。[27]

これは、 mmapWin32などの呼び出しによって提供されるメカニズムと同じではありません。のMapViewOfFile。ファイルを半任意の場所にマッピングするときにファイル間ポインタが機能しないためです。Multicsでは、ファイル(またはマルチセグメントファイルのセグメント)がアドレス空間のセグメントにマップされるため、ファイルは常にセグメント境界にマップされます。ファイルのリンケージセクションには、ポインタをレジスタにロードしようとしたり、レジスタを介して間接参照を作成したりしようとするとトラップが発生するポインタを含めることができます。未解決のポインターには、ポインターが参照するセグメントの名前と、セグメント内のオフセットが含まれます。トラップのハンドラーは、セグメントをアドレススペースにマップし、セグメント番号をポインターに入れ、トラップが発生しないようにポインターのタグフィールドを変更し、トラップが発生したコードに戻って再実行します。トラップを引き起こした命令。[28]これにより、リンカーが完全に不要になり[7]、異なるプロセスが同じファイルをプライベートアドレス空間の異なる場所にマップする場合に機能します。[29]

アドレス空間のスワッピング

一部のオペレーティングシステムでは、ページングとセグメンテーションのための機能に加えて、アドレス空間全体を交換できます。これが発生すると、OSは現在実メモリにあるページとセグメントをスワップファイルに書き込みます。スワップインでは、OSはスワップファイルからデータを読み戻しますが、スワップアウト操作時にページアウトされたページを自動的に読み戻しません。

OS / VS2リリース2からz / OSまでのIBMのMVSは、アドレス・スペースをスワップ不可としてマークすることを提供します。そうすることで、アドレス空間にページが固定されることはありません。これは、プログラムプロパティテーブルにスワップ不可能なフラグを付けて適格な[30]メインプログラムの名前を入力することにより、ジョブの期間中に実行できます。さらに、特権コードは、SYSEVENTスーパーバイザー呼び出し命令(SVC)を使用して、アドレス・スペースを一時的にスワップ不可にすることができます。アドレス空間のプロパティの特定の変更[31]では、OSがSYSEVENT TRANSWAPを使用して、それをスワップアウトしてからスワップインする必要があります。[32]

たとえば、複数のジョブが同じストレージ領域にスワップインおよびスワップアウトされる場合、スワッピングは必ずしもメモリ管理ハードウェアを必要としません。

も参照してください

メモ

  1. ^ 初期のシステムはドラムを使用していました; 最新のシステムはディスクまたはソリッドステートメモリを使用します
  2. ^ IBMは、メインフレームオペレーティングシステムで仮想ストレージという用語を使用します。この使用法は、360/67のTSS [ 1]からz / OSまで、 z / Architectureの[2]から実行されます。
  3. ^ IBM DOS / VS OS / VS1、およびDOS / VSは、 2KBページのみをサポートしていました。

参考文献

  1. ^ 「システムコンポーネント:動的再配置」 (PDF)システム/ 360モデル67タイムシェアリングシステムの予備的な技術概要 (PDF)IBM。1966年。p。21.C20-1647-0。
  2. ^ 「BCP(基本制御プログラム)」(PDF)z / OSバージョン2リリース4z / OS導入およびリリース・ガイド(PDF)IBM。2020年9月22日。p。3.GA32-0887-40。
  3. ^ Bhattacharjee、Abhishek; ルスティグ、ダニエル(2017)。仮想メモリのアーキテクチャおよびオペレーティングシステムのサポートモーガン&クレイプール出版社。p。1.ISBN _ 97816270560212017年10月16日取得
  4. ^ ハルダー、シブサンカー; Aravind、Alex Alagarsamy(2010)。オペレーティングシステムピアソンエデュケーションインディア。p。269. ISBN 978-81317302252017年10月16日取得
  5. ^ 「AMD-V™ネストされたページング」(PDF)AMD 2015年4月28日取得
  6. ^ 「Windowsのバージョン履歴」マイクロソフト。2011年9月23日。2015年1月8日のオリジナルからアーカイブ2015年3月9日取得
  7. ^ a b c d e Denning、Peter(1997)。「メモリが仮想化される前」(PDF)はじめに:ソフトウェアパイオニアの回想
  8. ^ Jessen、Elke(2004)。「仮想メモリの概念の起源」。コンピューティングの歴史のIEEE年報26(4):71–72。
  9. ^ Jessen、E。(1996)。「DieEntwicklungdesvirtuellenSpeichers」。Informatik-Spektrum(ドイツ語)。19(4):216–219。土井10.1007 / s002870050034ISSN0170-6012_ S2CID11514875_  
  10. ^ Jessen(2004)
  11. ^ Liptay、JS(1968)、「System / 360 Model 85 – The Cacheの構造的側面」、IBM Systems Journal7:15–21、doi10.1147 / sj.71.0015
  12. ^ Kilburn、T。; エドワーズ、DBG; ラニガン、MJ; Sumner、FH(1962)、「One-level Storage System」、IRE Trans EC-11(2):223–235、doi10.1109 / TEC.1962.5219356
  13. ^ 「FerrantiAtlas1&2 –システムアーキテクチャ」(PDF)2009年11月12日。
  14. ^ RJ Creasy、「 VM / 370タイムシェアリングシステムの起源」、 IBM Journal of Research&Development、Vol。25、No。5(1981年9月)、 p。486
  15. ^ 「アトラス」2014年10月6日にオリジナルからアーカイブされました。
  16. ^ ジョイナー、イアン。「バロウズ」2017年5月10日にオリジナルからアーカイブされました。
  17. ^ Cragon、Harvey G.(1996)。メモリシステムとパイプラインプロセッサジョーンズとバートレットの出版社。p。113. ISBN 978-0-86720-474-2
  18. ^ Sayre、D。(1969)。「プログラムの自動「折りたたみ」は、手動に取って代わるのに十分効率的ですか?」ACMの通信12(12):656–660。土井10.1145 /363626.363629S2CID15655353_ 
  19. ^ キンテロ、ディノ; etal。(2013年5月1日)。IBM Power Systemsパフォーマンスガイド:実装と最適化IBMコーポレーション。p。138. ISBN 978-07384376682017年7月18日取得
  20. ^ Sharma、Dp(2009)。オペレーティングシステムの基盤エクセルブックスインド。p。62. ISBN 978-81-7446-626-62017年7月18日取得
  21. ^ 「z / OS基本スキル情報センター:z / OSの概念」(PDF)
  22. ^ バロウズ(1964)。バロウズB5500情報処理システムリファレンスマニュアル(PDF)バロースコーポレーション1021326 2013年11月28日取得
  23. ^ GE-645システムマニュアル(PDF)1968年1月。21〜30ページ2015年4月28日取得
  24. ^ コルバト、FJ ; Vyssotsky、VA 「Multicsシステムの紹介と概要」2007年11月13日取得
  25. ^ Glaser、Edward L。; Couleur、John F.&Oliver、GA 「タイムシェアリングアプリケーション用のコンピュータのシステム設計」
  26. ^ 「JESmith、R。Uhlig(2005年8月14日)仮想マシン:アーキテクチャ、実装、およびアプリケーション、HOTCHIPS 17、チュートリアル1、パート2」(PDF)
  27. ^ Bensoussan、André; クリンゲン、チャールズT。; デイリー、ロバートC.(1972年5月)。「Multics仮想メモリ:概念と設計」ACMの通信15(5):308–318。CiteSeerX10.1.1.10.6731_ 土井10.1145 /355602.361306S2CID6434322_  
  28. ^ 「Multics実行環境」Multicians.org 2016年10月9日取得
  29. ^ Organick、Elliott I.(1972)。Multicsシステム:その構造の検討MITプレス。ISBN 978-0-262-15012-5
  30. ^ 最も重要な要件は、プログラムがAPF承認されていることです。
  31. ^ たとえば、優先メモリの使用を要求する
  32. ^ 「制御スワッピング(DONTSWAP、OKSWAP、TRANSWAP)」IBMナレッジセンターz / OS MVSプログラミング:許可アセンブラー・サービス・リファレンスSET-WTOSA23-1375-00。1990〜 2014年2016年10月9日取得

さらに読む

  • ヘネシー、ジョンL。; とパターソン、デビッドA。; コンピュータアーキテクチャ、定量的アプローチISBN 1-55860-724-2 

外部リンク