|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。
スラッシング (Thrashing) とは、仮想記憶環境下において物理メモリが不足し、オペレーティングシステムがディスクとの入出力に処理能力のほとんどを奪われてしまった状態を指す。 == 概要 == 多くのメモリを必要とするアプリケーションを実行することによって物理メモリ(物理ページ、一時記憶)を大量に必要として、ページイン(ディスクからページを読み込む)とページアウト(ディスクにページを書き込む)が高頻度に発生し、オペレーティングシステム (OS) がページング(ページイン、ページアウトの両者を指す)に処理能力を費やしてしまい、アプリケーションの動作を妨げてしまっている状態になる。この状態から脱出するには、メモリを大量消費しているアプリケーションを凍結または終了させるしかないが、コマンドの受付すらも困難な状態であることが多い。 多くの実装において、仮想記憶のスワップ領域の本体〔スワップファイル、ページファイル、スワップパーティション、ページング領域など名称は実装により異なる。〕は、ハードディスク上に作られたほぼ連続した領域であることが多い〔ただし、Windowsのような動的にスワップ領域を確保・拡大できる実装では連続性はあまり期待できない。〕。しかし、この領域の連続性は仮想記憶ではアクセス場所を特定するための処理以外ではあまり大きな意味を持たない。仮想記憶を保存している領域へのアクセスは、仮想記憶へのページ割り当てが開始され始めた時点を除き、運用状態ではほぼランダムなものになる。このため、ページングはハードディスクにとって最大のアクセスタイムを伴う「常にシーク動作を伴う読み書き」であり、それを実行するのに必要な時間は高速なものでも数ミリ秒、一般的なハードディスクでは十数ミリ秒から数十ミリ秒必要とする。これはRAMへのアクセス時間の106 - 107倍であり、それによりスラッシング中においてプログラム(OSを含む)の実行速度は極度に低下する。このため、スラッシング状態に陥らないことがOSの可用性確保上重要な課題となる。 多くのUNIXではユーザーが確保できるメモリ量を制限する機能がある。資源の平等な分配はもちろん、管理者がコンピューターのコントロールを失うという最悪の事態を避けるためでもある。Microsoft Windows NT系のOSでは、ページファイルを使用しなければメモリを確保できない状態になると、システムコールのメモリ確保関数は、ページングによってメモリが確保されるまで要求を受け付けずエラーにし、理由として物理メモリに空きがないことを通知し、なるべくページファイルを使わないようアプリケーションに促す。アプリケーションはこの情報を元に不必要なメモリをOSに返却したり、あるいはメモリを必要とした操作を却下することができる。もちろん、ページングが成功するまで待機し、仮想記憶によって取得されたメモリ空間を利用することもできる。しかし、この方法は最悪の場合OS自体がページアウトされる危険性があり、システムの著しい速度低下を招き、ユーザーには歓迎されない結果をもたらすだろう。 近年においてスラッシングは比較的容易に回避可能な現象となった。理由としては、 * メモリの低廉化・高密度化によって必要十分な物理メモリを準備することができるようになった * 共有ライブラリによってアプリケーションのメモリ利用効率が向上した * よりよいワーキングセット・ページ置換アルゴリズムの採用によって仮想記憶を実現する手法が効率的になった * ハードディスクの記録密度向上によりI/O時間が高速化された * バスマスタI/OによりCPU時間を消費せずディスクI/Oができるようになった * カーネルのマルチスレッド化によってページフォールトを起こしたプロセス以外のプロセスをブロックしなくなった * 積極的なページのクリーニングによりディスクI/Oを伴わないページ獲得が期待できるようになった 等があげられる。 ただし、上記の理由としてあげた要件を満たさない場合や、例えば物理メモリが1GBしかないのに2GBのメモリを使うアプリケーションを動かした等の場合は、依然としてスラッシングが起きうる。近年は高画素の画像データや動画、3Dゲームなど、一般向けの用途でもメモリ消費が増加しており、スラッシングの発生率は再び増加傾向にあると考えられる。 スラッシングを完全に予防するには、仮想記憶を使わないという戦略がある。多くのリアルタイムオペレーティングシステムが仮想記憶を使わないのは、スラッシングはもとより、ページングによる遅延を避けるためである。一般的なヒープ管理アルゴリズム〔GNU mallocアルゴリズムでは適用できない場合がある。〕ではメモリのフラグメンテーションによって消費される使用されているメモリと使用されていないメモリの合計は、使用されているメモリの2倍を超えない。それは、使用されていないメモリ断片が使用したいメモリ断片よりも大きければ、その使用されていないメモリ断片は使用されるからである。よって使用するメモリ見込み量の2倍以上物理メモリがあれば仮想記憶を準備する必要はない。ただし、メモリオーバーフローが全く起きえない、またはメモリオーバーフローのエラー処理を全てのプログラムが適切に行う前提であり、そもそも適切な処理方法が難しいアプリケーションの存在も考慮した上で慎重に選択すべき戦略である。スラッシングではないただのページングであれば、リアルタイム性を重視しないOSでは問題にならない。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「スラッシング」の詳細全文を読む スポンサード リンク
|