訳者序文 v |
まえがき ix |
1 序論: 実例と要求 1 |
1.1 本来の並行システム 2 |
1.1.1 リアルタイムシステム 2 |
1.1.2 データベース管理とトランザクション処理システム 7 |
1.1.3 オペレーティングシステムと分散オペレーティングシステム 9 |
1.2 潜在的に並行処理が適しているアプリケーション 13 |
1.2.1 データの分解、コードの複製 14 |
1.2.2 パイプライン処理 15 |
1.2.3 木構造のアルゴリズム 15 |
1.2.4 共有データ 16 |
1.2.5 種々のアプリケーション 16 |
1.2.6 並行処理が適しているアプリケーションを支援するための要求 17 |
1.3 並行システムのアーキテクチャ 17 |
1.3.1 システムの分類 17 |
1.3.2 従来の単一プロセッサシステム 19 |
1.3.3 共有メモリ型マルチプロセッサシステム 20 |
1.3.4 分散メモリ型マルチコンピュターシステム 20 |
1.3.5 データフロー(データ駆動)アーキテクチャ 21 |
1.3.6 関数型言語のためのアーキテクチャ 21 |
1.3.7 ネットワークベースのシステム 22 |
1.3.8 並行システムのためのハードウェア基盤の要約 25 |
1.4 並行システムの定義 26 |
1.5 並行システムをインプリメントするための要求 27 |
Ⅰ 背景と基本的概念 31 |
2 システムの構造と動的な実行 33 |
2.1 システムの構造 33 |
2.1.1 モジュールとインターフェース 33 |
2.1.2 抽象データ型 35 |
2.1.3 オブジェクト 37 |
2.1.4 実際のシステムに適用されたモデル 38 |
2.2 システムの静的な構造と動的な振る舞い 39 |
2.2.1 プロセスの概念 40 |
2.3 オペレーティングシステムの機能 42 |
2.4 オペレーティングシステムサービスの呼び出し 44 |
2.5 オペレーティングシステムの構造 45 |
2.6 まとめ 49 |
3 オペレーティングシステム;デバイスと通信管理 51 |
3.1 概要 51 |
3.2 デバイス管理 52 |
3.2.1 プロセッサとデバイスの速度 54 |
3.2.2 簡単なデバイスインターフェース 55 |
3.2.3 ポーリングと割り込み 55 |
3.2.4 割り込み処理:優先度 57 |
3.2.5 割り込みベクトル 58 |
3.2.6 DMAデバイス 59 |
3.2.7 メモリマップI/O 60 |
3.2.8 タイマ 61 |
3.3 例外 61 |
3.3.1 実行中のプログラムが引き起こす例外 62 |
3.3.2 システム(特権)モードとユーザ(非特権)モード 62 |
3.3.3 システムコールのメカニズム 63 |
3.3.4 例外機構についてのまとめ 64 |
3.3.5 ユーザレベルの例外処理 64 |
3.4 マルチプロセッサ 65 |
3.5 CISCとRISC 67 |
3.5.1 RISCにおける割り込み処理 68 |
3.6 ユーザレベルの入出力 70 |
3.6.1 バッファと同期 71 |
3.6.2 同期入出力と非同期入出力 72 |
3.7 通信管理 72 |
3.8 通信ネットワーク、インターフェースおよびドライバ 74 |
3.8.1 Ethernet 75 |
3.8.2 リング型LAN 76 |
3.8.3 ネットワークインターフェースの例 77 |
3.9 通信ソフトウェア 77 |
3.9.1 開放型システム相互接続のためのISO参照モデル 78 |
3.9.2 コネクション指向とコネクションレス通信 81 |
3.10 オペレーティングシステムにおける通信処理 82 |
3.11 まとめ 83 |
4.オペレーティングシステム:メモリ管理 87 |
4.1 メモリ管理 87 |
4.2 メモリの階層構造 88 |
4.3 プロセスのアドレス空間 89 |
4.4 動的再配置ハードウェア 91 |
4.5 保護ハードウェア 92 |
4.6 単一の連続するセグメントの再配置と保護 92 |
4.7 プロセスごとに複数のセグメントがある場合 92 |
4.8 ページング 96 |
4.8.1 逆ページテーブル 99 |
4.9 ページ化セグメント 100 |
4.9.1 ソフトウェアによるセグメントとハードウェアによるページ 100 |
4.9.2 コピーオンライトのページング・ハードウェア 102 |
4.10 メモリ断層におけるアドレス変換 103 |
4.11 メモリ管理ユニットの例:MIPS R2000/3000 103 |
4.12 オペレーティングシステムにおけるページフォールト処理の例 105 |
4.13 システム設計んびおけるメモリ管理ハードウェア 106 |
4.14 まとめ 108 |
5 オペレーティングシステム:ファイル管理 111 |
5.1 ファイル管理 111 |
5.2 ファイルシステム機能の概要 112 |
5.3 ファイルとディレクトリの構造 114 |
5.3.1 パス名とワーキングディレクトリ 115 |
5.3.2 ファイル共有:アクセス権とリンク 115 |
5.3.3 存在性制御 116 |
5.4 ファイルシステムのインターフェース 118 |
5.4.1 型マネージャとしてのディレクトリサービス 118 |
5.4.2 ファイルシステムのクライアントに対するディレクトリサービスのインターフェースについて 119 |
5.4.3 ファイルシステムのクライアントに対するファイルサービスのインターフェースについて 120 |
5.5 ファイルシステムのインプリメンテーション 120 |
5.5.1 ハードリンクとシンボリックリンク 123 |
5.6 ネットワークファイルサーバ 124 |
5.6.1 開放型と閉鎖型のストレージアーキテクチャ 125 |
5.6.2 ストレージサービスのインターフェース 126 |
5.6.3 機能の配置 128 |
5.6.4 ステートレスサーバ 129 |
5.6.5 ファイル識別子とストレージサービスにおける保護 130 |
5.7 仮想メモリとストレージの統合 131 |
5.8 仮想メモリにおけるオブジェクトのマップ 132 |
5.9 まとめ 133 |
6 オペレーションシステム:プロセスの管理 137 |
6.1 システムにおけるプロセスの使用 138 |
6.2 プロセスのプロセッサ 138 |
6.3 プロセスの状態 141 |
6.3.1 プロセスの状態の退避 142 |
6.3.2 コンテキスト切り替え 142 |
6.4 ハードウェアイベントとの同期とWAIT操作 143 |
6.4.1 競合状態 144 |
6.4.2 イベントオブジェクトとプロセスオブジェクト 144 |
6.5 プロセスのデータ構造 146 |
6.6 プロセスのスケジューリングー一般的なアプローチ 146 |
6.6.1 単一、バイナリおよび一般的なスケジューリング 147 |
6.6.2 プロセスの振る舞いと優先度 147 |
6.7 共有メモリ型マルチプロセッサにおけるスケジューリング 149 |
6.8 リアルタイム要求を満たすプロセススケジューリング 151 |
6.8.1 システムの構造とイベントへの応答 153 |
6.9 プロセス抽象とインプリメンテーション 154 |
6.10 オペレーティングシステムの構造とプロセスの配置 156 |
6.11 マルチスレッドプロセス入門 157 |
6.12 まとめ 158 |
7 言語システムによる並行実行支援 161 |
7.1 言語システムとオペレーティングシステムにおけるプロセスの状態 161 |
7.1.1 手続きとアクティべーションレコード 162 |
7.1.2 ヒープとガべージコレクション 165 |
7.2 逐次プログラムとシステムコールによる並行システム 165 |
7.2.1 共有データ 166 |
7.3 プログラミング言語における並行実行の進化 167 |
7.3.1 例題 167 |
7.3.2 遂次プログラミング言語による並行システムのプログラミング 169 |
7.3.3 コルーチン 171 |
7.3.4 プロセス 174 |
7.3.5 例題A,B,CおよびDにおける並行実行機構の比較 176 |
7.4 言語システムにおけるプロセスのインプリメンテーション 179 |
7.4.1 プロセスの仕様記述、生成および消滅 179 |
7.4.2 親プロセスによる制御 181 |
7.4.3 プログラミング言語における例外処理 182 |
7.4.4 言語レベルのプロセスに対するストレージ割り当て 182 |
7.5 オペレーティングシステムと言語システムにおけるプロセス:まとめ 182 |
7.6 第Ⅰ部の要約 184 |
Ⅱ 並行単一動作 187 |
8 システムの構造 189 |
8.1 アドレス空間を共有するプロセス 190 |
8.1.1 サブシステム内でのプロセス割り当て 191 |
8.2 分離アドレス空間または共有コードセグメントを有するプロセス 192 |
8.3 共有データセグメント 193 |
8.3.1 オペレーティングシステムの共有 193 |
8.3.2 オペレーティングシステムの共有に対する支援の例 193 |
8.4 2つのモデルにおけるプロセス割り当ての要約 195 |
8.5 プロセス間相互作用に対する要求 195 |
8.6 プロセス間相互作用の分類 200 |
8.7 プロセス間相互作用 201 |
8.7.1 プロセスがメモリ内のデータを共有する時の問題点 201 |
8.7.2 プロセスがメモリ内のデータを共有しない時の問題点 204 |
8.7.3 並行実行の粒度 204 |
8.8 並行単一動作の定義 205 |
9 プロセス同期のための低レベルメカニズム 209 |
9.1 イベントSIGNALおよびWAITと比較したプロセスの同期 210 |
9.2 共有データへ排他アクセスを行うための同期 214 |
9.2.1 ハードウェアによるテスト&セットまたは等価な方法 217 |
9.2.2 ハードウェアアーキテクチャの動向 219 |
9.2.3 ハードウェア支援がない並行実行の制御 221 |
9.3 セマフォ 221 |
9.4 セマフォの使用法 222 |
9.4.1 相互排除 222 |
9.4.2 協調プロセスの同期 224 |
9.4.3 資源の多重インスタンス 224 |
9.5 セマフォ操作のインプリメンテーション 225 |
9.5.1 セマフォのインプリメンテーションにおける並行実行 225 |
9.5.2 WAITキューノスケジューリング、優先度の逆転および継承 227 |
9.5.3 IPCインプリメンテーションの位置決め 228 |
9.6 システム設計におけるセマフォの例:THEシステム 230 |
9.7 生産者ー消費者、有限バッファ問題 232 |
9.7.1 バッファの使用 232 |
9.7.2 巡回または有限バッファの定義 233 |
9.7.3 単一生産者および単一消費者のためのアルゴリズム 233 |
9.7.4 1つ以上の生産者またま消費者のためのアルゴリズム 235 |
9.8 多数のリーダー、単一のライター問題 235 |
9.9 セマフォの限界 237 |
9.10 イベントカウントとシーケンサ 240 |
9.10.1 同期のためのイベントカウントの使用 240 |
9.10.2 相互排除を強化するためのシーケンサの使用 241 |
9.10.3 イベントカウントとシーケンサを有する生産者ー消費者、有限バッファ 241 |
9.10.4 イベントカウントとシーケンサのインプリメンテーション 243 |
9.10.5 イベントカウントとシーケンサの検討 243 |
9.11 まとめ 243 |
10 共有メモリのための言語プリミティブ 247 |
10.1 言語レベルでの危険領域 247 |
10.2 モニタ 248 |
10.2.1 単独の資源割り当て子 253 |
10.2.2 有限バッファ管理 254 |
10.2.3 多数のリーダー、単一のライター 254 |
10.2.4 モニタの検討 256 |
10.3 オブジェクトごとの相互排除 257 |
10.4 操作の粒度での同期 258 |
10.4.1 パス表現 258 |
10.4.2 能動的なオブジェクト 259 |
10.5 まとめ 261 |
11 プロセス間通信とシステムの構造 265 |
11.1 プロセス間通信の進化 265 |
11.2 手続き型システムの構造 267 |
11.3 システムの構造と共有メモリを用いないプロセス間通信 268 |
11.4 UNIXのプロセス 268 |
11.5 共有メモリ通信が適しているシステム 271 |
11.6 共有メモリ通信が適していないシステム 271 |
11.7 プロセス間通信の概観 271 |
11.8 システム構造の双対性 273 |
11.9 名前付け 274 |
11.10 まとめ 275 |
12 メッセージパッシング 277 |
12.1 はじめに 277 |
12.2 共通データのためのファイル使用 278 |
12.3 UNIXパイプ 279 |
12.3.1 UNIXによるパイプ使用:コマンド合成 280 |
12.3.2 パイプメカニズムの検討 281 |
12.4 非同期メッセージパッシング 281 |
12.5 基本的なメッセージパッシングの変形 283 |
12.5.1 不特定からの受信 283 |
12.5.2 リクエストおよびリプライプリミティブ 284 |
12.5.3 プロセスごとに多数のポート 285 |
12.5.4 入力ポート、出力ポート、チャンネル 286 |
12.5.5 グローバルポート 287 |
12.5.6 ブロードキャストとマルチキャスト 288 |
12.5.7 メッセージの転送 289 |
12.5.8 WAIT時間の規定 289 |
12.5.9 古いメッセージの放棄 290 |
12.6 非同期メッセージパッシングのインプリメンテーション 290 |
12.7 メッセージと割り込みの統合 292 |
12.8 同期メッセージパッシング 292 |
12.9 プログラミング言語におけるメッセージパッシング 293 |
12.9.1 同期通信のためのoccamチャンネル 294 |
12.9.2 Lindaの抽象化 295 |
12.10 マルチスレッドサーバ 297 |
12.11 まとめ 297 |
13 クラッシュ回復力と永続データ 301 |
13.1 クラッシュ 301 |
13.2 クラッシュのモデル 302 |
13.3 クラッシュ回復力または故障の透過性 303 |
13.4 べき等(繰り返し可能な)操作 303 |
13.5 アトミック操作 303 |
13.5.1 揮発的、永続的、および安定な格納 304 |
13.6 アトミック操作のインプリメンテーション 304 |
13.6.1 ロギング 305 |
13.6.2 シャドーイング 306 |
13.7 不揮発性メモリ 307 |
13.8 永続データでの単独の操作 308 |
13.9 データベースでの管理システムからオペレーティングシステムへの要求 309 |
13.10 まとめ 310 |
14 分散メッセージパッシング 313 |
14.1 分散ソフトウエアのためのクライアント・サーバ・モデルとオブジェクト指向モデル 313 |
14.2 分散システムの特徴 315 |
14.2.1 分散操作の呼び出しと独立な故障モード 315 |
14.2.2 分散システムにおける時間 316 |
14.2.3 唯一の論理的なグローバルタイムを達成するためのプロトコル 317 |
14.3 分散プロセス分散プロセス間通信 317 |
14.3.1 分散メッセージパッシング 318 |
14.4 同期通信と非同期通信 319 |
14.5 分散プログラミングのパラダイム 320 |
14.6 遠隔手続き呼び出し(RPC) 321 |
14.6.1 RPCシステム 321 |
14.6.2 ネットワークまたはサーバが輻輳する場合のRPCプロトコル 322 |
14.6.3 ノードのクラッシュおよび再起動を伴うRPCプロトコル 323 |
14.6.4 実例:CCLU RPC呼び出しの意味規則(セマンティックス) 324 |
14.6.5 RPCとISO参照モデル 324 |
14.7 RPCの言語への統合 325 |
14.7.1 分散の透過性 325 |
14.7.2 引数の整列 328 |
14.7.3 分散オブジェクト指向システム 330 |
14.7.4 型のチェックと一貫性のチェック 331 |
14.7.5 非同質な環境のためのデータ表現法 331 |
14.8 RPCの検討 332 |
14.9 分散システムにおける名前付け、位置決め、およびバインディング 333 |
14.9.1 プロセス間通信で用いられるオブジェクトの名前付け 333 |
14.9.2 名前を付けられたオブジェクトの位置決め 335 |
14.9.3 分散プログラミングへのANSAアプローチ 336 |
14.10 ネットワーク通信とオペレーティングシステムのプロセス間通信 337 |
14.11 第Ⅱ部の要約 338 |
Ⅲ 並行複合動作 341 |
15 分割可能な複合操作 343 |
15.1 複合操作 343 |
15.2 主メモリでの複合操作 344 |
15.3 主メモリと永続メモリに関係する複合操作 345 |
15.3.1 オペレーティングシステムからの例 345 |
15.3.2 データベースシステムからの例 346 |
15.4 複合操作の並行実行 346 |
15.4.1 並行実行の利点 347 |
15.5 潜在的な問題点 347 |
15.5.1 部分操作の制御されない割り込み 348 |
15.5.2 部分操作の影響の可視性 349 |
15.5.3 デッドロック 349 |
15.6 クラッシュ 350 |
15.7 まとめ 350 |
16 資源割り当てとデッドロック 353 |
16.1 動的な割り当ての要求 353 |
16.2 デッドロック 354 |
16.3 ライブロックと飢餓 355 |
16.4 デッドロックの原因 356 |
16.4.1 割り当てと回復制御方策によるデッドロックの防止 356 |
16.4.2 食事する哲学者の問題 358 |
16.5 オブジェクト割り当てグラフ 359 |
16.6 デッドロック検出のためのデータ構造とアルゴリズム 360 |
16.6.1 デッドロック検出アルゴリズム 360 |
16.6.2 例題 362 |
16.6.3 デッドロック検出に関する動作 363 |
16.7 デッドロックの回避 364 |
16.7.1 デッドロック回避の問題点 365 |
16.8 オブジェクト解放に関する情報ーマルチフェーズプロセス 365 |
16.9 まとめ 367 |
17 トランザクション 369 |
17.1 はじめに 369 |
17.2 トランザクション 370 |
17.2.1 コミットとアボート 370 |
17.2.2 トランザクションの記述法 373 |
17.3 遂次化可能性と一貫性 373 |
17.4 トランザクションのACID特性 374 |
17.5 トランザクションの特定順序の指示 375 |
17.6 トランザクション処理のシステムモデル 375 |
17.6.1 操作の非可換な(対立する)組み合わせ 376 |
17.6.2 遂次化可能性の条件 377 |
17.7 トランザクションの有向グラフで説明される遂次化可能性 378 |
17.8 履歴と遂次化グラフ 381 |
17.9 abortの処理: さらに分離性について 383 |
17.9.1 アボートのカスケード 383 |
17.9.2 状態を回復する能力 384 |
17.10 まとめ 387 |
18 並行実行の制御 389 |
18.1 はじめに 389 |
18.2 主メモリでの並行複合操作 390 |
18.2.1 単独のコンピュータの主メモリでのオブジェクト 390 |
18.2.2 分散システムにおける主メモリでのオブジェクト 391 |
18.2.3 並行プログラム開発への組織的なアプローチ 392 |
18.3 トランザクション管理システムの構造 392 |
18.4 ロッキングによる並行実行の制御 394 |
18.4.1 2フェーズロッキング 394 |
18.4.2 2フェーズロッキングの例 395 |
18.4.3 セマンティック・ロッキング 396 |
18.4.4 2フェーズロッキングにおけるデッドロック 397 |
18.5 タイムスタンプによる順序付け 397 |
18.5.1 アボートのカスケードと状態の回復 400 |
18.6 楽観的並行実行の制御(OCC) 400 |
18.7 まとめ 406 |
19 回復制御 411 |
19.1 回復制御の必要性 411 |
19.2 オブジェクトモデル、オブジェクトの状態と回復制御 412 |
19.3 並行実行、クラッシュおよびトランザクションの特性 413 |
19.4 クラッシュ回復力のあるTPSインプリメンテーションを支援するロギングとシャドーイング 413 |
19.5 回復ログの使用 414 |
19.5.1 ログレコードと回復制御での使用 415 |
19.5.2 ログの先行書き込み 415 |
19.5.3 チェックポイントとチェックポイント手続き 416 |
19.6 べき等なUNDO操作とREDO操作 416 |
19.7 故障でのトランザクションの状態 418 |
19.8 回復制御アルゴリズム 419 |
19.9 まとめ 420 |
20 分散トランザクション 423 |
20.1 分散システムの特徴 423 |
20.2 分散システムにおけるデータ複製の一貫性 424 |
20.3 分散システムのオブジェクトモデル 425 |
20.4 分散トランザクション処理 426 |
20.5 通信 426 |
20.6 並行実行の制御:2フェーズロッキング(2PL) 428 |
20.7 並行実行の制御:タイムスタンプによる順序付け(TSO) 429 |
20.8 楽観的な並行実行の制御(OCC) 429 |
20.9 分散システムにおけるコミットとアポート 430 |
20.9.1 2フェーズ・コミット・プロトコル 432 |
20.9.2 楽観的な並行実行制御のための2フェーズ確認 434 |
20.10 まとめ 436 |
20.11 第Ⅲ部の要約 437 |
Ⅳ 事例研究 441 |
21 UNIX 443 |
21.1 はじめに 443 |
21.2 UNIXの進化 444 |
21.3 UNIXの設計特徴の要約 444 |
21.4 カーネルモジュールの概要 445 |
21.5 ファイルシステムのインターフェース 447 |
21.5.1 グラフ構造とカレントディレクトリ 448 |
21.5.2 余談:読み出し可能なパスワードファイル 448 |
21.6 ファイルシステムのインプリメンテーション 448 |
21.6.1 ファイリングシステムのマウントとアンマウント 449 |
21.6.2 アクセス保護 450 |
21.6.3 ファイルシステムへのディスクブロックの割り当て 454 |
21.6.4 主メモリ上のファイルシステムのデータ構造 455 |
21.6.5 一貫性の問題 456 |
21.7 プロセスの実行環境 457 |
21.8 プロセスの生成と終了 459 |
21.8.1 ローディングと実行 459 |
21.8.2 プロセスの終了時における親と子の同期 459 |
21.8.3 システムの初期化段階におけるプロセスの生成 460 |
21.8.4 コマンドインタープリタによるプロセスの生成 461 |
21.9 IPC: プロセスのパイプライン 461 |
21.9.1 標準入出力のリダイレクション 461 |
21.9.2 パイプ 463 |
21.9.3 後期のシステムにおける名前付きパイプ 464 |
21.9.4 コマンド間のパイプ 465 |
21.10 IPC: シグナル、スリープとウェークアップ 465 |
21.10.1 シグナル 465 |
21.10.2 スリープとウエークアップ 466 |
21.10.3 IPC: まとめ 468 |
21.11 入出力のインプリメンテーションに関する話題 469 |
21.11.1 ディスクブロックキャッシュ 470 |
21.11.2 デバイスドライバ 471 |
21.11.3 低レベルの例外と割り込み処理 472 |
21.12 プロセスによるシステムの実行 472 |
21.13 プロセスのスケジューリングとスワッピング 474 |
21.13.1 プロセススケジューリング 474 |
21.13.2 スワッピングアルゴリズム 474 |
21.14 プロセスの状態と遷移 475 |
21.15 基本的なUNIX,Edition7の検討 477 |
21.16 UNIX BSD 4.3 478 |
21.16.1 メモリ管理 478 |
21.16.2 ソケット 479 |
21.17 UNIX System V.4 482 |
21.17.1 メッセージ 483 |
21.17.2 共有メモリ 483 |
21.17.3 ユーザレベルの共有メモリのためのセマフォ 484 |
21.17.4 System V IPC の検討 485 |
21.17.5 System V におけるネットワーキングのためのストリーム 485 |
21.18 POSIX標準 486 |
21.19 まとめ 487 |
22 マイクロカーネル 489 |
22.1 RIGからAccent,Machへの進化 490 |
22.1.1 Accent 492 |
22.2 Mach 494 |
22.2.1 Machの基本的な抽象 495 |
22.2.2 Mach IPC 496 |
22.2.3 メモリオブジェクトと主メモリでのオブジェクトの共有 497 |
22.2.4 タスクとスレッドの生成 498 |
22.2.5 Cスレッドパッケージ 498 |
22.2.6 リアルタイム拡張 499 |
22.3 CHORUS 499 |
22.3.1 CHORUS V3 の基本的抽象 500 |
22.3.2 CHORUS IPC 501 |
22.3.3 CHORUSのシステム構造 502 |
22.3.4 CHORUSのメモリ管理 503 |
22.4 Cambridge分散システム 504 |
22.4.1 Cambridge分散コンピューティングシステム(CDCS) 504 |
22.4.2 多重サービスATMネットワーク環境 507 |
22.5 まとめ 511 |
23 トランザクション処理モニタとシステム 513 |
23.1 トランザクション処理モニタ 514 |
23.1.1 プロセスとプロセス間通信(IPC)の使用 514 |
23.1.2 バッファされたトランザクションのリクエスト 518 |
23.1.3 システム負荷のモニタリングと性能 519 |
23.2 電子資金取引(EFT)システム入門 519 |
23.2.1 小切手による支払い 519 |
23.2.2 クレジットカードによる支払い 521 |
23.2.3 デビットカードによる支払い:POS トランザクション 521 |
23.2.4 セキュリティに関するいくつかの問題点 522 |
23.3 国際間の銀行支払い: SWIFT 522 |
23.4 PINによる認証 523 |
23.5 国際間の現金自動預け払い機(ATM)ネットワークサービス 526 |
23.5.1 銀行口座の保存法 526 |
23.5.2 ATMのローカルな制御 527 |
23.5.3 遠隔使用 528 |
23.6 トランザクション処理システムにおける負荷とトラフィック 529 |
23.7 まとめと動向 530 |
24 要約と総括 533 |
24.1 並行システムをインプリメントするための要求 533 |
24.2 第Ⅰ部 534 |
24.3 第Ⅱ部 536 |
24.4 第Ⅲ部 537 |
24.5 第Ⅳ部 538 |
24.6 ハードウェアの進歩とソフトウエアとの関係 539 |
24.7 設計のコンセンサスは可能か 540 |
24.8 今後の研究課題 541 |
24.9 結論 542 |
A 演習問題付き事例研究 545 |
A.1 共有メモリと分散メモリにおける N-プロセス相互排除 545 |
A.1.1 要求 545 |
A.1.2 Eisenberg and McGuire(19721)のN-プロセス相互排除プロトコル 546 |
A.1.3 N-プロセスのべーカリーアルゴリズム 551 |
A.1.4 分散N-プロセス相互排除 553 |
A.1.5 分散N-プロセス相互排除のインプリメント 555 |
A.2 ディスクブロックキャッシュの管理 557 |
A.2.1 ディスクの読み出しと書き込みおよびバッファとキャッシュに対する要求 557 |
A.2.2 割り当て済みバッファと空きバッファ 558 |
A.2.3 バッファの構造 559 |
A.2.4 バッファアクセスのためのアルゴリズムの侵略 560 |
参考文献 563 |
用語・略語集 575 |
著者索引 579 |
索引 581 |