close
1.

図書

図書
W. リチャード・スティーヴンス著 ; 篠田陽一訳
出版情報: 東京 : ピアソン・エデュケーション, 1998.7-
所蔵情報: loading…
2.

図書

図書
W. リチャード・スティーヴンス著 ; 篠田陽一訳
出版情報: 東京 : トッパン, 1992.7  xii, 912p ; 24cm
所蔵情報: loading…
3.

図書

東工大
目次DB

図書
東工大
目次DB
今泉貴史 [ほか] 著 ; 西野哲朗, 片山卓也, 佐々政孝編
出版情報: 東京 : 共立出版, 1996.2  vi, 158p ; 21cm
所蔵情報: loading…
目次情報: 続きを見る
第1章 概説 1
   1.1 はじめに 1
   1.2 属性文法とは 2
   1.3 属性文法の定義 6
   1.4 非循環属性文法と絶対非循環属性文法 10
   練習問題の解答 14
   参考文献 14
第2章 属性評価器と文法のクラス 17
   2.1 はじめに 17
   2.2 純粋多重戦略属性文法 17
   2.3 単純多重戦略属性文法 21
   2.4 属性文法の静的複雑さ 24
   2.5 属性文法に関する決定問題の複雑さ 26
   2.6 属性文法の変換能力 27
   練習問題の解答 30
   参考文献 31
第3章 コンパイラの記述 33
   3.1 はじめに 33
   3.2 属性文法に基づくコンパイラ生成系と記述のサーベイ 34
   3.3 1パス型属性文法に基づく生成系Rieのあらまし 38
   3.4 属性文法によるPL/0コンパイラの記述 38
   3.4.1 PL/0言語 38
   3.4.2 PL/0処理系の構成 39
   3.4.3 Lexによる字句解析器の記述 42
   3.4.4 Rieによる構文・意味解析と中間コード生成 43
   3.5 属性文法によるコンパイラ記述の評価 56
   3.6 おわりに 58
   参考文献 70
第4章 ソフトウェア環境への応用 73
   4.1 はじめに 73
   4.2 属性文法に基づく構造エディタ生成系 73
   4.3 インクリメンタル属性評価器 78
   4.4 Synthesizer Generatorの利用例 80
   4.4.1 Synthesizer Generatorによるコンパイラ 80
   4.4.2 図形エディタ 82
   4.4.3 意味検査エディタ 84
   4.5 非同期多値変更 85
   4.6 変換属性文法 87
   4.7 高階属性文法 89
   4.8 時間属性超グラフ文法 90
   4.9 オブジェクト指向属性文法 92
   4.10 展望 97
   参考文献 97
第5章 新しい応用 101
   5.1 はしめに 101
   5.2 計算と変換としての属性評価 102
   5.3 イメージ処理:配列→4分木変換問題 106
   5.4 自然言語処理:文生成 111
   5.5 知識ベース:二項関係/推論知識の表現 119
   5.6 プログラム合成:関数型プログラミング 121
   5.7 仕様記述あるいはプログラムとしての属性文法 127
   5.8 おわりに 129
   参考文献 130
第6章 今後の研究と展望 135
   6.1 はじめに 135
   6.2 計算モデルとしての属性文法 136
   6.2.1 属性文法の基本的定式化 136
   6.2.2 属性文法の規定する計算=構造指向的関数計算 139
   6.3 構造指向的計算モデルとしての属性文法 141
   6.3.1 階層的構造データ処理の記述 141
   6.3.2 作業・実行過程の分解の記述 143
   6.3.3 木構造の可能性と限界 145
   6.4 関数的計算モデルとしての属性文法 146
   6.5 属性文法基本計算モデルの拡張 147
   6.5.1 基本計算モデルの問題点 147
   6.5.2 大域変数 147
   6.5.3 基本計算モデルの拡張 148
   6.6 属性評価 151
   6.6.1 属性評価一般 151
   6.6.2 漸増的属性評価 152
   6.6.3 属性値の格納 153
   6.7 おわりに 153
   参考文献 154
索引 157
第1章 概説 1
   1.1 はじめに 1
   1.2 属性文法とは 2
4.

図書

東工大
目次DB

図書
東工大
目次DB
W. リチャード・スティーヴンス著 ; 篠田陽一訳
出版情報: 東京 : ピアソン・エデュケーション, 2000.8  xv, 544p ; 24cm
シリーズ名: UNIXネットワークプログラミング / W. リチャード・スティーヴンス著 ; 篠田陽一訳 ; vol. 2
所蔵情報: loading…
目次情報: 続きを見る
まえがき xi
第1部 序説 1
第1章 序説 3
   1.1 導入 3
   1.2 プロセスとスレッドにおける情報の共有 4
   1.3 IPCオブジェクトの持続性 6
   1.4 名前空間 7
   1.5 IPCオブジェクトに対するfork、execおよびexitの影響 9
   1.6 エラー処理:ラッパー関数 9
   1.7 Unixにおける標準 13
   1.8 IPC例題一覧 15
   1.9 要約 16
第2章 PosixのIPC 19
   2.1 導入 19
   2.2 PosixのIPC名 20
   2.3 IPCチャネルの作成とオープン 22
   2.4 IPCのアクセス許可 25
   2.5 要約 26
第3章 SystemVのIPC 27
   3.1 導入 27
   3.2 key_tキーとfrok関数 28
   3.3 ipc_perm構造体 30
   3.4 IPCチャネルの作成とオープン 30
   3.5 IPCアクセス許可 31
   3.6 識別子の再利用 34
   3.7 ipcsとipcmプログラム 36
   3.8 カーネルが課す上限 36
   3.9 要約 37
第2部 メッセージパッシング 41
第4章 パイプとFIFO 43
   4.1 導入 43
   4.2 簡単なクライアントーサーバ例題 43
   4.3 パイプ 44
   4.4 全二重パイプ 50
   4.5 popen関数とpclose関数 52
   4.6 FIFO 53
   4.7 パイプとFIFOに関するそのほかの性質 58
   4.8 単一のサーバと複数のクライアント 60
   4.9 反復サーバと並行サーバ 66
   4.10 ストリームとメッセージ 67
   4.11 パイプとFIFOに関する量的な制限 72
   4.12 要約 73
第5章 Posixメッセージキュー 75
   5.1 導入 75
   5.2 mq_open、mq_closeおよびmq_unlink関数 76
   5.3 mq_getattr関数とmq_setattr関数 79
   5.4 mq_send関数とmq_receive関数 82
   5.5 メッセージキューに関する量的制限 86
   5.6 mq_notify関数 87
   5.7 Posix実時間シグナル 98
   5.8 メモリマップI/Oを用いらインプリメンテーション 105
   5.9 要約 123
第6章 System V メッセージキュー 127
   6.1 導入 127
   6.2 msgget関数 128
   6.3 msgsnd関数 129
   6.4 msgrcv関数 130
   6.5 msgctl関数 132
   6.6 簡単なプログラム 132
   6.7 クライアトーサーバ例題 138
   6.8 メッセージの多重化 139
   6.9 メッセージキューとselectおよびpoll関数 146
   6.10 メッセージキューに関する量的制限 148
   6.11 要約 150
第3部 同期 153
第7章 相互排除変数と条件変数 155
   7.1 導入 155
   7.2 相互排除変数:ロックとアンロック 155
   7.3 生産者-消費者問題 157
   7.4 ロックと待ち 161
   7.5 条件変数:待ちと通知 162
   7.6 条件変数:制限時間付きの待ちとプロードキャスト 166
   7.7 相互排除変数と条件変数の属性 167
   7.8 要約 170
第8章 リードライトロック 171
   8.1 導入 171
   8.2 リードライトロックの取得と解放 172
   8.3 リードライトロックの属性 173
   8.4 相互排除変数と条件変数を用いたインプリメンテーション 174
   8.5 スレッドの取り消し 180
   8.6 要約 186
第9章 レコードロック 187
   9.1 導入 187
   9.2 レコードロックとファイルロック 191
   9.3 Posixのfcntlレコードロック 192
   9.4 勧告ロック 196
   9.5 強制ロック 199
   9.6 読み手と書き手の優先度 201
   9.7 デーモンを1つだけ起動する方法 206
   9.8 ロックファイル 207
   9.9 NFSのロック 209
   9.10 要約 210
第10章 Posixセマフォ 213
   10.1 導入 213
   10.2 sem_opne、sem_closeおよびsem_unlink関数 219
   10.3 sem_wait関数とsem_trywait関数 220
   10.4 sem_post関数とsem_getvalue関数 221
   10.5 簡単なプログラム 221
   10.6 生産者-消費者問題 226
   10.7 ファイルロック 231
   10.8 sem_init関数とsem_destroy関数 232
   10.9 複数の生産者と単一の消費者 235
   10.10 複数の生産者と複数の消費者 237
   10.11 複数のバッファ 240
   10.12 プロセス間でのセマフォの共有 244
   10.13 セマフォに関する量的制限 246
   10.14 FIFOによるインプリメンテーション 249
   10.15 メモリマップI/Oによるインプリメンテーション 253
   10.16 System V セマフォによるインプリメンテーション 261
   10.17 要約 268
第11章 System V セマフォ 271
   11.1 導入 271
   11.2 semget関数 272
   11.3 semop関数 275
   11.4 semctl関数 277
   11.5 簡単なプログラム 278
   11.6 ファイルロック 283
   11.7 セマフォに関する上限 285
   11.8 要約 288
第4部 共有メモリ 291
第12章 共有メモリ序説 293
   12.1 導入 293
   12.2 mmap、munmapおよびmsync関数 297
   12.3 メモリマップファイル中のカウンタ増加操作 301
   12.4 4.4BSDの匿名メモリマッピング 304
   12.5 SVR4の/dev/zeroメモリマップ 306
   12.6 メモリマップされたオブジェクトの参照 306
   12.7 要約 311
第13章 Posix共有メモリ 313
   13.1 導入 313
   13.2 shm_open関数とshm_unlink関数 313
   13.3 ftruncate関数とfstat関数 315
   13.4 簡単なプログラム 316
   13.5 共有カウンタの増加操作 320
   13.6 サーバへのメッセージ送信 323
   13.7 要約 328
第14章 Sytem V 共有メモリ 331
   14.1 導入 331
   14.2 shmget関数 331
   14.3 shmat関数 332
   14.4 shmdt関数 332
   14.5 shmctl関数 333
   14.6 簡単なプログラム 333
   14.7 共有メモリに関する上限 336
   14.8 要約 338
第5部 リモート手続き呼び出し 339
第15章 Doors 341
   15.1 導入 341
   15.2 door_call関数 347
   15.3 door_create関数 348
   15.4 door_return関数 350
   15.5 door_cred関数 350
   15.6 door_info関数 351
   15.7 例題 352
   15.8 ディスクリプタパッシング 364
   15.9 door_server_create関数 369
   15.10 door_bind,door_unbindおよびdoor_revoke関数 374
   15.11 クライアントあるいはサーバの中途終了 375
   15.12 要約 382
第16章 Sun Rpc 385
   16.1 導入 385
   16.2 マルチスレッド 394
   16.3 サーバのバインディング 397
   16.4 サクセス権検査 401
   16.5 タイムアウトと再送 404
   16.6 呼び出しセマンティクス 409
   16.7 クライアントあるいはサーバの中途終了 410
   16.8 XDR:外部データ表現 412
   16.9 RPCパケット形式 429
   16.10 要約 433
あとがき 437
訳者あとがき 441
付録A 性能測定 443
   A.1 導入 443
   A.2 結果 444
   A.3 メッセージパッシングの帯域測定用プログラム 453
   A.4 メッセージパッシングの遅延測定用プログラム 466
   A.5 スレッド同期測定用プログラム 472
   A.6 プロセス同期測定用プログラム 483
付録B スレッド入門 487
   B.1 導入 487
   B.2 基本スレッド関数:生成と終了 488
付録C 雑多なソースコード 491
   C.1 unpipc.hヘッダ 491
   C.2 config.hヘッダ 495
   C.3 標準エラー処理関数 496
付録D 演習問題解答例 499
参考文献 519
索引 523
まえがき xi
第1部 序説 1
第1章 序説 3
5.

図書

東工大
目次DB

図書
東工大
目次DB
W. リチャード・スティーヴンス著 ; 篠田陽一訳
出版情報: 東京 : ピアソン・エデュケーション, 1999.7  xxii, 978p ; 24cm
シリーズ名: UNIXネットワークプログラミング / W. リチャード・スティーヴンス著 ; 篠田陽一訳 ; vol. 1
所蔵情報: loading…
目次情報: 続きを見る
まえがき xvii
第1部 序説とTCP/IP概説 1
   第1章 序説 3
   1.1 導入 3
   1.2 簡単なdaytimeクライアント 6
   1.3 プロトコル独立 10
   1.4 エラー処理:ラッパー関数 11
   1.5 簡単なdaytimeサーバ 13
   1.6 クライアントーサーバ例題のロードマップ 15
   1.7 OSIモデル 18
   1.8 BSDにおけるネットワークキングの歴史 19
   1.9 テスト用のネットワークとホスト 19
   1.10 Unixにおける標準 23
   1.11 64ビットアーキテクチャ 26
   1.12 要約 27
   第2章 トランスポート層:TCPとUDP 29
   2.1 導入 29
   2.2 TCP/IP概観 29
   2.3 UDP:ユーザデータグラムプロトコル 32
   2.4 TCP:トランスミッションコントロールプロトコル 32
   2.5 TCP:コネクションの確立と終了 34
   2.6 TIME_WAIT状態 40
   2.7 ポート番号 41
   2.8 TCPポート番号と並行サーバ 44
   2.9 バッファサイズの影響 46
   2.10 インターネットの標準サービス 50
   2.11 一般的なインターネットアプリケーションの使用プロトコル 51
   2.12 要約 52
第2部 基本ソケット操作 55
   第3章 ソケットAPI入門 57
   3.1 導入 57
   3.2 ソケットアドレス構造体 57
   3.3 値-結果引数 63
   3.4 バイト順序関数 65
   3.5 バイト列操作関数 68
   3.6 inet_aton関数、inet_addr関数およびinet_ntoa関数 70
   3.7 inet_pton関数とinet_ntop関数 71
   3.8 sock_ntop関数と関連関数 74
   3.9 readn関数、writen関数、およびreadline関数 76
   3.10 isfdtype関数 80
   3.11 要約 81
   第4章 基本TCPソケット 83
   4.1 導入 83
   4.2 socket関数 83
   4.3 connect関数 86
   4.4 bind関数 89
   4.5 listen関数 91
   4.6 accept関数 97
   4.7 fork関数とexec関数 99
   4.8 並行サーバ 102
   4.9 close関数 104
   4.10 getsockname関数とgetpeername関数 105
   4.11 要約 108
   第5章 TCPクライアントーサーバ例題 109
   5.1 導入 109
   5.2 TCPechoサーバ:main関数 110
   5.3 TCPechoサーバ:str_echo関数 111
   5.4 TCPechoクライアント:main関数 112
   5.5 TCPechoクライアント:str_cli関数 112
   5.6 正常な起動 113
   5.7 正常な終了 115
   5.8 Posixのシグナル処理 116
   5.9 SIGCHLDシグナルの処理 119
   5.10 wait関数とwaitpid関数 122
   5.11 accept完了前のコネクション確立中断 126
   5.12 サーバの終了 127
   5.13 SIGPIPEシグナル 129
   5.14 サーバホストのクラッシュ 130
   5.15 サーバホストのクラッシュと再起動 131
   5.16 サーバホストのシャットダウン 132
   5.17 TCP例題の要約 132
   5.18 データ形式 134
   5.19 要約 137
   第6章 I/Oの多重化:select関数とpoll関数 139
   6.1 導入 139
   6.2 I/Oモデル 140
   6.3 select関数 145
   6.4 str_cli関数(再訪) 151
   6.5 バッチ入力 153
   6.6 shutdown関数 155
   6.7 str_cli関数(再々訪) 157
   6.8 TCPechoサーバ(再訪) 158
   6.9 pselect関数 163
   6.10 poll関数 164
   6.11 TCPechoサーバ(再々訪) 167
   6.12 要約 168
   第7章 ソケットオプション 171
   7.1 導入 171
   7.2 getsockopt関数とsetsockopt関数 171
   7.3 オプションサポートの確認とデフォルト値の取得 172
   7.4 ソケットの状態 176
   7.5 一般的なソケットオプション 177
   7.6 IPv4ソケットオプション 191
   7.7 ICMPv6ソケットオプション 192
   7.8 IPv6ソケットオプション 193
   7.9 TCPソケットオプション 195
   7.10 fcntl関数 198
   7.11 要約 201
   第8章 基本UDPソケット 205
   8.1 導入 205
   8.2 recvfrom関数とsendto関数 205
   8.3 UDPechoサーバ:main関数 207
   8.4 UDPechoサーバ:dg_echo関数 207
   8.5 UDPechoクライアント:main関数 210
   8.6 UDPechoクライアント:dg_cli関数 210
   8.7 データグラムの消失 211
   8.8 受信した応答の検証 211
   8.9 サーバが存在しない場合 214
   8.10 UDP例題の要約 215
   8.11 UDPにおけるconnect関数 216
   8.12 dg_cli関数(再訪) 221
   8.13 UDPにおける流量制御の欠如 222
   8.14 UDPにおける出力インターフェースの特定 225
   8.15 selectを用いるTCPechoサーバとUDPechoサーバ 226
   8.16 要約 228
   第9章 基本的な名前-アドレス変換 231
   9.1 導入 231
   9.2 ドメイン名前システム 231
   9.3 gethostbyname関数 234
   9.4 RES_USE_INET6リゾルバオプション 238
   9.5 gethostbtname2関数とIPv6サポート 239
   9.6 gethostbyaddr関数 242
   9.7 uname関数 243
   9.8 gethostname関数 244
   9.9 getservbyname関数とgetservbyprot関数 244
   9.10 そのほかのネットワーク関連情報 248
   9.11 要約 249
第3部 高度なソケット操作 251
   第10章 IPv4IPv6の相互運用 253
   10.1 導入 253
   10.2 IPv4クライアントとIPv6サーバ 254
   10.3 IPv6クライアントとIPv4サーバ 257
   10.4 IPv6アドレスの検査マクロ 259
   10.5 IPV6_ADDRFORMソケットオプション 260
   10.6 ソースコードの互換性 262
   10.7 要約 262
   第11章 高度な名前-アドレス変換 265
   11.1 導入 265
   11.2 getaddrinfo関数 265
   11.3 gai_strerror関数 270
   11.4 freeaddrinfo関数 271
   11.5 getaddrinfo関数:IPv6とUnixドメイン 271
   11.6 getaddrinfo関数:例題 274
   11.7 host_serv関数 276
   11.8 tcp_connect関数 277
   11.9 tcp_listen関数 280
   11.10 udp_client関数 284
   11.11 udp_connect関数 287
   11.12 udp_server関数 288
   11.13 getnameinfo関数 289
   11.14 再入可能関数 291
   11.15 gethostbyname_r関数とgethostbyaddr_r関数 294
   11.16 getaddrinfo関数とgetnameinfo関数のインプリメンテーション 296
   11.17 要約 318
   第12章 デーモンプロセスとinetdスーパーサーバ 321
   12.1 導入 321
   12.2 syslogdデーモン 322
   12.3 syslog関数 323
   12.4 daemon_init関数 325
   12.5 inetdデーモン 329
   12.6 daemon_inetd関数 334
   12.7 要約 336
   第13章 高度な入出力関数 339
   13.1 導入 339
   13.2 ソケットのタイムアウト 339
   13.3 recv関数とsend関数 344
   13.4 readv関数とwritev関数 346
   13.5 recvmsg関数とsendmsg関数 347
   13.6 補助データ 352
   13.7 キューイングされているデータ量を知る 355
   13.8 ソケットと標準I/O 356
   13.9 T/TCP:トランザクション用TCP 359
   13.10 要約 360
   第14章 Unixドメインプロトコル 363
   14.1 導入 363
   14.2 Unixドメインソケットアドレス構造体 364
   14.3 socketpair関数 366
   14.4 ソケット関数群 367
   14.5 Unixドメインのストリームクライアントーサーバ 368
   14.6 Unixドメインのデータグラムクライアントーサーバ 368
   14.7 ディスクリプタパッシング 371
   14.8 送信者クレデンシャルの受信 379
   14.9 要約 382
   第15章 非ブロッキングI/O 385
   15.1 導入 385
   15.2 非ブロッキング読み出しと書き込み:str_cli関数(再訪) 386
   15.3 非ブロッキングconnect 396
   15.4 非ブロッキングvonnect:daytimeクライアント 397
   15.5 非ブロッキングconnect:Webクライアント 400
   15.6 非ブロッキングaccept 409
   15.7 要約 411
   第16章 ioctl操作 413
   16.1 導入 413
   16.2 icol関数 413
   16.3 ソケット操作 414
   16.4 ファイル操作 416
   16.5 インターフェース設定 416
   16.6 get_ifi_info関数 418
   16.7 インターフェース操作 425
   16.8 ARPキャッシュ操作 427
   16.9 経路テーブル操作 429
   16.10 要約 430
   第17章 経路制御ソケット 433
   17.1 導入 433
   17.2 データリンクソケットアドレス構造体 434
   17.3 経路ソケットの読み書き 434
   17.4 sysctl操作 442
   17.5 get_ifi_info関数 446
   17.6 インターフェース名関数とインターフェースインデックス関数 449
   17.7 要約 454
   第18章 ブロードキャスト 455
   18.1 導入 455
   18.2 ブロードキャストアドレス 456
   18.3ユニキャストとブロードキャスト 458
   18.4 ブロードキャストを用いるdg_cli関数 461
   18.5 競合状態 464
   18.6 要約 470
   第19章 マルチキャスト 473
   19.1 導入 473
   19.2 マルチキャストアドレス 473
   19.3 LAN上のマルチキャストとブロードキャスト 477
   19.4 WAN上のマルチキャスト 479
   19.5 マルチキャストソケットオプション 481
   19.6 mcast_join関数と関連関数 485
   19.7 マルチキャストを用いるdg_cli 489
   19.8 MBoneセッション告知の受信 490
   19.9 送信と受信 493
   19.10 SNTP:Simple Network Time Protocol 496
   19.11 SNTP(続き) 500
   19.12 要約 513
   第20章 UDPソケットの高度な操作 517
   20.1 導入 517
   20.2 フラグ、終点IPアドレスおよびインターフェースインデックスの受信 518
   20.3 データグラムの切り捨て 524
   20.4 UDP対TCP 525
   20.5 UDPアプリケーションへの信頼性の付加 527
   20.6 インターフェースアドレスのバインド 537
   20.7 並行UDPサーバ 542
   20.8 IPv6パケット情報 543
   20.9 要約 547
   第21章 帯域外データ 549
   21.1 導入 549
   21.2 TCP帯域外データ 549
   21.3 sockatmark関数 556
   21.4 TCP帯域外データの要約 562
   21.5 クライアントーサーバ・ハートビート関数 564
   21.6 要約 568
   第22章 シグナル駆動I/O 571
   22.1 導入 571
   22.2 ソケットにおけるシグナル駆動I/O 571
   22.3 SIGIOを用いるUDPのechoサーバ 574
   22.4 要約 580
   第23章 マルチスレッド 581
   23.1 導入 581
   23.2 基本スレッド関数:生成と終了 582
   23.3 マルチスレッドを用いるstr_cli関数 585
   23.4 マルチスレッドを用いるTCPのechoサーバ 586
   23.5 スレッド固有データ 591
   23.6 Webクライアントと同時コネクション(再訪) 598
   23.7 相互排除変数 602
   23.8 条件変数 606
   23.9 Webクライアントと同時コネクション(続き) 609
   23.10 要約 611
   第24章 IPオプション 613
   24.1 導入 613
   24.2 IPv4オプション 613
   24.3 IPv4始点経路指定オプション 615
   24.4 IPv6拡張ヘッダ 622
   24.5 IPv6ホップ毎オプションと終点オプション 623
   24.6 IPv6経路ヘッダ 627
   24.7 IPv6持続オプション 630
   24.8 要約 631
   第25章 rawソケット 633
   25.1 導入 633
   25.2 rawソケットの作成 634
   25.3 rawソケットからの出力 634
   25.4 rawソケットからの入力 636
   25.5 pingプログラム 639
   25.6 tracerouteプログラム 650
   25.7 ICMPメッセージデーモン 661
   25.8 要約 677
   第26章 データリンクアクセス 679
   26.1 導入 679
   26.2 BPF:BSDパケットフィルタ 680
   26.3 DLPI:データリンクプロバイダインターフェース 682
   26.4 Linex:SOCK_PACKET 683
   26.5 libpcap:パケット取り込みライブラリ 684
   26.6 UDPチェックサムフィールドの検査 684
   26.7 要約 700
   第27章 クライアントーサーバシステムの設計手法 701
   27.1 導入 701
   27.2 TCPクライアントの設計方法 703
   27.3 評価用TCPクライアント 704
   27.4 TCP反復サーバ 706
   27.5 TCP並行サーバ:1クライアント-1子プロセス 706
   27.6 TCP事前forkサーバ:accept周りのロックなし 710
   27.7 TCP事前forkサーバ:ファイルロックによるacceptの保護 716
   27.8 TCP事前forkサーバ:スレッドロックによるacceptの保護 719
   27.9 TCP事前forkサーバ:ディスクリプタパッシング 721
   27.10 TCP並行サーバ:1クライアント-1スレッド 726
   27.11 TCP事前スレッド生成サーバ:スレッドごとのaccept 727
   27.12 TCP事前スレッド生成サーバ:主スレッドによるaccept 729
   27.13 要約 731
第4部 XTI:X/Openトランスポートインターフェース 735
   第28章 XTI:TCPクライアント 737
   28.1 導入 737
   28.2 t_open関数 738
   28.3 t_error関数とt_strerror関数 742
   28.4 netbuf構造体とXTI構造体 743
   28.5 t_bind関数 744
   28.6 t_connect関数 746
   28.7 t_rcv関数とt_snd関数 747
   28.8 t_look関数 748
   28.9 t_sndrei関数とt_rcvrel関数 749
   28.10 t_snddis関数とt_rcvdis関数 751
   28.11 XTIを用いるTCPのdaytimeクライアント 752
   28.12 xti_rdwr関数 754
   28.13 要約 756
   第29章 XTI:名前-アドレス変換関数 757
   29.1 導入 757
   29.2 /etc/netconfigファイルとnetconfig関数 757
   29.3 NETPATH変数とnetpath関数 759
   29.4 netdir関数 760
   29.5 t_alloc関数とt_free関数 762
   29.6 t_getprotaddr関数 764
   29.7 xti_ntop関数 764
   29.8 tcp_connect関数 766
   29.9 要約 768
   第30章 XTI:TCPサーバ 771
   30.1 導入 771
   30.2 t_listen関数 773
   30.3 tcp_listen関数 774
   30.4 t_accept関数 776
   30.5 xti_accept関数 776
   30.6 簡単なdaytimeサーバ 778
   30.7 複数の待ちコネクション 780
   30.8 xti_accept関数(再訪) 782
   30.9 要約 790
   第31章 XTI:UDPクライアントとサーバ 791
   31.1 導入 791
   31.2 t_rcvudata関数とt_sndudata関数 791
   31.3 udp_client関数 792
   31.4 t_rcvuderr関数と非同期エラー 796
   31.5 udp_server関数 798
   31.6 データグラムの分割読み出し 800
   31.7 要約 802
   第32章 XTIオプション 803
   32.1 導入 803
   32.2 t_opthdr構造体 805
   32.3 XTIオプション 807
   32.4 t_optmgmt関数 810
   32.5 オプションサポートの有無確認とデフォルト値の取得 811
   32.6 XTIオプションの取得と設定 814
   32.7 要約 817
   第33章 ストリーム 319
   33.1 導入 319
   33.2 ストリームの概要 820
   33.3 getmsg関数とputmsg関数 824
   33.4 getpmsg関数とputpmsg関数 825
   33.5 ioctl関数 826
   33.6 TPI:トランスポートプロバイダインターフェース 826
   33.7 要約 836
   第34章 XTI:その他の関数 837
   34.1 導入 837
   34.2 非ブロッキングI/O 837
   34.3 t_rcvconnect関数 838
   34.4 t_getinfo関数 839
   34.5 t_getstate関数 839
   34.6 t_sync関数 840
   34.7 t_unbind関数 841
   34.8 t_rcvv関数とt_rcvvudata関数 342
   34.9 t_sndv関数とt_sndvudata関数 843
   34.10 t_rcvreldata関数とt_sndreldata関数 843
   34.11 シグナル駆動I/O 844
   34.12 帯域外データ 845
   34.13 ループバックトランスポートプロバイダ 849
   34.14 要約 850
   訳者あとがき 851
   付録A IPv4、IPv6、ICMIPv4、ICMIPv6 853
   A.1 導入 853
   A.2 IPv4ヘッダ 853
   A.3 IPv6ヘッダ 855
   A.4 IPv4アドレス 857
   A.5 IPv6アドレス 862
   A.6 ICMIPv4とICMIPv6:インターネット制御メッセージプロトコル 866
   付録B 仮想ネットワーク 869
   B.1 導入 869
   B.2 MBone 869
   B.3 6bone 871
   付録C デバッグ技法 873
   C.1 システムコール追跡 873
   C.2 標準インターネットサービス 878
   C.3 sockプログラム 878
   C.4 小さなテストプログラム 880
   C.5 tcpdumpプログラム 883
   C.6 netstatプログラム 883
   C.7 lsofプログラム 884
   付録D 雑多なソースコード 885
   D.1 unp.hヘッダ 885
   D.2 config.hヘッダ 888
   D.3 unpxti.hヘッダ 890
   D.4 標準エラー関数 891
   付録E 演習問題解答例 895
   参考文献 931
   索引 939
まえがき xvii
第1部 序説とTCP/IP概説 1
   第1章 序説 3
6.

図書

東工大
目次DB

図書
東工大
目次DB
J. ベーコン著 ; 藤田昭平, 篠田陽一, 今泉貴史訳
出版情報: 東京 : トッパン, 1996.3  xxxi, 592p ; 24cm
シリーズ名: アジソンウェスレイ・トッパン情報科学シリーズ ; 62
所蔵情報: loading…
目次情報: 続きを見る
訳者序文 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
訳者序文 v
まえがき ix
1 序論: 実例と要求 1
文献の複写および貸借の依頼を行う
 文献複写・貸借依頼