Linux:「デフォルトページエラーページング」と「手動でスワッピングを有効にする」の違い[閉じる]

Linux:「デフォルトページエラーページング」と「手動でスワッピングを有効にする」の違い[閉じる]

Linuxシステムでは、次のコマンドを使用してスワップを有効にできます。

sudo fallocate -l 500M /data/swapfile
sudo chmod 600 /data/swapfile
sudo mkswap /data/swapfile
sudo swapon /data/swapfile

ただし、この機能が有効になっていない場合でも、ページがメモリにない場合、カーネルは引き続きページを表示します。

スワップファイルを設定しなくても、マシンでコマンドを実行してsar -B 1 30確認できます。

03:08:40 AM  pgpgin/s pgpgout/s   fault/s  majflt/s  pgfree/s pgscank/s pgscand/s pgsteal/s    %vmeff
03:08:41 AM      0.00      0.00      3.00      0.00     44.00      0.00      0.00      0.00      0.00
03:08:42 AM      0.00      0.00     19.00      0.00     30.00      0.00      0.00      0.00      0.00
03:08:43 AM      0.00      0.00      0.00      0.00      3.00      0.00      0.00      0.00      0.00
03:08:44 AM     24.00      0.00      2.00      1.00      7.00      0.00      0.00      0.00      0.00
03:08:45 AM    364.00     60.00     18.00      3.00      4.00      0.00      0.00      0.00      0.00
03:08:46 AM    140.00      0.00    392.00      2.00    243.00      0.00      0.00      0.00      0.00

しかもメイプルターこれにより、ディスク間ページングデータがトリガされます。

私の質問は次のとおりです

  • オペレーティングシステムには2種類のスワップがあると言えますか?
  • これらの2つのメカニズムはどのように異なる動作をしますか?
  • ページングメカニズムが常に機能している場合、なぜスワップを手動で有効にするのですか?

わかりました何人かの人々は言う:

スワップとは、プロセスアドレス空間全体または少なくとも共有できないテキストデータセグメントをスワップデバイスまたは逆(通常はディスク)に一度にコピーすることを意味します。

ページングとは、アドレス空間の1つ以上のページを内部/外部にコピーすることを意味します。特にこれはより細かいレベルです。たとえば、1 GB RAM アドレス空間には約 250,000 個の 4KB ページがあります。

しかし本ではLinux仮想メモリマネージャについて、Linuxではそうではないようです。

厳密に言えば、Linuxはスワッピングを行いません。これは、「スワップ」とは、プロセスアドレス空間全体をディスクにコピーすることを意味し、「ページング」は個々のページをコピーすることを意味するからである。 Linuxは実際に最新のハードウェアでサポートされているページングを実装していますが、伝統的に議論やドキュメントではこれをスワップと呼びました。 Linuxでは、単語の使用と一貫性を維持するために、これをスワップともいいます。

誰かがこれを説明できますか?ありがとうございます!

答え1

しかもメイプルターこれにより、ディスクのデータページングがトリガされます。

逆に、主なエラーはページエラーであり、ページ付けによってのみ解決できます。存在するディスクのデータ。

オペレーティングシステムには2種類のスワップがあると言えますか?

全く違うわけではありません。呼び出し(ページを破棄するためにメモリの内容を「他の場所」にコピー)さまざまなバックアップストレージを使用できます。メモリのページにはさまざまなコールアウトターゲットがあります。マッピングされたファイルは通常独自のバックアップリポジトリであり、他のほとんどのページではバックアップリポジトリにスワップファイルまたはパーティションが必要です。交換は後者を意味します。カーネルがメモリページを解放する必要があるときにファイルから変更されていないページを解放したい場合は、必要に応じてファイルからページを復元できることを知っているので、簡単に削除できます。ファイルの変更されたページを削除する必要がある場合は、ファイルが読み取り/書き込みにマップされ、共有されていない場合、ページは再度削除される前にファイルに書き込まれ、カーネルはファイルからページを回復できることがわかります。 。他のものには別の形式の保存が必要で、そうでなければ捨てることはできません。

これらの2つのメカニズムはどのように異なる動作をしますか?

探す。

ページングメカニズムが常に機能している場合、なぜスワップを手動で有効にするのですか?

ほとんどは上記を参照してください。スワップの目的は、まだ独自のバックアップストアがないページにバックアップストアを提供することです。

また、見ることができますLinuxで仮想マシンにスワップスペースが必要なのはなぜですか?

答え2

どちらの引用も、歴史的/元の意味が交換されています。ウィキペディアページング:

1960年代には、スワッピングが初期の仮想メモリ技術でした。一つ ショー全体1つはRAMからディスクに「スワップアウト」(または「スワップアウト」)され、もう1つはスワップイン(またはスワップイン)されます。

インテルマニュアルは明確です。

オペレーティングシステムまたはランチャーでページングが正しく実装されている場合物理メモリとディスク間のページ交換これはプログラムの正しい実行には透過的です。

(16ビット仮想8086モードでも透過的に動作すると説明します...)

AMDには非常に読みやすいセクションもあります。

最後に、システムソフトウェアを使用できます。ページングメカニズムマッピング 複数の大規模仮想アドレス空間より小さな物理メモリを使って。各アプリケーションは、フル32ビットまたは64ビットの仮想アドレス空間を使用できます。システムソフトウェアは、最も一般的に使用される仮想メモリページを辞書にマッピングします。利用可能な物理メモリページプール。最も一般的に使用されていない仮想メモリページは次のとおりです。交換するハードドライブに。このプロセス 要求時に仮想メモリのページング

設定がないことは考慮しません。ハードドライブと交換。この場合、LFUはファイルを書き換えるか(利用可能な場合)、ファイルを削除する必要があります(きれいな場合)。


この新しい64ディレクティブは多少関連しています。

SWAPGS命令は、システムソフトウェアにシステムデータ構造へのポインタをロードする簡単な方法を提供します。 SWAPGS は、SYSCALL コマンドまたは割り込みまたは例外によってシステム・ソフトウェア・ルーチンに入るときに使用できます。

...

このスワップにより、システムカーネルソフトウェアはGSセグメントカバレッジプレフィックス 期間メモリ参照

いつもこれに戻る分割:

スプリットは、ソフトウェアとデータの再配置と保護に優れた柔軟性を提供しますが、メモリの分離と再配置を処理するには、スプリットを使用する方が効率的です。ソフトウェアとハ​​ードウェアを組み合わせたページングサポートする。その結果、ほとんどの最新のシステムソフトウェアは分割機能をバイパスします。しかし、 セグメンテーションを完全に無効にすることはできません。、長距離モードシステムソフトウェアを実装するには、分割メカニズムを理解することが非常に重要です。


したがって、RAMにはページごとのスワッピングがあり、スワッピングのコンテキスト切り替えの側面があると言えます。これは60年代の実装に反映されましたが、最新のSWAPGS命令にも反映されました。

関連情報