スワップ・スラッシングとは(全体像)
メモリ(物理メモリ)が足りなくなったとき、OSは今すぐ使わないデータをディスクへ一時的に逃がして空きを作る。これがスワップだ。
身近にたとえると、机の上(メモリ)と引き出し(ディスク)の関係。机が狭くなったら、当面使わない書類を引き出しにしまって作業スペースを空ける——これがスワップアウト。また使うときに引き出しから出すのがスワップイン。
ただし、引き出しの出し入れは机に置くより時間がかかる。これが頻発すると、出し入ればかりで仕事が進まなくなる。この状態がスラッシングだ。
押さえるのは、スワップはあくまで緊急避難で、ディスク経由なので遅いということ。
詳しく:スワップの動きとスラッシングだけ覚えれば戦える
ここが記事の心臓部。まずスワップの2つの動きを見ましょう。
スワップの2つの動き
| 動き | 意味 |
|---|---|
| スワップアウト | 使っていないデータをメモリからディスクへ逃がす |
| スワップイン | 必要になったデータをディスクからメモリへ戻す |
ここで一番のひっかけが「スワップは高速」という誤解。スワップはディスクを使うので、メモリより桁違いに遅い。だから多用すると性能が落ちる。
次に、それが行きすぎた状態がスラッシング。
スラッシングのしくみ
| 段階 | 起きること |
|---|---|
| ① メモリ不足 | データをディスクへ逃がし始める(スワップアウト) |
| ② すぐ必要に | 逃がしたデータをまた戻す(スワップイン) |
| ③ 悪循環 | 出し入ればかりでCPUが待たされ、全体が急に重くなる |
これを防ぐ考え方がワーキングセット。プロセスが今よく使うデータのまとまりのことで、これが物理メモリに収まっている間は快適。収まらなくなった瞬間にスラッシングが起きる。
スラッシングはバグではなく、メモリ不足という資源の問題。だから根本対策はメモリの増設。ほかに、不要なプロセスを止める、メモリリークを直す、といった対処がある。
わかりやすく言い換えると
要するに、机と引き出しでイメージするとラクです。
①スワップアウト … 当面使わない書類を引き出しにしまう(机を空ける)
②スワップイン … また使う書類を引き出しから出す
③スラッシング … 机が狭すぎて、出し入ればかりで仕事が進まない状態
つまり、「スワップは遅い緊急避難」「出し入れ地獄がスラッシング」、この2点が試験の急所です。
試験のツボ
🔴 一番出る:スワップアウトとスワップイン
①スワップアウト=メモリからディスクへ逃がす
②スワップイン=ディスクからメモリへ戻す
🔴 次に出る:スラッシング
①スワップが過度に頻発して性能が急落する状態
②原因はメモリ不足(バグではない)・根本対策はメモリ増設
🟡 押さえると安定:スワップの速さとワーキングセット
①スワップはディスク経由なのでメモリより桁違いに遅い
②ワーキングセット(今よく使うデータ)がメモリに収まれば快適
よくある間違い
①「スワップは高速だから多用してよい」→ ✗ スワップはディスク経由でメモリより桁違いに遅い。多用は性能低下を招く。
②「スラッシングはプログラムのバグである」→ ✗ 原因はメモリ不足という資源の問題。根本対策はメモリ増設。
③「スワップアウトはディスクからメモリへ戻すことである」→ ✗ 逆。逃がすのがスワップアウト、戻すのがスワップイン。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(スワップアウトとスワップイン)
スワップに関する次の記述のうち、正しいものはどれか。
- スワップアウトもスワップインも、どちらもメモリからCPUへ命令を送る操作のことだとされている
- スワップアウトは画面を消すこと、スワップインは画面を点けることだとされているものである
- スワップアウトはメモリからディスクへ逃がし、スワップインはディスクからメモリへ戻すことだ
- スワップアウトはデータを完全に削除することで、二度と戻せないものだとされているものである
解答は 3 ですよ。
スワップアウトは、使っていないデータをメモリからディスクへ逃がすこと。スワップインは、必要になったデータをディスクからメモリへ戻すことですね。逃がす・戻すの方向をセットで押さえましょう。
選択肢1の「CPUへ命令」、選択肢2の「画面の消灯・点灯」、選択肢4の「完全に削除」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | CPUへの命令送信ではない |
| 2 | ✗ | 画面の操作ではない |
| 3 | ✓ | アウトは逃がす・インは戻す |
| 4 | ✗ | 削除ではなく一時退避 |
オリジナル問題2(スラッシング)
スラッシングに関する次の記述のうち、正しいものはどれか。
- スラッシングはスワップが過度に頻発し、ディスクの出し入れ待ちで性能が急落する状態である
- スラッシングはメモリが余っているときに必ず起きる、メモリ過剰の症状だとされているものだ
- スラッシングはプログラムのバグが原因で、コードを直せば必ず消える現象だとされているものだ
- スラッシングは処理がいつもより速くなる状態のことで、歓迎すべきものだとされているものである
解答は 1 ですよ。
スラッシングは、スワップが過度に頻発して、ディスクの出し入れ待ちで性能が急落する状態ですね。原因はメモリ不足という資源の問題なので、根本対策はメモリの増設です。
選択肢2の「メモリ過剰」、選択肢3の「バグが原因」、選択肢4の「速くなる」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 過度なスワップで性能が急落する |
| 2 | ✗ | メモリ不足で起きる |
| 3 | ✗ | バグではなく資源不足 |
| 4 | ✗ | 速くならず急落する |
オリジナル問題3(スワップの速さ)
スワップの速さに関する次の記述のうち、正しいものはどれか。
- スワップはメモリより高速なので、できるだけ多く使うのがよいものだとされているものである
- スワップはディスクを使うため、メモリより桁違いに遅く、多用すると性能が落ちるものである
- スワップはメモリとまったく同じ速さで、使っても性能には影響しないものだとされている
- スワップは音を鳴らす機能のことで、メモリの速さとは関係がないものだとされているものだ
解答は 2 ですよ。
スワップはディスクを使うので、メモリより桁違いに遅いですね。だからスワップはあくまで緊急避難で、多用すると性能が落ちます。
選択肢1の「高速だから多用」、選択肢3の「メモリと同じ速さ」、選択肢4の「音を鳴らす機能」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 速くないので多用は不可 |
| 2 | ✓ | ディスク経由でメモリより遅い |
| 3 | ✗ | メモリと同じ速さではない |
| 4 | ✗ | 音を鳴らす機能ではない |
まとめ
押さえどころ
- 🔴 スワップアウト/イン = 逃がすのがアウト(メモリ→ディスク)、戻すのがイン(ディスク→メモリ)。
- 🔴 スラッシング = スワップが過度に頻発して性能が急落する状態。原因はメモリ不足、根本対策はメモリ増設。
- 🟡 スワップの速さとワーキングセット = スワップはディスク経由で遅い。よく使うデータ(ワーキングセット)がメモリに収まれば快適。
次に学ぶ
執筆: SikakuQuest編集部