Top Banner
1 オオオオオオオオオオオオ #4 オオオオオ オオオオオオオオオオオオオ オオオオオオオオオオオオ オオ オオ オオオオオオオオオ オオオオオオオオオオオオオ オオオオオオオ ()、 オオオオ オオオオオオオオオオオオ 、。 オオオオオオオ 2007 オオオオオオオオオオオオオオオ オオオオオオオオオオ オオオオオオオオオオ 、、 オオオ ([email protected]) オオオオオオオオオオ オオオオオオオオオオオオオ オオオオオオオオオ
33

この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工�...

Jan 03, 2016

Download

Documents

zeph-marsh

この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。 パワーポイント 2007 で最終版として保存しているため、変更はできませんが、授業でお使いなる場合は松尾 ([email protected]) まで 連絡いただければ、編集可能なバージョンをお渡しする事も可能です。. オペレーティングシステム #4 並行プロセス:排他制御基礎. 4.1 プロセスの 競合,協調,干渉. プロセスの同時実行. 複数プロセスが同時に動作する際に ... プロセス協調 - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

1

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

この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

パワーポイント 2007 で最終版として保存しているため、変更はできませんが、授業でお使いなる場合は松尾([email protected]) まで連絡いただければ、編集可能なバージョンをお渡しする事も可能です。

Page 2: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

2

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

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

#4 並行プロセス:排他制御基礎

Page 3: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

3

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

4.1プロセスの

競合,協調,干渉

Page 4: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

4

オペレーティングシステム#4 プロセスの同時実行

■ 複数プロセスが同時に動作する際に ...

■ プロセス協調 仕事の分担や通信など,複数プロセスが助け合う

■ プロセス競合 複数プロセスで有限リソースを取り合う 調停し,各プロセスに適切にリソース割当

■ プロセス干渉 他プロセスの影響で異常が発生すること 原因はプログラムのバグ

Page 5: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

5

オペレーティングシステム#4 プロセス協調

■ 例)プロセス間通信 何も通信のための仕組みがない場合 ...

➔ 送信側と受信側でタイミングを合わせる必要➔ 受信側は,常にメッセージが来ないかを

チェックしていなければならない 通信バッファ

A B

バッファ

msg

Page 6: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

6

オペレーティングシステム#4 プロセス協調

■ 問題 読み出す前に上書き ... とりこぼし

格納する前に再読込 ... だぶって受け取り

A Bバッファ

msgmsg

A Bバッファ

msg msg

Page 7: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

7

オペレーティングシステム#4 フラグによる管理

■ 受信すべきメッセージがバッファ内に存在するか否かをフラグで判断

フラグが立っている間,送信側は新たに送信を行わない → 上書き回避

フラグが降りている間,受信側は新たに順を行わない → 再受信回避

A B

バッファ

msg msg

Page 8: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

8

オペレーティングシステム#4 プロセス競合

■ 例)磁気テープの利用

LOAD NUM, RDEC R, 1STORE NUM, R

:: テープ使用:

LOAD NUM, RINC R, 1STORE NUM, R

プログラム例

テープを確保

テープを解放

NUM: 空きテープ数

Page 9: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

9

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

■ プログラムの意味 テープの確保

➔ 変数 NUM の値をレジスタにロード

➔ レジスタから1減算➔ レジスタの値を変数 NUM に

ストア(格納) テープの解放

➔ 変数 NUM の値をレジスタにロード

➔ レジスタから 1 減算➔ レジスタの値を変数 NUM に

ストア

LOAD NUM, RDEC R, 1STORE NUM, R

:: テープ使用:

LOAD NUM, RINC R, 1STORE NUM, R

Page 10: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

10

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

■ プロセス A とプロセス B がテープにアクセス プロセス B が確保中 プロセス A による確保とプロセス B による解放が発生 結果,テープの空き数は変化しないはず

A B

空きテープ

Page 11: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

11

オペレーティングシステム#4 ケース 1

• LOAD NUM, R R=1

• DEC R, 1 R=0

• STORE NUM, R R=0• LOAD NUM, R R=0

• INC R, 1 R=1

• STORE NUM, R R=1

NUM

10

テープの空きは

1 で OK

Page 12: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

12

オペレーティングシステム#4 ケース 2

• LOAD NUM, R R=1

• DEC R, 1 R=0

• STORE NUM, R R=0

• LOAD NUM, R R=1

• INC R, 1 R=2

• STORE NUM, R R=2

NUM

102

テープの空きは1 しかないはず

( 実際より多いと勘違い )

Page 13: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

13

オペレーティングシステム#4 ケース 3

• LOAD NUM, R R=1

• DEC R, 1 R=0

• STORE NUM, R R=0

• LOAD NUM, R R=1

• INC R, 1 R=2

• STORE NUM, R R=2

NUM

102

テープの空きは1 あるはず

( 実際より少ないと勘違い )

Page 14: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

14

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

■ 原因 変数 NUM から値を読んで,変数 NUM に値を書くま

での間に,他のプロセスが変数 NUM を読んでしまう

➔ 他のプロセスからみて,変数 NUM は変化していない➔ 実際は変化させるための手続きが始まっている

■ 対処法 LOAD から STORE までの一連の処理を不可分に クリティカルセクション:

このような分割してはいけない一連の処理 排他制御( mutual exclusion ):

クリティカルセクションなどを他のプロセスと排他的に実行するための制御

Page 15: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

15

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

4.2排他制御

Page 16: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

16

オペレーティングシステム#4 排他制御

■ プロセスがクリティカルセクションを他のプロセスと排他的に実行できるように

■ 重要な性質 即時性 デッドロック防止 公平性

Page 17: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

17

オペレーティングシステム#4 排他制御の性質

■ 即時性 クリティカルセクションの実行に競合するプロセスがほかにない場合,プロセスはクリティカルセクションの実行を即座に許可される。

■ デッドロック防止 競合するプロセスがある場合でも,許可されるまで永久に待たされてはいけない。

■ 公平性 どのプロセスも,他のプロセスがクリティカルセク

ションを実行することを妨げられない。

Page 18: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

18

オペレーティングシステム#4 クリティカルセクション

■エントリーシーケンス クリティカルセクションに入る権利を獲得する処理

■ イグジットシーケンス クリティカルセクションから出るための処理

■ 例)フラグによる制御

Page 19: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

19

オペレーティングシステム#4 例)フラグによる制御

■ 新幹線のトイレと同じ クリティカルセクション

(トイレ)に入ろうとするプロセス(乗客)は,フラグ(インジケータ)を確認し,入れるかどうかを決定

入ると同時にフラグを下げる(インジケータが点く)

空いてる空いてない ...

一見うまくいく

空いた !

空いてない ...

Page 20: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

20

オペレーティングシステム#4 例)フラグによる制御

■ うまくいかない場合 フラグを見て確認 入る

という 2つの処理は不可分空いてる空いてる

この方式では排他制御を実現できない

Page 21: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

21

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

4.3Dekker のアルゴリズム

Page 22: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

22

オペレーティングシステム#4 Dekker のアルゴリズム

■ 2 プロセスの排他制御を行うことを可能とする

■ Interest プロセス A,B がクリティカルセクションに興味が

あるか否かを示す

■ Priority プロセス A,B がクリティカルセクションに同時に興味を持った場合,どちらを優先するかを決定する

Page 23: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

23

オペレーティングシステム#4 Dekker のアルゴリズム

Interest[A] = TRUE;while( Interest[B] ){ if( Priority == B ){ Interest[A] = FALSE; while( Priority == B ){}; Interest[A] = TRUE; }}

:クリティカルセクション

Priority = B;Interest[A] = FALSE;

Interest[B] = TRUE;while( Interest[A] ){ if( Priority == A ){ Interest[B] = FALSE; while( Priority == A ){}; Interest[B] = TRUE; }}

:クリティカルセクション

Priority = A;Interest[B] = FALSE;

Page 24: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

24

オペレーティングシステム#4 Dekker のアルゴリズム

■ Interest まずクリティカルセクショ

ンに入る前に, クリティカルセクションに入りたい旨を宣言

競合者がいなければ入れる

競合者なし

Interest状態空いてる

Page 25: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

25

オペレーティングシステム#4 Dekker のアルゴリズム

■ Priority 競合者がいた場合 Priority が示す優先度で

どちらが入るか決定 自分に優先度が回ってくる

まで Interest状態を解除

競合者あり

Interest状態空いてる空いてる

競合者あり

さっき私だったので

どうぞ

Page 26: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

26

オペレーティングシステム#4 Dekker のアルゴリズム

Interest[A] = TRUE;while( Interest[B] ){ if( Priority == B ){ Interest[A] = FALSE; while( Priority == B ){}; Interest[A] = TRUE; }}

:クリティカルセクション

Priority = B;Interest[A] = FALSE;

Interest[B] = TRUE;while( Interest[A] ){ if( Priority == A ){ Interest[B] = FALSE; while( Priority == A ){}; Interest[B] = TRUE; }}

:クリティカルセクション

Priority = A;Interest[B] = FALSE;

Interest状態オンB が Interest の間

(競合あり)優先権が B ならInterest状態オフB に優先権がある

間待って優先権を得たら再び Interest状態オン

終わったら優先権を相手に渡して

Interest状態オフ

Page 27: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

27

オペレーティングシステム#4 Dekker のアルゴリズム

■ ポイント 入る前に手を挙げる 優先権により競合を解決

■ 問題点 ユーザプログラムに依存

➔ちゃんとプロセスが約束を守ってくれないと破綻 ビジーウェイト( busy wait )

➔ 一方がクリティカルセクションを実行中,➔待っている方は優先権をひたすらチェックし続ける➔ CPU リソースの無駄

Page 28: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

28

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

4.4割り込み制御による排他制御

Page 29: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

29

オペレーティングシステム#4 ユニプロセッサの場合

■ 割り込みのみがプロセス中断を発生させる エントリーシーケンスで

割り込み禁止命令を実行しておけばよい 同様にイグジットシーケンスで

割り込み禁止を解除

■ ただし ... 割り込み禁止時間の増加はシステムの性能に影響

Page 30: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

30

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

4.5ハードウェアによる排他制御

Page 31: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

31

オペレーティングシステム#4 ハードウェアによる排他制御

■ 対話処理の重要性から排他制御の必要性が認識

■ テストアンドセット命令 ハードウェア自体に,排他制御のための仕組みを v = test_and_set(x)

➔ v = x と x = 0 を同時に実行する命令 競合者フラグのチェックとセットを同時に行える

Page 32: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

32

オペレーティングシステム#4 TEST AND SET による排他制御

Int v;Repeat v = test_and_set(X);Until v == 1;

:クリティカルセクション

X = 1;

Int u;Repeat u = test_and_set(X);Until u == 1;

:クリティカルセクション

X = 1;

Flag X = 1;

Page 33: この資料は、情報工学レクチャーシリーズ オペレーティングシステム 松尾啓志 著(森北出版株式会社)を用いて授業を行うために、名古屋工業大学松尾啓志、津邑公暁が作成しました。

33

オペレーティングシステム#4 今日のまとめ

■ プロセス競合 クリティカルセクション:

➔ リソース競合が発生する可能性のある部分 排他制御( MUTEX ):

➔ クリティカルセクションに同時に複数プロセスが入らないようにする制御

Dekker のアルゴリズム➔ ソフトウェアによる排他制御の基本手法➔ビジーウェイトという問題点

■ プロセス協調