CPUのきもち〜IA-32アーキテクチャーとWindowsXPの不思議な関係〜
Chapter 0 プロローグ
0-1 今日もWindowsが使えるのもCPUのおかげです♪
 電源オン、そしてCPUは目覚める
 CPUとOSそしてユーザーの三角関係
 CPUとOSの間のお約束
 今、あなたが使っているCPUについて
0-2 本編に入る前に
 「今さら?」とは言えない、IA-32アーキテクチャー
 メモリの内容も見れば、いっそう理解できる

Chapter1 「IA-32アーキテクチャー」って知ってる?
1-1 IA-32アーキテクチャーってどんなもの?
 アーキテクチャーって何なのよ
 目玉となる機能はコレだ!
1-2 IA-32アーキテクチャーが登場するまで
 世界初のCPUってどんなもの?
 最初の個人向けコンピュータに搭載されたCPUとは
 “インテルCPU用プログラムを作る”マイクロソフトの登場
 16ビットCPU「8086」と「8088」の事情
 「80286」では問題は解決しなかった
 IA-32アーキテクチャーの確立

Chapter2 0であるか1であるか、それが問題だ!
2-1 それはリアルモードで始まる
 何気なく見えても、それはプロテクトモード
 リアルモードって誰のためにあるの?
 リアルモードでの起動はパソコンのお約束
2-2 CPUの基本機能を牛耳る「レジスタ」とは
 CPUはどんな構造になっているのか
 「レジスタ」というもの
 汎用レジスタはデータの一時保管場所
 プロテクトモードに切り替えるのはコントロールレジスタ
2-3 インテルCPUには欠かせないセグメント方式とは
 「セグメント」って何だ?
 モードによってメモリの指定方式は異なる
 リアルモードではどうやってメモリを指すか
 プロテクトモードではどうやって問題を克服しているか?
 アプリケーションソフトがメモリを使うとき

Chapter3 システムの安泰は、こうして実現している
3-1 プロテクトモードは、その名もズバリ「保護」機能付き
 保護メカニズムを持つプロテクトモード
 リミット・チェックでシステムの安定化
 タイプ・チェックでセグメントの種類を確認
 セグメントの特権レベルを指すDPL
3-2 特権レベルでシステムを守れ!
 Windowsが利用する特権レベル
 特権レベルを割り当てるWindows
 デバイスドライバはどの特権レベル?
3-3 割り込みと例外でシステムを円滑に動かす
 すべての処理が予定通りとは限らない
 ソフトウェアでも割り込みは起こる
 割り込みと例外は番号で区別する
 割り込み処理は割り込みディスクリプタテーブルで行う

Chapter4 アプリケーションソフトが使えるワケ
4-1 複数のアプリケーションはどう動いているのか
 CPUは忍者のごとく
 CPUはこうしてタスク管理をやっている
 タスクの切り替えはOSとの共同作業
 Windowsではスレッドを活用して効率アップをはかる
 実行するアプリケーションには優先度がある
 Windowsはこうしてプロセスを管理する
4-2 Windowsアプリケーションソフトの事情
 Windowsアプリケーションの宿命
 互換性に縛られていたWindows9x系
 WindowsXPって実はスゴイんです
 DLLファイルって何だ?
 DLL地獄はもう心配ない

Chapter5 すばらしい仮想空間を作り出すページング機能とは
5-1 Windowsにおけるメモリ管理とは
 実はハードディスクが利用されているのです
 CPUが持つ「ページング」機能ってこんなもの
 ページングで実現する仮想記憶
 どれくらいの仮想メモリが使用されているか?
 ページングファイルだって断片化する
5-2 CPUのページング機能とは
 ページングは使う・使わないを選んでも良い
 4KB単位が活きているリニアアドレスのフォーマット
 実際にWindowsXPがどのようにアドレス変換をしているか?
 PTEのフォーマットを覗いてみれば
 ページングを使って物理メモリをレイアウトする
 ページレベルの保護について
 メモリアクセスを高速に行うTLBとは?

Chapter6 仮想8086モードで過去の資産も大切に
6-1 仮想8086モードがなぜサポートされているか
 それは80286の反省から始まった
 80386で「仮想8086モード」が追加
6-2 仮想8086モードはこうして動いている
 8086をエミュレートしているのだ!
 どこで仮想8086モードを有効にするか?
 仮想8086モードでのメモリ管理
 MS-DOS用アプリケーションソフトを複数実行させることも可能

Chapter7 実際にWindowsの中身を覗いてみよう
7-1 普段は見えないWindowsの実体を知るには
 Debugging Tools for Windowsをインストール
 2台のパソコンを繋いで準備完了
7-2 メモリの内容を覗いてみよう
 Debugging Tools for Windowsを起動する
 「GDT」を見てみよう
 「IDT」を見てみよう
 「TSS」を見てみよう
 ページングによるアドレス変換

索引

コラム
初の32ビットCPU
なぜ「4004」という名前が付いたのか?
インテルのCPUが搭載されているパソコンに注目!
新しいアーキテクチャーの行方
元々はMS-DOSの補助プログラムであったWindows
せっかくの機能が活かしきれなかった80286
64ビットCPUの汎用レジスタ
CR4について
「セグメントレジスタ」というもの
16進数について
セグメントディスクリプタキャッシュは見えない存在
32ビットCPUで扱えるセグメントの最大数
属性フィールドのPビットとAビット
特権レベル0はWindowsのごく一部
I/Oポートにもアクセス制限
セーフモードが用意されているワケ
次世代CPUに新しい特権モードが登場
外部割り込み番号を見てみよう
どれくらいページ・フォルトが起こっているのか?
どのアプリケーションソフトがどれくらいCPUを使っているのか?
マルチタスクの種類
スレッド数を見てみよう
手動でプロセスの優先度を上げる
クリップボードの中身を覗いてみよう
APIってどんなもの?
アプリケーションソフトが強制終了されるエラーとは
機能限定版もDLLで実現
張子が「DLL」ではないDLLファイル
WindowsXPのメモリ空間
ページングとスワップ
重度のフラグメントにこそ有効!
「ページングファイルなし」のページングとは違う!
ヌル・セグメントて何だ?
エントリの数え方