OS

OS(オペレーティングシステム)

Linux・Windows・macOS の比較から、プロセス・メモリ・ファイルシステムといった OS の考え方まで。まず TL;DR で。

コレクション 01

デスクトップ(3)

項目WindowsLinuxmacOS
区分デスクトップ / サーバデスクトップ / サーバ / 組込み・その他デスクトップ
系統Windows NT 系Unix 系Unix 系(BSD ベース)
カーネルハイブリッド(Windows NT カーネル)モノリシック(Linux カーネル)XNU(Mach + BSD のハイブリッド)
ライセンスプロプライエタリ(商用)オープンソース(GPL)プロプライエタリ(Apple 製ハード限定)
主な用途デスクトップ / 業務 PCサーバ / クラウド開発(Web / iOS)

コレクション 02

サーバ(2)

項目WindowsLinux
区分デスクトップ / サーバデスクトップ / サーバ / 組込み・その他
系統Windows NT 系Unix 系
カーネルハイブリッド(Windows NT カーネル)モノリシック(Linux カーネル)
ライセンスプロプライエタリ(商用)オープンソース(GPL)
主な用途デスクトップ / 業務 PCサーバ / クラウド

コレクション 03

モバイル(2)

項目iOSAndroid
区分モバイルモバイル
系統Unix 系(Darwin)Linux 系(モバイル)
カーネルXNU(Darwin・macOS と共通基盤)Linux カーネルベース
ライセンスプロプライエタリ(Apple 製端末限定)オープンソース(AOSP)+ 一部プロプライエタリ
主な用途iPhone / iPadスマートフォン / タブレット

コレクション 04

組込み・その他(2)

項目LinuxRTOS / 組込み OS
区分デスクトップ / サーバ / 組込み・その他組込み・その他
系統Unix 系リアルタイム OS(RTOS)
カーネルモノリシック(Linux カーネル)リアルタイムカーネル(プリエンプティブ)
ライセンスオープンソース(GPL)様々(FreeRTOS=MIT、Zephyr=Apache 等)
主な用途サーバ / クラウドマイコン・組込み機器

操作して学ぶ

OSの系譜図

1961年のCTSSから Windows 11 まで、いま使っているOSには半世紀の家系があります。 実線はコードを受け継いだ派生・後継、 破線はコードを継がない設計の影響。 ドラッグとズームで探検し、気になるOSをクリックすると解説と関連記事が出ます。

派生・後継(コードを継ぐ)設計の影響(コードは継がない)終息した系統
前史・研究系BSD系商用UNIX(System V系)Apple系Linux系DOS / Windows系その他(VMS・BeOS)1960197019801990200020102020CTSS1961Multics1969Plan 91992UNIX1969UNIX V61975UNIX V719791BSD19784.2BSD19834.4BSD1993FreeBSD1993DragonFly BSD2004NetBSD1993OpenBSD1996System V1983SVR41989HP-UX1984IRIX1988Xenix1980AIX1986SunOS1983Solaris1992Mac OS(Classic)1984Mac OS X2001macOS2016NeXTSTEP1989iOS2007MINIX1987Slackware1993Arch Linux2002Linux1991Gentoo2002ChromeOS2011Debian1993Ubuntu2004Red Hat Linux1994Fedora2003Android2008SUSE Linux1994Alpine Linux2005頃RHEL2002CP/M197486-DOS1980OS/21987MS-DOS1981Windows 3.11992Windows 951995Windows 981998Windows NT 3.11993Windows 20002000Windows XP2001Windows 72009Windows 102015Windows 112021VMS1977BeOS1995Haiku2009

ノードをクリックすると、そのOSの解説と関連記事がここに表示されます。

操作して学ぶ

CPUキャッシュ可視化 — なぜ連続アクセスは速いのか

連続・ストライド・ランダムでヒット率と実効レイテンシがどう変わるか。空間的・時間的局所性を動かして体感。

リファレンス

ポート・シグナル・errno 早見表 — 意味つきで検索

22 SSH・443 HTTPS、SIGKILL・SIGTERM、ENOENT・ECONNREFUSED… 日々引く3種を番号や意味で検索。

操作して学ぶ

CPUパイプライン可視化 — ストール・フォワーディング・分岐予測

フォワーディングを切ると依存が牙を剥く。ロード・ユースだけは1サイクル逃げ切れない理由も体感。

操作して学ぶ

銀行家アルゴリズム可視化 — デッドロックを起こさせない判定

資源を要求すると「承認すると全員終われなくなる」要求が拒否される。安全な実行順序も表示。

操作して学ぶ

ページ置換アルゴリズム可視化 — FIFO・LRU・Clock・OPTを同時比較

4方式を同じ参照列で横並び比較。フレームを増やすとFIFOだけフォルトが増えるBeladyの異常も再現できる。

解説記事

考え方・概念

プロセス・メモリ・ファイルシステムなど、OS が裏で何をしているか。まず TL;DR で。

3つの要点応用

/procと/sysによるカーネル情報の公開機構

topやpsが見ているのは実体のないファイル。procfsとsysfsはカーネル内部の状態を読み書きでそのまま操作できる窓口です。両者の実装と使い分けを原理から押さえれば、設定変更やデバッグの勘所がつかめます。

3つの要点応用

ACPIと電源・デバイス状態の抽象化

ノートPCの蓋を閉じて復帰する一連の動きを、ACPI の状態モデルから理解できます。S/C/D/G 状態の定義とサスペンド・ハイバネートの実装、ファームウェアと OS の責務分担を構造で押さえます。

3つの要点応用

B-treeとファイルシステムインデックス構造

巨大ディレクトリでもファイル検索が一瞬で終わる理由を、ext4のHTreeとXFS/BtrfsのB+Tree、ディスク向けノード設計の原理から正確に理解できます。

3つの要点応用

CFS(完全公平スケジューラ)の内部動作

Linuxが各タスクへ公平にCPUを配る仕組みが原理から分かります。赤黒木とvruntime、nice値の重み付け、遅延と粒度の調整まで一気に押さえられます。

3つの要点応用

cgroup v2の階層モデルとコントローラ

コンテナの資源制御がなぜv2で一本化されたのかが腑に落ちます。統一階層・委譲・no internal processの制約を設計判断から押さえ、CPU/IO/memoryの効き方を予測できるようになります。

3つの要点応用

CPUアフィニティとロードバランシングの内部

なぜピン留めしたプロセスが速くなり、isolcpusで隔離した瞬間に安定するのかが腑に落ちます。スケジューラドメイン・定期/アイドル/wakeupの3種の均し方・キャッシュ温存を原理から押さえ、配置を設計判断で決められるようになります。

3つの要点応用

CPUモードと特権リング・保護の仕組み

なぜユーザーアプリはカーネルメモリを壊せないのか。x86のリング0〜3と特権命令、ページ保護、SMEP/SMAPまで原理で押さえ、現代OSが2リングに集約した設計判断まで腑に落とせます。

3つの要点応用

CRIU(チェックポイント・リストア)

動いているプロセスを止めずに丸ごと保存し、別ホストで続きから再開する。コンテナのライブマイグレーションを支える仕組みと、復元できない資源の壁を原理から理解できます。

3つの要点応用

CXLメモリ拡張とプーリング

サーバーのメモリ容量とコストのジレンマが解ける仕組みが分かります。CXL.memによる拡張・プーリングと、新たなレイテンシ階層の設計判断を原理から押さえられます。

3つの要点応用

DMAとIOMMUによるデバイスメモリアクセス

デバイスがCPUを介さず直接メモリへ書き込む仕組みと、その暴走を防ぐIOMMUの原理がわかります。スキャッタギャザーやコヒーレンシ管理まで押さえ、I/O性能と安全性の勘所を掴めます。

3つの要点応用

eBPFとカーネルの拡張機構

カーネルを再ビルドせず、再起動もせずに振る舞いを足せる。検証器が安全を保証し、JITが実速度で走る、その仕組みを原理から解き明かします。

3つの要点応用

EEVDFスケジューラとCFSからの移行

Linux 6.6で標準になったEEVDFの仕組みが原理から分かります。lag・eligibility・仮想デッドラインの三点で、CFSが苦手だったレイテンシ要求を正確に扱えます。

3つの要点応用

ELFバイナリのロードとリンカ・ローダの内部

実行ファイルをダブルクリックしてから最初の命令が走るまでの空白が埋まります。プログラムヘッダのmmap配置、ld.soの再配置とシンボル解決、PLT/GOTの遅延束縛を原理から解剖します。

3つの要点応用

Exokernelとアプリケーション特化OSの原理

OSの抽象化が遅いのは「全員に同じ抽象を押しつける」から。Exokernelは資源を生のままアプリへ晒し、保護だけ担う。なぜ特化最適化が解禁され、誰でもlibOSを差し替えられるのかを原理から解きます。

3つの要点応用

false sharingとキャッシュライン設計

並列化したのに遅い原因の多くはfalse sharing。無関係な変数の同一ライン同居を、パディングとアラインメント、per-CPU設計で消し、コア数に比例してスケールさせる勘所をつかめます。

3つの要点応用

futexの内部動作とユーザ空間ロックの実装

ロックは取れて当たり前。競合しない普通の場合はシステムコールを一切呼ばずユーザ空間で完結し、本当に待つときだけカーネルへ落ちる――その「速いロックの正体」futexを原理からつかめます。

3つの要点応用

gVisor(ユーザー空間カーネル)

コンテナの脆弱性はホストカーネル直撃になりがち。システムコールをユーザー空間で横取り・再実装するgVisorのSentryなら、性能を落としつつも攻撃面を大きく縮小できます。

3つの要点応用

I/OスケジューラとブロックI/O層

HDD時代の常識がSSDで覆る理由を内部から理解。エレベータからblk-mqまで、ディスク要求の並べ替えがどう速さを生むかが一本でつながります。

3つの要点応用

initシステムの系譜(SysV init・Upstart・systemd)

なぜ起動はsystemdで速くなったのか。PID1の役割から、SysV initの逐次起動、Upstartのイベント駆動、systemdの依存解決と並列化まで、設計の進化を系統で整理し起動を内部から読み解けるようにします。

3つの要点応用

inotify/fanotifyによるファイルシステム監視

ファイル変更をポーリングなしで検知する仕組みを原理から解説。inotifyのwatch管理とイベントキュー、fanotifyの権限イベントによるアクセス遮断、そして大規模監視で詰まる限界までつかめます。

3つの要点応用

IPCの設計比較(パイプ・SysV・POSIX・mq)

同じ「プロセス間通信」でも、帯域・レイテンシ・名前空間・永続性はまるで違います。パイプからSysV/POSIX共有メモリ、Unixドメインソケットまで、選定の軸を系統で整理し迷わず選べるようになります。

3つの要点応用

KVMとQEMUによる仮想マシンの実行モデル

なぜKVMだけでVMが動かず、QEMUと組むのか。カーネルがVMX/SVMを握り、QEMUがデバイスを演じる分業を、vCPUスレッドとvirtioまで原理で押さえ、仮想化の性能勘所を掴めます。

3つの要点応用

Landlock(非特権サンドボックス)

root権限もCAP_SYS_ADMINも要らず、プロセス自身がファイルアクセスを絞り込める。Landlockのルールセットとホワイトリスト方式を原理から解説します。

3つの要点応用

Linux Security Module(LSM)とアクセス制御フック

SELinuxやAppArmorはどこでアクセスを止めているのか。カーネル内に張られたLSMフックという共通の差し込み点から、型強制とパス基準の設計思想の違いまで原理で解き明かします。

3つの要点応用

Linuxケーパビリティによる特権分割

root権限を全か無かではなく必要な一片だけに絞れます。5つのケーパビリティ集合とファイルケーパビリティの原理から、setuidより安全で壊れにくい特権設計を解き明かします。

3つの要点応用

Linuxディストリビューション派生図(Debian・Red Hat・Arch系)

なぜディストリビューションごとにapt・dnf・pacmanと流儀が違うのか。Debian・Red Hat・Arch・SUSEの派生関係とパッケージ管理の系譜を年代と表で一枚に俯瞰し、選定の勘所を整理します。

3つの要点応用

Machメッセージパッシングとポート権の仕組み

マイクロカーネルIPCの原典であるMachを、ポート権・メッセージ・out-of-line転送から正確に理解できます。ケーパビリティ型IPCの設計判断を原理から押さえられます。

3つの要点応用

macOS/XNUカーネルとMach・BSDのハイブリッド構造

macOSやiOSが堅牢さと速さを両立できる理由は、XNUがMachとBSDを1つのアドレス空間に同居させた折衷設計にあります。Machポートの仕組みからI/O Kitまで内側を解き明かします。

3つの要点応用

NUMAとメモリアクセス局所性

マルチソケットで性能が伸びない理由が腑に落ちます。ノード間アクセスの非対称コスト、メモリポリシー、自動NUMAバランシングを設計判断の軸で押さえられます。

3つの要点応用

OOM Killerとメモリ過剰コミットの設計

Linuxはメモリを実体より多く約束し、足りなくなるとプロセスを殺す。なぜそんな設計なのか、誰が犠牲になるのかを押さえれば、本番で突然プロセスが消える事故の原因と対策が腑に落ちます。

3つの要点応用

OSスケジューラの系譜(O(n)→O(1)→CFS→EEVDF)

Linuxスケジューラがなぜ4世代も作り直されたかが一本の線で分かります。計算量・公平性・レイテンシという設計動機の連鎖で、各方式の必然性をつかめます。

3つの要点応用

OSの起動後メモリ初期化とブートメモリアロケータ

通常のアロケータが無い起動初期に、カーネルはどう自分用メモリを確保するのか。メモリマップから memblock、buddy、struct page 配列までを原理から追い、起動時メモリ問題を読み解けます。

3つの要点応用

OS仮想化技術の系統(ハイパーバイザとコンテナ)

Type-1とType-2、準仮想化と完全仮想化、コンテナの違いを系統で一望できます。VT-xやEPTが何を解決したのかまで原理から整理し、選定の軸を手に入れます。

3つの要点応用

perfとハードウェアパフォーマンスカウンタ

推測でなく実測でボトルネックを特定できる。CPU内蔵のカウンタでキャッシュミスや分岐予測ミスを数え、低オーバーヘッドで原因に迫る仕組みを原理から解説します。

3つの要点応用

POSIXスレッドとカーネルスレッドのマッピングモデル

なぜLinuxのスレッドは1:1なのか。N:1やM:Nが理論上は美しいのに実装が廃れた理由を、スケジューラ・シグナル・プリエンプションの実装制約から腑に落とせます。

3つの要点応用

ptraceとデバッガ・トレーサの仕組み

gdb がブレークポイントで止め、strace が全syscallを覗ける理由を、ptraceという1本のシステムコールの内部動作から腑に落とせます。INT3挿入・レジスタ操作・停止と再開の原理まで押さえます。

3つの要点応用

RCU(Read-Copy-Update)の原理

読み取りをロックもアトミック操作もゼロにする同期の極北がRCU。grace periodとクォースセント状態という発想で、なぜLinuxカーネルが大量採用したのかを原理からつかめます。

3つの要点応用

RCUの実装詳細(grace period検出とコールバック)

RCUの原理は分かっても「数百コアでgrace periodをどう検出するのか」が謎のまま――Tree RCUの階層集約と状態機械、call_rcuの非同期処理を追えば、その実装の巧みさが腑に落ちます。

3つの要点応用

rootlessコンテナとuser名前空間による非特権隔離

root権限なしでもコンテナを動かせるのはなぜか。user名前空間のID写像とsubuid/subgidの仕組みから、newuidmapやfuse-overlayfsが補う制約までを原理から解き明かします。

3つの要点応用

Rust for Linux(カーネルモジュールのRust化)

メモリ破壊バグの7割はカーネルコードが温床。所有権とコンパイル時検査で、そのクラスごと排除できる仕組みを原理から解説します。

3つの要点応用

SCHED_DEADLINEとCBS(Constant Bandwidth Server)

締め切りを必ず守るスケジューリングの原理が分かります。runtime/deadline/periodの3パラメータ、EDFとCBSによる帯域分離、許容制御の不等式までを内部動作から押さえられます。

3つの要点応用

seccompによるシステムコールフィルタリング

信頼できないコードに渡すカーネルの窓口を最小化できる。プロセスが呼べるシステムコールを絞り、攻撃面を削る seccomp-bpf の仕組みを原理から解説します。

3つの要点応用

seL4と形式検証されたマイクロカーネル

カーネルにバグが無いことを「数学的に証明済み」と言い切れます。seL4のケーパビリティ制御・IPC高速化・形式証明が保証する範囲と限界を原理から押さえられます。

3つの要点応用

SSDとFTL(Flash Translation Layer)の影響

SSDが速い理由と突然遅くなる理由を内部から理解。FTLとウェアレベリング、書き込み増幅とTRIMの連携まで、I/O設計の勘所が一本でつながります。

3つの要点応用

systemdのアーキテクチャとユニット・依存解決

systemctlの裏で何が動くかが構造から腑に落ちます。PID1マネージャ・ユニット依存グラフ・socket活性化・cgroup隔離・journald/logindの役割を内部まで追い、サービスの挙動を予測できます。

3つの要点応用

TPMによる測定起動とリモートアテステーション

起動チェーンの改ざんを後から検知可能にする仕組みを内部から理解できます。PCR拡張・シーリング・アテステーションの原理を押さえ、ディスク暗号化やゼロトラスト設計の判断力が身につきます。

3つの要点応用

tracepointとftrace・カーネルトレーシング機構

本番カーネルを止めず、再ビルドもせずに「何が・いつ・どれだけ」を覗ける。tracepointとftraceの仕掛けを、低オーバーヘッドの理由まで含めて原理から腑に落とせます。

3つの要点応用

Transparent Huge Pages(THP)と巨大ページの内部

巨大ページでTLBミスを減らし性能を上げたいが、断片化やフォルト遅延が怖い。THPの自動昇格と割当のしくみ、hugetlbfsとの使い分けを内部から理解できます。

3つの要点応用

Unixドメインソケットとfd受け渡し

特権プロセスが開いたソケットやファイルを非特権ワーカーへ安全に手渡す――その仕組みがSCM_RIGHTSです。双方向通信からfd受け渡し、権限移譲、abstract socketまで、権限分離設計の土台が腑に落ちます。

3つの要点応用

Unix系統樹と系譜(BSD・System V・Linux派生図)

なぜBSDとLinuxはライセンスもカーネルも違うのか。1969年の一本のUnixから現代OSへ枝分かれした系譜を年代と表で一枚に俯瞰し、設計思想の根を整理します。

3つの要点応用

userfaultfdによるユーザー空間ページフォルト処理

ページフォルトの解決をカーネルからユーザー空間へ肩代わりさせる仕組みで、ライブマイグレーションのダウンタイムを劇的に縮められます。

3つの要点応用

VFS(仮想ファイルシステム)層の抽象化

ext4もNFSもprocも同じopen/readで触れるのはVFSのおかげ。inode・dentry・file・superblockの4オブジェクトとdキャッシュを原理から押さえれば、パス解決の速さとマウントの仕組みが腑に落ちます。

3つの要点応用

virtioとパラ仮想化I/Oの仕組み

ゲストI/Oが遅い原因はVM exitの乱発。virtioが共有リングでI/Oをまとめ、vhostでデータ経路をカーネルへ降ろす原理を押さえれば、仮想マシンの性能勘所が掴めます。

3つの要点応用

vmallocと高位メモリ・カーネルアドレス空間レイアウト

カーネルの仮想アドレスがどう区画されているかが腑に落ちます。direct map/vmalloc/vmemmap/fixmap の役割分担と、KASLR・ハイメモリの背景を64bitの実レイアウトで押さえられます。

3つの要点応用

WASMランタイムによるサンドボックス化

プロセスやVMより軽い隔離を、起動1ms未満・容量数MBで実現できる。WASMのスタックマシン検証とWASIのcapabilityモデルが攻撃面をどう縮小するかを原理から整理します。

3つの要点応用

Windows NTカーネルのアーキテクチャ

WindowsがUnix系と何が違うのかを、層構造とオブジェクト指向設計から一気に掴めます。Executive・Kernel・HALの分担、ハンドルとオブジェクトマネージャ、I/Oマネージャとドライバスタックを原理から整理します。

3つの要点応用

WSLとWindowsのLinux互換レイヤの仕組み

WSL1がなぜ速いのに非互換が残り、WSL2がなぜ互換だがファイルが遅いのか。syscall変換と軽量VMの違いを内部から押さえれば、どちらを選ぶべきか自分で判断できるようになります。

3つの要点応用

XDPとAF_XDPによる高速パケット処理

カーネルスタックを通さずにライン速度でパケットを裁ける。XDPのフックとDROP/PASS/TX/REDIRECT、AF_XDPのゼロコピー、DPDKとの設計差まで、Linux高速I/Oの正体を原理から掴めます。

3つの要点応用

アトミック命令とリードモディファイライトの原理

並行処理が壊れる根本原因は、読んで・変えて・書くの3手が割り込まれること。LOCKプレフィックスやCAS、LL/SCがこれを1手にまとめる仕組みを、CPUとキャッシュの動作から理解できます。

3つの要点応用

アドレス変換キャッシュの階層(TLB・PWC・ASID)

アドレス変換はなぜ遅延の支配要因にならないのか。L1/L2 TLBとページウォークキャッシュ、PCIDによるフラッシュ回避、シュートダウンのIPIコストを原理から押さえ、性能の勘所を掴めます。

3つの要点応用

イベント駆動I/Oモデルの系譜(select/poll/epoll/kqueue)

なぜLinuxはepoll、BSDはkqueue、Windowsはまったく別物のIOCPなのか。同じ多重化I/Oでも設計思想が割れた経緯を、O(n)スキャンから登録モデル・通知/完了モデルまで系統で整理します。

3つの要点応用

カーネルのRCUと並行データ構造の設計パターン

ロックフリー構造で必ずぶつかる「いつメモリを解放してよいか」を、RCU・ハザードポインタ・エポック回収の三択で整理できます。読み取りコストと回収レイテンシのトレードオフを原理から選び分けられます。

3つの要点応用

カーネルのロックフリー同期とCAS

ロックを使わずに並行データ構造を安全に更新する仕組みを、CASという1命令から原理で理解できます。ABA問題やウェイトフリーとの違い、楽観的同時実行の考え方まで一気につかめます。

3つの要点応用

カーネルのロック機構(spinlock・mutex・seqlock)

カーネルのロックは種類ごとに「眠れる場所・眠れない場所」が決まっている。spinlock・mutex・rwlock・seqlock・RCUの使い分けと、割り込み下での制約、スケールするロックの仕組みまでつかめます。

3つの要点応用

カーネルパニックとwatchdog・ハング検出

サーバーが固まる障害を「なぜ・どこで止まったか」から切り分けられます。パニック/Oops/BUGの差、ソフト/ハードロックアップとhung task検出、NMIウォッチドッグ、再起動・ダンプの動作までを原理から整理します。

3つの要点応用

カーネルプリエンプションとレイテンシ

カーネル内部のどこまで横取りを許すかでシステムの応答性が決まります。4つのプリエンプションモデルとリアルタイム性・スループットの設計判断を原理から押さえられます。

3つの要点中級

カーネルモードとユーザーモード

OS の中核だけを特権で動かしてシステムを守る、カーネルモードとユーザーモードの2層構造。アプリがシステムコール経由でカーネルに処理を頼む流れまで理解できます。

3つの要点応用

カーネルモジュール署名とLockdownモード

root権限を奪われてもカーネルの改ざんを防げます。モジュール署名検証とLockdownモードが塞ぐ昇格経路、セキュアブートとの連携までを内部動作から解説。

3つの要点応用

グリーンスレッドとユーザ空間スケジューラの原理

goroutineが数万本軽く回るのに、なぜOSスレッドは数千で頭打ちなのか。ランタイムがスタックとスケジューラを自前で持つ仕組みを、協調/プリエンプティブの境目まで原理から腑に落とせます。

3つの要点応用

コアダンプとクラッシュ解析の仕組み

再現しない本番クラッシュも落ちた瞬間のメモリ像から死因を特定できる。コアダンプ生成とELFコアの中身、kdumpのカーネル解析を原理で押さえる。

3つの要点中級

コピーオンライト(CoW)

コピーオンライトは、コピーを要求された時点では実体を共有し、書き込みが起きた瞬間に初めて複製する遅延戦略です。fork やスナップショットを高速・省メモリにします。

3つの要点応用

コピーオンライト型ファイルシステム(ZFS/Btrfs)

上書きしないファイルシステムなら、スナップショットが一瞬で取れ、サイレントなデータ破損まで検知できます。ZFSとBtrfsがどうやってそれを実現するかを内部構造から解き明かします。

3つの要点応用

コルーチンとステートマシン変換の原理

async/awaitは魔法ではなく、コンパイラがコードを状態機械へ書き換える機械的変換です。スタックフルとスタックレスの違い、サスペンド/レジュームの実コストまで原理から腑に落とせます。

3つの要点中級

コンテキストスイッチ

1つの CPU を多数のプロセスで同時実行しているように見せる仕組み。レジスタなどの状態を退避・復元して切り替えるコンテキストスイッチの正体と、その代償を解説します。

3つの要点応用

コンテナイメージのレイヤとコンテンツアドレッシング

同じベースを使うイメージがディスクをほとんど食わず、ビルドが2回目から一瞬で終わる理由がわかります。レイヤのtar差分・ダイジェスト・コンテンツアドレッシングを原理から解説します。

3つの要点応用

コンテナのオーバーレイファイルシステム(OverlayFS)

数百MBのイメージから数十個のコンテナを瞬時に起動できるのは、ディスクを複製していないからです。OverlayFSがレイヤ共有とコピーアップをどう実現するか、内部構造から解き明かします。

3つの要点応用

コンテナランタイムの内部(runc・OCI仕様)

コンテナ起動の中身を分解すると、runc が namespace・cgroup・capability・seccomp を仕様どおり組み立てているだけと分かる。OCI仕様と high/low-level の分業を原理から押さえます。

3つの要点中級

シグナル

終了して、中断してといった合図をプロセスへ番号で送る軽量な非同期通知がシグナル。OS やプロセスがどう送り、受け手がハンドラでどう応じるかを解説します。

3つの要点応用

シグナル配送の内部とシグナルセーフティ

ハンドラ内の malloc がなぜデッドロックを生むのか、その根を断てます。ペンディング集合・ブロックマスク・配送タイミングからasync-signal-safeの制約までを原理から解説します。

3つの要点応用

システムコールテーブルとvDSOの内部

システムコール番号がなぜ「永久欠番」になるのか、なぜvDSOだと時刻取得が速いのかが腑に落ちます。ディスパッチテーブルの仕組みとvsyscall廃止のセキュリティ経緯まで原理から押さえられます。

3つの要点中級

システムコールとカーネル

アプリはなぜファイルやネットワークを直接触れないのか。OS の中核カーネルへ安全に処理を依頼する窓口がシステムコール。世界をユーザーとカーネルに分ける保護の仕組みを図解で。

3つの要点応用

システムコールのABIと呼び出し機構の内部

システムコールが「ただの関数より重い」本当の理由を、命令レベルで腑に落とせます。syscall命令のモード遷移、レジスタ規約、vDSO、seccompまで原理から押さえます。

3つの要点応用

ジャーナリングファイルシステムの内部(ext4/XFS)

クラッシュしてもファイルシステムが壊れない理由を、ext4のジャーナルとエクステント、XFSのB+TreeとAllocation Groupの内部構造から正確に理解できます。

3つの要点応用

スケジューラの状態遷移とランキュー構造

プロセスがどの状態を行き来し、カーネルがどの構造で次の1つを選ぶのかが原理から分かります。状態遷移とper-CPUランキュー、ロードバランシングまで一気に押さえられます。

3つの要点応用

ストレージ階層とキャッシュ階層の統合設計

なぜ速いメモリほど小さいのか、その理由が腑に落ちます。レジスタからディスクまでの記憶階層を、各層のレイテンシ・容量・コストと、OSがどの層をどう管理するかまで一気通貫で俯瞰します。

3つの要点応用

スピンロックの設計(ティケット・MCS・qspinlock)

スピンロックがコア数に逆スケールする正体はキャッシュ行の奪い合い。ティケットで公平に、MCSでコア局所スピンに、qspinlockで両者の長所を統合するまで、設計の進化を原理から追えます。

3つの要点応用

スラブアロケータの内部(SLUB)詳解

kmallocがロックなしで一瞬に返る仕組みが、per-CPUキャッシュとフリーリストの構造から腑に落ちます。partial/full slabの管理、フリーポインタ難読化、SLAB/SLOBとの設計差までキャッシュ効率の観点で解剖します。

3つの要点中級

スレッドプール

スレッドの生成・破棄コストを省き、同時実行数を抑えつつ多数のタスクをさばく。あらかじめ作ったスレッドを使い回すスレッドプールの仕組みと使いどころを解説。

3つの要点応用

スワッピングとページング機構の内部

メモリ不足でも動き続ける裏側を、匿名ページのスワップアウトからkswapdのリクレイム、swappinessの効き方、zram/zswapの圧縮スワップまで内部動作で理解できます。

3つの要点応用

セマフォとミューテックスの古典的同期問題

セマフォの計数/二値、生産者消費者・読者書込者・食事する哲学者をどう定式化し解くかを原理から整理。ミューテックスとの所有権の違いまで押さえれば、並行設計のバグを構造で潰せる。

3つの要点応用

ゼロコピーI/Oの技法(sendfile・splice・mmap)

ファイル送信のCPUとメモリ帯域を食い潰すのは「無駄なコピー」です。sendfile・splice・mmap・MSG_ZEROCOPYがコピー回数とモード切替をどう削るのかを原理から掴み、適材適所で選べるようになります。

3つの要点応用

ゾーンドストレージ(ZNS)

SSDの寿命と速度を削るFTLの変換表とGCを、ホスト側の追記制約で丸ごと引き剥がす発想を原理から理解。ログ構造ファイルシステムとの相性まで一本でつながります。

3つの要点応用

ソケットとTCP接続のカーネル状態管理

ackなのに接続が詰まる、backlog溢れでSYNが捨てられる――その原因をカーネル内部から解明。送受信キュー・acceptキュー・TCP状態機械・TIME_WAITの実体が腑に落ちます。

3つの要点中級

ゾンビプロセスと孤児プロセス

残り続けるゾンビプロセスと親を失った孤児プロセスは何が違い、どう片付くのか。前者は wait での回収、後者は init の引き取りで処理される仕組みを整理。

3つの要点応用

タイマ割り込みとタイマホイールの構造

何万個のタイマを抱えても登録・取消を平均O(1)で扱える理由が分かります。現行Linuxの段別粒度と非再カスケード設計、hrtimerの赤黒木との使い分けまで押さえられます。

3つの要点応用

ダイレクトI/OとバッファドI/Oの設計判断

データベースが自前バッファを持ちO_DIRECTを選ぶ理由が腑に落ちます。ページキャッシュ経由のバッファドI/Oとダイレクトの違い、二重バッファリングを避ける設計判断を原理から押さえます。

3つの要点中級

デッドロック

プロセスが互いの資源を待ち合って永久に止まるデッドロック。なぜ起きるのかを発生条件から理解し、予防・回避・検出で詰まりを防ぐ手法まで整理します。

3つの要点応用

デッドロック回避と銀行家アルゴリズム

デッドロックの4条件から銀行家アルゴリズムの安全状態判定までを原理で押さえられます。回避・防止・検出・無視の4戦略をどう使い分けるか、なぜ汎用OSが回避を採らないのかまで設計判断の根拠が分かります。

3つの要点応用

デバイスドライバモデルとカーネルモジュールの仕組み

ホットプラグでデバイスが勝手に使えるのも、modprobe 一発で機能が増えるのも、device・driver・bus の三角形と参照カウントが支えています。sysfs の階層からモジュールのシンボル解決まで内側を解き明かします。

3つの要点応用

デマンドページングとページフォルト処理

プログラムが必要としたページだけを実際に触れた瞬間に読み込む仕組みと、ページフォルトでカーネルが何を判定し何を埋めるのかを、マイナー・メジャーの分岐から内部動作で理解できます。

3つの要点応用

ネストした仮想化とシャドウVMCS

VMの中でVMを動かす仕組みを原理から理解できます。物理CPUは一段しか仮想化を持たないのに、なぜ多段が成立するのか。トラップ転送、シャドウVMCS、シャドウEPTによる多段変換の畳み込みと、その性能オーバーヘッドの正体を押さえられます。

3つの要点応用

ネットワークスタックのカーネル内データパス

パケットがNICからアプリへ届くまでカーネル内で何が起きるか。sk_buffのゼロコピー、NAPIの割り込み緩和、GRO/TSOのオフロードまで、Linuxネットワークの速さの正体を原理から掴めます。

3つの要点応用

ハードウェア仮想化拡張の内部(VT-x/AMD-V)

ゲストを無改変・高速に走らせる仕組みを、CPUの動作モードから解き明かします。VMX root/non-rootとVMCS、VM exitの遷移、EPT/NPTの二段変換まで原理で押さえ、仮想化の性能勘所を掴めます。

3つの要点応用

ハイブリッドコア(P-core/E-core)とスケジューラ対応

なぜ高性能コアと省電力コアが混在すると素朴な負荷分散が裏目に出るのかが腑に落ちます。Thread DirectorのITMTヒントとEASの消費電力モデルを原理から押さえ、配置がどう決まるかを設計判断で読めるようになります。

3つの要点中級

ファイルシステム

ただのバイトの並びでしかないディスクを、ファイルとディレクトリという扱える形に変えるファイルシステム。メタデータ・inode・ブロックで中身と位置をどう管理するかが分かります。

3つの要点応用

ファイルシステムのアロケーション戦略

大きなファイルが断片化せず高速に読める理由を、ブロックグループ・遅延割当・エクステント・予約領域というアロケータの設計判断から原理で理解できます。

3つの要点応用

ファイルシステムのクラッシュ整合性とfsync保証

電源断でデータが壊れない仕組みと、fsyncが本当に守る範囲がわかります。ジャーナリング・CoW・ログ構造に共通する原理と、書き込み順序とバリアの正しい使い方まで整理します。

3つの要点応用

ファイルシステムのマウントと名前空間の伝播

コンテナでホストのデバイスだけ見せて他は隔離する、その匙加減はマウント伝播で決まります。shared/slave/private/unbindableの4種別とbind/rbindの原理を、マウントツリー構造から正確に解き明かします。

3つの要点応用

ファイルディスクリプタとオープンファイルテーブルの構造

dupやforkでfdを共有するとオフセットまで連動するのはなぜか。fdテーブル・オープンファイル記述・inodeの三層構造を押さえれば、共有の範囲とリダイレクトの挙動が原理から読めるようになります。

3つの要点応用

ファイルロック機構(flock・fcntl・リース)

なぜforkでfcntlロックが消えるのか、なぜ同一プロセスの二重openでロックが自滅するのか。flock・fcntl・OFDロック・リースの所有権モデルを押さえれば、ファイルロックの落とし穴を原理から回避できます。

3つの要点応用

ブートチェーンの内部(UEFI・ブートローダ・initramfs)

電源投入から init 起動まで、誰がどの順で制御を渡すのか。UEFI・Secure Boot・GRUB・カーネル展開・initramfs の各段を内部動作まで追い、起動トラブルを切り分けられる地力がつきます。

3つの要点応用

プロセスアドレス空間のレイアウトとASLR

セグメンテーション違反やスタックオーバーフローが起きる番地の理由が腑に落ちます。テキストからスタックまでの仮想配置と、ASLRがどこをどう動かすかを内部から解剖します。

3つの要点中級

プロセススケジューリング

1つの CPU を多数のプロセスで代わりばんこに使う仕組み。誰にどれだけ CPU を渡すかを決めるスケジューラの役割と、代表的な方式の考え方が分かります。

3つの要点中級

プロセスとスレッド

隔離を取るか、軽さ・共有を取るか。独立したメモリを持つプロセスと、その中でメモリを共有して走るスレッドの違いを押さえ、使い分けの判断軸が身につきます。

3つの要点応用

プロセス会計とリソース使用量の計測機構

topやmemory.statの数字が「どう作られ、どこまで正確か」を原理から押さえれば、メトリクスの誤読を避けられます。rusageの集計、CPU時間のuser/sys/steal按分、cgroup統計とPSIまで一気に整理します。

3つの要点中級

プロセス間通信(IPC)

互いのメモリを覗けない独立プロセス同士で、データや合図をやり取りするプロセス間通信(IPC)。パイプ・共有メモリ・ソケットなど手段ごとの向き不向きが分かります。

3つの要点応用

プロセス生成の内部(fork/clone/vfork/exec)

fork が巨大プロセスでも一瞬で複製できる理由を、CoWとページテーブルの実装から腑に落とせます。clone のフラグ設計、vfork の最適化、exec のイメージ置換まで原理から押さえます。

3つの要点応用

ブロックI/O層とマルチキュー(blk-mq)の構造

NVMeの数百万IOPSをカーネルが取りこぼさない理由を構造から理解。bioとリクエストの正体、単一キューが頭打ちになった必然、二段キューの設計までが一本でつながります。

3つの要点応用

ページキャッシュとライトバックの仕組み

ファイルI/Oが速い理由はカーネルがメモリに溜め込んでいるから。ページキャッシュとライトバックの原理を押さえれば、fsyncが守る範囲とデータが消える条件まで腑に落ちます。

3つの要点中級

ページングとスワップ

物理メモリより大きなプログラムを動かせる理由がページング。仮想メモリを固定長のページで割り当て、足りなければスワップで補う流れとページフォルトの仕組みを解説します。

3つの要点応用

ページ置換アルゴリズム(LRU・Clock・WSClock)

物理メモリが満杯のときどのページを追い出すかで、スワップの頻度とシステム速度が決まります。FIFOからLRU・Clock・WSClockまで、各アルゴリズムの原理とBeladyの異常、スラッシングの数理を整理します。

3つの要点応用

ホットプラグ(CPU・メモリ)とオフライン化の機構

クラウドのCPU/メモリ増減や障害コア切り離しが、なぜ稼働中に無停止でできるのかが腑に落ちます。オンライン/オフラインの状態遷移とタスク退避、メモリのセクション管理を原理から押さえられます。

3つの要点応用

マイクロVM(Firecracker・gVisor)の隔離設計

マルチテナントで信頼できないコードを安全に走らせたい。コンテナの弱い隔離を、軽量VMのFirecrackerとユーザー空間カーネルのgVisorがどう補い、攻撃面と性能をどう天秤にかけるかを原理で押さえます。

3つの要点応用

マイクロカーネルとモノリシックカーネルの設計比較

カーネルをどこまで太らせるかで、性能・堅牢性・拡張性は大きく変わります。モノリシックからマイクロまで主要アーキテクチャの設計トレードオフを原理から整理できます。

3つの要点応用

メモリcgroup(cgroup v2)によるリソース制御の内部

コンテナのメモリ制限が「なぜ効くのか」が腑に落ちます。課金・リクレイム・low/high/maxの階層制限・PSIまで原理から押さえ、OOMやスロットルの挙動を予測できるようになります。

3つの要点応用

メモリアロケータの内部(buddy systemとslab)

mallocが速い理由と断片化が起きる理由が、カーネルの内側から腑に落ちます。物理ページを配るbuddy、小物を配るslab、ユーザー空間のアリーナまで一気通貫で解剖します。

3つの要点応用

メモリオーダリングとメモリバリア

ロックなしの並行処理で「なぜか壊れる」の正体は、CPUとコンパイラによる命令の並べ替え。acquire/release/seq_cstとメモリバリアの仕組みを、ハードウェアの動作からつかめます。

3つの要点応用

メモリコンパクションと断片化対策

空きメモリは十分あるのに巨大ページ確保が失敗する謎が解けます。外部断片化の発生機構、移動可能ページの分離配置、コンパクションによる連続領域づくりまでを内部動作で押さえられます。

3つの要点応用

メモリバリアの種類とアーキテクチャ別の振る舞い

x86で動いたロックフリーコードがARMで壊れる理由を、TSOと弱順序の差から原理でつかめます。smp_mb/rmb/wmbとacquire/releaseの対応、コンパイラバリアとの違いまで具体例で整理します。

3つの要点応用

メモリマップトファイル(mmap)

read/write 呼び出しを介さず、ファイルをポインタ経由でメモリのように読み書きできるメモリマップトファイル(mmap)。大きなファイルを効率よく扱う仕組みが分かります。

3つの要点応用

メモリマップトファイルとページフォルトの連携

巨大ファイルを read/write の繰り返しなしに扱える mmap が、ページフォルトと結びついてどう遅延ロードし、CoW や書き戻しを実現するのかを原理から理解できます。

3つの要点応用

メモリ回収の優先順位とLRUリスト管理

メモリ逼迫時にカーネルがどのページから捨てるかは、active/inactiveの二段LRUとrefault検出で決まります。回収の優先順位を理解すれば、スラッシングやキャッシュ消失の原因まで読み解けます。

3つの要点応用

メモリ階層とキャッシュコヒーレンシ(MESIプロトコル)

マルチコアで各コアが同じデータを別々にキャッシュしても値が壊れないのはなぜか。MESIプロトコルとフォルスシェアリングの正体を、ハードウェアの動作から掴めます。

3つの要点中級

メモリ管理(スタックとヒープ)

メモリリークやスタックオーバーフローの正体が見える。自動で片付く速いスタックと、自分で確保して管理する自由なヒープ。2つの領域の違いを押さえる入門です。

3つの要点応用

メモリ重複排除(KSM)と同一ページ共有

同じVMを多数詰め込むとメモリが先に枯れる。KSMは内容が同一のページを1枚へ統合してRSSを削り、VM密度を底上げします。安定木による走査の仕組みとサイドチャネルの代償まで理解できます。

3つの要点応用

メモリ整合性モデルとシーケンシャル一貫性

並行コードが「ハードでは動くのに理論では未定義」になる理由を、整合性モデルの階層から原理でつかめます。SC・TSO・PSO・弱順序・リリース一貫性の強弱と、言語メモリモデルがなぜ要るかを整理します。

3つの要点応用

ユニカーネルとライブラリOSの設計思想

アプリと最小限のOS機能を1つのアドレス空間に静的リンクし、極小・高速起動・小さな攻撃面を狙うユニカーネルの原理を、Exokernelからの系譜と特化の代償までまとめて整理できます。

3つの要点応用

ライブパッチング(kpatch/livepatch)の仕組み

再起動なしでカーネルの脆弱性を塞げる。ftraceで関数を丸ごと差し替え、全タスクが安全点を通った瞬間に切り替える、その整合性の作り方を原理から解説します。

3つの要点応用

ライブロックとスタベーションの発生と対策

止まっていないのに進まないライブロックと、特定の処理だけ永久に待たされるスタベーションの正体が分かります。なぜ譲り合いが膠着を生むのか、バックオフ・ランダム化・公平性保証がどう解くかを原理からつかめます。

3つの要点応用

リアルタイムLinux(PREEMPT_RT)の設計

汎用Linuxを実時間化する設計判断が原理から分かります。割り込みのスレッド化、スピンロックのmutex化、優先度継承で最悪レイテンシをマイクロ秒級まで詰める仕組みを押さえられます。

3つの要点応用

リアルタイムスケジューリング(SCHED_FIFO/RR/DEADLINE)

締め切りを守るスケジューリングの原理が分かります。SCHED_FIFO/RRの固定優先度と、CBSとEDFで帯域を保証するSCHED_DEADLINE、優先度逆転と継承プロトコルまで一気に押さえられます。

3つの要点応用

リアルタイムスケジューリングのスケジューラビリティ解析

周期タスクが本当に締め切りを守れるかを設計段階で証明できます。RM/EDFの最適性、Liu-Layland境界、利用率テストと応答時間解析まで、机上で可否を判定する数理を一気に押さえられます。

3つの要点応用

リーダ・ライタロックとシーケンスロックの内部

読み取りが圧倒的に多いのにライタを排他しすぎて遅い――その悩みを、rwlockの優先度設計とseqlockの楽観的読み取りという2つの武器の原理からほどき、読み書き比率で正しく選べるようにします。

3つの要点応用

ログ構造化ファイルシステムとF2FS

なぜランダム書き込みをすべて追記に変えると速くなるのか、その代償であるガベージコレクションのコストまで、LFSの原理とF2FSのフラッシュ最適化から正確に理解できます。

3つの要点応用

ワーキングセットモデルとスラッシングの数理

メモリを増やしても遅いのは多重度の上げ過ぎが原因かもしれません。ワーキングセットの定義からPFF制御、スラッシングが崖のように起きる閾値と多重度制御までを数理で押さえ、原因を切り分けられます。

3つの要点中級

仮想記憶(ページング)

物理メモリ以上に使え、各プロセスに自分専用の広いメモリがあるように見せる。アドレスを翻訳し足りなければディスクへ逃がす、仮想記憶とページングの仕組み。

3つの要点応用

仮想記憶のアドレス変換とMMU/TLBの内部

アクセスのたびに走るアドレス変換が、なぜ遅くならないのか。多段ページテーブルとMMU、TLBの内部構造を原理から押さえ、性能の勘所を掴めます。

3つの要点応用

割り込みコントローラの仕組み(APIC・GIC・MSI-X)

割り込みがどのコアへどの優先度で届くかを構造から理解できます。x86 の LAPIC/IO-APIC/x2APIC、ARM GIC、MSI-X を整理して押さえます。

3つの要点中級

割り込みと入出力(I/O)

CPU を無駄に待たせず、必要なときだけ反応させて I/O を効率よくさばく割り込みの仕組み。デバイスの準備完了をどう知らせ、処理に移るのかをやさしく解説します。

3つの要点応用

割り込み処理の二段構え(上半分/下半分)

割り込みハンドラを軽くするだけで応答性とスループットが両立できる仕組みがわかります。上半分で最小限だけ受け、重い処理を下半分へ逃がす設計を原理から押さえられます。

3つの要点応用

機密計算(Confidential VM・TEE)

クラウド事業者にもメモリの中身を見せずにVMを動かせる仕組みが分かります。AMD SEV-SNPとIntel TDXのメモリ暗号化・完全性保護・証明の原理を押さえ、既存の仮想化拡張との違いを整理できます。

3つの要点基礎

起動(ブート)プロセス

電源を入れてから OS が使えるようになるまで、裏で何が起きているのかが分かる。ファームウェア(BIOS/UEFI)→ ブートローダ → カーネル → 初期化とバトンを渡す流れを順に解説。

3つの要点応用

共有メモリIPCとメモリ同期の落とし穴

共有メモリは最速のIPCだが、同じ物理ページを2つのプロセスへ別アドレスで張る仕組みと、ロックを共有領域に置く作法、メモリバリアの要否を外すと壊れます。原理からつかめます。

3つの要点応用

高性能I/Oモデル(epoll・io_uring)の内部

数万接続を1スレッドでさばく現代サーバーの心臓部。selectのO(n)をepollがどう潰し、io_uringがシステムコールすら消す原理まで一気に理解できます。

3つの要点応用

高分解能タイマとカーネルの時間管理

カーネルが時刻とタイマをどう作るかが分かれば、遅延やドリフトの原因を原理から切り分けられます。jiffiesからhrtimer、NO_HZ、単調時計とウォール時計の差まで一気に押さえられます。

3つの要点応用

省電力スケジューリング(EAS)

スマホがなぜ小さいコアを優先するのかが原理から分かります。エネルギーモデルとutilでタスク配置を選ぶEASの判断基準を、CFS/EEVDFの土台と結び付けて正確に押さえられます。

3つの要点応用

省電力とCPU周波数・アイドル状態の管理

CPUの電力を削る仕組みを原理から押さえれば、なぜ低負荷でも熱いのか、なぜ応答が遅れるのかを切り分けられます。P-stateとC-state、cpufreqガバナ、tickless動作、電力と応答性のトレードオフを設計判断として整理します。

3つの要点応用

条件変数とモニタ・スレッド間同期の原理

なぜ条件変数の待ちは必ずwhileで囲むのか。モニタの相互排他とwait/signalの意味論、Mesa対Hoareの違いから、再検査ループが「作法」ではなく「必然」である理由まで原理でつかめます。

3つの要点応用

多段ページテーブルの構造(4/5レベルページング)

巨大な64bitアドレス空間を、なぜ数KBの表で表せるのか。x86-64の4/5レベルページングのインデックス分割とエントリ構造、巨大ページ、メモリ消費を構造で読み解けます。

3つの要点応用

投機実行とサイドチャネル(Spectre/Meltdown)のOS対策

性能のために投機実行したCPUが、捨てたはずの結果をキャッシュに痕跡として残す。MeltdownとSpectreの原理から、KPTI・retpoline・IBRSなどOSの緩和策とそのコストまで筋道立てて理解できます。

3つの要点応用

動的リンクと共有ライブラリの仕組み

同じlibcを何百プロセスで使ってもメモリが増えない理由が腑に落ちます。共有ライブラリの物理ページ共有、位置独立コード、シンボルのバージョニング、preload/RPATH/RUNPATHの解決順序を内部から解剖します。

3つの要点中級

排他制御とデッドロック

同じデータを同時にいじってデータが壊れるのを防ぐのが排他制御(ロック)。ただし掛け方を誤ると全員が固まるデッドロックに陥る——その仕組みと回避の勘所を解説。

3つの要点応用

非同期I/Oの実装(POSIX AIO・io_uring)

ディスクI/Oで待たされないための非同期I/O。なぜPOSIX AIOは実用にならず、libaioはO_DIRECT必須で、io_uringだけが汎用の非同期I/Oを実現できたのかを実装の中身から理解できます。

3つの要点応用

名前空間と cgroups(コンテナの基盤)

コンテナの軽い隔離はどう実現されているのか。見える範囲を区切る名前空間と、使える資源を制限する cgroups という Linux カーネルの2機能から仕組みを解き明かします。

3つの要点応用

名前空間の内部実装(PID・mount・network・user)

コンテナの隔離は魔法ではなく、カーネル構造体の付け替えで動く。PID階層の番号変換やUIDマッピングの原理まで踏み込み、非特権コンテナが成り立つ理由を解き明かします。

3つの要点応用

優先度逆転と優先度継承プロトコル

最優先タスクが格下に追い越される優先度逆転の正体が分かります。なぜ待ち時間が無限に延びるのか、継承と上限の2プロトコルがどう有界化するか、Mars Pathfinderの事例まで原理から押さえられます。

3つの要点応用

例外・トラップ・フォルト・アボートの分類と処理

例外のどれが命令をやり直せてどれが致命的かを原理から判別できます。フォルト・トラップ・アボートの違いと、IDTディスパッチ・ダブルフォルトまで押さえます。