Download
Magazine
Develop
Account
Download
Magazine
Develop
Login
Forgot Account/Password
Create Account
Language
Help
Language
Help
×
Login
Login Name
Password
×
Forgot Account/Password
Category:
Software
People
PersonalForge
Magazine
Wiki
Search
OSDN
>
Find Software
>
Linux Kernel Documents
>
Wiki
>
目次
Linux Kernel Documents
Fork
linux-2.6
linux-2.4.36
Description
Project Summary
Developer Dashboard
Developers
Image Gallery
List of RSS Feeds
Activity
Statistics
History
Source Code
Code Repository list
Git
linux-2.6
linux-2.4.36
Documents
Wiki
FrontPage
Title index
Recent changes
Doc Mgr
List Docs
Communication
list of ML
edit
|
Title Index
|
Recent Changes
|
トップページへ
Linuxカーネルに関する技術情報を集めていくプロジェクトです。現在、
Linuxカーネル2.6解読室
の第2章までを公開中。
目次
まえがき
第0章 Linuxカーネルの構成要素
0.1 Linuxカーネルとは
0.2 Linuxカーネルのソースコード
0.3 Linuxカーネル機能の概要
0.4 カーネルプリミティブ
0.5 プロセス管理
0.6 メモリ管理
0.7 ファイルシステム
0.8 ネットワーク
0.9 プロセス間通信
0.10 Linuxカーネルの起動
0.11 Linuxカーネルの動作例
Part 1 カーネルプリミティブ
第1章 プロセススケジューリング
1.1 マルチタスク
1.2 プロセスとは?
1.3 プロセス切り替え
1.4 プロセスディスパッチャの実装
1.5 プロセススケジューラ
1.6 プロセススケジューラの実装
1.7 事象の待ち合わせ
1.8 最後に
第2章 割り込み
2.1 割り込み処理とは
2.2 Linuxカーネルの割り込み処理の特徴
2.3 ハードウェア割り込み処理
2.4 プロセッサ間割り込み
2.5 マスク不可割り込みNMI
2.6 最後に
Wikiガイド
文法
リンクの種類
ブロックプロセッサ
拡張文法
このプロジェクトでの文書フォーマット
Next:
まえがき
Linuxカーネル2.6解読室 目次
まえがき
第0章 Linuxカーネルの構成要素
0.1 Linuxカーネルとは
0.1.1 UNIXの互換実装
0.2 Linuxカーネルのソースコード
0.3 Linuxカーネル機能の概要
0.4 カーネルプリミティブ
0.4.1 プロセススケジューラ
0.4.2 割り込み処理と遅延処理
0.4.3 時計
0.4.4 システムコール
0.4.5 同期と排他
0.5 プロセス管理
0.5.1 プロセス
0.5.2 シグナル
0.5.3 スレッド
0.6 メモリ管理
0.6.1 実メモリ管理
0.6.2 仮想記憶
0.7 ファイルシステム
0.7.1 ファイル記述子
0.7.2 キャッシュ機構
0.7.3 仮想ファイルシステム
0.7.4 Linux標準ファイルシステムExt2
0.7.5 ジャーナリングファイルシステムExt3
0.7.6 ブロック型デバイス
0.8 ネットワーク
0.8.1 ソケット
0.8.2 TCP/IPプロトコルスタック
0.9 プロセス間通信
0.10 Linuxカーネルの起動
0.11 Linuxカーネルの動作例
Part 1 カーネルプリミティブ
第1章 プロセススケジューリング
1.1 マルチタスク
1.2 プロセスとは?
1.3 プロセス切り替え
1.4 プロセスディスパッチャの実装
1.4.1 context_switch関数
1.4.2 switch_toマクロ
1.4.3 __switch_to関数
1.4.4 汎用レジスタの退避
1.5 プロセススケジューラ
1.5.1 スケジューリングの方針
1.5.2 スケジューリング契機
1.5.3 リアルタイムプロセス
1.5.4 マルチプロセッサシステムにおけるプロセススケジューリング
1.6 プロセススケジューラの実装
1.6.1 実行優先度ごとのRUNキュー
1.6.2 2種類のRUNキュー
1.6.3 CPUごとのRUNキュー
1.6.4 アイドルプロセス
1.6.5 カレントプロセス
1.6.6 プロセッサバインド機能
1.6.7 プロセススケジューラのアルゴリズム
1.7 事象の待ち合わせ
1.7.1 待機処理
1.7.2 起床処理
1.7.3 そのほかの待機/起床処理関数
1.7.4 子プロセスのスケジューリング
1.8 最後に
第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 参考文献
Next:
まえがき