コース一覧
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入門:プロセス・メモリ・ファイルシステム

ファイルシステムとは

ディスクは memo.txt という名前を知らない

SSD も HDD も、装置としてできることは「何番目のブロックを読め」「何番目のブロックに書け」の 2 つだけです。4KB のブロックが 0 番から順に並んだ、ひたすら長い配列だと思ってください。名前という概念はどこにもありません。

一方こちらは cat /home/alice/memo.txt と打ちます。この文字列を、何番のブロックを読めばよいかという数字へ変換する。それがファイルシステムの仕事です。

対応表も、同じディスクの中に置くしかない

名前と番号の対応表を RAM だけに持つと、電源を切った瞬間に消えます。翌朝には中身が読み出せなくなるので、対応表もディスクへ書かなければなりません。ファイルシステムは、ブロックの一部を中身の保管に使い、残りを「どこに何があるか」の管理に使う、という配分をしています。

管理側に置かれるのは、おおよそ次のものです。

  • ファイルごとの管理情報。大きさ、更新日時、所有者、そして中身がどのブロックに入っているかの一覧
  • 名前と管理情報を結びつける表。これがディレクトリの正体
  • どのブロックが空いているかの一覧
  • ディスク全体の素性を記した先頭の情報

ls -l がサイズと日時を一瞬で返せるのは、中身を 1 バイトも読んでいないからです。管理情報だけを読んでいます。

1 ファイル開くのに、何度も引き直している

/home/alice/memo.txt を開く流れは、スラッシュで区切られた分だけの繰り返しになります。

  1. 一番上の / の管理情報を読み、続けて / の中身のブロックを読む
  2. その中の名前一覧から home を見つけ、home の管理情報を読む
  3. 同じことを alice について繰り返す
  4. alice の中身から memo.txt を見つけ、その管理情報を読む
  5. ようやく、中身が入っているブロック番号が分かる

階層が深いほど往復が増えます。それでも実用になっているのは、OS が一度読んだブロックを RAM へ取っておくためです。この控えをページキャッシュと呼びます。同じディレクトリで 2 回目の ls が速いのも、深いパスを何度叩いても速度が落ちないのも、往復のほとんどが RAM で済んでいるからです。

表の作り方は 1 つではない

名前から場所を引く、というやり方に唯一の正解はありません。想定するディスクの性質や、求める安全性に合わせて、いくつもの実装があります。

Linux はそこに VFS という共通の窓口を置きました。open や read の呼び方は、下にどの実装が居ても同じです。だから USB メモリでも、ネットワーク越しの領域でも、同じ cat がそのまま使えます。

窓口が共通なので、別々のディスクを 1 本のツリーへ束ねることもできます。あるディレクトリを入口として別のディスクを貼り付ける操作が mount で、/home だけ別のディスク、/proc はディスクを持たないカーネル製の作り物、といった構成が普通に成り立ちます。

ターミナル

df -T

プレーンテキスト

Filesystem     Type   1K-blocks      Used Available Use% Mounted on
/dev/nvme0n1p2 ext4   478920000 210344000 244300000  47% /
/dev/nvme0n1p1 vfat     1046508     12200   1034308   2% /boot/efi
tmpfs          tmpfs    8134560      1240   8133320   1% /run

Type の列が、その入口から下で使われている実装です。1 本に見えるツリーが、実は何種類もの実装の寄せ集めであることが分かります。

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

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

  • ロック「他の人触らないでね」と DB に予約する
  • 配列サイズ固定の同型データの集まり
  • ディレクトリファイルを整理するフォルダのこと。
  • 階層ネットワークを役割ごとに積み重ねた構造
  • キャッシュ一度取得したデータを再利用するための一時保存
  • メモリプログラムとデータを一時保持する高速領域
  • カーネルOS の中核。資源管理を担う
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/27·更新 2026/08/26

関連レッスン

  • i-node とディレクトリ

    ファイルのメタデータを束ねる i-node と、名前と番号を対応づけるディレクトリの関係、ハードリンクとシンボリックリンクの違いまで実務目線で整理します。

  • ext4 / APFS / NTFS の違い

    ext4 / APFS / NTFS の違い

  • ジャーナリングと耐障害性

    操作を書き込みログに先に記録するジャーナリングで電源断やクラッシュからデータを守る仕組みと、コピーオンライト方式との違いまで分かりやすく整理します。

  • パーミッションと所有者

    UNIX 系 OS のファイル権限を所有者・グループ・その他の三区分と読み書き実行の観点から整理し、chmod や chown、ACL の使いどころまで解説します。

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

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