web-dev-qa-db-ja.com

スラッシングとは何ですか?なぜ発生するのですか?

オペレーティングシステムでは、スラッシングはメモリ管理に関連するものです。スラッシングが発生するのはなぜですか?どうすればそれを防ぐことができますか?

ウィキペディアを確認しました(ただし、簡単な理解が必要です)。

31
user2803850

仮想メモリ空​​間を実装するオペレーティングシステムでは、プログラムは、システムが所有するRAMの実際の量よりもはるかに大きいアドレス空間からメモリを割り当てます。 OSは、どのプログラムの「メモリ」が実際のRAMにあるかを決定します。 「外出中」に物を保管する場所が必要です。これは「スワップスペース」と呼ばれるもので、OSは必要に応じて物を出し入れします。 itがCPU時間の主な消費者であるようにこのスワッピングアクティビティが発生している場合、効果的にスラッシングしています。実行するプログラムを少なくする、メモリをより効率的に使用するプログラムを作成する、システムにRAMを追加する、または場合によってはスワップサイズを増やすことで、それを防ぎます。

(仮想アドレス空間から)要求されたメモリアクセスがRAMにあるものにマップされない場合、ページフォールトが発生します。次に、要求された新しいページをスワップからRAMに移動できるように、RAMからページをスワップに送信する必要があります。ご想像のとおり、RAM読み取りの2つのディスクI/Oのパフォーマンスはかなり低い傾向があります。

36
aet

スラッシング CPUが実行する「生産的」作業が少なく、「スワップ」が多い状態です。 CPUはページのスワップでビジーであるため、必要なだけユーザープログラムに応答できません。 それが発生する理由私たちのシステムでは、メモリ内のページが多すぎて、各ページが他のページを参照しているときにスラッシングが発生しますページ。実メモリは、すべてのページを保持するために容量が短くなるため、「仮想メモリ」を使用します。実行中の各ページが現在実メモリ(RAM)にないページを要求する場合、仮想メモリにいくつかのページを配置し、RAMに必要なページを調整します。このタスクの実行でCPUが非常にビジーである場合、スラッシングが発生します。

11
Sehrish Akram

この質問はずっと前に聞かれたことを知っていますが、他の人と情報を共有したかっただけです。

スラッシングという用語は、実際には仮想メモリに関連しており、オペレーティングシステムがプロセスに追加のメモリまたはスペースを提供するために使用します。スラッシングという用語が実際に意味するのは、プロセスをメモリにロードする準備ができたときに、プロセスの数ページまたは一部のページだけが実際の物理メモリにロードされ、残りはスワップにあるということです-space(仮想メモリまたはディスク)。

プロセスが実行する必要があるページがメモリにロードされていない場合、ページフォールトを生成し、OSにページを置き換えるよう要求します。ここで、プロセスは実行を再開します。

場合によっては、OSによって置き換えられたページがプロセスによって再び必要とされるため、OSに再度メモリにロードするように要求し、他のページを置き換えるなどします。プロセスが実行されていないため、CPU使用率は0ですが、ディスクの読み取りと書き込みはピークに達しています。

私たちのOSは、CPU使用率が低下するとメモリ内の別のプロセスを開始するように設計されています。最初のプロセスがビジーであるため、次のプロセスはすぐに待機する必要があります。 CPUが使用されていないか、0であるため(この例では)、OSは別のプロセスを開始し、同じことが起こります。

したがって、CPU使用率は極端な最小レベルまで低下しますが、プロセスは読み取りと書き込み(ページのスワップ)でビジーになります。これはスラッシングと呼ばれます!

7
user4435781

論理アドレスはCPUによって生成され、実際には実際のメモリロケーションではありませんが、プロセスはそれが実際のメモリロケーションであると考えます。完全なプロセスは、論理メモリのページに格納される異なる部分に分割されますが、その時点で必要な実行に実際のメモリが割り当てられるのはサブ部分または一部のページのみですが、他のページは論理メモリに存在し、割り当てられません物理アドレス。ロードするために他のページが必要で、割り当てるために十分なフレームがない場合、ページフォールトを引き起こす割り込みが発生し、フレームからいくつかのページを削除し、必要な現在のページをロードするための置換アルゴリズムが必要です。

次に、ロードする必要があるすべてのページの要件を満たすのに十分なフレームがないと仮定します。その後、削除されたフレームは再びロードする必要があり、再びページフォールトが発生します。これはループに入ります。一方、プロセスは実行できないため、CPU使用率は低くなり、ディスパッチャーはCPUにより多くのプロセスをロードし、シナリオをさらに悪化させます。

このプロセスはスラッシングとして知られています。スラッシングは通常、必要以上に十分なフレームがプロセスに割り当てられていない場合に発生します。

スラッシングを防ぐ方法:

  1. 中期スケジューラーに、スラッシングから回復しすぎるプロセスの一部をスワップアウトするように指示します
  2. しきい値を超えてプロセスをロードしないようにディスパッチャに指示する
3
Sneh Shikhar

仮想メモリシステムでは、スラッシングとは、メモリとハードディスクの間でデータのページが過度にスワップされ、アプリケーションの応答が遅くなることです。仮想メモリ機能は、ページの使用状況を追跡し、頻繁に使用されるページを可能な限りメモリに保持します。

0
ansar khan

スラッシングとは、CPUが実行する「生産的な」作業が少なく、「スワップ」が多い状態です。 CPUはページのスワップでビジーであるため、必要なだけユーザープログラムに応答できません。発生理由:システムでは、メモリ内のページが多すぎ、各ページが別のページを参照しているときにスラッシングが発生します。実メモリは、すべてのページを保持するために容量が短くなるため、「仮想メモリ」を使用します。実行中の各ページが現在実メモリ(RAM)にないページを要求する場合、仮想メモリにいくつかのページを配置し、RAMに必要なページを調整します。このタスクの実行でCPUが非常にビジーである場合、スラッシングが発生します。スラッシングを解決するには、以下の提案のいずれかを実行できます。*コンピューターでRAMの量を増やします。ファイル。

0
abi

メモリスラッシングは、メモリが物理メモリよりも多く割り当てられ、システムで使用できない場合に発生する問題です。何がスラッシングしているのかを知るには、まずスワッピングとページフォールトに注意する必要があります。ページフォールトとスワッピング:-ページフォールトは、(仮想アドレススペースから)要求されたメモリアクセスがRAMにあるものにマップされない場合に発生します。次に、RAMからスワップにページを送信する必要があります。これにより、要求された新しいページをスワップからRAMに移動できます。これにより、ディスクI/Oが2つになります。/Oは、メモリアクセスと比較して非常に遅いです。

メモリスラッシングとは何かを知るには、次のリンクを参照してください:

http://www.firmcodes.com/memory-thrashing-in-operating-system/

0
Mohit Rohilla