詳解 Linuxカーネル 第2版
      
      
      
      
        
          Daniel P. Bovet, Marco Cesati 著、高橋 浩和 監訳、杉田 由美子, 高杉 昌督, 畑崎 恵介, 平松 雅巳, 安井 隆宏 訳
        
      
      
        
        
          - TOPICS
- 
        
          
- 発行年月日
- 
            2003年06月
          
- PRINT LENGTH
- 
            892
          
- ISBN
- 
            4-87311-133-1
          
- 原書
- 
              Understanding the Linux Kernel, 2nd Edition
            
- FORMAT
- 
            
            
            
            
          
          
            Linuxのソースコードは誰でも目にすることができます。本書はこの恩恵を最大限に活かすための羅針盤です。実際に大学で使われている講義ノートを基に書かれたもので、複雑で難解なLinuxカーネルの仕組みを基礎からていねいに説明しています。Linuxカーネルの基本機能を網羅し、ハードウェア依存部分についても踏み込んだ解説がされています。また、日本語版ではLinux2.6の情報を追加、Linuxの最新機能を概観することもできます。Linuxのソースコードを理解する上でのガイドブックして、オペレーティングシステムの本格的な解説書として最適の一冊です。
          
         
      
      
        正誤表
        
          
            書籍発行後に気づいた誤植や更新された情報を掲載しています。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷数をご確認の上、ご利用ください。
          
        
          
            正誤表1刷用 - 2005年3月
          
          
            1刷正誤表
詳解 Linuxカーネル 第2版 第1刷正誤表
2005年3月9日更新
| 
| 位置 | 誤 | 正 |  
    | 
                p442行目
 | 
        セグメントセレクタを指しています。
         | 
        セグメントセレクタに指されています。
         |  
    | p71箇条書き2番目の●
 | ●0xc00000000から0xffffffffまでの | 0xc0000000から0xffffffffまでの (※0が1つ多い) |  
    | p82下から7行目
 | IBM最近リリースした | IBMが最近リリースした |  
    | p101下から13行目
 | thread_struct型のtreadというメンバがあります | thread_struct型のthreadというメンバがあります |  
    | p1907行目
 | rwlpアドレスに対して書き込み用ロック処理を行います | rwlpアドレスに対して読み込み用ロック処理を行います |  
    | p225下から11行目
 | counterが0よりも小さくなると | counterが0以下になると |  
    | p229下から3段落目の1行目
 | タイマの実装は比較的簡単です。タイマの実装は比較的簡単です。 | タイマの実装は比較的簡単です。 (同じ文章が2回出現。2番目を削除) |  
    | p232下から7行目
 | indexメンバは現在走査中のリストを指しており、256^(i-1) tickごとに1ずつ増
加します | indexメンバは現在走査中のリストを指しており、256*64^(i-2) tickごとに1ずつ
増加します
 ※原著者による修正 |  
    | 
                p2392行目
 | 
        上記ポリシーのインターバルタイマをで実装するために
         | 
        上記ポリシーのインターバルタイマを実装するために
         |  
    | p2912行目
 | __get_free_pages()やpage_alloc()はバディシステムからページを獲得します。
     | __get_free_pages()やalloc_pages()はバディシステムからページを獲得します。 ※原著者による修正 |  
    | 
                p3007行目
 | 
        read-blackツリー
         | 
        red-blackツリー
         |  
    | 
                p300下から2行目
 | 
        read-backツリー
         | 
        red-blackツリー
         |  
    | 
                p32219-20行目
 | 
        このため、一時的に無駄なページが載った
         | 
        このため、ある一時点において使われていないページが載った
         |  
    | p395ページ中央
 | スケジューラが遅延実行されたとき、schedule()関数はカレントプロセスの
need_reschedメンバもクリアします。
     | スケジューラが遅延実行されたとき、schedule()関数はprevが指すプロセスの
need_reschedメンバもクリアします。
     ※原著者による修正 |  
    | p396脚注
 | niceが0であれば | niceが-20であれば |  
    | p401下から16行目
 | idle=pooを渡すことにより | idle=pollを渡すことにより |  
    | p42410行目
 
 | 「12.4 ファイルシステムのマウント」を参照 | 「12.3.2 ファイルシステム種別の登録」を参照
         |  
    | p5428行目
 | 14.1.1  バッファヘッドのデータ構造 | 14.2.1  バッファヘッドのデータ構造 |  
    | p5479行目
 
 | inode_remove_queue()関数は、バッファヘッドをそのバッファヘッドが登録されているリストから外します。 | remove_inode_queue()関数は、バッファヘッドをそのバッファヘッドが登録されているリストから外します。
         ※原著者による修正 |  
    | p6485段落目
 
 | クリティカルリ資源 | クリティカル資源
         |  
    | p6509行目
 
 | Linux 2.6ではは | Linux 2.6では
         |  
    | p6649行目
 
 | 一方、動的モードでは、バッファキャッシュはファイルをオープンしていてもメ
モリが不足してくるとshrink_caches()関数によって勝手に解放されます
(shrink_caches()関数によってキャッシュから削除されるデータはディスクへ
と書き込まれます)。ただし、iノードの場合はオープン中のものは解放されま
せん。 | 一方、動的モードでは、バッファキャッシュはファイルをオープンしていてもメ
モリが不足してくるとshrink_caches()関数によって勝手に解放されます。
         ※原著者による修正、括弧以降を削除 |  
    | p693脚注
 
 | 他にもTLIはSystem V | 他にもSystem V
         |  
    | p69917行目
 
 | 間単に読み出すことができます。 | 簡単に読み出すことができます。
         |  
    | 
                p705下から3行目
 | 
        ただし、ユーザモードプログラムがIPADDR_ANY(0.0.0.0)という特殊なIPアドレスを渡した場合には、カーネルは送信者のIPアドレスの割り当てを行います。
         | 
        ただし、ユーザモードプログラムがINADDR_ANY(0.0.0.0)という特殊なIPアドレスを渡した場合には、カーネルは送信者のIPアドレスの割り当てを行います†(訳者注:Linux実装では、この時点では送信者のIPアドレスを決定しません。パケットに付与する送信元IPアドレスは送信処理時に動的に決定します)。
         |  
    | 
                p736図19-1
 | 
        semid_ds構造体
         | 
        sem_array構造体
         |  
    | p8224-5項目め、10-11項目目
 
 | include/linux/list.h..........89l | include/linux/list.h..........89
         |  
    | p8226-8項目め
 
 | include/linux/list.h..........90l | include/linux/list.h..........90
         |  
    | p822下から6項目め
 
 | include/asm-i386/softirq.h..........203l | include/asm-i386/softirq.h..........203
         |  | 
           
        
          
            正誤表2刷用 - 2005年3月
          
          
            2刷正誤表
詳解 Linuxカーネル 第2版 第2刷正誤表
2005年3月9日更新
| 
| 位置 | 誤 | 正 |  
    | 
                p442行目
 | 
        セグメントセレクタを指しています。
         | 
        セグメントセレクタに指されています。
         |  
    | p82下から7行目
 | IBM最近リリースした | IBMが最近リリースした |  
    | p101下から13行目
 | thread_struct型のtreadというメンバがあります | thread_struct型のthreadというメンバがあります |  
    | p225下から11行目
 | counterが0よりも小さくなると | counterが0以下になると |  
    | p232下から7行目
 | indexメンバは現在走査中のリストを指しており、256^(i-1) tickごとに1ずつ増
加します | indexメンバは現在走査中のリストを指しており、256*64^(i-2) tickごとに1ずつ
増加します
 ※原著者による修正 |  
    | 
                p2392行目
 | 
        上記ポリシーのインターバルタイマをで実装するために
         | 
        上記ポリシーのインターバルタイマを実装するために
         |  
    | p2912行目
 | __get_free_pages()やpage_alloc()はバディシステムからページを獲得します。
     | __get_free_pages()やalloc_pages()はバディシステムからページを獲得します。 ※原著者による修正 |  
    | 
                p3007行目
 | 
        read-blackツリー
         | 
        red-blackツリー
         |  
    | 
                p300下から2行目
 | 
        read-backツリー
         | 
        red-blackツリー
         |  
    | 
                p32219-20行目
 | 
        このため、一時的に無駄なページが載った
         | 
        このため、ある一時点において使われていないページが載った
         |  
    | p395ページ中央
 | スケジューラが遅延実行されたとき、schedule()関数はカレントプロセスの
need_reschedメンバもクリアします。
     | スケジューラが遅延実行されたとき、schedule()関数はprevが指すプロセスの
need_reschedメンバもクリアします。
     ※原著者による修正 |  
    | p396脚注
 | niceが0であれば | niceが-20であれば |  
    | p401下から16行目
 | idle=pooを渡すことにより | idle=pollを渡すことにより |  
    | p42410行目
 
 | 「12.4 ファイルシステムのマウント」を参照 | 「12.3.2 ファイルシステム種別の登録」を参照
         |  
    | p5428行目
 | 14.1.1  バッファヘッドのデータ構造 | 14.2.1  バッファヘッドのデータ構造 |  
    | p5479行目
 
 | inode_remove_queue()関数は、バッファヘッドをそのバッファヘッドが登録されているリストから外します。 | remove_inode_queue()関数は、バッファヘッドをそのバッファヘッドが登録されているリストから外します。
         ※原著者による修正 |  
    | p6649行目
 
 | 一方、動的モードでは、バッファキャッシュはファイルをオープンしていてもメ
モリが不足してくるとshrink_caches()関数によって勝手に解放されます
(shrink_caches()関数によってキャッシュから削除されるデータはディスクへ
と書き込まれます)。ただし、iノードの場合はオープン中のものは解放されま
せん。 | 一方、動的モードでは、バッファキャッシュはファイルをオープンしていてもメ
モリが不足してくるとshrink_caches()関数によって勝手に解放されます。
         ※原著者による修正、括弧以降を削除 |  
    | p693脚注
 
 | 他にもTLIはSystem V | 他にもSystem V
         |  
    | p69917行目
 
 | 間単に読み出すことができます。 | 簡単に読み出すことができます。
         |  
    | 
                p705下から3行目
 | 
        ただし、ユーザモードプログラムがIPADDR_ANY(0.0.0.0)という特殊なIPアドレスを渡した場合には、カーネルは送信者のIPアドレスの割り当てを行います。
         | 
        ただし、ユーザモードプログラムがINADDR_ANY(0.0.0.0)という特殊なIPアドレスを渡した場合には、カーネルは送信者のIPアドレスの割り当てを行います†(訳者注:Linux実装では、この時点では送信者のIPアドレスを決定しません。パケットに付与する送信元IPアドレスは送信処理時に動的に決定します)。
         |  
    | 
                p736図19-1
 | 
        semid_ds構造体
         | 
        sem_array構造体
         |  | 
           
        
          
            正誤表3刷用 - 2005年3月
          
          
            
3刷正誤表
詳解 Linux カーネル第2版 第3刷正誤表
2005年3月9日更新
| 
| 位置 | 誤 | 正 |  
    | 
                p442行目
 | 
        セグメントセレクタを指しています。
         | 
        セグメントセレクタに指されています。
         |  
    | p225下から11行目
 | counterが0よりも小さくなると | counterが0以下になると |  
    | p232下から7行目
 | indexメンバは現在走査中のリストを指しており、256^(i-1) tickごとに1ずつ増
加します | indexメンバは現在走査中のリストを指しており、256*64^(i-2) tickごとに1ずつ
増加します
 ※原著者による修正 |  
    | 
                p2392行目
 | 
        上記ポリシーのインターバルタイマをで実装するために
         | 
        上記ポリシーのインターバルタイマを実装するために
         |  
    | p2912行目
 | __get_free_pages()やpage_alloc()はバディシステムからページを獲得します。
     | __get_free_pages()やalloc_pages()はバディシステムからページを獲得します。 ※原著者による修正 |  
    | 
                p3007行目
 | 
        read-blackツリー
         | 
        red-blackツリー
         |  
    | 
                p300下から2行目
 | 
        read-backツリー
         | 
        red-blackツリー
         |  
    | 
                p32219-20行目
 | 
        このため、一時的に無駄なページが載った
         | 
        このため、ある一時点において使われていないページが載った
         |  
    | p395ページ中央
 | スケジューラが遅延実行されたとき、schedule()関数はカレントプロセスの
need_reschedメンバもクリアします。
     | スケジューラが遅延実行されたとき、schedule()関数はprevが指すプロセスの
need_reschedメンバもクリアします。
     ※原著者による修正 |  
    | p396脚注
 | niceが0であれば | niceが-20であれば |  
    | p5428行目
 | 14.1.1  バッファヘッドのデータ構造 | 14.2.1  バッファヘッドのデータ構造 |  
    | p5479行目
 
 | inode_remove_queue()関数は、バッファヘッドをそのバッファヘッドが登録されているリストから外します。 | remove_inode_queue()関数は、バッファヘッドをそのバッファヘッドが登録されているリストから外します。
         ※原著者による修正 |  
    | p6649行目
 
 | 一方、動的モードでは、バッファキャッシュはファイルをオープンしていてもメ
モリが不足してくるとshrink_caches()関数によって勝手に解放されます
(shrink_caches()関数によってキャッシュから削除されるデータはディスクへ
と書き込まれます)。ただし、iノードの場合はオープン中のものは解放されま
せん。 | 一方、動的モードでは、バッファキャッシュはファイルをオープンしていてもメ
モリが不足してくるとshrink_caches()関数によって勝手に解放されます。
         ※原著者による修正、括弧以降を削除 |  
    | p69917行目
 
 | 間単に読み出すことができます。 | 簡単に読み出すことができます。
         |  
    | 
                p705下から3行目
 | 
        ただし、ユーザモードプログラムがIPADDR_ANY(0.0.0.0)という特殊なIPアドレスを渡した場合には、カーネルは送信者のIPアドレスの割り当てを行います。
         | 
        ただし、ユーザモードプログラムがINADDR_ANY(0.0.0.0)という特殊なIPアドレスを渡した場合には、カーネルは送信者のIPアドレスの割り当てを行います†(訳者注:Linux実装では、この時点では送信者のIPアドレスを決定しません。パケットに付与する送信元IPアドレスは送信処理時に動的に決定します)。
         |  
    | 
                p736図19-1
 | 
        semid_ds構造体
         | 
        sem_array構造体
         |  |