オペレーティングシステム

オペレーティングシステム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に必要なこと
異機種間通信を実現するしくみ
データ形式を合わせるしくみ
遠隔手続き呼び出しのしくみ
分散した資源を割当てるしくみ
分散した資源を置き換えるしくみ
例:
 分散共有メモリ
 タスクのマイグレーション(移送)