コース一覧
OS入門:プロセス・メモリ・ファイルシステム
ext4 / APFS / NTFS の違い

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

ext4 / APFS / NTFS の違い

Mac では動いたのに、デプロイしたら Module not found

import UserCard from "./components/userCard" と書いたコードが、手元の Mac では通り、Linux のサーバーでは落ちる。実体のファイル名は UserCard.tsx です。Web 開発で最も多く踏まれる環境差の 1 つです。

原因は言語でもビルドツールでもなく、名前を突き合わせるときの規則です。macOS の APFS は既定で大文字と小文字を同じ文字として扱い、Linux の ext4 は別の文字として扱います。ディレクトリの表を引く処理が、片方は大小を無視する比較で、もう片方はバイト列そのままの比較だ、という違いです。

名前の扱いが揃わない理由

ファイル名は結局バイト列ですが、それを何とみなすかは各実装が決めます。ext4 はバイト列をそのまま比較します。何も解釈しないので、日本語だろうが絵文字だろうが、バイトが 1 つ違えば別ファイルです。

APFS は Unicode として解釈します。しかも macOS には「が」を か と濁点の 2 文字に分解した形で保存してきた経緯があり、同じ名前に見えるのに Git が延々と差分を出す、ZIP を Windows で開くと名前が崩れる、といった事故はここから来ます。

この差は好みの問題ではなく、設計時の要請の違いです。GUI を前提とする macOS や Windows は「利用者が Memo.txt と memo.txt を別物だと思わない」ことを優先しました。サーバー用途で育った ext4 は、余計な解釈をしないことを優先しました。どちらも、その場では正しい判断でした。

前提とする装置の違いも効いています。ext4 が広まったのは HDD が主流の時代で、磁気ヘッドの移動を減らすためにブロックをなるべく連続させる設計です。APFS は SSD しか無い前提で作られ、書き換えのたびに別の空き場所へ書く方式を採っています。どこが速いかは装置で変わるので、答えも 1 つに収束しません。

揃えられるのは呼び方までで、名前の規則は漏れてくる

VFS のおかげで、open や read の呼び方は下にどの実装が居ても同じです。だから普段は種類を意識せずに済みます。

しかし共通化できるのは手続きの形までで、名前をどう突き合わせるかは各実装の内側にあります。ここだけは上のアプリまで漏れてきます。ファイル名の大小を意識しないコードは、動く環境と動かない環境ができてしまいます。

ターミナル

touch UserCard.tsx
cat userCard.tsx

プレーンテキスト

macOS (APFS)   中身が表示される
Linux (ext4)   cat: userCard.tsx: No such file or directory

対策は環境をそろえることに尽きます。Linux へデプロイするプロジェクトは Docker や Lima の中で開発する、あるいは大小を区別する設定の APFS ボリュームを別に切って、そこにリポジトリを置きます。

解説

現場の話 外付け SSD を Mac と Windows で共用したいときは exFAT を選びます。NTFS は macOS からは読めても書けず、APFS は Windows が認識しません。ただし exFAT は障害に弱いので、消えて困るデータの唯一の置き場所にはしないでください。

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

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

  • デプロイ本番環境へアプリを配置し公開する作業
  • サーバークライアント(ブラウザなど)がリクエストを送り、サーバーがレスポンスを返す。
  • ディレクトリファイルを整理するフォルダのこと。
  • 処理計算や代入を表す長方形
  • Gitファイル変更履歴を管理するツール
  • 設計何をどう作るかを決める前工程
  • 判断YES/NO 分岐を表す菱形
  • ロック「他の人触らないでね」と DB に予約する
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/27·更新 2026/08/26

関連レッスン

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

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

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

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

  • レースコンディション

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

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

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