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

コンピューターとOSの役割

2 つのプログラムが、同じ番地にデータを置いたら

ブラウザとエディタを同時に開いているとき、どちらもメモリにデータを置きます。もし両方が「メモリの先頭から順に使う」と決め打ちしていたら、後から書いたほうが、先に書いたほうのデータを踏み潰します。エディタで開いていた文章が、ブラウザのタブを増やした瞬間に化ける、ということが実際に起きます。

これを避けるには、誰かが「あなたはここからここまで」と割り振り、割り振った外へ手を伸ばそうとしたら止める必要があります。その誰かが OS です。おかげでプログラムの側は、自分が物理的にメモリのどこを使っているかを知らないまま書けます。同じアプリを 2 つ起動しても衝突しないのは、2 つとも「自分は先頭から使っている」と思い込んでいて、その思い込みを OS が別々の実体に割り当てているからです。

止める側も本気です。割り当ての外を読み書きしようとしたプログラムは、その場で強制終了させられます。C 言語を書いていて出会う Segmentation fault がまさにそれで、あれはバグが顕在化した瞬間であると同時に、そのバグが機械全体に広がらずに済んだ証拠でもあります。

誰も CPU を譲らなかったら

CPU のコアは、1 つにつき同時に 1 つの命令しか実行できません。それでも 4 コアの機械で数百のプログラムが同時に動いて見えるのは、ごく短い時間で持ち主を入れ替えているからです。

問題は、走っているプログラム自身が「そろそろ譲ります」と言ってくれるとは限らないことです。無限ループに入ったプログラムは永遠に譲りません。譲るかどうかをプログラムに任せた設計では、1 本のバグで機械全体が固まります。

そこでハードウェアのタイマーが数ミリ秒ごとに割り込みをかけ、強制的に制御を OS へ戻します。次に誰を走らせるかを決めるのは、走っているプログラムではなく OS です。

配り方も単純な順番待ちではありません。ファイルの読み込みを頼んだプログラムは、ディスクから返事が来るまで何もできません。この待ち時間に CPU を握らせておくのは無駄なので、OS は待ちに入った相手からいったん取り上げ、走れる別のプログラムに渡します。メモリを配ることと CPU の時間を配ること、この 2 つが OS の中核である資源管理です。

SSD を買い替えたら動かなくなる、を避ける

もう 1 つの仕事が抽象化です。ファイルを保存するとき、アプリは SSD の型番も、どのブロックが空いているかも知りません。開いて、書いて、閉じる。同じ手順でどの機種にも書けます。

ターミナル

echo hello > /tmp/a.txt

この 1 行の裏で、OS はファイルを開き、バイト列を受け取り、その機種のドライバを呼び、書き込みが終わるまで面倒を見ています。もし抽象化が無ければ、アプリは対応したい機種のぶんだけドライバを抱え込み、新しいハードが出るたびに全アプリが書き直しになります。

ついでに 1 つ、OS と画面は別物です。Finder やエクスプローラは OS の上で動くアプリで、画面のないサーバー用 Linux も何ら問題なく動きます。

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

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

  • ブラウザユーザーから見たWebのクライアント
  • メモリプログラムとデータを一時保持する高速領域
  • ループ繰り返し処理。矢印で戻すか専用記号で示す
  • 設計何をどう作るかを決める前工程
  • ロック「他の人触らないでね」と DB に予約する
  • サーバークライアント(ブラウザなど)がリクエストを送り、サーバーがレスポンスを返す。
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/27·更新 2026/08/26

関連レッスン

  • OSの歴史(バッチ→マルチタスク→マルチユーザー)

    OSの歴史(バッチ→マルチタスク→マルチユーザー)

  • カーネルとユーザーランド

    OS をカーネル空間とユーザー空間に分ける設計と、システムコールで橋渡しする仕組みを学び、なぜこの分離がシステムの安定性を生むのかを理解します。

  • システムコールの仕組み

    ユーザープロセスがカーネルへ処理を依頼する唯一の正規ルートであるシステムコールの仕組みを、read や fork などの実例とともに分かりやすく解説します。

  • Linux / macOS / Windows のアーキ比較

    Linux / macOS / Windows のアーキ比較

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

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