slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
第9回 プロセスの協調と排他制御 PowerPoint Presentation
Download Presentation
第9回 プロセスの協調と排他制御

Loading in 2 Seconds...

play fullscreen
1 / 19

第9回 プロセスの協調と排他制御 - PowerPoint PPT Presentation


  • 110 Views
  • Uploaded on

第9回 プロセスの協調と排他制御. 並行プロセスと資源の競合 競合問題 セマフォ PV 命令 不可分命令の実装 Test & Set プロセス間通信. 並行プロセス. 並行実行 (concurrent processing) されているプロセスの集合を並行プロセスを呼ぶ 並行プロセスの実行には様々な問題がある 資源の競合 クリティカルセクション 競合問題 (Racing Conditions) プロセス間通信. 資源の競合. ブロッキング : 他のプロセスが使用している共有資源が解放されるのを待機している状態

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about '第9回 プロセスの協調と排他制御' - oihane


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1
第9回 プロセスの協調と排他制御
  • 並行プロセスと資源の競合
  • 競合問題
  • セマフォ
    • PV命令
  • 不可分命令の実装
    • Test & Set
  • プロセス間通信
slide2
並行プロセス
  • 並行実行(concurrent processing)されているプロセスの集合を並行プロセスを呼ぶ
  • 並行プロセスの実行には様々な問題がある
    • 資源の競合
    • クリティカルセクション
    • 競合問題(Racing Conditions)
    • プロセス間通信
slide3
資源の競合
  • ブロッキング : 他のプロセスが使用している共有資源が解放されるのを待機している状態
  • ライブロック:共有資源を複数プロセスが譲り合う無限待機状態
  • デッドロック:資源の依存関係がプロセス間で環状につながれている状態で、各プロセスが他のプロセスの占有している資源の解放を待っている無限待機状態
  • 飢餓状態: 永久にブロッキングされている状態
slide4
資源の待ち行列
  • OSの扱うスケジューリングは、プロセススケジューリング(CPUの割り当て)の他に、入出力装置の割り当ても含まれる

入出力待ち行列

入出力装置

入出力装置

CPU

入出力装置

CPU待ち行列

入出力装置

slide5
資源競合の解決
  • 防止策
    • 資源を獲得できたら実行
    • 複数の資源を獲得することを禁止
  • 解決策
    • ロールバック(rollback) ... いったん確保した資源を元に戻す
    • プロセスの強制終了
process synchronization
プロセス間の同期(Process Synchronization)
  • 並行プロセスのプリミティブセット – parabegin ... paraend

parabegin

s1 // s2 // --- // Sn

paraend

  • 以下の状態では、様々な値をとる可能性がある(プロセス間にデータ依存)

parabegin

a = b + c // c = i + j // j = a + b

paraend

racing conditions
競合問題(Racing Conditions)
  • 一般に、並行プロセスでは、2つのプロセス間のread setとwrite setが空集合でない場合、競合状態(Racing Conditions)を持つことになる

Read Set

Write Set

critical section
Critical Section(きわどい領域)
  • Racing Conditionsを回避するため、ただ1つのプロセスのみが実行可能なプログラム区間
  • この区間によって、read setとwrite setの重なりを無くす
  • この区間を実現するためには
    • 相互排除(mutual exclusion)
    • 前進(progress)
    • 有限待機(bounded waiting)
mutual exclusion
相互排除(mutual exclusion)
  • ビジーウェイト ... lock – unlock
  • Test & Set 命令
  • セマフォ
spin lock l ock unlock
Spin Lock (lock – unlock)

lock

L: if x then goto L else w <- true fi;

unlock

w <- false;

  • 共有変数によって、Critical Section (CS)の使用を示し、共有変数が真である 場合は使用中で、偽である場合は空いている
  • lock 命令は、共有変数が偽であれば、真にして自分がCSに入るが、偽である場 合は、真にセットされるまでビジーウェイティングする(spin lock)
  • unlock 命令で、共有変数を偽にセットして、CSを他のプロセスに解放する
  • ただし、共有変数の値のチェックと値のセットは、不可分命令で実装されてないと2 つのプロセスが同時にCSに入れる可能性がある
    •  シングルプロセッサの場合は、lock 操作時に割込み禁止(プロセスに切り替  え禁止)にすればよい
test set primitives
Test & Set Primitives
  • マルチプロセッサシステムでは、プロセス間の同期をとるためには、同期変数の値のチェックとセットを不可分(atomic)に行わなければならない
  • このためハードウェア側で、同期変数(共有変数)のチェックと値のセットを一括処理する命令をTest & Set命令(不可分命令)として用意している
  • Test & Set 命令は、値をセットし、セットする前の値を同時に読み込む

enter_CS:

tsl register flag

cmp register #0

jnz enter_CS

ret

leave_CS:

mov flag #0

ret

enter_CS();

leave_CS();

Critical Section

slide12

P(s)

V(s)

Critical Section

セマフォ
  • P命令とV命令の2つの同期基本命令によってクリティカルセクションをはさむ
  • P命令 ... P(s) :

P(s): if ( s <= 0 ) 待ち行列にプロセスを登録して休眠状態(sleep)へ;

else

s = s – 1;

  • V命令 ... V(s) :

V(s): s = s + 1;

     待ち行列から一つ

  プロセス取り出す(wakeup)

  • P命令, V命令は不可分

 に処理されなければなら

 ない

  • sが1のとき、2値セマフォ

 (binary semaphore)といい、

lock, unlock 命令として適用

 可能である

  • 資源の解放を待つ間、プロセスは

  自らCPUを手放して休眠する

  (サスペンドロック)

slide13
プロセス協調における競合問題
  • 生産者-消費者問題
  • Reader-Writer Problem
  • 哲学者の食事問題
  • 相互排除の問題
    • ピーターソンのアルゴリズム
    • Test & Set Primitive
slide14
プロセス間通信
  • プロセス同士がデータの受け渡しを行いながら協調処理する
  • 割込み、シグナルを使うプリミティブなもの
  • 共有メモリ方式
    • 複数のプロセスがアクセス可能なshared memory を用意し、この領域を利用してデータの受け渡しを実現する
  • メッセージパッシング方式
    • あるプロセスからメッセージの形で他のプロセスへデータの受け渡しを行う
slide15
メッセージパッシング方式
  • 直接通信方式 ... link は一つのみ
    • send(pid,message)
    • receive(pid,message)
  • 間接通信方式 ... link は複数
    • チャネル(channe)
    • ポート(port)
    • メールボックス(mailbox)
    • send(チャネル、message), receive(チャネル、message)
  • 通信相手
    • 1対多通信 ... 受信者多数。プロセスグループ or チャネルで定義

          マルチキャスト(multicast)

    • 多対1通信 ... 送信者多数。送信者を特定しない
    • 多対多通信

総称してチャネル

slide16
同期式通信と非同期式通信
  • 同期式通信(synchronous communication)
    • メッセージの受け渡しが完了(確認)されるまで待ち続ける
    • blocking
  • 非同期式通信(asynchronous communication)
    • メッセージの受け渡し完了を待たず、メッセージをバッファリングして先に処理を進める
    • non blocking
    • バッファ式通信
slide17
パイプ(pipe)
  • バイト単位のデータの読み出し/書き込みをプロセス間通信に拡張したもの
  • 一度読み出したデータは再び読み出すことはできない(stream:ストリーム)
  • Unixのパイプでは、入出力とプロセス間通信のインターフェースを統一

プロセスA

プロセスB

パイプ

write

read

slide18
ソフトウェア割込み
  • プロセスにおいて、プロセスの実行とは独立して、個々の命令の実行によって発生する様々な事象をとらえる仕組み。
  • ソフトウェア割込みでは、ハードウェア割込みと同様に個々の事象ごとに処理をするハンドラが定義される。
  • 定義された事象がプロセスの実行において発生すると、プロセスを中断して、ハンドラの処理を行い、その後、中断プロセスを再開するかそのままプログラムを終了させる
  • シグナル: Unix やOS/2では、シグナル(signal)として実装されている
    • SIGINT, SIGHUP,SIGSEGV,SIGKILL など
slide19
RPC(遠隔手続き呼び出し)
  • RPC(Remote Procedure Call)
    • クライアント・サーバ型通信で用いられる
    • クライアントがサーバの手続き(関数)をローカル

 (自分持ち)の手続き(関数)を呼び出すのと同じよう

 に呼び出す

    • スタブ(stub)
      • クライアントスタブ... 1.RPCから要求メッセージの作成と送信

          2.応答メッセージを受信してRPCに返す

      • サーバスタブ... 1. 要求メッセージを受信してサーバプログラムへ

(RPC受理)

        2.RPCの実行結果を応答メッセージにして送信