|
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のメモリ空間
ページングとスワップ
重度のフラグメントにこそ有効!
「ページングファイルなし」のページングとは違う!
ヌル・セグメントて何だ?
エントリの数え方 |
|
|
|
|