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