170 likes | 302 Views
オペレーティングシステム J/K. 2004 年 11 月 8 日 酒居敬一 ( sakai.keiichi@kochi-tech.ac.jp ) http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/OS2004/. ネットワークと分散システム. ネットワークを介した通信機能 Endpoint 通信の確立 通信路 ソケット 同期 / 非同期入力について 分散システム. Endpoint( 端点 ). 変調装置や復調装置を含む場合もある 例:電話機(電話番号、電話線、音声) 住宅(郵便届け先、郵便局、小包).
E N D
オペレーティングシステムJ/K 2004年11月8日 酒居敬一(sakai.keiichi@kochi-tech.ac.jp) http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/OS2004/
ネットワークと分散システム • ネットワークを介した通信機能 • Endpoint • 通信の確立 • 通信路 • ソケット • 同期/非同期入力について • 分散システム
Endpoint(端点) • 変調装置や復調装置を含む場合もある • 例:電話機(電話番号、電話線、音声) 住宅(郵便届け先、郵便局、小包) 端点 端点 通信路
通信の確立 • 回線交換網 • 例:電話網 • 受話器を上げ、電話機から交換機までの通信を確立 • 相手の電話番号を交換機に伝える • 交換機は相手の電話機までの通信を確立 • 相手が電話に出ると、人と人との通信が確立する • パケット交換網 • 例:郵便網 • 内容物を梱包する • 郵便局(最寄の集配局)に集められる • 局では相手の住所をもとに相手局まで運ぶ • 局から相手の住所地まで運ぶ • 相手が受け取り、開梱する
通信路 • 回線交換網 • 例:電話網 • 人と電話機は空気中を伝わる音声 • 電話機と交換機は電話線を伝わる電気信号 • 交換機から相手の交換機まで電磁波(光やマイクロウェーブ) • パケット交換網 • 例:郵便網 • 自宅からポストや最寄局までは人が徒歩で運ぶかもしれない • 局間はトラックや鉄道のような長距離大量輸送手段 • 相手の局からはバイクや軽トラで運ぶ
通信路の抽象化― ソケット ― ソケットは通信路のendpoint(端点)のこと。 OSは次のような通信を実現してくれる。 • 一対一通信(ストリーム型) • 実世界の例では電話 • プロセス間通信で使用するパイプ • 回線交換網における通信 • 多対多通信(データグラム型) • 実世界の例では郵便とか宅配便 • パケット交換網における通信
相手を特定するしくみが必要 • 相手と通信できなければいけない • 相手と同じプロトコルを話さないといけない • それらの情報を付加して端点を作成し使用 • 名前つきソケットはファイルシステム上の名前 • ポート番号とTCP or UDPの選択とIPアドレス • ソケットとそれら情報をくっつけること→バインド • ソケットへのバインドはTCP/IPに限らない
アプリケーション TCP UDP IP 通信デバイス TCP/IPプロトコルスタックとの関係 ソケットはここで切り離してくれる。 例ではTCP/IPとバインドしている。 • TCP(伝送制御プロトコル) • ポート番号により接続プロトコルを限定 • エラーの無い1対1通信を実現 • UDP • ポート番号により接続プロトコルを限定 • ポート番号がある以外はIPとほぼ同じ • IP • IPアドレスにパケットを送るだけ • デバイスが取り扱えるパケット長に分断したり、再構成する
通信路 • ソケットは端点を抽象化して利用者に見せる • 一方で、通信路に関するところは隠蔽 • 実はOSの中で別に実装 • 通信経路の指定 • 動的ルーティング(RIPやOSPF) • 静的ルーティング(経路表) • ネットワークデバイスは通信経路により決定 • EthernetとCSMA/CD • シリアルポートとPPP
アプリケーション TCP UDP IP 通信デバイス ネットワークインターフェース • 経路表ではインターフェースとネットワークを対応づけている。 • ネットワークインターフェースはIPパケットを送受信するしくみを提供する。 • IP層ではパケット通信しか定義されてない… ネットワークインターフェースはここで定義 デバイスを抽象化している
ネットワークデバイス • Ethernetデバイス • CSMA/CDによりパケットを交換するものすべて • いわゆるイーサカードに対応 • PPPデバイス • OS内部の仮想的なデバイス • 実際にはEthernetやシリアルポートをバインド [sakai@sky sakai]$ netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface faw033.nw.wakwa * 255.255.255.255 UH 0 0 0 ppp0 192.168.192.0 * 255.255.255.0 U 0 0 0 eth0 127.0.0.0 * 255.0.0.0 U 0 0 0 lo default faw033.nw.wakwa 0.0.0.0 UG 0 0 0 ppp0 [sakai@sky sakai]$
プロセスの待ち状態について • ネットワークデバイスや入出力機器に起因 • 通常動作では要求を満たすまで待たされる • 複数のデバイスの動作完了を待てるだろうか? • 複数のデバイスへの要求はいつだすのだろうか? • 例: • パケットの到着を待ちながら • パケットの送出をしながら • キー入力を待ちたい、というとき
同期/非同期入出力 • 同期入出力(Blocking I/O) • 入出力処理の際、処理の完了まで待たされる • 待っている間は何もできない • 複数の入出力処理に関して待つしくみがある • UNIXではpollシステムコール • 非同期入出力(Non-Blocking I/O) • 入出力処理の際、処理の完了まで待たない • 定期的にポーリングする場合などに使われる
分散システムとは? • 通信リンクにより接続されたプロセスの集合 • 分散システムを実現するしくみはOSが持ってるが、 • コンピュータが単につながっているもの、ではない… • 人間の世界は分散システムである • 個人→プロセス • 言語→プロトコル • 通信リンク→空気中をつたわる音など
なぜ分散システムをとりあげるか? • 分散システムのためのしくみはすでにある • プロセス • OSにより抽象化されている • JAVAを使えば同じプログラムが動く • 通信リンク • OSによりソケットとして抽象化されている • JAVAで実装したAPIがいろいろある • 世の中がそうであるように自然である • ただし、難しい ← これが問題か…
なぜ難しいか? • 逐次アルゴリズムの呪縛 • 分散アルゴリズムは難しいのだろうか? • プロセスどおし同期していないこと • Hetero-genius 構成(異機種構成)であること • プロセスは対等であること • プロセスは増えたり減ったりする • プロセスは嘘つくかもしれないこと • 通信リンクは故障することがある • 通信には時間がかかる
分散OS • 分散システムを作るしくみは普通のOSにもある • ただし原始的である • 分散OSに必要なこと • 異機種間通信を実現するしくみ • データ形式を合わせるしくみ • 遠隔手続き呼び出しのしくみ • 分散した資源を割当てるしくみ • 分散した資源を置き換えるしくみ • 例: • 分散共有メモリ • タスクのマイグレーション(移送)