コース一覧
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 がメモリを割り振り、CPU の時間を配ると見てきました。ではその割り振りを、アプリの側が無視して勝手に他人の領域を読んだらどうなるのでしょうか。

これができてしまう機械では、ブラウザで開いたページのスクリプトが、隣で動いているパスワード管理アプリのメモリを覗けます。逆に、アプリのバグで書き込み先の番地が 1 桁ずれただけで、OS 自身の管理表を壊してマシンごと落ちます。

つまり「割り振りを守ってください」というお願いでは足りません。守らせる仕組みが要ります。そしてその仕組みは、破られない場所、つまりソフトウェアより下のハードウェア側に置く必要があります。

CPU に、2 段のギアが刻まれている

x86 の CPU には特権レベルという段があり、いちばん上がリング 0、いちばん下がリング 3 です。OS の中核であるカーネルはリング 0 で動き、メモリのどの番地でも読み書きでき、機器に直接命令を出せます。ブラウザもエディタもシェルも、リング 3 で動きます。リング 3 からは、自分に割り当てられた領域の外へは手が届きません。届かないのは行儀の問題ではなく、そこへアクセスした瞬間に CPU が命令の実行を拒んで OS に通報するからです。

この境目があるおかげで、ブラウザが落ちても OS は無事です。落ちたのはリング 3 の住人 1 人ぶんなので、OS が後片付けをして終わります。逆にリング 0 で回復できない失敗が起きると、後片付けをする側が壊れているので、機械ごと止めるしかありません。Linux のカーネルパニックがそれです。

覚えておく価値があるのは、デバイスドライバもリング 0 で動くという点です。機器を直接叩く以上そこにいるしかないのですが、つまり素性の怪しいドライバを 1 本入れるだけで、OS の安全装置は簡単に無効化されます。ブルースクリーンの原因がドライバであることが多いのは、このためです。

なお、sudo で root になってもリング 0 には入りません。root のプロセスもリング 3 で動いています。増えるのは権限の位置ではなく、カーネルに頼める仕事の範囲だけです。強い権限を持つプロセスでも、メモリの外へは相変わらず手が届きません。

もう 1 つ、カーネル空間と物理メモリを同じものだと思わないでください。どちらも仮想の番地の上に置かれていて、違うのはアクセスできる資格だけです。

カーネル以外の全部が、ユーザーランド

リング 3 側をまとめてユーザーランドと呼びます。シェル、コマンド群、常駐サービス、デスクトップ環境、標準ライブラリ。普段「Linux を触っている」と言うとき、手で触れているのはほぼこちら側です。

Linux のディストリビューションが何十種類もあるのに、どれも Linux と呼べるのはこのためです。中心にあるカーネルは同じで、周りに置くユーザーランドが違うだけだからです。標準ライブラリを何にするか、パッケージをどう配るか、初期化を誰が担当するか。ここの選び方が違うだけで、まったく別の使い心地になります。同じ理由で、カーネルだけあっても人間には何もできません。

そして境目を越える手段は 1 つしか用意されていません。それがシステムコールです。

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

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

  • パスワードDBが漏洩しても元のパスワードがわからないようにするため。
  • メモリプログラムとデータを一時保持する高速領域
  • ブラウザユーザーから見たWebのクライアント
  • カーネルOS の中核。資源管理を担う
  • シェルコマンドを解釈して実行するプログラム
  • プロセス実行中のプログラムのこと。
  • 標準ライブラリPythonに同梱の公式モジュール群
  • ビュークエリに名前をつけて再利用する仮想表
生田 陸人
監修生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
編集 ゆめさく編集部·公開 2026/05/27·更新 2026/08/26

関連レッスン

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

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

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

    Linux / macOS / Windows のアーキ比較

  • プロセスとは

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

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

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

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

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