386BSD カーネルソースコードの秘密

キーフレーズ

kern プロセス () kernel line usr src システムコール カーネル シグナル ファイル記述子 386BSD return i386 ファイル システム コンフィギュレーション config ユーザー インターフェイス POSIX descrip struct プログラム アドレス空間 関数 int 割り込み 実装 デバイス execve 場合 優先順位 kerne eax sig movl 実行 割り当て スレッド UNIX malloc 文字列 devif ポインタ メモリ スタック uap ロック caddr write プロセッサ オペレーティングシステム trap 処理 retval チェック 参照 error exit cred できる レベル 戻り値 ldiscif 引数 ハンドラ 機構 ディシプリン アクセス エントリ アドレス モジュール 返す デバイスドライバ BSD 証明 read 必要 9. cpu 仮想記憶 makefile select スリープ copyout sizeof グループ 構造体 フォールト 使用 存在 呼び出し flag lock void コード pushl 現在 終了

目次

目次 まえがき 「ソースコードがあれば十分か」・ この本の構成・ 本書の使いかた 386BSD のソースコードと、その他の情報・ 謝辞・・ 俯瞰 : 386BSD と。実世界 " 1 ワ」っ 0 基本カーネル入門 第 1 章 1 . 1 カーネルのマシン依存部 カーネルの内部サービス 1 .2 1 .3 プロセスオブジェクト 1 .4 POS Ⅸオペレーティングシステム機能 1 .5 カーネルプログラムの構造 1 .6 注釈の構造 1 .7 俯瞰 . なぜ注釈を書くのか アセンプリ言語によるエントリとプリミティフ 第 2 章 ( i386 ハ ocore ) 2.1 locore. s の開発に際しての決定事項 2.1 . 1 歴史的起源 37 2.1 .2 システムの初期化と運用 37 2.1 .3 コンテクスト切替機構 37 2.1 4 カーネルの入口と出口 38 2.2 ブートストラップによってロードされるカーネルプログラム 2.3 カーネルの初期メモリマップ 2.4 locore. s の関数と用語 2 つなっ 0 っっ 0 っ 0 っ 0 35 ・・ 36 8 9 0 っ 0 っ 0 4

目次 2.5 2.6 2.7 2.8 2.9 第 3 章 3.1 16 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.47 2.4.8 2.4.9 start とは何か reloc とは何か rfillkpt とは何か fillkpt とは何か icode とは何か 41 58 58 59 60 sigcode とは何か 62 ssdtosd とは何か 63 copyout とは何か 64 copyout-4 、 copyout-2 、 copyout-l とは何か 69 2.4.10 copyoutstr とは何か 73 2.4.11 swtch とは何か 77 2.4.12 qswtch とは何か 80 2.4.13 idle とは何か 82 プロセッサ例外とは何か 2.5.1 プロセッサ例外の実装 83 2.5.2 386BSD におけるプロセッサ例外の設計に関する選択肢とトレードオフ プロセッサ例外とシステムコールエントリのハンドリング : i386/trap. c ( i386 / t 「 ap. c 、 i386/cpu.c) CPU 固有のプリミテイプ 演習問題 2.8.1 システムコールゲートの実装 107 システムコール「コールゲート」とは何か 2.7.1 SPL 関数の実装 102 SPL 関数とは何か 2.6.1 周辺デバイス割り込みの実装 88 周辺デバイス割り込みとは何か 86 ・ 83 ・・ 100 ・ 107 111 3.1 . 1 3.1 .2 3.1 .3 3.1 .4 3.1 .5 i386/trap. c に含まれる関数 113 trap() とは何か 114 trapexcept() とは何か 131 trapwrite() とは何か 133 copyin3() とは何か 134

3.1 .6 syscall() とは何か 136 3.17 systrap() とは何か 143 CPU 関連のカーネル機能 : i386/cpu ℃ 3.2 3.3 第 4 章 4.1 4.2 4.3 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.27 3.2.8 3.2.9 スレッドとプロセス 145 POSIX シグナル 146 ファイル i386/cpu c に入っている関数 146 cpu-tfork とは何か 147 cpu-texit とは何か 155 cpu-execsetregs() とは何か cpu-signal() とは何か 159 cpu-signalreturn() とは何か cpu-reset() とは何か 167 158 168 164 3210 cpu-ptracereg() とは何か 演習問題 カーネル内部サービス (kern/config. c 、 kern/malloc.c) コンフィギュレーションに関する問題点 4.1 . 1 PC デバイスの衝突 172 4.1 .2 PC の静的なコンフィギュレーション機構に組み込まれている旧弊 プラグアンドプレイ : 増大する必要性 386BSD のコンフィギュレーション : kern/config. c 目次 ・ 145 ・・ 176 ・ 174 ・・ 172 ・・ 169 174 177 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.3.6 4.37 4.3.8 4.3.9 抽象レベルと階層構造は、コンフィギュレーションにどう影響するか コンフィギュレーションオブジェクト : 将来の方向と進化 178 準備と仕立て 178 コンフィギュレーションモジュールクラスの型 デバイスドライバへのインターフェイス 183 コンフィギュレーションの解決 186 386BSD のコンフィギュレーションに関する将来の方向 コンフィギュレーションのトボロジーとクラスタリング kern/config. c に含まれている関数 189 187 188 4.3.10 cfg-skipwhite() とは何か 190 4.3.11 isdigit() とは何か 191

目次 4.3.12 4.3.13 4.3.14 4.3.15 4.3.16 4.3.17 4.3.18 4.3.19 4.3.20 4.3.21 4.3.22 4.3.23 4.3.24 4.3.25 4.3.26 4.3.27 4.3.28 4.3.29 4.3.30 4.3.31 4.3.32 4.3.33 4.3.34 4.3.35 4.3.36 4.3.37 4.3.38 4.3.39 4.3.40 4.3.41 4.3.42 4.3.43 4.3.44 18 isalphanum() とは何か valdigit() とは何か 193 cfg-number() とは何か 194 cfg-string() とは何か 195 cfg-char() とは何か 196 cfg-namelist() とは何か 197 config-scan() とは何か 199 modscaninit() とは何か 202 192 devif-name() とは何か devif-root() とは何か devif-open() とは何か devif-close() とは何か devif-ioctl() とは何か devif-read() とは何か devif-write() とは何か devif-select() とは何か 203 205 206 208 210 211 212 213 devif-mmap() とは何か 215 devif-strategy() とは何か 216 devif-psize() とは何か devif-dump() とは何か -config() とは何か -open() とは何か ldiscif-close() とは何か ldiscif-read() とは何か ldiscif-write() とは何か ldiscif-ioctl() とは何か ldiscif-rint() とは何か ldiscif-put() とは何か ldiscif-start() とは何か ldiscif devif 217 218 219 224 225 226 226 227 228 229 229 ldiscif-modem() とは何か 230 ldiscif-qsize() とは何か 231 ldiscif-config() とは何か 231 console-putchar() とは何か 234

4.3.45 console-getchar() とは何か 4.3.46 console-config() とは何か 4.3.47 まとめ構成上の限界 237 234 235 4.4 4.5 4.6 第 5 章 5.1 5.2 5.3 5.4 カーネルのメモリアロケータ . kern/malloc. c 4.4.1 kern/malloc. c に含まれる関数 239 ニマリズムとメモリ割り当て 241 4.4.2 4.4.3 malloc() とは何か 241 4.4.4 free() とは何か 248 4.4.5 kmeminit() とは何か 254 なぜカーネルは動的に割り当てられたメモリを使うのか 演習問題 プロセスのライフサイクル ( kern/fork. c 、 kern/exit.c) プロセス生成の構造 . kern/fork. c 5.1 . 1 5.1 .2 5.1 .3 5.1 .4 5.1 .5 5.1 .6 5.17 5.1 .8 スレッドとプロセスのステート構造の背後にある設計方針 P 〇 S Ⅸのプロセス ID とグ丿レープ ID とセッション 263 263 プロセスの階層構造の、 POSIX による定義 kern/fork. c ファイルに含まれる関数 264 fork() とは何か 265 vfork() とは何か 266 forkl() とは何か 267 プロセス生成機構の改良 277 プロセス生成の将来 プロセス終了の構造 : kern/exit. c ・ 5.3.1 POSIX exit ( ) インターフェイスに至るまで 5.3.2 kern/exit. c に含まれる関数 282 264 281 5.3.3 rexit() とは何か 282 5.3.4 exit() とは何か 283 5.3.5 wait4() とは何か 290 5.3.6 reclaimproc() とは何か 演習問題 296 目次 ・ 238 ・・ 257 ・・ 259 261 ・・ 262 ・・ 279 ・・ 280 ・・ 297 19

目次 第 6 章 6.1 62 6.3 20 シグナルを介したプロセス例外 POSIX によるシグナルの定義 (kern/sig.c) 6.1 . 1 6.1 .2 6.1 .3 6.1 .4 6.1 .5 6.1 .6 6.17 6.1 .8 6.1 .9 シグナルの抽象レイヤ構造 シグナル番号 301 シグナル動作 301 301 マスク可能なシグナル マスクや捕捉が不可能なシグナ丿レ シグナルのペンディング 302 停止されたプロセスとトレースされているプロセス シグナルを待って中断するプロセス 303 vfork() によるプロセスとシグナル 303 301 302 POSIX シグナルインターフェイスの前身 kern / sig. c の関数とファイル構成 299 ・・ 300 ・・ 303 ・・ 304 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.37 6.3.8 6.3.9 6.3. IO 6.3.11 6.3.12 6.3.13 6.3.14 6.3.15 6.3.16 6.3.17 6.3.18 cansignal() とは何か 305 sigaction() とは何か 307 sigprocmask() とは何か 312 sigpending() とは何か 314 sigsuspend() とは何か 315 sigstack() とは何か 317 kill() とは何か 318 killpg() とは何か 320 sigreturn() とは何か 323 nosys() とは何か 324 psignal() とは何か 325 issig() とは何か 333 psig() とは何か 338 coredump() とは何か 340 coredump() の改良が共有ライブラリに及ほす影響 trapsignal() とは何か 345 siginit() とは何か 348 execsigs() とは何か 349 302 345

6.4 第 7 章 7.1 7.1 . 13 7.1 . 14 7.2 7.3 プロセス保護機構 . kern/cred. c 6.3.19 pgsignal() とは何か 350 6.3.20 sigexit() とは何か 351 6.3.21 stop() とは何か 352 演習問題 証明と特権 (kern/cred.c 、 kern/priv.c) 7.1 . 1 7.1 .2 7.1 .3 7.1 .4 7.1 .5 7.1 .6 7.17 7.1 .8 7.1 .9 7.1 . 7.1 . 7.1 7.1 . 7.1 . 7.1 . 7.1 . 7.1 . 19 18 17 1 6 15 . 1 2 1 1 10 ユーザー証明 356 プロセス証明 357 UNIX の過去の実装における証明 証明と参照カウンタ 358 補助グループ 359 証明の共有 359 358 証明が安全に保護されたシステムに与える影響 361 UN Ⅸシステムにおける所有権のスコープ 361 kern/cred. c に含まれる関数 361 modpcred() とは何か 362 getuid() 、 geteuid() 、 getgid() 、 getegid() とは何か getgroups() とは何か 368 setuid() とは何か 371 seteuid() とは何か 372 setgid() とは何か 374 setegid() とは何か 376 setgroups() とは何か 378 groupmember() とは何か 379 crget() 、 crfree() 、 crdup() とは何か 380 365 getlogin() と setlogin() とは何か 役柄べースのセキュリティとは何か 7.1 .20 7.3.3 他の UNIX システムにおける特権 7.3.2 役柄と特権 387 7.3.1 識別子 386 プロセス特権 . kern/priv. c 382 388 目次 ・・ 354 355 ・・ 356 ・・ 385 ・・ 386 21

目次 7.4 第 8 章 8.1 8.1 . 1 1 8.1 . 12 8.1 . 13 8.1 . 1 7 8.2 22 プロセスの多重化 演習問題 7.3.5 use-priv() とは何か 7.3.4 役柄と特権の列挙型 388 389 (kern/synch.c 、 kern/lock.c) プロセスのプロッキングとスケジューリング : kern/synch.c 8.1 . 1 8.1 .2 8.1 .3 8.1 .4 8.1 .5 8.1 .6 8.17 8.1 .9 8.1 .8 コルーチンの動作 398 スケジューリングの基本的アルゴリズム 399 メモリの再利用 400 スケジューリングと、その応用 400 8.1 . 8.1 . 8.1 . 8.1 . 10 14 15 16 同期 403 プロセスの優先順位 404 kern/synch ℃に含まれている関数 roundrobin() とは何か 406 schedcpu() とは何か 407 updatepri() とは何か 411 tsleep() とは何か 413 endtsleep() とは何か 417 unsleep() とは何か 418 wakeup() とは何か 419 rqinit() とは何か 422 setrun() とは何か 423 setpri() とは何か 424 プロセスの排他制御 . kern/lock. c 406 426 ・・ 395 397 ・・ 398 ・ 425 821 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.27 8.2.8 書き込みロックと読み出しロック ロックの再帰 426 スピンロック 427 kern/lock. c に含まれる関数 lock-init() とは何か 428 427 lock-write() とは何か lock-done() とは何か lock-read() とは何か 429 431 430

8.3 第 9 章 9.1 9.2 9.3 8.2.9 lock-read-to-write() とは何か 432 8.2.15 lock_clear_recursive() とは何か 438 8214 lock_set_recursive() とは何か 437 8.2.13 lock_try_read-to-write() とは何か 436 8.2.12 lock_try_read() とは何か 435 8.2.11 lock_try_write() とは何か 434 8210 lock_write_to-read() とは何か 434 演習問題 445 9.1.3 なせ execve() をカーネルの中で行うのか 9.1 .2 実行ファイルフォーマットの選択 444 9.1 . 1 実行ファイルフォーマットのエミュレーションを選択した設計上の理由 386BSD の実行ファイルフォーマットエミュレータ ( kern/execve. c 、 kern/descrip.c) POSIX オペレーティングシステム機能 バイナリファイルの実行 : kern/execve. c ・ 9.2.1 9.2.2 9.2.3 9.2.4 9.2.5 9.2.6 Berkeley a. out ファイルフォーマット 446 execve() システムコール機構の詳細 447 未完成の仕事 448 kern/execve. c の関数と、その命名 448 execve() とは何か 449 execve() に反映されている全体的な設計思想 468 ファイル記述子機構 : kern/descrip. c 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.3.6 9.3.7 9.3.8 9.3.9 ファイル 468 ファイル記述子 470 kern/descrip. c に含まれる関数 getdtablesize() とは何か 473 473 dup() とは何か dup2() とは何か fcntl() とは何か close() とは何か fstat() とは何か 9.3. IO read() とは何か 474 476 478 484 486 487 目次 441 ・・ 442 444 ・・ 439 ・・ 446 ・・ 468 23

目次 9.3.11 9.3.12 9.3.13 9.3.14 9.3.15 9.3.16 9.3.17 9.3.18 9.3.19 9.3.20 9.3.21 9.3.22 9.3.23 9.3.24 9.3.25 9.3.26 9.3.27 9.3.28 9.3.29 readv() とは何か write() とは何か writev() とは何か ioctl() とは何か select() とは何か 489 492 494 497 502 selscan() とは何か 507 seltrue() とは何か 509 selwakeup() とは何か 510 fdalloc() とは何か 512 fdavail() とは何か 514 falloc() とは何か 516 ffree() とは何か 518 fdcopy() とは何か 519 fdfree() とは何か 522 fdcloseexec() とは何か closef() とは何か 524 flock() とは何か 526 523 fdopen() とは何か 528 dupfdopen() とは何か 529 9.4 演習問題 Appendix A 386BSD カーネルプログラムのソース構成 A. 1 A. 2 A. 3 A. 4 A. 5 A. 6 A.7 A. 8 A. 9 24 コアカーネルモジュール・ インターフェイスとデータ構造の共通インクルードファイル・ 他のカーネルモジュー丿レの役割・ システムの全体像・ なせカーネルをモジュール化するのか 386BSD カーネルを、非標準的な構成に仕立てる・ カーネルプログラムをビルドする・ 新しいカーネルプログラムをテストする・ 新しいカーネルプログラムをインストー丿レする・ ・・ 531 533 ・・ 534 ・・ 534 ・・ 535 ・・ 535 ・・ 535 ・・ 536 ・・ 537 ・・ 537 ・・ 537

A. 10 A. 1 1 A. 1 2 A. 13 A. 14 A. 15 新しいカーネルプログラムをデバッグする・ カーネルにモジュールを追加する・ カーネルのために新しいモジュールを作成する・ カーネルソースディレクトリの階層構造・ 複数のカーネルコンバイル用ディレクトリを同時に持っことについて・ モジュール構成に関する将来の仕事・ Appendix B 役柄をベ - スとするネットワークレベルのセキュリティに関する計画書 B. 1 B. 2 B. 3 B. 4 B. 5 B. 6 B.7 B. 8 B. 9 システムセキュリティのための従来のアプローチ・ ネットワークレベ丿レのセキュリティを構成する要素・ 第 1 の要素 : 役柄と特権 機密指定されたファイルの規制を解除する方法・ シンプルな役割べースのモデルの長所と短所・・ 386BSD による、ネットワークレベルのセキュリティのシンプルな一例・ 第 4 の要素 : 強制アクセスコントロール・ 第 3 の要素 : 透明性・ 第 2 の要素 : アクセス経路・・ B. 10 役柄べースのセキュリティを転覆させる方法・ B. 11 シンプルなネットワークレベルのセキュリティが必要な理由・ Appendix C 大規模なアプリケーション開発のための動的 make 環境 C. 1 C. 2 C. 3 C. 4 C. 5 C. 6 C.7 make の古い使いかた make の使いかたの制限・ makefile とスケーリングのジレンマ・ make によるスケーリング : 動的な makefile ・ 例 : 386BSD カーネルの動的 makefile 環境・ なせ誰もが動的 makefile を使っていないのか・ 今までの動的 makefile と、その将来・ 目次 ・・ 538 ・・ 538 ・・ 539 ・・ 539 ・・ 540 ・・ 541 543 ・・ 544 ・・ 545 545 ・・ 546 ・・ 547 ・・ 547 ・・ 548 ・・ 549 ・・ 550 25 ・・ 558 ・・ 558 ・・ 557 ・・ 556 ・・ 556 ・・ 555 ・・ 554 553 ・・ 551 ・・ 550

目次 C. 8 List 1 : 386BSD カーネルのサンプ丿レ・・ C. 9 List 2 : 386BSD カーネルコンフィギュレーションのサンプル・ C. 1 1 List 4 : カーネル makefile のサンプル・ C. IO List 3 : カーネル makefile のサンプル・ C. 12 List 5 : カーネルのマスター makefile のサンプル・ 26 索引・ 第 9 章・ 第 8 章・ 第 7 章・ 第 6 章・ 第 5 章・ 第 4 章・ 第 3 章・ 第 2 章・ 演習問題の解答 ・・ 559 ・・ 560 ・・ 560 ・・ 561 ・ 575 ・・ 574 ・・ 573 ・・ 572 ・・ 571 ・・ 570 ・・ 569 ・・ 569 ・ 568 567 ・・ 562

索 引 Apple Ⅱ・ Apple Macintosh ・・ application programming interface ・ Symbol . /kern ・ . config ・ /. config ・ /sbin/init ・ #include ・ 0 で除算・ ・・ 83 , 122 ・・ 68 , 257 2.8BSD ・・ 2BSD ・ 3.3BSD ・ 32000 32 ビット保護モード・ 386BSD ・ 386BSD From the Inside-Out ・ 386BSD Reference CD-ROM ・ ・・ 69 , 303 ・・ 80 , 240 ・・ 28 , 31 , 136 , 173 , 353 , 442 ・・ 38 , 107 ・・ 38 , 444 386BSD Release 0.0 ・ 386BSD Release 0.1 ・ 386BSD Release 1.0 ・ 386 の割り込み制御・ 3BSD ・ 4.2BSD ・ 4.3BSD ・ 4.3BSD Reno ・ 410 a. out ファイルフォーマット・ 413 a. out ファイルフォーマット・ 4BSD 68000 ・ ・・ 534 ・・ 180 ・・ 38 ・・ 37 ・・ 466 ・・ 535 ・・ 300 ・・ 471 ・・ 36 ・・ 38 ・・ 11 ・・ 11 , 49 ・・ 92 , 101 , 186 , 254 , ・・ 303 , 471 445 , 462 , 538 ・・ 36 ・・ 446 ・・ 446 ・・ 402 ・・ 101 ・・ 466 ・・ 466 ・・ 465 applications program interface ・ applications program interfaces ・・ APTmap ・・ argc ・ AST ・ ast ・ asynchronous trap ・ BerkeIey TimeSharing System ・ BIank Storage Segment ・ BIOS ・ biomask ・ bio ・ BerkeIey UNIX ・ call gate ・ BUS-ALIGN-TRAP ・ bss ・ BSD ・ BOUND ・ ・・ 104 , 112 , 163 , 257 , 300 , 359 80386 System Software Writers Guide ・ a. out ・ AIX ・ ALL ・ alloctss() ・ Alternate Page Table map ・ API ・ Apple ・ ・・ 63 ・・ 400 ・・ 389 ・・ 151 ・・ 48 ・・ 174 ・・ 273 , 442 canonical name ・ cansignal() ・ XXX ・ cfg-string() ・ cfg-skipwhite() ・ cfg-number() ・ cfg-namelist() ・ cfg-char() ・ cfg- Compaq Systempro ・・ closef() ・ close() ・ ・・ 304 , 305 , 320 , 321 575 ・・ 173 ・・ 172 ・・ 442 ・・ 28 ・・ 273 ・・ 40 , 48 ・・ 401 ・・ 484 ・ 190 ・・ 179 ・・ 195 ・・ 190 ・・ 194 ・・ 197 ・・ 196 ・・ 153 ・・ 203 ・ 122 ・・ 55 ・・ 121 ・・ 55 ・・ 101 ・・ 104 ・・ 12 ・ 12 ・・ 120 ・・ 120 ・・ 143 ・・ 459 ・・ 485 , 522 , 524 ・・ 49 , 454 , 460 ・・ 47 , 168 , 187

索引 devif-root() ・ devif_XXX ・ ・・ 28 , 62 , 349 , 442 , 444 , 449 ・ 180 , 258 ・・ 90 , 102 ・ 146 , 167 config ・ config() ・ CONFIG. SYS ・・ config-scan() ・ ConneXlons ・ console-config() ・ console-getchar() ・ console-putchar() ・ COPS ・・ copyin3() ・ copyinoutstr() ・ copyinstr copyout ・・ copyout-l ・ copyout-2 ・ copyout-4 ・ copyout-X ・ copyoutstr ・ coredump() ・ ・・ 49 , 446 , 454 , 460 cpl ・ CPU- CPII CPU— CPU— CPLI CPII cpu- tfork() ・ -texit() ・ cpu-signalreturn() ・ -signal() ・ reset() ・ ptrace reg() ・ -preempt() ・ execsetregs() ・ 576 DDB ・ data ・ DAC ・・ currents ・ current prioroty level ・ curproc ・ curprl ・ CTSS ・・ crXXX() ・ crhold() ・ crget() ・ crfree() ・ credentials ・ crdup() ・ ・・ 557 ・・ 190 ・・ 544 ・・ 235 ・・ 234 ・・ 234 ・・ 545 ・・ 190 , 199 ・・ 37 , 64 , 68 ・・ 68 ・・ 457 ・・ 113 , 134 , 139 ・・ 37 , 68 ・ 68 , 73 ・・ 69 ・・ 69 ・・ 69 ・・ 69 ・・ 12 , 112 , 356 ・・ 359 , 380 ・・ 305 , 356 ・・ 146 , 147 ・・ 146 , 164 ・・ 142 , 146 , 159 ・・ 147 , 168 ・・ 130 , 142 ・ 146 , 158 , 464 ・・ 305 , 340 , 351 ・・ 118 ・・ 548 ・・ 183 ・・ 102 ・・ 81 ・・ 130 ・・ 362 ・・ 358 ・・ 380 ・・ 380 ・・ 146 device not available ・ devif-write() ・ —strategy() devif_select() ・ devif-read() ・ devif-psize() ・ devif- 叩 en() ・ devif-name() ・ -mmap() ・ devif-ioctl() ・ devif-dump() ・ devif_config() ・ devif_close() ・ devif devif execsigs() esym ・ ERESTART ・・ endtsleep() end Of interrupt ・ EJUSTRETURN ・・ EFLAGS ・ effective privilage ・ effective ID ・ dupfdopen() ・ dup2() ・ dup() ・ ds ・ Dr. Dobb's JournaI ・ DOS ・ DONET ・・ DISTANTUSR ・ devifXXX() ・ ・・ 120 ・・ 208 ・・ 219 ・・ 218 ・・ 210 ・・ 215 ・・ 203 ・・ 206 ・・ 217 ・・ 211 ・・ 205 ・・ 213 ・・ 216 ・・ 213 ・・ 474 ・・ 86 ・・ 98 ・・ 83 ・・ 389 ・・ 185 ・・ 190 ・・ 182 ・・ 86 ・・ 141 ・・ 90 ・・ 417 ・・ 90 ・・ 141 ・・ 107 ・・ 365 ・・ 365 ・・ 473 , 528 , 529 ・・ 476 , 517 465 , 538 , 544 ・・ 42 , 85 , 175 , 258 ・ 305 , 349 , 462 ・・ 11 , 44 , 49 , 92 , 175 , 403 , 446 , executable file format emulator ・ execve() ・ execve() システムコール・ exit() ・ expanded memory ・ extended memory ・ ・・ 263 , 282 , 283 , 351 , 522 ・・ 442 ・ 447 ・・ 39 ・・ 39

External Symbol Binding ・ falloc() ・ fcntl() ・ fdalloc() ・ fdavail() ・ fdcloseexec() ・ fdcopy() ・ fdfree() ・ fdopen() ・ ffree() ・ FIFO ・ file-like objects ・ FIOSETOWN ・・ FIOGETOWN ・・ FIOASYNC ・・ fillkpt ・・ fill-eproc() fuword ・・ fusword ・ fubyte fstat() ・ fstat ・ free() Fortran ・・ forkl() ・ fork() ・ fork ・ flock() ・ FPE_FPU_NP_TRAP ・・ getXXX() ・・ getuid() ・ getlogin() getgroups() getgid() ・ geteuid() getegld() ・ getdtablesize() ・ getchar() ・ fuzzy binding ・ ・ 182 ・・ 516 ・・ 514 ・・ 519 ・・ 522 ・・ 468 ・・ 342 ・・ 59 ・・ 500 ・・ 501 ・・ 500 ・・ 518 , 526 ・・ 473 , 528 ・・ 462 , 523 ・・ 475 , 478 ・・ 477 , 512 , 514 , 516 ・・ 362 ・・ 365 ・・ 368 ・・ 365 ・・ 365 ・・ 365 ・・ 473 ・・ 190 ・・ 150 ・・ 182 ・・ 68 ・・ 68 ・・ 68 ・・ 37 ・・ 486 ・・ 517 ・・ 121 ・・ 198 ・・ 521 ・・ 526 ・・ 39 , 136 , 142 , 262 , 265 ・・ 362 , 382 ・・ 239 , 248 ・・ 265 , 267 , 519 groupmember() ・ hash buckets ・ Hercules ・ hlt ・ Honeywell ・ HP ・ i386/cpu. c ・ i386/trap. c ・・ iBCS ・・ iBCS2 ・ iBCS システムコールゲート・ IBM ・ iCOde ・ ICU ・・ identification ・ idle ・ IDT テープル . IIASA ・・ imake ・ IMP ・ init ・ init386() INT ・ lntel ・ 索引 ・・ 359 ・・ 239 ・・ 174 ・・ 83 ・・ 104 ・・ 68 ・・ 145 ・・ 112 ・・ 62 ・・ 174 ・・ 38 , 87 , 101 ・・ 107 , 324 ・・ 362 , 379 ・・ 53 , 136 , 165 , 442 lntel 8259 Priority lnterrupt Control Unit ・ lnterrupt Control Units ・ lnterrupt ln-Service Register ・・ lnterrupt Request Register ・ INTSTRAY ・ INTSTRAY2 ・・ ioctl() I/O 命令・・ iret ・ IRQ15 ・ IRR ・ isalphanum() ・ isdigit() ・ ISO Latin I ・ ISR ・ 1Sr ・ ・・ 555 , 565 ・ 60 , 264 , 288 ・・ 190 , 192 ・・ 190 , 191 ・・ 386 ・・ 82 ・・ 85 ・・ 303 ・・ 104 ・・ 57 ・・ 85 ・・ 175 ・・ 87 ・・ 38 ・・ 87 ・・ 87 ・・ 89 ・・ 91 ・・ 497 ・ 88 ・・ 116 ・・ 104 ・・ 87 ・・ 183 ・・ 87 ・ 98 577

索引 issig() ・ itimerfix() ・ Jim Kulp ・ ・ 437 , 438 ・・ 36 , 40 , 113 , 136 Kerberos ・ kern/clock. c ・ kern/config. c ・ kern/cred. c ・ kern/descrip. c ・ kern/execve. C ・ kern/exit. c ・・ kern/fork. c ・ kern/lock. c ・ kern/malloc. c ・・ kern/priv. c ・ kern/sig. c ・・ kern/synch. c ・ KERNBASE ・ KernelPTD ・ kill() ・ killpg() ・ kmem ・ kmem -alloc() kmem-free() ・ kmeminit() ・ Knuth ・ ldiscif-ioctl() ・ ldiscif-open() ・ ldiscif-put() ・ ldiscif-re ad() ・ ldiscif-rint() ・ ldiscif-start() ・ ・ 172 , 176 ・ 425 , 427 ・・ 305 , 333 , 338 , 345 ・・ 190 ・・ 226 ・・ 229 ・・ 228 ・・ 226 ・・ 231 ・・ 229 ・・ 224 ・・ 230 ・・ 227 ・・ 231 ・・ 225 ・・ 408 ・・ 391 ・・ 239 ・・ 250 ・・ 39 ・・ 152 ・・ 49 ・・ 446 ・・ 406 ・・ 545 ・・ 303 ・・ 505 ・・ 239 , 254 ・・ 238 , 244 ・・ 305 , 320 ・・ 305 , 318 ・・ 398 , 406 ・・ 300 , 304 ・・ 361 , 386 ・・ 172 , 238 ・・ 262 , 264 ・・ 280 , 282 ・・ 468 , 473 ・・ 356 , 361 lightning bOlt ・・ ljmp LOCALUSR ・ lock lock lock_ lock ー lock-write-to—read() ・ lock-write() —try-write() ・ —try-read-to-write() lock-try-read() ・ set_recursive() lock-read-to-write() ・ lock-read() ・ lock—init() ・ lock ー done() ・ clear_recursive() ・ locore. S ・ LOS Alamos National Laboratories ・ IO 、ö,r. S ・・ lret ・ MAC ・ MACH ・・ Mach ・ make ・ makefile ・ malloc() ・ mbuf ・ MC680X0 ・ mch45. s ・・ mclget() ・ Memory Management Unit ・ MULTICS.. MS-DOS ・ Morris のワーム・ modscaninit() ・ modpcred() MMU アドレスフォールト・ mmap() MINI-UNIX ・・ MGMT ・・ ・・ 238 , 239 , 241 , 248 lbolt ・ ldiscif_ ldiscif_ write() ldiscif-qsize() ・ ldiscif-modem() ・ config ・ ldiscif_close() ・ 578 ldisk_XXX ・ ・・ 362 , 372 , 374 , 377 , 379 , 463 ・・ 408 ・・ 80 ・・ 389 ・・ 438 ・・ 430 ・・ 428 ・・ 431 ・・ 432 ・・ 435 ・・ 436 ・・ 434 ・・ 429 ・・ 434 ・・ 49 ・・ 37 ・・ 116 ・・ 83 ・・ 544 ・・ 547 ・・ 12 ・・ 554 ・・ 238 ・・ 159 ・・ 37 ・・ 238 ・・ 54 ・・ 389 ・・ 112 ・・ 471 ・・ 54 ・・ 534 , 554 , 565 ・・ 407 , 422 ・・ 426 , 443 ・・ 12 , 356 , 403 ・・ 175 , 180 ・・ 190 , 202

newgrp ・ NFS ・ nlce ・ nice() ・ NMI ・・ NO_PID . Non-Maskable lnterrupt ・・ NONE ・・ NOP ・ nosys() ・ Novell ・ NPX ・ NS32000 ・ NuBus ・ Numeric Processor Extension ・ 0 叩 en() ・ outer stack frame ・ P—CPU ・・ P-PCtcpu ・ Page TabIe map ・・ panic() ・ parsmg ・ PC/AT ・ PCB ・ pcb ・ PDP-II ・ PDP ー 11 / 45 ・ pfind() ・ pgfind() ・ pgsignal() ・ PID_MAX. namei() nameidata ・ nameiexec() ・ namelist ・ NE280 ・ net ・ Net/2 ・ Netware Loadable Kernel Modules ・ ・・ 28 , 31 , 107 , 136 , 146 , 262 , 356 , 442 ・・ 85 , 151 ・・ 181 ・・ 284 ・・ 129 ・・ 159 ・・ 174 ・・ 284 ・・ 450 ・・ 450 ・・ 462 ・・ 197 ・・ 173 ・・ 104 ・・ 181 ・・ 380 ・・ 410 ・・ 406 ・・ 128 ・・ 263 ・・ 128 ・・ 389 ・ 88 ・・ 107 ・・ 404 ・・ 409 ・・ 49 ・・ 118 ・・ 196 ・・ 174 ・・ 39 ・・ 100 ・・ 320 ・・ 322 ・・ 263 ・・ 516 , 530 ・・ 357 , 359 ・・ 240 , 254 , 304 ・・ 305 , 324 ・・ 305 , 350 ・・ 36 , 120 , 122 , 333 ・・ 56 , 80 , 148 PL/I ・・ Plan9 ・ pmake ・ Portin g UNIX to the 386 ・ POSIX ・ POSIX 1003.1 ・・ Process Control Block ・ proc ・ privile ges ・ priority ・ pr- scale ・ POSIX シグナル・ 索引 ・・ 304 ・ 186 ・・ 558 ・・ 11 ・・ 459 ・・ 146 ・・ 130 ・・ 404 ・・ 279 ・・ 56 process control block ・ process migratlon processor utilization ・・ protected mode ・ psig() ・ psignal() ・ PTE ・ PTmap ・・ ptrace ・ ptrace() ・ putchar() qswtch ・ RAID ・・ read lock ・ read() ・ readv() ・ real ID re al privilege ・ realloc() ・ reclaimproc() ・ relOC ・ remote procedure call ・ rexit() ・ rfillkpt ・ Ring 0 Ring 3 ・ RISC ・ role-based security ・・ root アカウント . ・・ 356 , 386 ・・ 38 ・・ 404 ・・ 189 ・・ 39 , 80 ・・ 305 , 333 , 338 , 345 ・・ 305 , 320 , 321 , 325 , 332 , 350 ・・ 40 , 49 , 66 ・・ 58 , 66 , 71 ・・ 51 , 58 ・・ 282 ・・ 443 ・・ 45 , 58 ・・ 282 , 289 , 296 ・・ 254 ・・ 365 ・・ 365 ・ 489 ・ 487 ・・ 426 ・・ 401 ・・ 80 ・・ 190 ・・ 464 ・・ 117 , 147 , 154 , 302 , 326 ・・ 546 ・・ 150 ・・ 151 ・・ 385 , 544 579

索引 ・・ 30 , 463 ・・ 30 , 392 , 453 , 463 ・・ 63 , 141 , 305 , 323 ・ 68 , 172 ・ 82 , 106 ・・ 80 , 100 roundrobin() ・ rqinit() ・ schedcpu() SEGV_BOUND_TRAP ・・ SEGV_OFLOW_TRAP select() ・ self-configuration selscan() seltrue() selwakeup() ・ Set Processor Level XX ・ setegid() ・ seteuid() setgid() ・ setgroupid setgroups() setlogin() ・ setpri() ・ setpriority() ・ setrq ・ setrun() setuid() ・ setuserid setXXX() ・ sigaction() ・ sigcode ・ SIGCONT sigexit() ・ siginit() ・ SIGKILL ・ Sigma-Sigma ・・ sign a10 ・ swpending ・ sigpending() ・ sigprocmask() ・ sigreturn 0 ・ sigstack() ・ SIGSTOP ・ sigsuspend() ・ SIGSYS ・ sigvec() ・ socket ・ 580 ・・ 121 ・ 121 ・・ 181 ・・ 509 ・・ 510 ・・ 376 ・・ 372 ・・ 374 ・・ 378 ・・ 424 ・・ 406 ・・ 80 ・・ 423 ・・ 371 ・・ 362 ・・ 62 ・・ 302 ・・ 92 ・・ 302 ・・ 314 ・・ 302 ・・ 324 ・・ 300 ・・ 469 ・・ 406 ・・ 443 ・・ 422 ・・ 305 , 315 , 339 ・・ 305 , 317 ・・ 305 , 312 ・・ 305 , 348 ・・ 305 , 339 , 351 ・・ 302 , 311 , 327 ・・ 304 , 307 ・・ 362 , 382 ・・ 507 , 510 ・・ 407 , 412 ・・ 279 , 471 , 502 , 507 softclock ・ Solaris ・・ SPARC ・・ Sparc ・ spl ・ splbio ・ splclock ・ splhigh ・ splimp ・ splnet ・・ splnone ・ splsoftclock ・ spltty ・ splx ・ spIXX ・ ssdtosd ・ start ・・ stateful lock ・ stderr ・ stdin ・ stdout ・ stop() ・ stray interrupt catcher table ・ subyte ・ suser() susword ・ suword ・ swtch ・ swtch() ・ swtch—selq ・ sys/privilage. h ・ sysc all() ・ sysmap System V ・ system() ・ systrap ・ systrap() ・ T. S. Eliot ・ T_TRCTRAP ・ T_DNA T_DIVIDE . T_BPTFLT .. T-ALIGN ・ ・・ 99 ・・ 37 ・・ 103 ・・ 103 ・・ 104 ・・ 106 ・ 63 ・・ 101 , 104 ・・ 101 , 104 , 106 ・・ 101 , 104 ・・ 101 , 104 ・・ 150 , 153 ・・ 68 , 175 , 401 ・・ 37 , 41 ・ 68 ・・ 388 ・・ 68 ・・ 87 ・・ 476 ・・ 476 ・ 476 ・・ 426 ・・ 305 , 337 , 352 ・・ 77 , 80 ・・ 37 , 68 ・・ 127 ・ 120 ・・ 122 ・・ 127 ・・ 121 ・・ 185 ・・ 110 ・・ 266 ・・ 49 ・・ 389 ・・ 82 ・・ 281 ・・ 113 , 143 ・・ 68 , 333 , 353 ・・ 107 , 113 , 136

・・ 66 , 71 , 113 , 133 ・ 80 , 148 , 151 , 154 Task Switch State ・ task switch state ・ Tenex ・ text ・ tf-eflags ・ オーノヾーフロー オーバーヘッド・ The Art of Computer Programming ・・ The Naming of Cats ・ timed sleep ・ timeout() ・ TOPS-20 ・ trap() ・ trap. c ・ trapexcept() ・ trapsignal() ・ trapwrite() ・ tsleep() TSS ・ tss ・ tty ・ IJ Unicode ・ UNIX ・・ unsleep() ・ updatepri() ・ use—priv() ・ valdigit() ・ VAX ・・ vfork() ・ VFS ・ vm_fault ・・ vm-fault() ・ vmspace -allocate() ・ vmspace- delete() vmspace-protect() ・ vmstat ・・ vn-rdwr() vnode ・ wait() wait3() ・ wait4() ・ ・・ 49 , 446 , 454 ・・ 406 , 407 , 417 ・・ 303 , 385 ・・ 113 , 114 ・・ 113 , 131 ・・ 129 , 305 , 345 ・・ 101 , 104 ・・ 190 , 193 ・・ 447 , 450 ・・ 450 , 469 ・・ 148 ・ 80 ・・ 303 ・・ 115 ・・ 239 ・・ 185 ・・ 413 ・・ 113 ・・ 57 ・・ 125 ・・ 134 ・・ 461 ・・ 459 ・・ 461 ・・ 247 ・・ 452 ・ 183 ・・ 418 ・・ 411 ・・ 389 ・・ 281 ・ 281 waitXXX() ・・ wakeup() ・ Win dows ・・ Windows NT ・ Windwos 95 ・ write lock ・ write() ・ writev() ・ X Consortium ・ X Win dow ・ X Window システム・ アイドル・ アウタースタックフレーム . アクセス制御ポリシー アクセスパー ミツンヨン・ アドレス変換・ アドレス変換マップ・・ アラインメントフォールト・ アリーナ・ アルファベット・ アンプロッキング .. イ 一般保護違反・・ 稲妻・・ イベントジェネレータ・ 索引 ・・ 290 ・・ 46 ・・ 176 ・・ 426 ・・ 492 ・・ 494 ・・ 565 ・・ 565 ・・ 555 ・・ 107 ・・ 385 ・・ 548 ・・ 152 ・・ 42 , 175 , 258 ・・ 403 , 413 , 419 ・・ 39 , 48 ・・ 316 , 403 , 413 , 414 , 505 ・・ 12 , 257 , 300 , 411 ・・ 281 , 282 , 290 , 351 ・・ 265 , 266 , 289 , 303 , 352 , 463 ・・ 36 , 53 , 68 , 120 , 153 , 188 , 333 インストラクターズガイド・ インターフェイスメッセージプロセッサ・ 工 ウ ウォームプート・ 工クストラセレクタ・ 工ラー復旧・・ オ オペレーティングシステム・ ・・ 121 ・・ 239 ・・ 192 ・・ 406 ・・ 54 ・ 405 ・・ 11 ・・ 104 ・・ 42 ・・ 131 ・・ 121 ・・ 240 ・・ 264 ・・ 408 , 411 581

索引 グループ ID . ・・ 38 , 57 , 107 , 112 ・・ 83 , 314 ・・ 29 , 257 ・・ 37 , 77 , 281 , 414 ・・ 40 , 248 ・・ 81 , 130 ・・ 81 , 110 ・・ 62 , 159 カ カーネルメモリアロケータ・ カーネルプロセス・ カーネルプログラム・ カーネルファイル カーネルトレース・ カーネルデノヾッガ . カーネルスレッド・ カーネルスタック・ カーネル初期スタック . カーネル実行スレッド・ カーネルサプシステム・ カーネルアドレス空間・ カーネル・ ・・ 30 , 357 , 365 , 368 , 387 , 463 階層構造 階層的スケジューリング 書き込みロック・ 拡張メモリ・ 数・・ 仮想記憶・ 仮想記憶アロケータ・ 仮想記憶システム・・ 仮想記憶ページ・ 仮想フォールト・ ガべージコレクショ カレント・ カレントプロセス・ 間接アドレス変換ページテープル . キ 疑似ェラー 基数・・ 基本カーネル・・ 機密システム・ キャラクタデバイス・ キャラクタ入力・ キューのサイズ・ ン・ ・・ 468 ・・ 152 ・・ 262 ・・ 273 ・・ 39 ・・ 107 ・・ 262 ・・ 116 , 538 ・・ 286 ・・ 28 ・・ 38 , 49 , 64 ・・ 95 ・・ 218 ・・ 154 ・・ 401 ・・ 82 ・・ 547 ・・ 231 ・・ 234 ・・ 545 ・・ 28 ・・ 141 ・・ 183 ・・ 248 ・・ 134 ・・ 265 ・・ 402 ・・ 194 ・・ 39 ・・ 426 ・・ 402 ・・ 177 ・・ 262 ・・ 191 , 193 ・・ 40 , 163 , 240 ケ コールゲート・ コアダンプ .. 子・・ コ 減衰フィルタ・ 現在の割り込みマスク・ 国際応用システム分析研究所・・ コンカレントオプジェクト・ ゴルディアスの結び目・ コマンドプロセッサ・ コプロセッサ例外・ 固定小数点値・ コンテクスト切替・ コンソールデノヾイス . コンソール・ コンフィギュレー コンフィギュレーンヨンモジュールクラス . コンフィギュレーンヨンスクリプト言語・ ション・ サ ・・ 207 , 209 , 210 , 212 ー 216 強制アクセスコントロ 切替キュー選択・ ク クラスタ方式・ クラスタリング・ クラッシュダンプ・ グリッチ・ 582 ール・ 再スケジューリング・ 参照カウンタ . シ シェノレ・ シェルスクリプト . 識別子・ 字句解析・ シグナル・ シグナル処理・・ シグナルスタック・ シグナルのマスク・ シグナル番号・ システム構成ファイル・ システムコール API ・ システムコールエントリ システムの初期化・ システムプロセス・ 実 ID ・ 実グループ ID . 実効 ID ・・ 285 , 358 ・・ 146 , 300 , 414 ・・ 365 , 371 ・・ 264 ・・ 340 ・・ 303 ・・ 399 ・・ 90 ・・ 411 ・・ 365 ・・ 374 ・・ 321 ・・ 37 ・・ 112 ・・ 28 ・・ 38 ・・ 301 ・・ 312 ・・ 317 ・・ 196 ・・ 386 ・・ 466 ・・ 521 ・・ 181 ・ 179 ・・ 172 ・・ 235 ・・ 391 ・・ 145 ・・ 180 ・・ 302

・・ 77 , 265 , 399 , 414 実行キュー 実効グループ ID ・ 実効特権・ 実行ファイル・ 実効ユーザー ID ・ 実特権・ 自動構成・ ・・ 85 , 300 ・・ 92 , 190 実行ファイルフォーマットエミュレータ・ 巡回セールスマン問題・ ・・ 78 ・・ 376 ・・ 365 ・・ 38 ・・ 442 ・・ 372 ・・ 365 ・・ 181 ・・ 189 ・・ 264 ・・ 118 ・・ 63 ・・ 86 ・・ 121 ・・ 544 ・・ 555 ・・ 281 ・・ 145 ・・ 92 ・・ 427 ・・ 63 ・・ 317 ・・ 556 ・・ 192 ・・ 548 ・・ 182 ・・ 545 ・・ 343 ・・ 481 ・・ 321 ・・ 359 ・・ 356 ・・ 426 ・・ 257 ソ ソケット・ ソフトウェア構成・ ソフトウェア割り込み・ ソフトクロック割り込み・ 索引 ・・ 469 ・・ 172 ・・ 99 ・・ 293 条件コンパイル・ 状態ロック・ 証明・ 証明の共有・・ 初期プロセス・ ジョブコントロ 所有者権・・ 所有者証明・ 侵入者・・ シンボル結合機構・ ス 推奨アクセスコントロール . 数字・・ スーノヾーユーザー スケーリング・ スケジューリング・ スケジュール・・ スタック・ スタックフレーム・ スピンロック・ ール・ セグメントセレクタ・ セグメント違反・ セキュリティ・ 静的 makefile ・ セ スレッドの終了・ スレッドステート・ スレッド・ スプリアス割り込み・・ ヒッション・ セグメント保護フォールト・ セグメントディスクリプタ・ ・・ 281 , 302 , 303 ・・ 385 , 546 ・・ 148 , 263 ゾンビキュー ゾンビブロセス・ タ 代替アドレス空間・ タスク構造体・ 断片化・・ 端末構造体・ チ 抽象レベル・・ ディスクリプタ . ディスクリプタテープルエントリ・ データセレクタ・ デッドロック・ デバイスドライパ・ デバイスドライバインターフェイス関数・ デバイスドライバモジュール .. デバイスパラメータ・ デバイス割り込み・ デバッガ・ デバッグ・ デリミタ・ 転覆・・ ト 同期機構・ 統計カウンタ配列・ 統計情報・ 動的 make 環境・ 透明性・ トークン・ 特権・ 特権授与・・ 特権ユーザー 特権リスト・ トラップ・・ トラップゲート・ ・・ 224 , 225 ・・ 403 , 426 ・ 118 , 249 , 336 ・・ 386 , 547 ・・ 247 , 281 ・・ 356 , 386 ・・ 85 , 107 , 117 ・・ 281 , 291 ・・ 83 ・・ 545 ・・ 385 ・・ 384 ・・ 179 ・・ 547 ・・ 554 ・・ 77 ・・ 403 ・・ 179 ・・ 538 ・・ 92 ・・ 205 ・・ 235 ・ 185 ・・ 86 ・・ 84 ・・ 107 ・・ 177 ・・ 254 ・・ 57 ・・ 48 583

索引 ・・ 29 , 38 , 42 , 205 補助グループ ID . トラッブハンドラ関数 トラップペクタテープル・ トレース例外・ ・・ 82 , 403 ナ 名なしのプロセス・ ビスルーチン・ ネ ネットワーク・ ネットワ ーク割り込みサー ミッション属性・ パーティションサイズ . パーセント CPU フィールド・ バスインターロック命令・ バウンドトラップ・・ パイプ・ バイナリフラグメント・ 浮動小数点演算・ 深さ優先・ フォールトハンドラ・ プートフラグ・・ プートデバイス・ プートストラップ・ フアジー結合・ ファイル的オプジェクト・ ファイル記述子・ ファイルインスタンス・ ファイル・ ファイアウォール フ ヒストグラム・ ヒ ノ、ンドル・ パワーセープ . バディアロケータ・ ノヾッフア . ノ、ツシュノヾケット . 584 プラグアンドプレイ・ 浮動小数点例外・ 浮動小数点演算ュニット・ 浮動小数点演算コプロセッサ・ ・・ 545 ・・ 468 ・・ 469 ・・ 470 ・・ 468 ・・ 182 ・・ 42 ・・ 42 ・・ 116 ・・ 178 ・・ 122 ・ 156 ・・ 83 ・・ 174 ・・ 114 ・ 84 ・・ 127 ・・ 263 ・・ 544 ・・ 98 ・・ 409 ・・ 217 ・・ 548 ・・ 246 ・・ 493 ・・ 121 ・ 97 ・・ 239 ・・ 257 ・・ 239 ・・ 83 ・ 442 ・・ 130 ・・ 120 , 314 フリーメモリ領域・ フリーリスト・ プリエンプション・ プレークポイント・ プログラムインターフェイス . プロセス・ プロセス 0 ・ プロセス 1 ・ プロセス ID ・ 並列処理システム・ プロファイリング機能・ プロックデバイス型・ プロックデバイス・ プロック・ プロッキング・ プロセッサ例外・ プロセッサ利用度・ プロセッサの優先順位・ プロセッサステータスワード・ プロセスマイグレーション・ プロセスのレジスタステート・ プロセスのライフサイクル・ プロセスの終了・ プロセスの階層構造・・ プロセストレース・ プロセス特権・ プロセス生成・ プロセス証明・ プロセス終了機構・ プロセス終了・ プロセス構造体 プロセスグループ ID .. プロセスオプジェクト・ べースメモリ . ページデーモンプロセス・ ページテープルエントリ・ ページディレクトリ・ ホ ホールト・ ポータル・ 補助グループ .. ・・ 239 ・・ 240 ・・ 127 ・・ 262 ・・ 321 ・・ 321 ・・ 30 ・・ 264 ・ 145 ・・ 280 ・・ 263 ・・ 262 ・・ 386 ・・ 302 ・・ 264 ・・ 284 ・・ 262 ・・ 158 189 ・・ 107 ・・ 106 ・・ 404 ・・ 406 ・・ 413 ・・ 217 ・・ 130 ・・ 401 ・・ 49 ・・ 208 , 209 , 211 ・ 83 , 112 , 114 ・・ 263 , 269 , 285 ・・ 145 , 262 , 382 ・・ 296 , 305 , 357 , 463 ・・ 387 ・・ 359 , 378 ・・ 83 ・・ 185 ・・ 39 ・・ 321 ・・ 50 , 58

マ マーク & スイープ・・ マシン依存性・ マスク・ 迷い割り込み・ マルチスレッド・ ・ 189 , 248 マルチプロセシング・ 未実装命令・・ メ 命令トレーストラップ・ メモリアリーナの初期化・ メモリアロケータ・ メモリリーク・ メモリ割り当て・ メンノヾ・ モ 文字トークン・ 文字列トークン・・ ヤ 役柄・ 役柄特権リスト・ 役柄べ ューザー優先順位・・ ユーザープロセス・ ユーザースタック・ ースのセキュリティ・ ユ ューザー証明・ ユーザー ID ・ 優先順位・ 優先度・ 優先順キュー ・・ 112 ・・ 301 ・・ 87 ・・ 401 ・・ 401 ・・ 119 ・・ 126 ・・ 254 ・・ 238 ・・ 247 ・・ 172 ・・ 379 ・・ 196 ・・ 195 ・・ 387 ・・ 372 ・・ 107 ・・ 64 ・・ 424 ・・ 399 ・・ 240 ・・ 130 , 404 , 407 ・・ 356 , 357 , 379 ・・ 385 , 544 ・・ 30 , 357 , 365 , 387 , 463 ヨ 読み出しロック・ フ ライトフォール・ ラインディシプリン・ ラップトップ PC ・ リ リアルタイム応答・ リセット・ ルートユーザー ルートデバイス・ リロード例外・ リモートプロシージャコ リソースリミット・ レ 例外トラップ・ ロ ローカルユーザー ロック・ ロック取得要求・ ワ 割り込み・ 割り込みコントローラ・ 割り込みサーピスレジスタ・ 割り込みディスクリプタテープル・・ 割り込みマスク・・ 割り込み優先順位コントロ ール . ーフ・ 索引 ・・ 426 ・・ 71 ・・ 183 , 224 ・・ 82 ・・ 269 ・・ 101 ・・ 167 ・・ 124 ・・ 443 ・・ 131 ・・ 205 ・・ 306 ・・ 346 ・・ 391 ・・ 482 ・・ 484 ・・ 107 ・・ 101 ・・ 98 ・・ 83 , 92 ・・ 82 , 96 585

奥付

・本書の内容に関するご質問は、小社 APC 書籍編集部まで、封書 ( 返信用切手 同封のこと ) にてお願い致します。 電話によるお問い合わせには、応じられません。 なお、本書の範囲を越える質問に関しては、お答えできない場合もあります。 ・落丁・乱丁本は、送料当社負担にてお取り替え致します。 お手数ですが、小社営業部までご返送ください。 初版発行 386BSD カーネルソースコードの秘密 ウィリアム 1998 年 12 月 31 日 よる許諾を得ずにいかなる方法においても無断で複写、複製することは禁 ついて ( ソフトウェア及びプログラムを含む ) 、株式会社アスキーから文書に 本書は著作権法上の保護を受けています。本書の一部あるいは全部に APC 書籍編集部 ( 03 ) 5351-8106 ( ダイヤルイン ) 出版営業部 ( 03 ) 535 ト 8194 ( ダイヤルイン ) 大代表 ( 03 ) 535 ト 8111 〒 151-8024 東京都渋谷区代々木 4 ー 33-10 発行所 株式会社アスキー 編集人土屋信明 発行人戸島國雄 翻訳吉川邦夫 よしかわくにお 著者 William Frederick Joli レ , Lynne Greer Jolitz じられています。 制作 印刷 編集 装丁 株式会社 GARO 共同印刷株式会社 田邊裕貴 アスキーデザイン ISBN4-7561-2042-3 ・ 1190688 Printed in Japan