第Ⅰ部 概要 |
第1章 はじめに 3 |
1.1 オペレーティングシステムがすること 4 |
1.2 コンピュータシステムの構成 7 |
1.3 コンピュータシステムアーキテクチャ 12 |
1.4 オペレーティングシステムの構造 16 |
1.5 オペレーティングシステムの操作 19 |
1.6 プロセス管理 22 |
1.7 メモリ管理 23 |
1.8 記憶管理 24 |
1.9 保護とセキュリティ 28 |
1.10 分散システム 29 |
1.11 専用システム 31 |
1.12 計算環境 33 |
1.13 まとめ 37 |
練習問題 38 |
参考文献 40 |
第2章 オペレーティングシステムの構造 43 |
2.1 オペレーティングシステムのサービス 44 |
2.2 オペレーティングシステムのユーザインタフェース 46 |
2.3 システム呼出し 48 |
2.4 システム呼出しの種類 52 |
2.5 システムプログラム 60 |
2.6 オペレーティングシステムの設計と実装 61 |
2.7 オペレーティングシステムの構造 63 |
2.8 仮想機械 69 |
2.9 オペレーティングシステムの生成 74 |
2.10 システムのブート 77x 目次 |
2.11 まとめ 78 |
練習問題 79 |
課題-Linuxカーネルへのシステム呼出しの追加 80 |
参考文献 84 |
第Ⅱ部 プロセス管理 |
第3章 プロセス 89 |
3.1 プロセスの概念 90 |
3.2 プロセススケジューリング 93 |
3.3 プロセスへの操作 98 |
3.4 プロセス間通信 104 |
3.5 IPCシステムの実例 111 |
3.6 クライアント-サーバシステムにおける通信 116 |
3.7 まとめ 124 |
練習問題 125 |
課題-UNIXシェルとヒストリ機能 129 |
参考文献 134 |
第4章 スレッド 137 |
4.1 概説 137 |
4.2 マルチスレッドモデル 139 |
4.3 スレッドライブラリ 142 |
4.4 スレッドの問題点 149 |
4.5 オペレーティングシステムの事例 155 |
4.6 まとめ 157 |
練習問題 158 |
課題-行列乗算 160 |
参考文献 163 |
第5章 CPUスケジューリング 165 |
5.1 基本概念 166 |
5.2 スケジューリング基準 169 |
5.3 スケジューリングアルゴリズム 170 |
5.4 マルチプロセサスケジューリング 181 |
5.5 スレッドスケジューリング 184 |
5.6 オペレーティングシステムの事例 186 |
5.7 アルゴリズムの評価 193目次 xi |
5.8 まとめ 198 |
練習問題 199 |
参考文献 202 |
第6章 プロセスの同期 203 |
6.1 背景 203 |
6.2 際どい部分問題 205 |
6.3 Petersonの解法 207 |
6.4 同期のためのハードウェア 209 |
6.5 セマフォア 212 |
6.6 古典的な同期問題 216 |
6.7 モニタ 221 |
6.8 同期の事例 229 |
6.9 アトミックトランザクション 234 |
6.10 まとめ 243 |
練習問題 244 |
課題-生産者-消費者問題 249 |
参考文献 254 |
第7章 デッドロック 257 |
7.1 システムモデル 258 |
7.2 デッドロックの特徴 259 |
7.3 デッドロックの扱い方 263 |
7.4 デッドロックの防止 265 |
7.5 デッドロック回避 268 |
7.6 デッドロック検出 274 |
7.7 デッドロックからの復旧 278 |
7.8 まとめ 280 |
練習問題 280 |
参考文献 283 |
第Ⅲ部 メモリ管理 |
第8章 メインメモリ 287 |
8.1 背景 287 |
8.2 スワッピング 294 |
8.3 連続メモリ割当て 297 |
8.4 ページング 300xii 目次 |
8.5 ページテーブルの構造 310 |
8.6 セグメンテーション 315 |
8.7 事例:Pentium 318 |
8.8 まとめ 322 |
練習問題 323 |
参考文献 325 |
第9章 仮想記憶 327 |
9.1 背景 327 |
9.2 デマンドページング 331 |
9.3 コピーオンライト 337 |
9.4 ページ置換え 339 |
9.5 フレームの割当て 352 |
9.6 スラッシング 355 |
9.7 メモリマップ化ファイル 360 |
9.8 カーネルメモリの割当て 366 |
9.9 その他の考察 369 |
9.10 オペレーティングシステムの例 375 |
9.11 まとめ 377 |
練習問題 379 |
参考文献 382 |
第Ⅳ部 記憶管理 |
第 10 章 ファイルシステムインタフェース 387 |
10.1 ファイルの概念 387 |
10.2 アクセス法 397 |
10.3 ディレクトリ構造 400 |
10.4 ファイルシステムのマウント 412 |
10.5 ファイル共有 414 |
10.6 保護 420 |
10.7 まとめ 425 |
練習問題 426 |
参考文献 427 |
第 11 章 ファイルシステムの実装 429 |
11.1 ファイルシステムの構造 429 |
11.2 ファイルシステムの実装 432目次 xiii |
11.3 ディレクトリの実装 438 |
11.4 割当て法 440 |
11.5 空き領域の管理 449 |
11.6 効率と性能 451 |
11.7 復旧 456 |
11.8 ログ構造ファイルシステム 458 |
11.9 NFS 459 |
11.10 実例:WAFLファイルシステム 466 |
11.11 まとめ 468 |
練習問題 469 |
参考文献 471 |
第12章 大規模記憶の構造 473 |
12.1 大規模記憶の概要 474 |
12.2 ディスクの構造 476 |
12.3 ディスクの接続 477 |
12.4 ディスクスケジューリング 480 |
12.5 ディスク管理 485 |
12.6 スワップ空間管理 489 |
12.7 RAID 構造 492 |
12.8 安定記憶の実装 502 |
12.9 三次記憶構造 503 |
12.10 まとめ 514 |
練習問題 515 |
参考文献 519 |
第13章 入出力システム 521 |
13.1 概要 522 |
13.2 入出力ハードウェア 522 |
13.3 アプリケーション入出力インタフェース 532 |
13.4 カーネル入出力サブシステム 538 |
13.5 入出力要求のハードウェア操作への変換 545 |
13.6 STREAMS 548 |
13.7 性能 550 |
13.8 まとめ 553 |
練習問題 554 |
参考文献 555xiv 目次 |
第Ⅴ部 保護とセキュリティ |
第14章 保護 559 |
14.1 保護の目標 559 |
14.2 保護の原理 560 |
14.3 保護のドメイン 561 |
14.4 アクセス行列 567 |
14.5 アクセス行列の実装 570 |
14.6 アクセス制御 574 |
14.7 アクセス権の取消し 575 |
14.8 ケーパビリティに基づくシステム 576 |
14.9 言語に基づく保護 579 |
14.10 まとめ 584 |
練習問題 585 |
参考文献 586 |
第15章 セキュリティ 589 |
15.1 セキュリティ問題 589 |
15.2 プログラム脅威 593 |
15.3 システムおよびネットワーク脅威 602 |
15.4 セキュリティツールとしての暗号 607 |
15.5 ユーザ認証 619 |
15.6 セキュリティ防御の実装 624 |
15.7 システムおよびネットワークを保護するためのファイアウォール 631 |
15.8 コンピュータセキュリティの分類 633 |
15.9 事例:Windows XP 634 |
15.10 まとめ 636 |
練習問題 637 |
参考文献 638 |
第Ⅵ部 分散システム |
第16章 分散システムの構造 643 |
16.1 動機 643 |
16.2 分散オペレーティングシステムの型 646 |
16.3 ネットワーク構造 650 |
16.4 ネットワークトポロジ 653 |
16.5 通信構造 655目次 xv |
16.6 通信プロトコル 662 |
16.7 頑健性 665 |
16.8 設計上の問題 667 |
16.9 事例:ネットワーク 670 |
16.10 まとめ 672 |
練習問題 672 |
参考文献 674 |
第17章 分散ファイルシステム 675 |
17.1 背景 675 |
17.2 命名と透明性 677 |
17.3 遠隔ファイルアクセス 681 |
17.4 状態ありサービス対状態なしサービス 686 |
17.5 ファイルの複製 689 |
17.6 事例:AFS 690 |
17.7 まとめ 695 |
練習問題 696 |
参考文献 697 |
第18章 分散コーディネーション 699 |
18.1 事象の順序付け 699 |
18.2 相互排除 702 |
18.3 アトミック性 705 |
18.4 並行制御 708 |
18.5 デッドロック処理 713 |
18.6 選出アルゴリズム 720 |
18.7 合意の達成 723 |
18.8 まとめ 725 |
練習問題 726 |
参考文献 727 |
第Ⅶ部 専用システム |
第19章 リアルタイムシステム 731 |
19.1 概要 731 |
19.2 システムの特性 733 |
19.3 リアルタイムカーネルの機能 734 |
19.4 リアルタイムオペレーティングシステムの実装 736xvi 目次 |
19.5 リアルタイム CPU スケジューリング 741 |
19.6 VxWorks 5.x 747 |
19.7 まとめ 749 |
練習問題 750 |
参考文献 750 |
第20章 マルチメディアシステム 751 |
20.1 マルチメディアとは何か 751 |
20.2 圧縮 755 |
20.3 マルチメディアカーネルへの要求事項 756 |
20.4 CPU スケジューリング 759 |
20.5 ディスクスケジューリング 759 |
20.6 ネットワーク管理 761 |
20.7 事例:CineBlitz 765 |
20.8 まとめ 767 |
練習問題 768 |
参考文献 770 |
第Ⅷ部 事例研究 |
第21章 Linux システム 773 |
21.1 Linuxの歴史 773 |
21.2 設計原理 778 |
21.3 カーネルモジュール 781 |
21.4 プロセス管理 785 |
21.5 スケジューリング 789 |
21.6 メモリ管理 794 |
21.7 ファイルシステム 803 |
21.8 入力と出力 809 |
21.9 プロセス間通信 812 |
21.10 ネットワーク構造 813 |
21.11 セキュリティ 816 |
21.12 まとめ 818 |
練習問題 819 |
参考文献 820目次 xvii |
第22章 Windows XP 823 |
22.1 歴史 823 |
22.2 設計原理 825 |
22.3 システム構成要素 828 |
22.4 環境サブシステム 853 |
22.5 ファイルシステム 857 |
22.6 ネットワーキング 866 |
22.7 プログラマインタフェース 873 |
22.8 まとめ 881 |
練習問題 882 |
参考文献 883 |
第23章 オペレーティングシステムの発展に寄与したオペレーティングシステム 885 |
23.1 初期のシステム 885 |
23.2 Atlas 892 |
23.3 XDS-940 893 |
23.4 THE 893 |
23.5 RC 4000 894 |
23.6 CTSS 895 |
23.7 MULTICS 896 |
23.8 IBM OS/360 896 |
23.9 Mach 898 |
23.10 その他のシステム 899 |
練習問題 900 |
訳者あとがき 901 |
参考文献 903 |
引用した図など 931 |
索引 933 |