コース一覧
OS入門:プロセス・メモリ・ファイルシステム
ページングとスワップ

OS入門:プロセス・メモリ・ファイルシステム

OSがCPU・メモリ・ストレージをどのように管理しているかを、プロセス、スレッド、仮想メモリ、ファイルシステム、同期と並行性から体系的に学びます。アプリケーションの裏側で何が起きているかを説明できるようになります。

1
OS とは
0. コンピューターとOSの役割15分
1. OSの歴史(バッチ→マルチタスク→マルチユーザー)15分
2. カーネルとユーザーランド15分
3. システムコールの仕組み15分
4. Linux / macOS / Windows のアーキ比較15分
2
プロセスとスレッド
0. プロセスとは15分
1. スレッドとプロセスの違い15分
2. コンテキストスイッチ15分
3. スケジューラとアルゴリズム15分
4. プロセス間通信(IPC)15分
3
メモリ管理
0. メモリ階層(レジスタ→キャッシュ→RAM→ディスク)15分
1. 仮想メモリ15分
2. ページングとスワップ15分
3. mmap とメモリマップトファイル15分
4. ガベージコレクション概要15分
4
ファイルシステム
0. ファイルシステムとは15分
1. i-node とディレクトリ15分
2. ext4 / APFS / NTFS の違い15分
3. ジャーナリングと耐障害性15分
4. パーミッションと所有者15分
5
同期と並行性
0. レースコンディション15分
1. Mutex と Semaphore15分
2. デッドロック15分
3. 非同期と並行15分
4. イベントループと epoll15分

OS入門:プロセス・メモリ・ファイルシステム

01コンピューターとOSの役割
02OSの歴史(バッチ→マルチタスク→マルチユーザー)
03カーネルとユーザーランド
04システムコールの仕組み
05Linux / macOS / Windows のアーキ比較
06プロセスとは
07スレッドとプロセスの違い
08コンテキストスイッチ
09スケジューラとアルゴリズム
10プロセス間通信(IPC)
11メモリ階層(レジスタ→キャッシュ→RAM→ディスク)
12仮想メモリ
13ページングとスワップ
14mmap とメモリマップトファイル
15ガベージコレクション概要
16ファイルシステムとは
17i-node とディレクトリ
18ext4 / APFS / NTFS の違い
19ジャーナリングと耐障害性
20パーミッションと所有者
21レースコンディション
22Mutex と Semaphore
23デッドロック
24非同期と並行
25イベントループと epoll

OS入門:プロセス・メモリ・ファイルシステム

ページングとスワップ

「必要になった分だけ」に、誰が気づくのか

確保しただけで一度も触っていない領域には、RAM が割り当てられていませんでした。ではプログラムがその領域を初めて触った瞬間、誰がそれに気づくのでしょうか。プログラム自身は普通に代入文を実行しただけで、何も申告していません。

気づくのは CPU です。翻訳表を引きにいって「この範囲には物理アドレスが結びついていない」と分かると、CPU は命令の実行を途中で止め、OS を呼び出します。これが ページフォールト です。OS は空いている RAM を 1 つ選んで表に書き込み、止めた命令を最初からやり直させます。プログラムから見ると、何事もなく代入が終わったように見えます。

つまり「使うまで割り当てない」は、事前の申告ではなく、触った瞬間の割り込みで実現されています。

4KB ずつ束ねる理由

翻訳表は 1 バイトごとには作れません。8GB 分の対応を 1 バイト単位で持つと、表そのものが RAM を食い潰します。そこで仮想側も物理側も ページ という固定サイズの塊にまとめ、ページ単位で対応づけます。多くの環境で 4KB です。

4KB なら 8GB でも 200 万行程度に収まります。代わりに、1 バイトだけ使いたいときでも 4KB が丸ごと割り当てられます。この端数の無駄を承知のうえで、表を現実的な大きさに抑えているわけです。

足りなくなったら、使っていないものを追い出す

RAM が埋まってくると、OS は当分使われそうにないページをディスク上の スワップ領域 へ書き出し、その物理ページを空けます。追い出されたページを後から触ると、またページフォールトが起き、今度はディスクから読み戻されます。

どれを追い出すかは、素直に考えれば「最後に使われたのが一番古いもの」です。この方針を LRU と呼びます。ただし全ページの最終アクセス時刻を正確に記録し続けると、記録のコストのほうが高くつきます。実際の OS は、ハードウェアが自動で立てる参照ビットを定期的に見て回り、最近触られていないものを近似的に選びます。

追い出しすぎると、何も進まなくなる

困るのは、追い出したページがすぐまた必要になる場合です。読み戻すために別のページを追い出し、そのページもすぐ必要になり、を延々と繰り返します。RAM の 100 ナノ秒に対してディスクは 10 万ナノ秒なので、この状態に入るとシステムは体感で止まります。スラッシング と呼びます。

同じページフォールトでも、空いている RAM を表に書き足すだけで済むものと、ディスクから読み戻さないと進めないものでは重さが桁違いです。後者をメジャーフォールトと呼びます。/proc/vmstat の pgmajfault が増え続けているなら、スワップに手を出している証拠です。

ターミナル

vmstat 1

si と so の列がスワップの出入りです。ここが常に 0 なら平穏で、値が立ち続けているならスラッシングを疑います。DB サーバーで vm.swappiness=1 を設定してスワップをほぼ止めるのは、際限なく遅くなるくらいなら潔く落ちてほしい、という判断です。いつ返るか分からないシステムは、止まっているのと大差ありません。

このレッスンに出てくる用語

意味があいまいなまま進んだ語は、ここから読み直せます。

  • ビット2進数の1桁。0 か 1 のどちらか
  • サーバークライアント(ブラウザなど)がリクエストを送り、サーバーがレスポンスを返す。
  • 判断YES/NO 分岐を表す菱形
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/27·更新 2026/08/26

関連レッスン

  • mmap とメモリマップトファイル

    ファイルを仮想メモリ空間に貼り付ける mmap で、I/O をポインタ操作に変える仕組みと、共有メモリや実行ファイル読込みなど現代 OS での使われ方を解説します。

  • ガベージコレクション概要

    不要になったメモリをランタイムが自動解放するガベージコレクションの仕組みを、参照カウントやマークアンドスイープなど主要アルゴリズムの違いで解説します。

  • ファイルシステムとは

    ディスク上の生のバイト列を人間が扱えるファイルとディレクトリへ組織化するファイルシステムの役割を、何を解決しているかという視点から解説します。

  • レースコンディション

    複数スレッドが同じ資源を同時に変更し実行順で結果が変わるレースコンディションの正体と、アトミック操作やロックで防ぐ具体策を実務目線で解説します。

分からないところは Tap (AI先生) に質問できます

24 時間いつでも、あなたのレベルに合わせて日本語で答えます。