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