見出し画像

スワッピングとページングの違いを“動作”で理解しよう

2番目によく読まれている記事です。面接で聞かれてそうなことを記載しました。


✅ スワッピングとは何か?

スワッピングとは、メモリが逼迫したときにプロセス全体をディスクに退避させる動作のことです。 プロセスが使っていたすべてのメモリ領域(コード、ヒープ、スタックなど)を一時的にスワップ領域に書き出し、 実メモリを空けることで、他のプロセスに割り当てるためのスペースを確保します。

このとき、プロセスは一時的に停止状態になり、ユーザーからの応答が極端に遅くなることがあります。


✅ ページングとは何か?

ページングは、プロセスを止めることなく、使っていないメモリの一部分(ページ)だけをディスクに退避させる仕組みです。

プロセスはそのまま動作を続け、必要になったときにだけページをディスクから読み戻すようになっています。 これは日常的に発生している軽量な動作であり、ユーザーにとって影響はほとんどありません。


✅ 動作でイメージしよう(文章でのシミュレーション)

● ページングの動作イメージ

あなたがエディタを開いてコードを書いているとき、裏でブラウザを開きっぱなしにしているとします。 そのブラウザのタブの中で「10分以上操作していない」ものがあったとき、 OSは「これは今使ってないな」と判断し、その一部だけをディスクに退避します。

→ でも、あなたはエディタで作業を続けていて、そのままスムーズに操作できます。 → もしタブに戻ったときに少しだけ読み込みが発生する、それがページングの動作です。

● スワッピングの動作イメージ

あなたが大量の画像ファイルを開いて、メモリをほぼ使い切ってしまった。 そのとき、OSは判断します:「いま動いてないこのアプリ、まるごとディスクに避難させよう」。 そして、ブラウザ全体がスワップ領域に送られます。

→ タブに戻ったとき、数秒のフリーズ。 → ひどいときには、OS自体がガクガクになる。それがスワッピングの影響です。


✅ なぜ重要なのか?

現場で「サーバが重い」「アプリが落ちる」と言われたときに、 ページングとスワッピングの違いを理解していれば、

  • スワップ発生の確認

  • ボトルネックの特定

  • 再発防止のメモリ設計

などに活かすことができます。


✅ 最後に

「ページングとスワッピングの違いは?」という質問に、 単なる用語の定義ではなく「動作ベース」で語れるようになると、

“知っている”を超えて、“理解している”エンジニアになります。


いいなと思ったら応援しよう!

川村康弘(Yasuhiro Kawamura、Ted)@クラウド屋 おもしろきこともなき世を面白く 議論メシ4期生http://gironmeshi.net/ メンタリストDaiGo弟子 強みほがらかさと発散思考 外資系企業でインフラエンジニア