スワッピングとは

スワッピングは、仮想記憶方式を採用したオペレーティングシステム(OS)において、主記憶装置(RAM)と二次記憶装置(ディスク)の間で、プログラムやデータの全体または一部(ページ)を一時的に入れ替える操作のことであり、RAM容量以上の大きなプログラムの実行や、同時に多数のプロセスを実行するために、利用されていないデータや優先度の低いプログラムをディスクに退避させ、必要なデータをRAMに読み込むための、メモリ管理における基本的な機能のことです。

スワッピングの概要とページングとの関係

スワッピング(Swapping)という言葉は、広義にはRAMとディスク間のデータ入れ替え全般を指しますが、現代のOSにおいては、その実行単位によって「プロセス全体のスワッピング」と「ページ単位のスワッピング(ページング)」の二つの意味合いで使われます。

1. 仮想記憶とスワッピングの必要性

コンピュータシステムのRAM容量には物理的な限界があります。しかし、OSは、この物理的なRAM容量よりも大きなアドレス空間(仮想アドレス空間)を各プロセスに提供し、あたかも広大なメモリがあるかのように見せかけます。これが仮想記憶です。

スワッピングは、この仮想記憶を実現する基盤技術であり、RAMが満杯になった際に、CPUに利用されていない領域をディスクに退避させることで、RAMに空き領域を作り出します。

2. ページング(ページスワッピング)

現代のOSのほとんどは、メモリをページという固定サイズの小さなブロックに分割し、このページ単位で入れ替えを行います。

  • ページイン(Page In): プログラムがアクセスしようとしたデータがディスク上にある場合に、そのページをRAMに読み込む操作。
  • ページアウト(Page Out): RAMが不足した場合に、現在使われていない、あるいは優先度の低いページをディスクのスワップ領域(またはページファイル)に書き出す操作。

広義のスワッピングは、このページインとページアウトの総称として用いられます。

スワッピングの種類

1. プロセススワッピング(Process Swapping)

初期の仮想記憶システムで用いられた、プロセス全体を単位としてメモリ間で入れ替えを行う方式です。

  • スワップアウト: 実行中のプロセス全体をRAMからディスクに退避させます。
  • スワップイン: ディスクに退避されていたプロセス全体をRAMに読み込み直し、実行を再開します。

この方式は、プロセス全体を移動させるため、I/Oにかかる時間が長く、効率が悪いため、現在ではほとんど使用されません。

2. デマンドページング(Demand Paging)

現代のOSで主流となっている方式で、ページ単位で必要に応じて入れ替えを行う方式です。

  • デマンド(要求): プロセスが実際にそのページを必要としてアクセスしたとき(ページフォールトが発生したとき)に初めてページインが行われます。
  • 利点: プログラム全体のうち、実際に実行に必要な部分(ワーキングセット)だけをRAMに置けば済むため、メモリの利用効率が格段に向上します。

スワッピングと性能への影響

スワッピング(特にページング)は、メモリ不足を補うための重要な機能ですが、過度な発生はシステム性能に深刻な悪影響を及ぼします。

1. ディスクI/Oの遅延

RAM(電子回路)とディスク(機械的またはフラッシュメモリ)のアクセス速度には大きな差があります。ページイン/アウトが発生するたびに、CPUは低速なディスクI/Oの完了を待機しなければならないため、処理が中断され、システム全体の応答性が低下します。

2. スラッシング(Thrashing)

スワッピングが過度に頻繁に発生し、CPUの処理時間の大部分がディスクI/Oの待機に費やされてしまう状態をスラッシングと呼びます。

この状態に陥ると、システムは実質的に処理を停止した状態に近くなり、システムの利用効率が極端に悪化します。スラッシングを防ぐためには、RAM容量を増強する、または同時に実行するプロセス数を制限するなどの対策が必要です。

スワッピングは、システムのメモリを論理的に拡張する上で不可欠な機能ですが、その発生頻度をいかに低く抑えるかが、OSのメモリ管理における重要な課題となっています。

関連用語

スラッシング | 今更聞けないIT用語集
メモリリーク | 今更聞けないIT用語集
ITアドバイザリー/情報技術支援

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。