オペレーティングシステムの仕組みを体系的に学ぶ包括的ガイド。プロセス管理、メモリ管理、ファイルシステム、I/O、セキュリティ、仮想化まで、OSの全レイヤーを理解する。
プロセスとは「実行中のプログラム」であり、OSが管理する最も基本的な実行単位である。
スレッドは「軽量プロセス」であり、同一プロセス内でメモリを共有しながら並行実行される実行単位である。現代のほぼ全てのアプリケーション――Webサーバ、データベース、GUI、ゲームエンジン――はマルチスレッドで構築されている。この章ではスレッドの基本概念から、ユーザレベル/カーネルレベルの実装モデル、同期プリミティブ、デッドロック、スレッドプールまでを体系的に解説する。
スケジューリングとは「どのプロセスに次にCPUを割り当てるか」を決定するアルゴリズムである。
プロセスは独立したメモリ空間を持つため、データをやり取りするには明示的な通信手段が必要。
仮想メモリは「物理メモリの限界を超え、各プロセスに独立した広大なアドレス空間を提供する」OSの最も重要な抽象化の一つ。
**ページング (Paging)** は、物理メモリを固定サイズの「フレーム」に、仮想アドレス空間を同じサイズの「ページ」に分割し、ページテーブルを介して両者を動的に対応付けるメモリ管理方式である。現代のほぼ全ての汎用 OS はページングを基盤としており、プロセス分離・共有メモリ・デマンドページング・スワッピングといった機構を支えている。
**メモリアロケータの設計は、システム全体のスループット・レイテンシ・安定性を左右する最も重要な基盤技術の一つである。**