Technically Impossible

Lets look at the weak link in your statement. Anything "Technically Impossible" basically means we haven't figured out how yet.

作って理解するOS x86系コンピュータを動かす理論と実装

作って理解するOS  x86系コンピュータを動かす理論と実装
今年やり残したことを消化する時期がやってきた。今回紹介する書籍に目を通すことも、そのようなやり残しの一つだった。本書は9月に頂いたものだ。せっかくの頂きものなので、年内に目を通して、何らかの記録を残しておこうと考えていた。頂きものだからと言って、ステマに類する投稿ではないことを前置きしておく。

OS、並びにその作成については好奇心以上の関心があるものではなく、そのテーマについての読書は、10年以上前に読んだ『30日でできる!OS自作入門』以来だった。同書の著者であり、『作って理解する~』の監修者でもある川合秀実氏は、本書を次のように評している。

  • 効率よくたくさんの知識を教えてくれ、効率よく学ぶことができる。
  • OSの作り方を紹介した本ではない
  • PCの仕組みを深く説明している本

本書は「作って理解する」と謳うものの、読んで理解する部分が多い。実際のところ、700ページ超の半分はx86アーキテクチャの説明に割かれている。そして、この部分が私にとっては大変得るものが大きかった。同時に、この部分が本書を特徴づけている部分でもあると感じた。それは著者自らが言うところの、

  • OSの入門書であると同時にコンピュータの入門書
  • コンピュータの基礎からOSの基礎までを体系的に理解する

を多分に反映している箇所でもあるからだ。

おそらく本書に関心を示すのは、実用以上に好奇心に駆られる人達ではないだろうか。本書を読み進めるには、好奇心以上に、強い知識欲が必要かもしれない。前半のアーキテクチャ説明に、コーディングの要素は一切ない。OSよりも下のレイヤーについての話題に終始ししているからだ。特に頭よりも先に手が動くタイプの人達は、この部分を冗長で退屈に感じることだろう。
とはいえ前半を飛ばして、後半のOS実装に直行すれば面食らうことになる。そこはアセンブラの世界だ。いくらコードと共に、丁寧な説明が添えられているからとはいえ、読み進めるには基礎知識が必要だ。その知識が、前半の説明に通じている。

肝心の前半部分は次の話題で構成されている。第2部「x86系PCのアーキテクチャを理解する」の目次から大見出しだけを引用した。

  • コンピュータの基本構成
  • CPUの基本機能
  • CPU命令の使い方
  • アセンブラ(NASM)の使い方
  • 周辺機器の制御方法
  • BIOSの役割

最近のITと言えばクラウドwebサービス、仮想環境など、OSからハードウェア制御まで隠蔽されており、エンジニアとはいえOSの設定以上の表層部分を扱う場合がほとんどだ。
作業環境もノートPCで全てが一体構成された環境にプリインストールされたOSを用いる場合がほとんどだろう。特にインフラ系のエンジニアはサーバー、ストレージ装置など、直接ハードウェアに触れる機会もあろうが、それにしてもテーマと題材、構成するトピックは普段、馴染みのあるものではない。
PCを自作するユーザーにとっても同様だ。ほんのさわり程度、いくらか馴染みの話題もあろうが、それにしても実用というよりは教養に通じる領域の話題だ。そして、この「教養」が私にとって得るもの大であった理由だ。一知半解に積み重ねてきた私の知識は、そのほとんどが断片化している。教養は、それらを繋ぎあわせ、一つの体系的なまとまりに統合してくれる。

例えばWindowsには電源断から稼働状態まで、スリープや休止状態などを挟んで、複数段階にまたがるシステム状態が存在する。
docs.microsoft.com
これまでの知識は、ACPIとの関連仕様として把握するに留まるものであったが、本書によってBIOSからの制御という観点から見た、製品仕様の裏側に存在する処理にまで理解が広がった。

おそらくこのような知識は教科書に類する専門書や、規格仕様書を通じて得られるのかもしれないが、このような市販の技術書、それも丁寧な説明を通じて理解できるところが、本書の価値通じるところだろう。

発売後の一時期話題になった本書ではあるが、読者を選ぶ内容ではあると思う。話題性や好奇心に突き動かされて購入を早まる前に、立ち読みや図書館で内容を確かめ、それが自身の関心や必要に沿っているかを事前確認することをお勧めする。
特にOSの実装に関心があるものの、頭よりも先に手が動く人達には、本書よりも監修者の著作『30日でできる~』をお勧めする。

作って理解するOS  x86系コンピュータを動かす理論と実装

作って理解するOS x86系コンピュータを動かす理論と実装