目次
監訳者まえがき
はじめに
1章 概要
1.1 Linuxと他のUNIX系カーネル
1.2 ハードウェア依存
1.3 Linuxのバージョン
1.4 オペレーティングシステムの基本概念
1.5 UNIXファイルシステムの概要
1.6 UNIXカーネルの概要
2章 メモリアドレッシング
2.1 メモリアドレス
2.2 ハードウェアのセグメント機構
2.3 Linuxのセグメント機構
2.4 ハードウェアのページング機構
2.5 Linuxのページング機構
3章 プロセス
3.1 プロセス、ライトウェイトプロセス、スレッド
3.2 プロセスディスクリプタ
3.3 プロセス切り替え
3.4 プロセスの生成
3.5 プロセスの破棄
3.6 Linux 2.6では
4章 割り込みと例外
4.1 割り込み信号の役割
4.2 割り込みと例外
4.3 例外および割り込み処理のネスト
4.4 割り込みディスクリプタテーブルの初期化
4.5 例外処理
4.6 割り込み処理
4.7 ソフト割り込み、タスクレット、ボトムハーフ
4.8 割り込みおよび例外からの復帰
4.9 Linux 2.6では
5章 カーネルの同期処理
5.1 カーネル実行パス
5.2 同期の必要がない場合
5.3 同期プリミティブ
5.4 カーネルデータアクセスの同期
5.5 競合状態回避の例
5.6 Linux 2.6では
6章 時間管理
6.1 ハードウェアクロック
6.2 時間管理の仕組み
6.3 CPUのタイムシェアリング(時分割)
6.4 時刻と日付の更新
6.5 統計情報の更新
6.6 ソフトウェアタイマ
6.7 時間管理関連のシステムコール
6.8 Linux 2.6では
7章 メモリ管理
7.1 ページフレームの管理
7.2 メモリ領域の管理
7.3 非連続メモリ領域の管理
7.4 Linux 2.6では
8章 プロセスアドレス空間
8.1 プロセスのアドレス空間
8.2 メモリディスクリプタ
8.3 メモリリージョン
8.4 ページフォルト例外ハンドラ
8.5 プロセスアドレス空間の生成と削除
8.6 ヒープ領域の管理
8.7 Linux 2.6では
9章 システムコール
9.1 POSIX APIとシステムコール
9.2 システムコールハンドラとシステムコールサービスルーチン
9.3 カーネルラッパールーチン
9.4 Linux 2.6では
10章 シグナル
10.1 シグナルの役割
10.2 シグナルの生成
10.3 シグナルの配信
10.4 シグナル処理関連のシステムコール
10.5 Linux 2.6では
11章 プロセススケジューリング
11.1 スケジューリングポリシー
11.2 スケジューリングアルゴリズム
11.3 スケジューリング関連のシステムコール
11.4 Linux 2.6では
12章 仮想ファイルシステム(VFS)
12.1 仮想ファイルシステム(VFS)の役割
12.2 VFSデータ構造
12.3 ファイルシステム種別
12.4 ファイルシステムのマウント
12.5 パス名の検索
12.6 VFSシステムコールの実装
12.7 ファイルロック
12.8 Linux 2.6では
13章 I/Oデバイスの管理
13.1 I/Oアーキテクチャ
13.2 デバイスファイル
13.3 デバイスドライバ
13.4 ブロック型デバイスドライバ
13.5 キャラクタ型デバイスドライバ
13.6 Linux 2.6では
14章 ディスクキャッシュ
14.1 ページキャッシュ
14.2 バッファキャッシュ
14.3 Linux 2.6では
15章 ファイルアクセス
15.1 ファイルの読み取りと書き込み
15.2 メモリマッピング
15.3 ダイレクトI/O転送
15.4 Linux 2.6では
16章 スワップ処理:メモリ解放の方法
16.1 スワップ処理とは何か
16.2 スワップ領域
16.3 スワップキャッシュ
16.4 スワップページの転送
16.5 ページのスワップアウト
16.6 ページのスワップイン
16.7 ページフレームの回収
16.8 Linux 2.6では
17章 Ext2、Ext3ファイルシステム
17.1 Ext2の一般的な特徴
17.2 Ext2ディスク上のデータ構造
17.3 Ext2メモリ上のデータ構造
17.4 Ext2ファイルシステムの作成
17.5 Ext2関数
17.6 Ext2ディスク領域の管理
17.7 Ext3ファイルシステム
17.8 Linux 2.6では
18章 ネットワーク
18.1 主要なネットワークデータ構造
18.2 ネットワーク関連のシステムコール
18.3 ネットワークカードへのパケット送信処理
18.4 ネットワークカードからのパケット受信処理
18.5 Linux 2.6では
19章 プロセス間通信
19.1 パイプ
19.2 FIFO(名前付きパイプ)
19.3 System VのIPC
19.4 Linux 2.6では
20章 プログラムの実行
20.1 実行ファイル
20.2 実行形式
20.3 実行ドメイン
20.4 Exec関数
20.5 Linux 2.6では
付録A システムの起動
A.1 先史時代:BIOS
A.2 古代:ブートローダ
A.3 中世:setup()関数
A.4 ルネッサンス:startup_32()関数
A.5 近世:start_kernel()関数
付録B モジュール
B.1 モジュールにすべきか?
B.2 モジュールの実装
B.3 モジュールの組み込みと削除
B.4 オンデマンドなモジュール組み込み
付録C ソースコードの構造
参考文献
ソースコード索引
索引
|