web-dev-qa-db-ja.com

差分スワッピングとページング

Process Memory Managementを参照した場合のSwappingPagingの違いは何ですか?

また、詳細情報を入手できるチュートリアルがある場合は、そのチュートリアルも参照してください。

23
nitin_cherian

スワッピングとは、プロセスアドレス空間全体、またはいずれにしても、共有できないテキストデータセグメントをスワップデバイスにコピーするか、1回で(通常はディスク)コピーして戻すことです。

一方、ページングとは、アドレススペースの1つまたは複数のページのコピーイン/コピーアウトを指します。特に、これははるかに細かい粒度です。たとえば、1 GB RAMアドレス空間に〜250,000の4 KBページがあります。

初期にはスワッピングが使用されていました。 DEC pdp-11時代Unix、1975-80 ish。あなたが知りたいこと、もっと知りたいことがあれば、私はライオンズ文書別名Unix 6th Edに関するライオンズの解説をお勧めします。ソースコード付き、John Lions、ISBN 1-57398-013-7?

「Unixは、すべてのタイムシェアリングシステムや一部のマルチプログラミングシステムと同様に、「プログラムスワッピング」(「ロールイン/ロールアウト」とも呼ばれます)を使用して、複数のプロセス間でメイン物理メモリの限られたリソース。」

ページング(Unix上)は、VAX-11/780にBSD(Berkeley Systems Distribution)とともに1980年頃に到着しました。

ページングは​​通常、ページごとのメモリ属性(アクセスなし、読み取り専用、読み取り/書き込み、実行なし、実行可能)、およびデマンドゼロで埋められたページ、コピーオンライトページなどのさまざまな仮想メモリ管理トリックにも関連付けられています。など。

ハードウェア的には、スワップはメモリ管理HWなしで実行できますが、初期のマシンはシンプルなメモリマッピングスキーム(ベースとバインド、またはシンプルな1レベルの固定サイズページマッピングテーブル(例:64 KBデータアドレススペースの分割)を採用していました。より大きな物理アドレス空間(256 KB ... 4 MB)の8、8KBページに)。

対照的に、ページングには、ページの粒度の仮想メモリページテーブルエントリが必要です。これは通常、ページの物理アドレス、有効、読み取り、書き込みなどのPTEビットをエンコードします。マシンは、自動的に(アプリケーションプログラムに対して透過的に)フェッチする必要もあります。各仮想アドレスをその物理アドレスにマップするために必要に応じてページテーブルエントリを解釈し、および/またはページフォールト例外を取得して、OSがページにアクセスできるようにしたり、I/Oをスケジュールして物理RAMにロードしたりできるようにします。

ハッキングハッピー!

43
Jan Gray

どちらの用語も、たとえば主流の学術メディアでは区別されると考えられていますが、実際には一部の著者が同義語として使用していることもあります。 DavidとSarah Harrisが作成したコンピューターアーキテクチャに関する優れた本(Digital Design and Computer Architecture)を引用するには、「物理ページをディスクに書き戻し、別の仮想ページで再読み込みすることを呼び出しますスワップなので、仮想メモリシステムのディスクはスワップスペース "と呼ばれることもあります。したがって、タイラーは実際に質問に正しく回答し、彼の回答はまったく反対投票されるべきではありません。

素晴らしい答え by Siddharth Teotia Quoraについて、これらの概念を理解するのに役立ちました:

スワッピングは、プロセス全体(そのアドレススペース)をメインメモリから何らかのセカンダリストレージ(通常はハードディスクまたはテープストレージ)にコピーする手順です。 。通常、これはCPUスケジューリングの結果として行われます。

[...]

ここで注意すべき最も重要なことは、プロセス全体がスワップイン/スワップアウトされることです。ここでは、プロセスのアドレス空間のどの部分がディスクにスワップバックされるかについて、細分性はありません。完全なプロセスイメージ全体がディスクにスワップバックされます。ページングとスワッピングの違いを理解しようとすると、これは非常に明確になります。

一方、ページングは、プロセスの物理アドレス空間を非連続にすることができるメモリ割り当て手法です。言い換えれば、プロセスは利用可能な場所であればどこでもメモリを割り当てることができ、割り当ての単位はページまたはフレームのサイズです(通常は4KBですが、システムに依存します)。メインメモリで空きフレームが利用可能な場合は常に、プロセスに属する物理ページをロードでき、プロセスのページテーブルが論理アドレス(論理ページ番号)のマッピングを処理して、メモリ内の物理フレームを修正します(または隣接していない場合があります)。

[...]

詳細については、彼の回答全体を参照してください。 https://www.quora.com/What-is-difference-between-paging-and-swapping

2
leonheess

Janは詳細を説明する素晴らしい仕事をしましたが、ここで鳥瞰図の違いだけが必要な場合は、それぞれが主な違いを示す太字のフォントに気づきます。

ページング:個別のメモリセグメント、またはページがスワップ領域/スワップパーティションとの間で移動されたとき

Swapping:は、全体process esがスワップされ、スワップ領域/スワップパーティションとの間で移動されたときです

1
grepit

ページングは​​アクティブプロセスの場合に適用され、アクティブプロセスのみがページングを実行できます。スワッピングは非アクティブなプロセスによって行われます

0
Venkat Naidu