情報学類 分散システム 2006年12月05日
筑波大学システム情報工学研究科
コンピュータサイエンス専攻, 電子・情報工学系
新城 靖
<yas@is.tsukuba.ac.jp>
このページは、次の URL にあります。
http://www.coins.tsukuba.ac.jp/~yas/coins/dsys-2006/2006-12-05
あるいは、次のページから手繰っていくこともできます。
http://www.coins.tsukuba.ac.jp/~yas/
http://www.cs.tsukuba.ac.jp/~yas/
- 仮想的な集中システム
- 透明性
- ネットワーク・オペレーティング・システムと分散オペレーティング・システム
- 単体のコンピュータ
- ネットワーク
- アプリケーション
- メインフレーム、大型計算機
-
- 高価
- TSS, batch で使う。マルチユーザ。
- モデムを使った遠隔「端末」。ネットワークはある意味不要。
- ミニコンピュータ
-
- ワークステーション
-
- グラフィックスを備えたもの。一度に1人で使うが、
複数人で交代で使うこともある。OSは、Unix (マルチユーザ)
- ネットワークを通じてファイルとアカウントの共有
- PC (Personal Computer)
-
- 安価
- (当初は)単一ユーザ
- (当初は)ネットワークの機能はない

図? メインフレームと端末
文字端末の役目
- キーボードで打たれた文字データの送信
- 受け取った文字データを画面に表示
「端末」は、メインフレーム(ホスト)と文字回線で接続されている。
電話回線等を使ったモデムによる接続。2400bps-9600bps。
IBMのものは、半二重。

図? 集中型システムのハードウェア
ハードウェアやオペレーティング・システムの働きで、次のようなことが(あ
る程度のレベルで簡単に)実現できる。
- 一貫性(consistency)のある記憶
- 同期
- 安全なプロセス間通信
- ユーザ認証
- クラッシュする時には、全部まとめて落ちる
分散システムでは、どれも難しい。
Process1()
{
write(file1,buf,bytes);
...
...
}
|
Process2()
{
...
...
read(file1,buf,bytes);
}
|
Process3()
{
...
...
read(file1,buf,bytes);
}
|
あるプロセスがwrite() した結果は、他のプロセスがread() したら即座に読め
る。
突き詰めると、単体のコンピュータでも、一貫性は難しい。
- もし、メモリに書いた内容をディスクに保存する前に電源が切れたら、、
- CPU が 2 個あって、キャッシュがあったら、、
高速化、低価格化(間欠接続(ダイアルアップ)から常時接続)
- LAN
- Ethernet, 10Mbps, 100Mbps, 1Gbps, 10Gbps
- 無線
- アクセスライン
- 基幹
交通機関 | ネットワーク |
徒歩 4km/h | 64kbps 電話回線 |
自動車 40km/h | 640kbps ADSL(低速) |
飛行機 800km/h | 10Mbps, ADSL(中速), 無線LAN |
人工衛星(第一宇宙速度) 28440km/h | 450Mbps, イーサネット(100Mbps-1Gbps) |
- 地理的な制約を超えた協調作業
- 資源の共有、場所の節約
- 地理的な制約からの解放
- どのコンピュータを使ってもファイルの内容が同じ、パスワードが同じ
- 学校でも会社でも自宅でも
- 偏在する物にコンピュータを埋め込む(ubiquitous)
- センサ・ネットワーク
分散システムとは
- ハードウェアは、複数の構成要素(コンピュータ、ノード)から構成される
- ネットワークで接続されている
- 使っている人には、1台の集中システムのように見える。(仮想的な集中システム)
最後の性質が大事である。
- 仮想的
- 事実上の。実と同じように使える。
実体が「ない」ということが主ではない。
- 安い−−マイクロプロセッサ
- 速い−−並列処理
- 本質的に分散−−WWW、電子メール
- がんばれば、信頼性を高くできる。システムの一部が故障しても、全体は動き続ける
- 段階的成長が可能。毎年買い足し。
- ソフトウェア技術が遅れている
- ネットワークが飽和することがある
- セキュリティの確保が難しい
- 透明性
- フォールト・トレランス
- スケーラビリティ
- できれば性能(並列処理)
分散は、「離れていても心は1つ」を目指す。
そのためには、集中より遅くなっても許されることがある。
並列処理は、単体のシステムより遅いことは許されない。
構成要素の数が増えた時にどうなるか。
10台で動くものが100台、1000台で動くか。
- プロセス間通信
- クライアント・サーバ・モデル
- RPC (Remote Procedure Call)
- 木構造
- スケーラビリティ
- 管理の手間の分散、設定個所を少なくする
- キャッシング
- 複製
- トレードオフ
- ディジタル署名
完全を目指そうとすると、急激にコストが高くなる。
実用になり、かつ、利益に見合うコストで実現できる範囲を探すことが大事になる。
負荷分散(load sharing, load balancing)の分散と分散システムの分散は、意味が違う。
分散システムの目標は、プロセスや資源が複数のコンピュータにまたがってい
る事実を、ユーザに対して隠蔽すること。
透明性 | 説明 |
アクセス(access) | データ表現の違い、資源をアクセスする方法を隠す。 |
位置(location) | 資源がどこにあるかを隠す。 |
移動(migration) | 資源が別の位置に移動したことを隠す |
再配置(relocation) | 資源が別の場所に利用中に移動させられたことを隠す。 |
複製(replication) | 資源が複製されていることを隠す。 |
並行性(concurrency) | 資源が複数の競合的なユーザにより共有されていることを隠す。 |
障害(failure) | 資源の障害と回復を隠す。 |
永続(persistence) | (ソフトウェア)資源がメモリにあるのかディスクにあるのかを隠す。 |
| |
- バイトオーダの違いを吸収する
- 資源の命名規則の違いを吸収する
利用者が資源の位置を意識しない。名前が大事。
資源が移動しても、ユーザは気がつかない。
実行中に移動できればさらによい。
スケーラビリティを高めるためにコピー(複製)を使う。
複数のコピーが存在することを隠したい。
複数人が同時にファイル・サーバを使うような状況でも、複数人と気づかせな
い。
フォールト・トレランスで、かつ、ユーザに気がつかせない。分散システムで
は、非常に難しい。反応が遅いことと落ちていることの区別がつかない。
分散でなくても、重要な話。
分散と永続は、関係が深い。
- ファイルを介して2つのプロセスがデータを交換すると2つのプロセスが通信したことになる。
- ある変数を他のプロセスに送信る代わりにファイルに保存して、もういちど読み出せば、永続性が得られる。
- 「RPCは、貧乏人の共有メモリ」。
- 解放型の分散システム
- 文法と意味を記述した標準(standard)に従ってサービスを提供するシステム。
- インタフェース記述言語(Interface Description Language, IDL)
- (手続き呼出しの形の)サービスの文法の記述。引数、結果、エラーなど。
意味は、自然言語。
- 相互運用性(interoperability)
- 異なる製造元から供給された部品やシステムが、標準を満たしており、相互に接続・交換可能である。
- 移植性(portability)
- システムA用に書かれたプログラムを、修正しないでシステムBで動作させる。
- 多くの利用者、資源を追加できる。
- 地理的な距離が離れても動作する。
- 多数の組織にまたがって運用される。
- 集中サービス。全ユーザに対して単一コンピュータによりサービスを提供する。銀行。
- 集中データ。単一の電話帳。
- 集中アルゴリズム。完全な情報を必要とする。
(集中)システムで問題を解くための指令の集まり。
必要な情報が全てメモりに揃っていることを仮定している。
メモリへのアクセスは、高速で均質(アクセス時間に差がない)。
要素間のメッセージの伝達の方法の集まり
- どのコンピュータもシステム全体の状態に関して完全な情報を持たない
- コンピュータは、ローカルな情報だけで決定する。
- 1台のコンピュータが故障しても、全体が破滅しない。単一障害箇所(single point of failure)を無くしたい。
- (大域的な時計が存在しない)
大域的な時計を使う分散アルゴリズムもある。
NTP (Network Time Protocol) を使うと、かなり合う。
- 電話で放送
- 電話で多数決
- 電話で時計を合わせる
- 戸籍、住民登録
- 筑波大学安否確認アルゴリズム
分散システムは、複数のコンピュータ(CPUとメモリ)を使う。
CPU とメモリの接続の仕方には、さまざまな種類がある。
- 共有メモリがあるかないか
- バス接続かスイッチ接続か
- 機種(CPUの種類)が同じか違うか

図? 共有メモリ型マルチプロセッサ(バス共有)
- Symmetric multiprocessor (SMP)とも言う。メモリへのアクセス時間がどの場所も対称的で均質。
- 分散システムには分類しないのが普通。
集中システムのプログラムがそのまま動作するので。
- キャッシュの親和性(affinity)まで考えると分散的な技術がいる。
メモリのコンシステンシまで考えると、本当はかなり難しい。
- マルチコアは、これに分類される。歴史的には古い。

図? 共有メモリ型マルチプロセッサ(クロスバースイッチ)
複数のCPUが別のメモリに同時にアクセスできる。
同じメモリならバスと同様に衝突する。

図? LANに接続されたPC
遠隔のメモリは、アクセスできない(no remote memory access)。
機種が違うこともある。
ネットワーク通信の機能を提供したオペレーティング・システム。
- システム・コール
- pipe <-> socket API, TCP/IPによるネットワーク通信機能
- ファイル名 <-> /../host1/usr/local/bin (スーパールート)
- コマンド
- r系コマンド
- sh <-> rsh (remote shell) 遠隔のコンピュータでのコマンドの実行
- login <-> rlogin (remote login) 遠隔のコンピュータへのログイン
- cp <-> rcp (remote copy) 遠隔のコンピュータとのファイルのコピー
- ls, less <-> WWW ブラウザ
- インターネット関連のアプリケーションが動作(Web, mail, etc.)
ネットワーク・オペレーティング・システムでは、利用者は、遠隔のコンピュー
タを使うためには、明示的にコンピュータを示す必要がある。
注意:r系コマンドは、ネットワーク上を生パスワードが流れて危険なので、使われない。
その代わりに、ssh, slogin, scp が使われる。
現在、広く使われているオペレーティング・システムで、
ネットワーク通信機能があるものは、これに分類される。
- Unix, Linux, BSD, MacOSX
- Microsoft Windows

図? ネットワークOSでのアプリケーションの実行
- コンピュータは、複数で、それぞれにネットワーク・オペレーティング・システムが動作する。
- 分散アプリケーションは、コンピュータの境界を意識する。
- 集中アプリケーションは、ネットワークを利用できない。
ネットワーク・オペレーティング・システムが発展したもの。
目標
- 利用者はどのコンピュータを使っているのかを意識しなくてもよくなる。
分散透明性、ネットワーク透明性(network transparency) が実現される。r系コマンドはなくなる。
集中型システムで開発されたプログラムを一切変更することなく、ネットワーク上の資源を利用することができるようになる。
-
- 負荷均衡(load balncing)。プログラムを走らせると、自動的に空いている計算機に送られ、実行される。
- フォールト・トレランス。障害が発生したとしても、自動的に復旧させたり、自動的に他の計算機に仕事を回す。
分散OSの種類
- Mach
- Amoeba
- Spring
- Chorus
- V-System
- LOCUS
実装は困難。Microsoft でも Sun Microsystems でも作れない。

図? 分散OSでのアプリケーションの実行
- コンピュータは、複数で、オペレーティング・システムは1つ。
- (集中)アプリケーションからは、コンピュータの境界が見えない。
- 集中アプリケーションがそのまま分散ハードウェア環境で利用できる。
- 分散アプリケーションを分散オペレーティング・システムで走せると、やや矛盾がある。
- ファイル・サービス NFS (Network File System), SMB/CIFS
- 遠隔にあるファイルとローカル・ファイルを同じように扱える。
- 名前サービス NIS (Network Information System), LDAP (Lightweight Directory Access Protocol)
- パスワード・ファイルを複数のコンピュータで共有できる。
一カ所で変更すると全てのコンピュータで変更される。
オペレーティング・システムとアプリケーションの間に入り、
(主に通信に関する)サービスを提供する。
下位層のオペレーティング・システムとは独立している。
種類
- RPC, SunRPC, OSF RPC, Microsoft COM, DCOM
- ORB, CORBA, HORB, Java RMI
- XML Web Services
- 相互接続サービス Jini, JavaSpaces, UPnP
- 分散プログラミング言語
- 移動エージェント

図? ミドルウェアを用いた分散アプリケーションの実行
- コンピュータは、複数で、それぞれにネットワーク・オペレーティング・システムが動作する。
- ミドルウェアが、コンピュータの境界を隠す。
- 分散アプリケーションは、コンピュータの境界を意識しなくてもよい。
集中システム用のプログラムと同じように書いたプログラムが、自動的に分散
アプリケーションになる。言語処理系が、ネットワークの存在や通信をさまざ
まな度合いで隠す。
どこまで隠せば分散型プログラミング言語と呼んでもよいか?
「socket があれば、分散型プログラミング言語」とは、定義したくない。
永続言語との比較。
- Emerald, Argus
- 分散○○
- 分散Java, Dejay, Voyager (Javaのクラス・ライブラリ)
Last updated: 2006/12/13 14:25:21
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>