分散処理システム - tohoku university official ... · 5.1.2 分散処理...

45
5. 分散処理システム システムソフトウェア工学

Upload: others

Post on 27-Jan-2020

8 views

Category:

Documents


0 download

TRANSCRIPT

5. 分散処理システム

システムソフトウェア工学

5.1 集中処理から分散処理へ

5.1.1 集中処理

データ通信

コンピュータと通信の結合

それまでコンピュータがある場所まで行って利用していたのを、遠隔地から利用可能とした

5.1.1 集中処理

データ通信

データ通信システム

コンピュータと通信が睦びついた最初のシステム

下記の4つの基本要素から構成される

1. 端末

キーボードやプリンタなどの入出力機器、ワークステーション

2. 通信制御装置

データ伝送装置、変復調装置、分岐・集配装置、交換機

3. 通信回線

電気信号の伝送路

4. センタ

大型コンピュータやデータベース等

5.1.1 集中処理

5.1.1 集中処理

データ通信システムの分類

5.1.1 集中処理

集中処理のメリット

グロッシュ(Grosch)の法則

「コンピュータシステムの処理能力は、そのコストの2乗に比例する」 1970年代のコンピュータ市場の分析結果によるもの

大型化によるスケールメリットを示している

具体例: 2000万円のコンピュータシステムは、1000万円のシステム2式や、500

万円のシステム4式よりも処理能力が強力である

集中化による管理の容易性

ほとんどの機能がセンタに集中しているため、セキュリティ、障害、性能、保守、運用などのシステム管理を1か所で行うことができる

5.1.1 集中処理

集中処理の限界

ソフトウェア危機

5.1.1 集中処理

集中処理の限界

システム稼働率の低下

センタに何らかの障害が発生すると、システム全体がダウンし、ユーザに及ぼす影響が大きい

ハードウェアコストの低下

半導体技術の進歩に伴うハードウェアコストの低下により、小型で安価、かつ高い処理能力と豊富な機能を具備したパーソナルコンピュータなどの開発が可能にあり、前述のグロッシュの法則が成立しなくなった

社会活動の広域化

社会活動の広域化と活性化に伴い、データが量的に拡大し、質的にも向上したため、データ処理拠点の分散化や、目的に応じた柔軟な形態のシステム構成が、コストやセキュリティの点で有利となってきた

5.1.2 分散処理

分散処理は並列処理の一形態

具体的には、システムレベルの並列処理を分散処理と呼ぶ

並列処理

コンピュータの高速化の2大手法

1. 素子の高速化 ←こちらには限度がある

2. 並列化

並列化

大きな仕事(タスク)を複数の小さな仕事に分割し、分割した仕事を同時に処理し、大きな仕事を早く処理する方式

Illiac IV (1972年)

並列処理を目的とした最初の実用的なコンピュータ

5.1.2 分散処理

並列処理レベル

1. システムレベル

2. ソフトウェアレベル

3. ハードウェアレベル

5.1.2 分散処理

システムレベルの並列処理

5.1.2 分散処理

並列処理システムの分類

1. 密結合型

2. 疎結合型 ←分散処理システム

3. 1.と2.の中間

5.1.2 分散処理

並列処理システムにおける「処理」の分類

情報処理:情報の中身を変える処理

通信処理:並列処理を実現する機構(情報の中身は変えない)

5.1.2 分散処理

ソフトウェアレベルの並列処理

並列処理ソフトウェア

並列処理のための計算アルゴリズムとプログラムが主題

1. 並列プログラミング言語

2. コンパイラ

3. スケジューラ

並列プログラミング言語

タスクレベル:PL/I、ADA

文レベル:Occam

並列プログラミング言語では、並列性を明示的に表現するため、プログラマの負担が高く、専門家にのみ利用されていた

5.1.2 分散処理

コンパイラによる並列化

スーパーコンピュータにおいて使用される並列化コンパイラ

並列化(ベクトル演算)可能な部分を自動抽出

プログラマには負担がかからない

スケジューリング 実行時の順序制御や、プロセッサへの割り当て制御

静的制御:コンパイラによる最適化

動的制御:OSにより実行時制御

5.1.2 分散処理

ハードウェアレベルの並列処理

1. アーキテクチャレベル

2. ゲート、素子レベル

アーキテクチャレベル

機械語の起動形態

コントロール駆動

SISD方式

SIMD方式

VLIW方式

演算パイプライン方式

マルチプロセッサ方式

データ駆動

要求駆動

5.1.2 分散処理

分散処理の目的

1. 負荷分散

2. 処理分散

3. 機能分散

4. 危険分散

5. 管理分散

6. 拡張分散

5.1.2 分散処理

1. 負荷分散

仕事の多いコンピュータから仕事の少ないコンピュータへ仕事を移し、システム全体の処理効率を向上させること。

5.1.2 分散処理

2. 処理分散

データの発生場所や要求場所などで可能な処理を行うこと。

一次処理した結果のみを通信することで、送信するデータ量や通信コストを削減できる。

身近にあるコンピュータで可能な処理を行うため、応答時間の短縮や、ユーザの要求に合わせたサービスが可能となる。

5.1.2 分散処理

3. 機能分散

個別の機能を持つ専用のコンピュータを用意し、システム全体で共有することにより、効果的なシステムを実現すること。

例えば、計算専用のスーパーコンピュータや、データ検索専用のデータベースなど

5.1.2 分散処理

4. 危険分散

システムの一部がダウンしても、残った部分でシステムの稼働を継続可能とし、システム全体のダウンを防ぐこと。

システムの信頼性向上につながる

5.1.2 分散処理

5. 管理分散

異なる組織で個別的に、それぞれの目的や実情にあったサービスの提供や利用、システムの運用管理を行うこと。

6. 拡張分散

システムに対する要求や技術の進歩に応じて、要求が発生した箇所で個別に機能を追加したり、個別に技術の進歩を取り込み拡張可能とすること。

5.1.2 分散処理

5.1.2 分散処理

分散処理の特徴

分離(Separation)

システムの構成要素の、物理的、および論理的分離

分離により、処理の並列実行による信頼性の向上や、運用管理の分散などが可能となる

透明性(Transparency)

複数のコンピュータから構成されているシステムを、仮想的にあたかも一つのコンピュータシステムであるかのように見せること。仮想化技術。分散透明。

5.1.2 分散処理

5.1.2 分散処理

分散透明の分類

アクセスの透明性

並列アクセスの透明性

位置の透明性

重複の透明性

障害の透明性

システム変化の透明性

5.2 分散処理システムの形態

5.2 分散処理システムの形態

垂直分散型

大型コンピュータを中心に、中型コンピュータ、小型の端末を配置する形

中央の大型コンピュータの負荷と、端末からの通信量を減らす

中央の本社と、地方の営業所や支店などを持つ企業の情報システムなどが代表例

水平分散型

複数のほぼ同等のコンピュータが対等の関係で接続される

同一プロトコルに基づき、データベースやプログラムなどの資源の共有化

分散データベースなどが代表例

システム全体の制御やデータ更新の同期制御、デッドロック検出・回避など、多くの技術課題がある

5.3 基本技術

分散処理システム、特に疎結合型システムの構築に関する基本技術

1. プロセス間通信

2. 同時実行制御

3. コミットメント制御

4. デッドロックの検出と回避

5. メタデータの管理

6. ネットワークセキュリティ

5.3 基本技術

5.3.1 プロセス間通信

プロセス間通信の方式

疎結合システム:メッセージパッシング

密結合システム:共有メモリ

プロセス間通信の実現に必要な事項

同期に関する規定

論理的な通信路の設定を設定し、長いデータの分割、受領確認、順序制御

LAN等では、効率の点から論理的通信路を設定せず、放送(同報)形式で多宛先に送信する

転送の機能

転送方式:半2重、全2重

メッセージ表現形式の規定

5.3.2 同時実行制御

複数のプロセッサから共有資源に同時にアクセスがあった場合、適切に順序制御を行わないと矛盾が発生する場合がある

代表的な同時実行制御

2相ロック方式

1. 資源をロックしてからアクセスする

2. 既にロックされている資源をロックしない

3. 全てのロックを解除してから処理を終了する

4. 1つのトランザクションにおいて、一旦ロックを解除した場合、再度ロックをしない

タイムスタンプ方式

アクセス カウンタ

CGIプログラム1

CGIプログラム2

100 100

101 100

101

+1

+1

5.3.3 コミットメント制御

プロセッサや資源が分散している場合、

一つの仕事(トランザクション)を複数の部分的な仕事(サブトランザクション)に分割

それぞれを個別のプロセッサで並列的に処理

全てが正しく終了した場合に限り、元の仕事が正しく完了したとする

サブトランザクションが一つでも不成功ならば、全ての資源をサブトランザクションの処理前の状態に戻し、元のトランザクションを失敗として棄却する

上記の処理を円滑に進めるための方策をコミットメント制御と呼ぶ。分散データベース等で用いられる。

コミット:処理結果を確定すること

ロールバック:処理前の状態に戻すこと(処理を棄却すること)

5.3.4 デッドロックの検出と回避

デッドロック問題への対応策

1. デッドロックを検出し、解除する

2. プロセスと共有資源の状態を管理し、デッドロックを回避する

3. システム中に、デッドロックが生起しないような機構を繰り込む

現実的には、効率などの観点から1.が広く用いられる

デッドロック検出グラフを用いる方法

プロセスの処理結果待ち状態をグラフで表現し、閉路が存在する時、デッドロックが生起していることが判る

時間切れ(タイムアウト)による方法

資源要求が満たされず処理が停止している時間がある時間tを超えたとき、デッドロックが生起したと判定する

時間tの取り方が問題となる

5.3.4 デッドロックの検出と回避

5.3.5 メタデータの管理

分散しているプロセッサや資源を効果的に活用するには、それらの稼働状態や使用条件などを示す情報が必要になる。これをメタデータと呼ぶ。

通信網のトポロジー、障害や運用状況、プロセッサや資源に関する情報

メタデータは複数のノードに配置され、かつシステム提供側の制御や通信網の故障の生起により動的に変化するため、分散するメタデータを円滑に、正しく更新する必要がある

そのためには、同時実行制御が必要となる

5.3.6 ネットワークセキュリティ

ネットワークの安全性

秘匿性の保証

データがネットワークを通過する際に、第三者に漏えいしないようにすること

完全性の保証

データが受信者へ流れる途中で、不正に変更(改ざん)されないこと

5.3.6 ネットワークセキュリティ

5.3.6 ネットワークセキュリティ

シーザーの暗号

ローマ時代にジュリアス・シーザーが使った方法

平文Mに使われるアルファベットA,B,…,Zについて、それぞれk字だけ右へずらした字で置換して得られる平文M’を暗号文とする

k=5の場合

通常のアルファベット :ABCDEFGHIJKLMNOPQRSTUVWXYZ

暗号文のアルファベット:FGHIJKLMNOPQRSTUVWXYZABCDE

具体例: 平 文:CONGRATULATIONS

暗号文:HTSLWFYZWFYNTSX

5.3.6 ネットワークセキュリティ

暗号化アルゴリズム

対称暗号系

暗号化と復号に同じ鍵を使用

代表例:DES(Data Encryption Standard)

IBMが開発し、1977年に米国商務省標準局が標準と定めた

暗号化と復号に、56ビット長の同じ鍵を使用

非対称暗号系(公開鍵暗号系) 暗号化と復号に別々の鍵を使用

一方の鍵から他方を容易に得られない場合、公開鍵暗号という

一方を秘密鍵、他方を公開鍵と呼ぶ

秘密鍵は使用者が持ち、公開鍵は一般に公開される

代表例:RSA

1978年にMITのRonald Rivest, Adi Shamir, Len Aldemanが考案

大きな整数の素因数分解が容易でないというアイデアに基づく

5.3.6 ネットワークセキュリティ

5.4 システム技術

5.4.1 分散処理システムのOS

分散透明

ユーザが、散在しているプロセッサや情報資源について、そn一や特徴などの差異を区別できないこと

分散処理システムのOS

ネットワークOS

既存のOSにネットワーク機能を付加したもの

分散透明度が低い。

ユーザは利用するコンピュータやデータベースの一や特徴を知ったうえで使用可能となる。

分散OS

OS全体を新しく設計し、分散透明度が高いシステムの提供を指向するOS

分散透明度は高い

plan9等

5.4 システム技術

5.4.1 分散処理システムのOS

分散OSの類別

集中制御型

システムには1つのグローバルOSが存在し、その核の部分が散在しているコンピュータのOSを制御

分散制御型

システムに中心的な制御要素が存在せず、各コンピュータのOSは同質で対等

ネットワークOSと分散OSの比較

ネットワークOS:分散透明度は低いが、既存OSを利用するので低コストで実現できる

分散OS:分散透明度は高いが、新しくOS全体を設計するので、コストの面で難点がある

5.4.2 分散データベース

散在する多種多様のデータベースを統合し、分散透明、すなわち一つのデータベースとして見せる機構を提供するもの

分散データベース管理システム(分散DBMS)

分散データベースを構築するための技術

1. 分散データベースの構成法

既存DBのボトムアップ型構成や、新規DBのトップダウン的分割と配置

2. メタデータベース管理法

3. 質問(クエリ)処理法

ユーザからの質問を複数のデータベースへのクエリに分割する

4. トランザクション管理法

同時実行制御とコミットメント制御

5.4.2 分散データベース