ISBN 9784297131487

[試して理解]Linuxのしくみ -実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】

[試して理解]Linuxのしくみ -実験と図解で学ぶOS、仮想マシン、コンテナの基礎知識【増補改訂版】
著者
武内 覚
出版社
技術評論社
刊行
2022-10

概要

実験と図解でLinuxのOS内部動作を体得する

想定読者

Linux上でシステム開発・インフラ構築を担うエンジニアで、コマンドの使い方にとどまらずOSの動作原理を理解したい中級者

こんな人には向いていない

  • Linuxコマンドのリファレンスや操作手順書を求めている人(本書はOSが「なぜそう動くか」の仕組みに特化しており、コマンド逆引き用途には向かない)
  • カーネルソースコードを直接読み解くことを目指す上級者(本書は実験・計測ベースの観察であり、カーネル内部実装の詳細追跡は別書が適している)
  • Go・Pythonのコードが全く読めない読者(増補改訂版のサンプルはGo/Pythonで書かれており、実験を手元で再現するために最低限の読解力が必要)

この本で身につくこと

  • プロセス生成とスケジューリングの仕組みを実測データで説明できる
  • 仮想メモリ・ページテーブルの構造を理解し、メモリ管理の挙動を自分で計測できる
  • ファイルシステムがディスク上でどのように構成・動作しているかを実験で確認できる
  • コンテナ(namespace/cgroups)と仮想マシン(ハイパーバイザ)の分離メカニズムを区別して説明できる
  • Go/PythonコードでOSの動作を計測・観察する実験手法を身につける

ハイライト(外部からの言及)

プロセス管理、プロセススケジューラ、メモリ管理、記憶階層、ファイルシステム、そして仮想化機能、コンテナなど、OSとハードウェアに関するしくみがどのように動くのか、実験とその結果を示す豊富なグラフや図解を用いてわかりやすく解説します。 — 出典

本書のカバー範囲と解説手法が一文で把握できる箇所。実験ベースという差別化が明確に出ている

ソースコードはC言語から、Go言語とPythonにアップデートしています。さらに仮想化、コンテナなどの章が加わりました。今どきのLinuxのしくみを本書でしっかり理解しておきましょう。 — 出典

増補改訂版の差分が端的に示されており、旧版既読者の買い直し判断に直結する

本来とても複雑&難解である「カーネルの動作」や「ハードウェアの制御」を、入門者にも分かりやすいように簡略化して解説してくれるのがとても良かったです。 — 出典

実際に読んだエンジニアが「難解な低レイヤを入門者にも届く形で解説している」と評価しており、既存ハイライトが扱う「何が学べるか/何が追加されたか」とは異なる難易度感・アクセシビリティの角度を補完する

章立て

はじめに

本書の構成と読み方の方針

第1章 Linuxの概要

OS の役割を整理する導入章

第2章 プロセス管理(基礎編)

fork / exec / wait の基本動作を実験で確認

第3章 プロセススケジューラ

CFS の動作を nice / cgroup で観察。実装より体験で理解する本書独自のスタイル

第4章 メモリ管理システム

仮想記憶 / デマンドページング / OOM Killer を実験で観察

第5章 プロセス管理(応用編)

シグナル / プロセス間通信

第6章 デバイスアクセス

デバイスドライバとカーネルのインターフェースを実験で確認する章。前後の章に比べて実務直結度はやや低いが、ファイルシステム章の前提として構造を把握しておきたい。

第7章 ファイルシステム

ext4 / Btrfs / XFS の比較。VFS の階層を観察

第8章 記憶階層

CPU キャッシュ → メモリ → SSD → HDD のレイテンシを実測する章

第9章 ブロック層

I/Oスケジューラとディスクキューの動作を実測する章。SSD主流の環境では差が小さく映るが、高負荷時のI/O競合を理解する上で記憶階層章と対で読むと効果が高い。

第10章 仮想化機能

KVM の仕組みを実験で確認

第11章 コンテナ

Docker / Podman の基盤(namespace / cgroup)を観察

第12章 cgroup

本書増補改訂版の追加章。リソース制限の現代的な土台

終章: 本書で学んだことと今後への生かし方

各章の要点を俯瞰しながら今後の学習先を示す道案内章。本書を読み終えた直後に参照し、次に深掘りする領域を絞り込む際に役立てたい。

関連記事 / 参考情報

学習のヒント

  • プロセス管理・スケジューラ・メモリ管理の各章はサンプルコードを手元で実際に動かし、グラフの数値を自分で再現してから次章へ進むと定着が速い。読むだけで終わらせると本書の価値の半分しか得られない
  • コンテナ・仮想化の章(後半)は、Dockerを日常的に使うエンジニアであれば先読みしても理解が成立する構成になっている。namespace/cgroupsの動作原理を急いで知りたい場合は前半を後回しにしてよい
  • 増補改訂版のサンプルはGo/Python両方が用意されているため、普段使いの言語で実験を進め、余裕があればもう一方の言語でも実行して比較すると言語間の挙動差まで観察できる

前提知識

  • Linuxの基本コマンド操作(ps、top、df、mountなど)に慣れていること
  • GoまたはPythonの基本的な読解力(サンプルコードを動かすための最低限の理解)
  • Dockerを一度でも実際に動かした経験があると後半のコンテナ・仮想化章の吸収速度が上がる

次に読む本

詳解Linuxカーネル

本書が実験と計測でOSの挙動を観察するのに対し、詳解Linuxカーネルはカーネルソースコードを逐一読み解きながら実装の意図を解説する。本書でプロセス管理やメモリ管理の動作イメージを掴んだ後に読むことで、観察した現象とコード実装を対応づけられる。

コンテナ・Kubernetes完全ガイド

本書はnamespace/cgroupsのレイヤでコンテナの分離原理を解説するが、Kubernetes完全ガイドはその基礎を前提にPod設計・ネットワーク・スケジューリングの実践まで踏み込む。OS原理の理解があると、リソース制限やCNIプラグインの動作背景を把握しやすくなる。

オペレーティングシステム(恐竜本)

本書が実験・計測でOSの挙動を直感的に体得するのに対し、恐竜本はスケジューリングアルゴリズムやページング理論をアカデミックに体系化している。本書の観察結果を理論で補完することで、実測データと原理の双方から理解を固められる。

出版社による内容紹介

ITシステムやソフトウェアの基盤OSとして幅広く使われているLinux。エンジニアとしてLinuxに関する知識はいまや必須とも言えますが、あなたはそのしくみや動作を具体的にイメージすることができるでしょうか。 本書では、Linux OS における、プロセス管理、プロセススケジューラ、メモリ管理、記憶階層、ファイルシステム、そして仮想化機能、コンテナなど、OS とハードウェアに関するしくみがどのように動くのか、実験とその結果を示す豊富なグラフや図解を用いてわかりやすく解説します。 改訂に際しては全面フルカラー化。グラフや図解がさらにわかりやすくなり、ソースコードはC言語から、Go言語とPythonにアップデートしています。さらに仮想化、コンテナなどの章が加わりました。今どきのLinuxのしくみを本書でしっかり理解しておきましょう。

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。