• 検索結果がありません。

並行プログラミング 6

N/A
N/A
Protected

Academic year: 2021

シェア "並行プログラミング 6"

Copied!
19
0
0

読み込み中.... (全文を見る)

全文

(1)

並行プログラミング

CONCURRENT PROGRAMMING

6 ソフトウェア工学

Software Engineering

マルチコアのプロセッサやネットワーク上の分散システムの計算環境で 複数のプログラムが並行して動くことになるが,思わぬ動作で不具合が 生じることがある

(2)

1.並行システム

concurrent systems

プロセスとスレッド

並行システムの実行形態

割り込みとプロセスの切り替え 並行システムの利点

(3)

プロセスとスレッド

プロセス: 1つの逐次プログラムの実行単位

スレッド: 1つのプロセス内の処理をさらに細分化した

「軽量プロセス」とも呼ばれるプロセスの一種.

複数のスレッドはメモリ空間を共有する.

マルチプロセシング: 複数のプロセスを同時に実行すること

マルチスレッド: 複数のスレッドを同時に実行すること.

process

multi-processing

thread

multi-thread

(4)

並行システムの実行形態

並行

concurrent

並列

parallel

擬似並行

quasi-concurrent

分散

distributed

プロセスの切り替え

(インタリーブ)

物理的に結合して同時実行.

ハードウェア,ファームウェア

地理的に分散して同時実行.

情報ネットワーク

1CPUで見かけ上同時実行.

OS interleaving

(5)

割り込みとプロセスの切り替え

プロセス

別のプロセス

別のプロセス

別のプロセス

時間切れ

(タイマー割り込み)

マウスクリッ

(入出力割り込み)

処理

ータ切れ

(データ

到着待ち interruption

(6)

並行システムの利点

資源の有効利用

入出力のような外部操作の待ち時間に,ほかのプログラム を動かすことができる.

公平性

複数のユーザやプログラムが資源を平等に使う仕組みを作 ることができる.

利便性

必要なタスクを全部まとめたプログラムを書くよりも,各 タスクごとに書くほうが良い.

(7)

2.並行プログラミングの注意点

インタリーブ 相互排他

オブジェクトのロックとスレッドの同期 デッドロック

飢餓,ライブロック

(8)

インタリーブ

b

b b

b b

b a

a a

a

a

a a

a

プロセスA b

b

プロセスB

インタリーブは 予期できない 制御できない 再現性がない

実行経路の数が膨大 interleaving

(9)

相互排他

共有変数=5000 プロセスA

m = m + 1000; プロセス B

m = m - 1000;

MOV A,m (A=5000)

MOV B,m (B=5000) ADD A,1000 (A=6000)

SUB B,1000 (B=4000) MOV m,A (m=6000)

MOV m,B (m=4000)

1m の値をA レジスタにコ ピー

2A レジスタに1000を加算

5A レジスタの値をm にコピ

mの値を Bレジスタにコピー

3

Bレジスタから 1000を減算:4

B レジスタの値をm にコピー

6

共有変数は相互排他が必要

mutual exclusion

レジスター

A レジスター B

= 000 となってしま

(10)

オブジェクトのロックとスレッドの同期

lock

synchronization

預金口座 BankAccount

口座番号 number 預金残高 balance

ロック

オブジェクトのロックを取得 (acquire) した1つの スレッドだけが,オブジェクトの内部にアクセスで きる.

オブジェクトにアクセスしたい他のスレッドは,ロ ックが開放 (release) されるまで待つ.

スレッド

同期 スレッド オブジェクト

(11)

デッドロック

Scanner

acquire Scanner

acquire Printer Copy

1

2 Printer

プロセス A プロセス B

acquire Scanner acquire Printer

Copy

デッドロック

deadlock

(12)

飢餓,ライブロック

Resource

request

プロセス B

プロセス  C プロセス A

acquire request

acquire

request

プロセスCは決して 資源を獲得できない

request

acquire request

acquire

優先順位の低いプロセス

公平性がない

fairness livelock

starvation

(13)

3.

Java

マルチスレッドプログラミング

 

Thread

オブジェクト  

run()

メソッド

 スレッドの生成と実行

(14)

Thread

オブジェクト

Thread worker = new Thread();

worker.start(); スレッドを生成

スレッドを実行

Thread オブジェクトを new で生成して, start() る.

しかし,これではプログラマが実行させたい動作を書けない

(15)

run()

メソッド

public void run() {

………

}

実行させたい動作は run() に書く.

(16)

スレッドの生成と実行

(1/3)

public class PingPongThread extends Thread {

private String word;      //what word to print private int delay;      //how long to pause

public PingPongThread(String word, int delay) { this.word = word;

this.delay = delay;

}

コンストラクタ

Thread クラスを拡張したサブクラスを定義し,

そのサブクラスのインスタンスを生成するコンストラクタを定義

(17)

スレッドの生成と実行

(2/3)

public void run() { try {

for (;;) {

System.out.print(word + ” ”);

Thread.sleep(delay); //wait until next time }

} catch (InterruptedException e) {

return; //when error, end this thread }

}

run() メソッド

Thread クラスを拡張したサブクラスに run() を記

(18)

スレッドの生成と実行

(3/3)

public static void main(String[] args) {

PingPongThread t1 = new PingPongThread(”ping”, 33);

PingPongThread t2 = new PingPongThread (”PONG”,100);

t1.start();

t2.start();

} }

実行結果

ping PONG ping ping PONG ping ping ping PONG ping …

main() メソッド インスタンスを生成し, start() メソッドを呼び出すことで

PingPongThread クラスの run() メソッドが実行される

(19)

演習問題 6

スキャンとプリントの機能をもつ複合機3台 (M0,M1,M2)およびこれらを利用する3つのプ ログラム(P0,P1,P2)が図のようにリング上に結 合されている並行システムを考える.

複合機はロックを用いて相互排他が実現され ているので,1つの複合機に同時に複数のプロ グラムがアクセスすることはできない.

各プログラムはいずれも隣接した1つの複合 機から画像をスキャンし,もう1つの隣接した 複合機にそれをプリントするものである.

ただし,各プログラムが複合機にアクセスす る順序が異なり,P0,P1,P2はそれぞ

れ,M0,M1,M2から画像をスキャン し,M1,M2,M0にプリントする.

このシステムの問題点を説明し,その解決策

について考察しなさい. M1

M2 M0

P2

P0 P1

参照

関連したドキュメント

  BCI は脳から得られる情報を利用して,思考によりコ

混合液について同様の凝固試験を行った.もし患者血

以上のことから,心情の発現の機能を「創造的感性」による宗獅勺感情の表現であると

以上の結果について、キーワード全体の関連 を図に示したのが図8および図9である。図8

前章 / 節からの流れで、計算可能な関数のもつ性質を抽象的に捉えることから始めよう。話を 単純にするために、以下では次のような型のプログラム を考える。 は部分関数 (

3 当社は、当社に登録された会員 ID 及びパスワードとの同一性を確認した場合、会員に

口腔の持つ,種々の働き ( 機能)が障害された場 合,これらの働きがより健全に機能するよう手当

このように、このWの姿を捉えることを通して、「子どもが生き、自ら願いを形成し実現しよう