Linuxカーネル2.6解読室 目次

まえがき

Part 1 カーネルプリミティブ

  • 第1章 プロセススケジューリング
  • 第2章 割り込み
    • 2.1 割り込み処理とは
    • 2.2 Linuxカーネルの割り込み処理の特徴
      • 2.2.1 応答性の確保
      • 2.2.2 マルチプロセッサへの対応
      • 2.2.3 割り込みスタック
    • 2.3 ハードウェア割り込み処理
      • 2.3.1 割り込みの種類
      • 2.3.2 ハードウェア割り込み処理の動作例
      • 2.3.3 ハードウェア割り込み管理データ構造
      • 2.3.4 ハードウェア割り込みハンドラの登録
      • 2.3.5 ハードウェア割り込みの制御
      • 2.3.6 ハードウェア割り込みハンドラの起動
      • 2.3.7 do_IRQ関数の実装
      • 2.3.8 割り込み発生状況の確認
    • 2.4 プロセッサ間割り込み
      • 2.4.1 プロセッサ間割り込み要求
    • 2.5 マスク不可割り込みNMI
    • 2.6 最後に
  • 第3章 遅延処理
    • 3.1 割り込み処理の遅延
      • 3.1.1 マルチプロセッサへの対応
      • 3.1.2 ソフト割り込みスタック
      • 3.1.3 ソフト割り込み
      • 3.1.4 tasklet
    • 3.2 workqueue
      • 3.2.1 workqueueのデータ構造
      • 3.2.2 workqueueの操作関数群
      • 3.2.3 汎用workqueue
  • 第4章 時計
    • 4.1 時計の役割
    • 4.2 3つの時計
      • 4.2.1 グローバルな時計
      • 4.2.2 CPUローカルな時計―ハードウェア割り込み
      • 4.2.3 CPUローカルな時計―ソフト割り込み
    • 4.3 Linuxの時刻
      • 4.3.1 Linux内部時計
      • 4.3.2 ハードウェアのカレンダ
      • 4.3.3 jiffies
      • 4.3.4 タイムスタンプカウンタ
    • 4.4 各種タイマー関連ハードウェア
    • 4.5 時刻の取得
      • 4.5.1 グローバルタイマー割り込みの縮退
      • 4.5.2 時刻の設定
      • 4.5.3 時刻の補正
    • 4.6 時刻管理の課題
    • 4.7 タイマーリスト
      • 4.7.1 タイマーリストの構造
      • 4.7.2 タイマーリストの操作
      • 4.7.3 タイマーリストの実行
      • 4.7.4 プロセスからの利用
    • 4.8 インターバルタイマー
      • 4.8.1 絶対時間指定タイマー
      • 4.8.2 実行時間指定タイマー
    • 4.9 POSIXタイマー
      • 4.9.1 時刻管理
      • 4.9.2 POSIXインターバルタイマー
  • 第5章 システムコール
    • 5.1 システムコールとカーネルサービス
      • 5.1.1 リソースの管理を実現する保護機能
      • 5.1.2 特権レベルの変更
      • 5.1.3 システムコールのインターフェイス
      • 5.1.4 システムコール番号とエントリテーブル
      • 5.1.5 シグナルによる割り込み(システムコールの再起動とアボート)
      • 5.1.6 システムコールとデバッグインターフェイス(ptraceシステムコール)
    • 5.2 プロセスからのカーネル呼び出し
      • 5.2.1 システムコール呼び出し規約
      • 5.2.2 int 0x80/iretによるシステムコール
      • 5.2.3 sysenter/sysexitによるシステムコール
    • 5.3 int 0x80とsysenterを切り替えるvsyscall
      • 5.3.1 vsyscallの機能、役割
      • 5.3.2 vsyscallの初期化
    • 5.4 起動およびコアダンプ
      • 5.4.1 プログラムローダー、ダイナミックリンカーとglibcでの変更
      • 5.4.2 コアダンプとgdb
    • 5.5 プロセス空間へのアクセスと例外テーブル
      • 5.5.1 アドレス範囲チェック
      • 5.5.2 例外テーブルの作成
      • 5.5.3 アクセス用関数
    • 5.6 実例編
      • 5.6.1 ptraceシステムコールについて
      • 5.6.2 straceコマンドの基本的な動作
      • 5.6.3 ltraceコマンド
      • 5.6.4 実行例
    • 5.7 おわりに
  • 第6章 同期と排他
    • 6.1 排他処理
    • 6.2 プロセスコンテキストどうしの排他
      • 6.2.1 セマフォ
      • 6.2.2 読み書きセマフォ
      • 6.2.3 プリエンプション禁止
    • 6.3 割り込みコンテキストの排他
      • 6.3.1 ハードウェア割り込みの禁止
      • 6.3.2 ソフト割り込み禁止
    • 6.4 マルチプロセッサ環境での排他
      • 6.4.1 スピンロック
      • 6.4.2 ハイパースレッディングとスピンロック
      • 6.4.3 読み書きスピンロック
      • 6.4.4 不可分操作(アトミック操作)
      • 6.4.5 ビッグカーネルロック
      • 6.4.6 シーケンスカウンタロック(seqロック)
      • 6.4.7 RCU
      • 6.4.8 メモリバリア
    • 6.5 排他機構の利用例―ディレクトリエントリキャッシュ
      • 6.5.1 ディレクトリエントリキャッシュ
    • 6.6 最後に

Part2 プロセス管理

  • 第7章 プロセス管理
    • 7.1 プロセスモデル
      • 7.1.1 PThread(POSIX Thread)ライブラリ
      • 7.1.2 プロセス
      • 7.1.3 プロセスの親子関係
      • 7.1.4 ユーザースレッド
      • 7.1.5 スレッドグループ
      • 7.1.6 LWP(LightWeight Process)
      • 7.1.7 カーネルスレッド
    • 7.2 プロセスに関するデータ構造
      • 7.2.1 構造体task_struct
      • 7.2.2 状態遷移(TASK状態)のフラグ
      • 7.2.3 そのほかのフラグ
    • 7.3 複数のプロセスを管理する「グループ」
      • 7.3.1 プロセスグループ、セッションと制御端末
      • 7.3.2 各種ID
      • 7.3.3 プロセスID管理
      • 7.3.4 セッション、プロセスグループ、スレッドグループ
      • 7.3.5 親子関係
      • 7.3.6 ptrace
    • 7.4 プロセスのライフサイクル
      • 7.4.1 fork、vfork、clone
      • 7.4.2 exec
      • 7.4.3 exit
    • 7.5 プロセス終了後の処理
      • 7.5.1 wait
    • 7.6 特殊なプロセスやスレッド
      • 7.6.1 カーネルスレッド
      • 7.6.2 idleプロセス
      • 7.6.3 initプロセス
    • 7.7 スレッド関連の補足事項
      • 7.7.1 TLS
    • 7.8 おわりに
  • 第8章 シグナル処理
    • 8.1 シグナル機構の実装
      • 8.1.1 シグナルの配送先とスレッド
      • 8.1.2 シグナルのマスク
      • 8.1.3 スレッドとシグナルハンドラ/マスク
      • 8.1.4 シグナルの種類
      • 8.1.5 リアルタイムシグナル(queued realtime signal)
    • 8.2 シグナル処理のカーネルコード
      • 8.2.1 データ構造
      • 8.2.2 シグナルハンドラとマスクの設定
      • 8.2.3 シグナルの配送
      • 8.2.4 シグナルとジョブコントロール
    • 8.3 おわりに

Part3 メモリ管理

  • 第9章 アドレス変換機構
    • 9.1 仮想アドレス空間のモデル
      • 9.1.1 仮想アドレス空間
      • 9.1.2 ページ
      • 9.1.3 ページ変換テーブル
    • 9.2 Linuxのページ変換テーブル
    • 9.3 インテルアーキテクチャのページ変換テーブル
      • 9.3.1 IA-32のアドレス変換機構
      • 9.3.2 IA-32のページ変換テーブル
    • 9.4 そのほかのアーキテクチャのページ変換テーブル
    • 9.5 TLB
    • 9.6 メモリキャッシュ
    • 9.7 アドレス変換機構のまとめ
  • 第10章 カーネル空間のレイアウト
    • 10.1 IA-32のカーネル空間レイアウト
      • 10.1.1 プロセス空間
      • 10.1.2 ストレートマップ領域
      • 10.1.3 固定マップ領域
      • 10.1.4 HIGHMEMのアクセス
      • 10.1.5 カーネル仮想領域
    • 10.2 そのほかのカーネルレイアウト
    • 10.3 カーネル空間レイアウトのまとめ
  • 第11章 実メモリの管理
    • 11.1 制御構造
      • 11.1.1 page構造体
      • 11.1.2 zone構造体
      • 11.1.3 pglist_data構造体
      • 11.1.4 各構造体の関係
    • 11.2 空きページの管理
      • 11.2.1 バディシステム(バディアロケータ)
      • 11.2.2 制御構造
      • 11.2.3 割り当て、解放の流れ
      • 11.2.4 1ページ用キャッシュ
    • 11.3 獲得、解放のインターフェイス
    • 11.4 ページ獲得処理の実装
      • 11.4.1 ゾーンの検索順序
      • 11.4.2 探索のしきい値
      • 11.4.3 oom killer
      • 11.4.4 バディシステムの処理
    • 11.5 バディシステムの使用状況
    • 11.6 実メモリ管理のまとめ
  • 第12章 動的メモリ割り当て
    • 12.1 スラブアロケータ
      • 12.1.1 基本構造
      • 12.1.2 制御構造
      • 12.1.3 獲得、解放の流れ
      • 12.1.4 スラブアロケータのインターフェイス
      • 12.1.5 スラブアロケータの使用状況
    • 12.2 メモリプール
    • 12.3 vmalloc
    • 12.4 動的メモリ割り当てのまとめ
    • 13.1 基本テクニック
      • 13.1.1 スワップ
      • 13.1.2 デマンドページング
      • 13.1.3 コピーオンライト
      • 13.1.4 ファイルマップ
  • 第13章 プロセス空間の管理
      • 13.1.5 基本テクニックのまとめ
    • 13.2 制御構造
      • 13.2.1 mm_struct構造体
      • 13.2.2 vm_area_struct
      • 13.2.3 プロセス空間の例
    • 13.3 プロセス空間処理の実装
      • 13.3.1 fork
      • 13.3.2 mmap
      • 13.3.3 unmap
      • 13.3.4 brk
      • 13.3.5 stack
      • 13.3.6 exec
      • 13.3.7 exit
    • 13.4 スワップ領域の管理
      • 13.4.1 制御構造
      • 13.4.2 空きページの割り当て
      • 13.4.3 スワップエントリ
    • 13.5 ページフォルトの実装
      • 13.5.1 例外処理
      • 13.5.2 ページフォルト共通部
      • 13.5.3 do_anonymous_page 関数
      • 13.5.4 do_no_page関数
      • 13.5.5 do_swap_page関数
      • 13.5.6 do_wp_page関数
      • 13.5.7 ページフォルト処理の復帰値
    • 13.6 そのほかのトピック
      • 13.6.1 共有メモリ
      • 13.6.2 ラージページ
      • 13.6.3 ノンリニアマッピング
      • 13.6.4 空間の切り替え
    • 13.7 プロセス空間管理のまとめ
  • 第14章 ページの回収処理
    • 14.1 基本戦略
    • 14.2 回収対象ページの管理構造
      • 14.2.1 ケース1:ページキャッシュとして使用され、プロセス空間にはマップされていない
      • 14.2.2 ケース2:プロセス空間にマップされ、ページキャッシュではない
      • 14.2.3 ケース3:ページキャッシュであり、プロセス空間にもマップされている
    • 14.3 回収処理の実体と実行の契機
    • 14.4 回収処理の実装
      • 14.4.1 balance_pgdat関数
      • 14.4.2 shrink_caches関数
      • 14.4.3 shrink_zone関数
      • 14.4.4 refill_inactive_zone関数
      • 14.4.5 shrink_cache関数
      • 14.4.6 shrink_list関数
      • 14.4.7 shrink_slab関数
    • 14.5 ページの回収処理のまとめ

Part4 ファイル管理

  • 第15章 仮想ファイルシステム(VFS)
    • 15.1 VFS層とは
    • 15.2 VFS層のデータ構造
      • 15.2.1 inode構造体
      • 15.2.2 address_space構造体
      • 15.2.3 dentry構造体
      • 15.2.4 file構造体
      • 15.2.5 super_block構造体
      • 15.2.6 vfsmount構造体
    • 15.3 オープンファイルの管理
    • 15.4 ディレクトリエントリの管理構造
    • 15.5 inode構造体の管理構造
    • 15.6 super_block構造体の管理構造
    • 15.7 名前空間の構成
      • 15.7.1 vfsmount構造体
      • 15.7.2 namespace構造体
      • 15.7.3 fs_struct構造体
    • 15.8 ファイルオペレーション
    • 15.9 名前空間の実装
      • 15.9.1 パス名ルックアップ処理の実装
      • 15.9.2 マウント、アンマウントの実装
    • 15.10 仮想ファイルシステムのまとめ
  • 第16章 ファイルの操作
    • 16.1 ファイルのオープン
    • 16.2 ファイルの作成
      • 16.2.1 mknodシステムコール
      • 16.2.2 mkdir/symlinkシステムコール
      • 16.2.3 linkシステムコール
      • 16.2.4 open/creatシステムコール
    • 16.3 ファイルの削除
      • 16.3.1 unlinkシステムコール
      • 16.3.2 rmdirシステムコール
    • 16.4 ファイルのrename
    • 16.5 ファイル属性の変更
    • 16.6 ファイルのtruncate
    • 16.7 そのほかのファイル操作
    • 16.8 ファイルロック
      • 16.8.1 ファイルロックの管理構造
    • 16.9 ファイルロックの実装
      • 16.9.1 強制ファイルロックモード
      • 16.9.2 ロックの解除
      • 16.9.3 ロックオペレーション
  • 第17章 ファイルのリード/ライト
    • 17.1 リード/ライトの基本
      • 17.1.1 ファイルキャッシュ
      • 17.1.2 遅延書き込み
      • 17.1.3 先読み
      • 17.1.4 直接転送
      • 17.1.5 非同期I/O
      • 17.1.6 メモリマッピング
    • 17.2 ファイルキャッシュのデータ構造
      • 17.2.1 ページキャッシュ
      • 17.2.2 ページキャッシュの管理構造
      • 17.2.3 ページキャッシュとファイルブロック
    • 17.3 リード処理の実装
      • 17.3.1 __generic_file_aio_read関数
      • 17.3.2 do_generic_mapping_read関数
      • 17.3.3 page_cache_readahead関数
      • 17.3.4 do_mpage_readpage関数
      • 17.3.5 block_read_full_page関数
    • 17.4 ライト処理の実装
      • 17.4.1 generic_file_aio_write_nolock関数
      • 17.4.2 generic_file_buffered_write関数
    • 17.5 ディスクへの書き出し処理
      • 17.5.1 同期書き出しの実装
      • 17.5.2 バックグラウンド書き出しの実装
    • 17.6 ページキャッシュの書き出し
      • 17.6.1 do_writepages関数
      • 17.6.2 mpage_writepages関数
      • 17.6.3 __mpage_writepage関数
      • 17.6.4 block_write_full_page関数
      • 17.6.5 __block_write_full_page関数
    • 17.7 直接転送の実装
      • 17.7.1 generic_file_direct_IO関数
      • 17.7.2 __blockdev_direct_IO関数
      • 17.7.3 direct_io_worker関数
      • 17.7.4 do_direct_IO関数
    • 17.8 メモリマッピングのI/O処理
    • 17.9 リード/ライト処理のまとめ
  • 第18章 特殊ファイルのアクセス
    • 18.1 ブロックデバイス層の実装
      • 18.1.1 ブロック型特殊ファイルの管理構造
      • 18.1.2 ファイルシステムとブロックデバイス層のインターフェイス
      • 18.1.3 ブロックデバイス層の管理構造
      • 18.1.4 ブロックデバイス層とデバイスドライバのインターフェイス
      • 18.1.5 ブロックデバイス層の処理の流れ
      • 18.1.6 デバイスドライバの処理
    • 18.2 キャラクタ特殊ファイルの実装
      • 18.2.1 キャラクタ特殊ファイルの管理構造
      • 18.2.2 キャラクタ特殊ファイルのオープン
      • 18.2.3 キャラクタ特殊ファイルのリード/ライト
    • 18.3 パイプの実装
      • 18.3.1 パイプの管理構造
      • 18.3.2 pipe用iノード
      • 18.3.3 パイプのオープン
      • 18.3.4 パイプのリード・ライト
      • 18.3.5 FIFOファイル
  • 第19章 疑似ファイルシステム
    • 19.1 procファイルシステム
      • 19.1.1 procファイルシステムの管理構造
      • 19.1.2 procファイルシステムの実装
      • 19.1.3 procファイルシステムの注意点
    • 19.2 sysfs
      • 19.2.1 管理構造
      • 19.2.2 構成例
  • 第20章 ローカルファイルシステム
    • 20.1 Ext3ファイルシステム
      • 20.1.1 ファイルシステムのレイアウト
      • 20.1.2 iノードの構造
      • 20.1.3 ディレクトリの構造
      • 20.1.4 ディレクトリのインデックス化
      • 20.1.5 Ext3ファイルシステムの管理構造
      • 20.1.6 iノードとブロックの割り当て
      • 20.1.7 Ext3ファイルシステムのまとめ
    • 20.2 ジャーナリング
      • 20.2.1 ジャーナリングの基本
      • 20.2.2 ジャーナリングのモード
      • 20.2.3 ジャーナル領域の構造
      • 20.2.4 ジャーナリングの管理構造
      • 20.2.5 ジャーナリング処理の流れ
      • 20.2.6 コミット処理の流れ
      • 20.2.7 チェックポイント処理
      • 20.2.8 ジャーナリングのまとめ

Part5 ネットワーク

  • 第21章 ソケットインターフェース
    • 21.1 階層モデル
    • 21.2 ネットワーク実装の全体像
      • 21.2.1 アプリケーション側インターフェイス
      • 21.2.2 ネットワークデバイス側インターフェイス
    • 21.3 ソケットインターフェイス
      • 21.3.1 socketcallシステムコール
      • 21.3.2 sockfs
    • 21.4 ソケットバッファとソケットバッファヘッド
      • 21.4.1 プロトコル層の移動とバッファのコピー
      • 21.4.2 ソケットバッファヘッド(struct sk_buff_head)
      • 21.4.3 そのほかのメンバー
    • 21.5 ネットデバイス
      • 21.5.1 ネットデバイス操作関数
      • 21.5.2 softnet_data構造体とQdisc(queue discipline)構造体
      • 21.5.3 受信処理
      • 21.5.4 送信処理
      • 21.5.5 struct packet_type
    • 21.6 ルーティングソケット
      • 21.6.1 netlinkソケット
      • 21.6.2 rtnetlinkソケット
    • 21.7 終わりに
  • 第22章 IP層
    • 22.1 イーサネットの仕組み
      • 22.1.1 イーサネットプロトコルとイーサヘッダー
    • 22.2 IPネットワークの仕組み
      • 22.2.1 ARP(Address Resolution Protocol)
      • 22.2.2 ルーティング
      • 22.2.3 ICMP(Internet Control Message Protocol)
    • 22.3 IPv4ソケットとIPパケットタイプ
      • 22.3.1 IPv4ソケットタイプ
      • 22.3.2 sock構造体とinet_sock構造体
      • 22.3.3 パケット受信ハンドラ
      • 22.3.4 in_device構造体
    • 22.4 ルーティング処理
      • 22.4.1 flowi構造体
      • 22.4.2 fib(forwarding information base)
      • 22.4.3 inet_peer構造体
      • 22.4.4 hh_cache構造体
      • 22.4.5 近隣キャッシュ
      • 22.4.6 dst_entry構造体およびrtable構造体
      • 22.4.7 ルーティング処理の流れ
    • 22.5 受信処理
      • 22.5.1 IPヘッダーチェックサム
      • 22.5.2 リアセンブル処理
    • 22.6 IPパケットの送信処理
      • 22.6.1 処理の流れ
      • 22.6.2 ARP解決
      • 22.6.3 IPパケットの組み立てAPI
    • 22.7 ICMP
    • 22.8 おわりに
  • 第23章 UDP層
    • 23.1 UDP
      • 23.1.1 ポート管理
      • 23.1.2 受信処理
      • 23.1.3 送信処理
      • 23.1.4 チェックサム処理
    • 23.2 おわりに
    • 24.1 TCPの仕組みとカーネル関連のポイント
      • 24.1.1 TCPヘッダー
  • 第24章 TCP接続管理
      • 24.1.2 シーケンス番号および確認応答番号と信頼性
      • 24.1.3 TCP状態
      • 24.1.4 コネクション確立
      • 24.1.5 接続終了
      • 24.1.6 2MSL待ち状態
    • 24.2 TCPソケットの排他処理
      • 24.2.1 socket_lock_t
    • 24.3 ポート管理
      • 24.3.1 TIME-WAIT状態とinet_tw_bucket構造体
    • 24.4 TCPコネクション確立
      • 24.4.1 パッシブオープンとrequest_sock構造体
      • 24.4.2 アクティブオープン
      • 24.4.3 同時オープン
    • 24.5 TCPコネクション切断
      • 24.5.1 パッシブクローズ
      • 24.5.2 アクティブクローズ
      • 24.5.3 tcp_tw_bucket解放処理
    • 24.6 おわりに
  • 第25章 TCPフロー制御
    • 25.1 フロー制御
      • 25.1.1 シーケンス番号と確認応答
      • 25.1.2 ウィンドウ
      • 25.1.3 piggybackと遅延確認応答
      • 25.1.4 SACK(Selective ACK)
      • 25.1.5 Silly Window Syndrome
    • 25.2 再送
      • 25.2.1 指数バックオフ
      • 25.2.2 再パケット化
      • 25.2.3 再送タイムアウト時間と往復時間測定
      • 25.2.4 再送タイマー以外のタイマー
    • 25.3 Linuxカーネル内の実装
      • 25.3.1 関連する変数
      • 25.3.2 スライディングウィンドウ
    • 25.4 受信処理
      • 25.4.1 4つのキュー
      • 25.4.2 受信側ソケットバッファ処理
      • 25.4.3 受信側SWS回避
    • 25.5 TCPの送信
      • 25.5.1 送信キュー
      • 25.5.2 送信ウィンドウ判定
      • 25.5.3 送信側SWS回避
      • 25.5.4 scoreboard
      • 25.5.5 再送処理
    • 25.6 タイマーと遅延確認応答
      • 25.6.1 再送タイマー/持続タイマー(retransmit timer/probe0 timer)
      • 25.6.2 遅延確認応答
    • 25.7 おわりに
  • 第26章 TCP輻輳制御
    • 26.1 輻輳制御
      • 26.1.1 NewReno
    • 26.2 TCPオプション
      • 26.2.1 ウィンドウスケールオプション
      • 26.2.2 タイムスタンプオプション
    • 26.3 TCP拡張
      • 26.3.1 ECN(Explicit Congestion Notification)
      • 26.3.2 CWV
      • 26.3.3 limited transmit
      • 26.3.4 control block sharing
      • 26.3.5 RTT測定/RTO評価
    • 26.4 輻輳制御
      • 26.4.1 NewReno
      • 26.4.2 CWV
      • 26.4.3 輻輳状態の管理
      • 26.4.4 FACK輻輳制御
      • 26.4.5 tcp_packets_in_flight関数
      • 26.4.6 消失セグメントの検出とscoreboard管理
      • 26.4.7 再送タイムアウト
      • 26.4.8 消失セグメントの推定
      • 26.4.9 Open状態への遷移
      • 26.4.10 Rate-halving
    • 26.5 おわりに

Part6 そのほかの話題465

  • 第27章 カーネルの初期化
    • 27.1 カーネルのロード
      • 27.1.1 bzImageの構造
      • 27.1.2 ブートローダーの仕事
      • 27.1.3 セットアップコードの実行
      • 27.1.4 カーネルの展開処理
    • 27.2 カーネルの初期化処理
      • 27.2.1 startup_32
      • 27.2.2 start_kernel関数
      • 27.2.3 rest_init関数
      • 27.2.4 init関数
      • 27.2.5 マルチプロセッサの初期化
      • 27.2.6 initrdの処理
    • 28.1 CPUアーキテクチャ
      • 28.1.1 IA-32アーキテクチャ
      • 28.1.2 xen/x86
    • 28.2 特権レジスタ
      • 28.2.1 制御レジスタ
      • 28.2.2 特権レジスタ
  • 第28章 CPUアーキテクチャ依存部
      • 28.2.3 Xenにおける特権レジスタ
    • 28.3 割り込み処理、例外処理、IPI
      • 28.3.1 割り込み処理、例外処理
      • 28.3.2 IDT
      • 28.3.3 割り込みのマスク
      • 28.3.4 IPI
      • 28.3.5 Xenにおける外部割り込みとハンドラ
    • 28.4 MMU
      • 28.4.1 アドレス空間
      • 28.4.2 セグメント機構とGDT
      • 28.4.3 ページング機構とCR3レジスタ
      • 28.4.4 TLBフラッシュ
    • 28.5 CPUの起動と停止
      • 28.5.1 HLT命令
      • 28.5.2 XenにおけるCPUの起動と停止
    • 28.6 最後に
  • Appendix A Linuxカーネルの新機能
    • A.1 概観
    • A.2 大規模システム向けの強化
      • A.2.1 プロセススケジューラ関連
      • A.2.2 割り込み処理と遅延処理
      • A.2.3 同期/排他処理の改善
      • A.2.4 スレッド関連機能の強化
      • A.2.5 メモリ管理
      • A.2.6 ファイルシステム関連
      • A.2.7 ブロックデバイス関連
    • A.3 組み込みシステム向けの対応
      • A.3.1 新I/Oスケジューラ導入
      • A.3.2 カーネルプリエンプションの追加
    • A.4 そのほかの強化
      • A.4.1 対応CPUの追加
      • A.4.2 ネットワーク関連
      • A.4.3 カーネルの取り扱い方法の変更
      • A.4.4 デバイスドライバ関連
      • A.4.5 kbuildの改善
      • A.4.6 config埋め込み(IKCONFIG)
  • Appendix B 参考文献