詳解 Linuxカーネル 第2版

この商品は品切れ再入荷未定です

内容

Linuxのソースコードは誰でも目にすることができます。本書はこの恩恵を最大限に活かすための羅針盤です。実際に大学で使われている講義ノートを基に書かれたもので、複雑で難解なLinuxカーネルの仕組みを基礎からていねいに説明しています。Linuxカーネルの基本機能を網羅し、ハードウェア依存部分についても踏み込んだ解説がされています。また、日本語版ではLinux2.6の情報を追加、Linuxの最新機能を概観することもできます。Linuxのソースコードを理解する上でのガイドブックして、オペレーティングシステムの本格的な解説書として最適の一冊です。

関連書籍

目次

監訳者まえがき
はじめに

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     ソースコードの構造

参考文献
ソースコード索引
索引

正誤表