コース一覧
OS入門:プロセス・メモリ・ファイルシステム
Linux / macOS / Windows のアーキ比較

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

Linux / macOS / Windows のアーキ比較

手元で動いたスクリプトが、同僚の環境で落ちる

Data/Users.csv を読むスクリプトが、自分の Mac では動くのに、同僚の Linux で「そんなファイルは無い」と落ちる。実体は data/users.csv で、Mac が大文字と小文字を区別しない設定だっただけ、というのはよくある事故です。Windows へ持っていけば、今度はパスの区切り文字で転びます。

システムコールの窓口はどの OS にもあります。ただし窓口の数も、名前も、置き場所の作法も揃っていません。3 つの OS の違いは好みの問題ではなく、それぞれのカーネルが別の出自を持っていることから来ています。

OSカーネル出自パス区切り大文字と小文字
LinuxLinuxUNIX を手本に書き直し/区別する
macOSXNUMach と BSD の混成/既定では区別しない
WindowsNTVMS の流れをくむ独自系\ と /区別しない

Linux と macOS はどちらも POSIX という共通の作法に沿うので、書き方がよく似ています。macOS は公式に UNIX の認証を受けており、UNIX ではないというのは誤解です。Windows NT は UNIX とは独立して設計されたので、似ているところのほうが少なくなります。

カーネルの中の作りにも差があります。Linux はファイルシステムもネットワークもドライバも、全部をカーネルの中に置く一枚岩の構成です。速い代わりに、中の 1 か所が壊れると全体に波及します。macOS の XNU は、最小限だけを核に残して他を外に出す設計と、UNIX 由来の一枚岩を混ぜた形をとっています。Windows NT は機種依存を吸収する層を 1 枚挟み、その上に複数の作法を同居させます。Windows で Linux のコマンドが動くのは、この同居のしくみが今も生きているからです。

プロセスの作り方からして違う

出自の違いがいちばんはっきり出るのが、新しいプログラムを起動するときです。

POSIX 系では、まず自分自身を丸ごと複製し、複製したほうの中身を目的のプログラムに入れ替えます。複製と入れ替えの 2 段構えです。一方 Windows では、起動したいプログラムの場所を渡して 1 回呼ぶと、新しいプロセスができあがります。

c

pid_t pid = fork();                 // 自分を複製する
if (pid == 0) {
    execve("/bin/ls", argv, environ);  // 複製した側を ls に入れ替える
}

2 段構えは回りくどく見えますが、複製したあと入れ替えるまでの間に、開くファイルや権限を細かく調整できるという利点があります。シェルのリダイレクトはここを使っています。逆に Windows のやり方は、渡す引数が増える代わりに 1 回で済みます。

配り方も、それぞれの都合で分かれた

アプリの入れ方の違いも同じ根から来ています。Linux は依存関係を OS 側が解決する仕組みを持ち、apt や dnf が必要なライブラリごと引き連れてきます。macOS は必要なものをアプリの中に全部入れて 1 つのかたまりとして配ります。Windows はインストーラが自分で面倒を見る文化が長く続きました。

どれが優れているかという話ではありません。手元の OS がどの系譜にいるかを知っていると、動かなかったときに疑う場所が絞れます。まずは uname -a で、自分が今どこに立っているかを確かめてください。

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

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

  • システムコールアプリが OS の機能を呼ぶ入口
  • カーネルOS の中核。資源管理を担う
  • 認証「この人は本当に本人?」のチェック
  • 設計何をどう作るかを決める前工程
  • プロセス実行中のプログラムのこと。
  • シェルコマンドを解釈して実行するプログラム
  • リダイレクト「別の URL を見に行って」とブラウザに指示するレスポンス
  • 引数位置引数=順番で渡す。
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/27·更新 2026/08/26

関連レッスン

  • プロセスとは

    実行中のプログラムをカーネルが管理する単位であるプロセスの構成要素と、fork で複製し exec で中身を入れ替える OS の基本動作モデルを解説します。

  • メモリ階層(レジスタ→キャッシュ→RAM→ディスク)

    メモリ階層(レジスタ→キャッシュ→RAM→ディスク)

  • ファイルシステムとは

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

  • レースコンディション

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

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

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