詳解 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
-
Print
6,490円
この商品は品切れ再入荷未定です
Linuxのソースコードは誰でも目にすることができます。本書はこの恩恵を最大限に活かすための羅針盤です。実際に大学で使われている講義ノートを基に書かれたもので、複雑で難解なLinuxカーネルの仕組みを基礎からていねいに説明しています。Linuxカーネルの基本機能を網羅し、ハードウェア依存部分についても踏み込んだ解説がされています。また、日本語版ではLinux2.6の情報を追加、Linuxの最新機能を概観することもできます。Linuxのソースコードを理解する上でのガイドブックして、オペレーティングシステムの本格的な解説書として最適の一冊です。
正誤表
ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。
正誤表1刷用 - 2005年3月
1刷正誤表
詳解 Linuxカーネル 第2版 第1刷正誤表
2005年3月9日更新
位置 | 誤 | 正 |
p44
2行目
|
セグメントセレクタを指しています。
|
セグメントセレクタに指されています。
|
p71 箇条書き2番目の● |
●0xc00000000から0xffffffffまでの |
0xc0000000から0xffffffffまでの (※0が1つ多い) |
p82 下から7行目 |
IBM最近リリースした |
IBMが最近リリースした |
p101 下から13行目 |
thread_struct型のtreadというメンバがあります |
thread_struct型のthreadというメンバがあります |
p190 7行目 |
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ずつ
増加します
※原著者による修正 |
p239
2行目
|
上記ポリシーのインターバルタイマをで実装するために
|
上記ポリシーのインターバルタイマを実装するために
|
p291 2行目 |
__get_free_pages()やpage_alloc()はバディシステムからページを獲得します。
|
__get_free_pages()やalloc_pages()はバディシステムからページを獲得します。 ※原著者による修正 |
p300
7行目
|
read-blackツリー
|
red-blackツリー
|
p300
下から2行目
|
read-backツリー
|
red-blackツリー
|
p322
19-20行目
|
このため、一時的に無駄なページが載った
|
このため、ある一時点において使われていないページが載った
|
p395
ページ中央 |
スケジューラが遅延実行されたとき、schedule()関数はカレントプロセスの
need_reschedメンバもクリアします。
|
スケジューラが遅延実行されたとき、schedule()関数はprevが指すプロセスの
need_reschedメンバもクリアします。
※原著者による修正 |
p396 脚注 |
niceが0であれば |
niceが-20であれば |
p401
下から16行目 |
idle=pooを渡すことにより |
idle=pollを渡すことにより |
p424 10行目
|
「12.4 ファイルシステムのマウント」を参照 |
「12.3.2 ファイルシステム種別の登録」を参照
|
p542 8行目 |
14.1.1 バッファヘッドのデータ構造 |
14.2.1 バッファヘッドのデータ構造 |
p547 9行目
|
inode_remove_queue()関数は、バッファヘッドをそのバッファヘッドが登録されているリストから外します。 |
remove_inode_queue()関数は、バッファヘッドをそのバッファヘッドが登録されているリストから外します。
※原著者による修正 |
p648 5段落目
|
クリティカルリ資源 |
クリティカル資源
|
p650 9行目
|
Linux 2.6ではは |
Linux 2.6では
|
p664 9行目
|
一方、動的モードでは、バッファキャッシュはファイルをオープンしていてもメ
モリが不足してくるとshrink_caches()関数によって勝手に解放されます
(shrink_caches()関数によってキャッシュから削除されるデータはディスクへ
と書き込まれます)。ただし、iノードの場合はオープン中のものは解放されま
せん。 |
一方、動的モードでは、バッファキャッシュはファイルをオープンしていてもメ
モリが不足してくるとshrink_caches()関数によって勝手に解放されます。
※原著者による修正、括弧以降を削除
|
p693 脚注
|
他にもTLIはSystem V |
他にもSystem V
|
p699 17行目
|
間単に読み出すことができます。 |
簡単に読み出すことができます。
|
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構造体
|
p822 4-5項目め、10-11項目目
|
include/linux/list.h..........89l |
include/linux/list.h..........89
|
p822 6-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日更新
位置 | 誤 | 正 |
p44
2行目
|
セグメントセレクタを指しています。
|
セグメントセレクタに指されています。
|
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ずつ
増加します
※原著者による修正 |
p239
2行目
|
上記ポリシーのインターバルタイマをで実装するために
|
上記ポリシーのインターバルタイマを実装するために
|
p291 2行目 |
__get_free_pages()やpage_alloc()はバディシステムからページを獲得します。
|
__get_free_pages()やalloc_pages()はバディシステムからページを獲得します。 ※原著者による修正 |
p300
7行目
|
read-blackツリー
|
red-blackツリー
|
p300
下から2行目
|
read-backツリー
|
red-blackツリー
|
p322
19-20行目
|
このため、一時的に無駄なページが載った
|
このため、ある一時点において使われていないページが載った
|
p395
ページ中央 |
スケジューラが遅延実行されたとき、schedule()関数はカレントプロセスの
need_reschedメンバもクリアします。
|
スケジューラが遅延実行されたとき、schedule()関数はprevが指すプロセスの
need_reschedメンバもクリアします。
※原著者による修正 |
p396 脚注 |
niceが0であれば |
niceが-20であれば |
p401
下から16行目 |
idle=pooを渡すことにより |
idle=pollを渡すことにより |
p424 10行目
|
「12.4 ファイルシステムのマウント」を参照 |
「12.3.2 ファイルシステム種別の登録」を参照
|
p542
8行目 |
14.1.1 バッファヘッドのデータ構造 |
14.2.1 バッファヘッドのデータ構造 |
p547 9行目
|
inode_remove_queue()関数は、バッファヘッドをそのバッファヘッドが登録されているリストから外します。 |
remove_inode_queue()関数は、バッファヘッドをそのバッファヘッドが登録されているリストから外します。
※原著者による修正 |
p664 9行目
|
一方、動的モードでは、バッファキャッシュはファイルをオープンしていてもメ
モリが不足してくるとshrink_caches()関数によって勝手に解放されます
(shrink_caches()関数によってキャッシュから削除されるデータはディスクへ
と書き込まれます)。ただし、iノードの場合はオープン中のものは解放されま
せん。 |
一方、動的モードでは、バッファキャッシュはファイルをオープンしていてもメ
モリが不足してくるとshrink_caches()関数によって勝手に解放されます。
※原著者による修正、括弧以降を削除
|
p693 脚注
|
他にもTLIはSystem V |
他にもSystem V
|
p699 17行目
|
間単に読み出すことができます。 |
簡単に読み出すことができます。
|
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日更新
位置 | 誤 | 正 |
p44
2行目
|
セグメントセレクタを指しています。
|
セグメントセレクタに指されています。
|
p225 下から11行目 |
counterが0よりも小さくなると |
counterが0以下になると |
p232 下から7行目 |
indexメンバは現在走査中のリストを指しており、256^(i-1) tickごとに1ずつ増
加します |
indexメンバは現在走査中のリストを指しており、256*64^(i-2) tickごとに1ずつ
増加します
※原著者による修正 |
p239
2行目
|
上記ポリシーのインターバルタイマをで実装するために
|
上記ポリシーのインターバルタイマを実装するために
|
p291 2行目 |
__get_free_pages()やpage_alloc()はバディシステムからページを獲得します。
|
__get_free_pages()やalloc_pages()はバディシステムからページを獲得します。 ※原著者による修正 |
p300
7行目
|
read-blackツリー
|
red-blackツリー
|
p300
下から2行目
|
read-backツリー
|
red-blackツリー
|
p322
19-20行目
|
このため、一時的に無駄なページが載った
|
このため、ある一時点において使われていないページが載った
|
p395
ページ中央 |
スケジューラが遅延実行されたとき、schedule()関数はカレントプロセスの
need_reschedメンバもクリアします。
|
スケジューラが遅延実行されたとき、schedule()関数はprevが指すプロセスの
need_reschedメンバもクリアします。
※原著者による修正 |
p396 脚注 |
niceが0であれば |
niceが-20であれば |
p542
8行目 |
14.1.1 バッファヘッドのデータ構造 |
14.2.1 バッファヘッドのデータ構造 |
p547 9行目
|
inode_remove_queue()関数は、バッファヘッドをそのバッファヘッドが登録されているリストから外します。 |
remove_inode_queue()関数は、バッファヘッドをそのバッファヘッドが登録されているリストから外します。
※原著者による修正 |
p664 9行目
|
一方、動的モードでは、バッファキャッシュはファイルをオープンしていてもメ
モリが不足してくるとshrink_caches()関数によって勝手に解放されます
(shrink_caches()関数によってキャッシュから削除されるデータはディスクへ
と書き込まれます)。ただし、iノードの場合はオープン中のものは解放されま
せん。 |
一方、動的モードでは、バッファキャッシュはファイルをオープンしていてもメ
モリが不足してくるとshrink_caches()関数によって勝手に解放されます。
※原著者による修正、括弧以降を削除
|
p699 17行目
|
間単に読み出すことができます。 |
簡単に読み出すことができます。
|
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構造体
|
|