第9回 プロセスの協調と排他制御 並行プロセスと資源の競合 競合問題 セマフォ 不可分命令の実装 プロセス間通信 PV命令

Slides:



Advertisements
Similar presentations
システムプログラミング 第11回 シグナル 情報工学科 篠埜 功. 今回の内容 前回の補足( exit システムコールについ て) プロセス間通信 – シグナルの送信 --- 今回の内容 – パイプによる通信 – ソケットによる通信.
Advertisements

ARTLinuxの特徴 ARTLinux: ハードリアルタイム処理機能を拡張したLinuxカーネル 固定優先度に基づくスケジューリング機能
第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
オペレーティングシステム 第3回 プロセスの管理とスケジューリング
計算機工学III オペレーティングシステム #14 ファイル: より進んだファイルシステム 2006/07/21 津邑 公暁
計算機システム概論・3回目 本日のトピック:割込みと入出力制御について 割込み制御について 問題点の明確化 割込みとは
Chapter11-4(前半) 加藤健.
入 出 力 管 理 オペレーティングシステム 6/26/09.
スレッドの同期と、スレッドの使用例 スレッドの同期 Lockオブジェクト: lockオブジェクトの生成
オペレーティングシステム (プロセス管理)
オペレーティングシステム 第5回 プロセスの相互排除
オペレーティングシステムJ/K 2004年10月7日
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
高性能コンピューティング論Ⅰ ほんだ ひろき 本多 弘樹
計算機システム概論・2回目 本日のトピック:プロセスについて プロセスとは プロセスのスケジューリングについて 多重プロセスの問題 排他制御
高性能コンピューティング論Ⅰ ほんだ ひろき 本多 弘樹
小型デバイスからのデータアクセス 情報処理系論 第5回.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング システムプログラミング プロセス間通信(パイプ) 担当:青木義満
オペレーティングシステム 第6回 プロセス間通信
並列分散プログラミング.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
複数CPU間のための共有メモリ 小島 隆史(中央大学大学院理工学研究科 國井研究室)
担当:青木義満、篠埜 功 情報工学科 3年生対象 専門科目 システムプログラミング 第8回、第9回 シグナル処理 担当:青木義満、篠埜 功
第3回 CPUの管理と例外処理 OSによるハードウェアの管理 CPUの構成、動作 CPUの管理 例外処理、割り込み処理 コンテキストスイッチ
Ibaraki Univ. Dept of Electrical & Electronic Eng.
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
割 込 み(1) オペレーティングシステム No.5.
TinyOS 浅川 和久 2017/4/7 TinyOS.
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
ネストした仮想化を用いた VMの安全な帯域外リモート管理
シグナル通信 普通の割込みとソフトウェア割込み ソフトウェア割込みとシグナル キーボードからのシグナル 例外 (exception)
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
CONCURRENT PROGRAMMING
1章 並列OS概論.
第8回入出力制御 デバイスコントローラ ポーリングと割込み 入出力の方式 PIO DMA 入出力のためのソフトウェア技法.
オペレーティングシステム 第3回( ) デッドロックと排他制御.
大阪大学 大学院情報科学研究科 博士前期課程2年 宮原研究室 土居 聡
Lazy Release Consistency
RPC:Remote Procedure Call Protocol Specification
全体ミーティング 金田憲二.
オペレーティングシステム (プロセス管理)
オペレーティングシステム (プロセス管理)
C言語でスレッド (Pthread) 2007年1月11日 海谷 治彦.
マルチスレッド処理 マルチプロセス処理について
オペレーティングシステム イントロダクション
オペレーティングシステム 第3回 プロセスの管理とスケジューリング
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
オペレーティングシステム 第2回 割り込みとOSの構成
Talkプログラムのヒント 1 CS-B3 ネットワークプログラミング  &情報科学科実験I.
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第6回 システムプログラミング概要 プロセスの生成 担当:青木義満
計算機工学III オペレーティングシステム #4 並行プロセス:排他制御基礎 2006/04/28 津邑 公暁
オペレーティングシステム 第7回 デッドロック
関数型言語による Timed CSP 検証技法の提案
組込みシステムとは コンピュータ制御システム?
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
明星大学 情報学科 2012年度前期     情報技術Ⅰ   第1回
オペレーティングシステム (プロセススケジューリング)
6.5 セマフォ セマフォ(semaphore): 複数のタスク(もしくはスレッド)が「同期」または「相互排除」の制御のために取得(acquire)・リリース(release)できるカーネルオブジェクトの総称.
コンピュータアーキテクチャ 第 4 回.
オペレーティングシステムJ/K (並行プロセスと並行プログラミング)
システムプログラミング 第10回 プロセス間通信3 簡易Web server(準備) Chat プログラム 担当:青木義満、篠埜 功
コンピュータアーキテクチャ 第 5 回.
強制パススルー機構を用いた VMの安全な帯域外リモート管理
SMP/マルチコアに対応した 型付きアセンブリ言語
システムプログラミング 第11回 シグナル 情報工学科  篠埜 功.
デッドロック問題 lock-r2 lock-r1 (blocked)   lock-r2 (blocked) lock-r1  
明星大学 情報学科 2014年度前期     情報技術Ⅰ   第1回
全体ミーティング(9/15) 村田雅之.
オペレーティングシステム (プロセス管理)
P2P & JXTA Memo For Beginners
Presentation transcript:

第9回 プロセスの協調と排他制御 並行プロセスと資源の競合 競合問題 セマフォ 不可分命令の実装 プロセス間通信 PV命令 第9回 プロセスの協調と排他制御 並行プロセスと資源の競合 競合問題 セマフォ PV命令 不可分命令の実装 Test & Set プロセス間通信

並行プロセス 並行実行(concurrent processing)されているプロセスの集合を並行プロセスを呼ぶ 並行プロセスの実行には様々な問題がある 資源の競合 クリティカルセクション 競合問題(Racing Conditions) プロセス間通信

資源の競合 ブロッキング : 他のプロセスが使用している共有資源が解放されるのを待機している状態 ライブロック:共有資源を複数プロセスが譲り合う無限待機状態 デッドロック:資源の依存関係がプロセス間で環状につながれている状態で、各プロセスが他のプロセスの占有している資源の解放を待っている無限待機状態 飢餓状態: 永久にブロッキングされている状態

資源の待ち行列 OSの扱うスケジューリングは、プロセススケジューリング(CPUの割り当て)の他に、入出力装置の割り当ても含まれる 入出力待ち行列 入出力装置 入出力装置 CPU 入出力装置 CPU待ち行列 入出力装置

資源競合の解決 防止策 解決策 資源を獲得できたら実行 複数の資源を獲得することを禁止 ロールバック(rollback) ... いったん確保した資源を元に戻す プロセスの強制終了

プロセス間の同期 (Process Synchronization) 並行プロセスのプリミティブセット – parabegin ... paraend parabegin s1 // s2 // --- // Sn paraend 以下の状態では、様々な値をとる可能性がある(プロセス間にデータ依存) parabegin a = b + c // c = i + j // j = a + b paraend

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

Critical Section(きわどい領域) Racing Conditionsを回避するため、ただ1つのプロセスのみが実行可能なプログラム区間 この区間によって、read setとwrite setの重なりを無くす この区間を実現するためには 相互排除(mutual exclusion) 前進(progress) 有限待機(bounded waiting)

相互排除(mutual exclusion) ビジーウェイト ... lock – unlock Test & Set 命令 セマフォ

Spin Lock (lock – unlock) 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 マルチプロセッサシステムでは、プロセス間の同期をとるためには、同期変数の値のチェックとセットを不可分(atomic)に行わなければならない このためハードウェア側で、同期変数(共有変数)のチェックと値のセットを一括処理する命令をTest & Set 命令(不可分命令)として用意している Test & Set 命令は、値をセットし、セットする前の値を同時に読み込む enter_CS: tsl register flag cmp register #0 jnz enter_CS ret leave_CS: mov flag #0 enter_CS(); leave_CS(); Critical Section

セマフォ Critical Section P(s) V(s) 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を手放して休眠する   (サスペンドロック) P(s) V(s) Critical Section

プロセス協調における競合問題 生産者-消費者問題 Reader-Writer Problem 哲学者の食事問題 相互排除の問題 ピーターソンのアルゴリズム Test & Set Primitive

プロセス間通信 プロセス同士がデータの受け渡しを行いながら協調処理する 割込み、シグナルを使うプリミティブなもの 共有メモリ方式 複数のプロセスがアクセス可能なshared memory を用意し、この領域を利用してデータの受け渡しを実現する メッセージパッシング方式 あるプロセスからメッセージの形で他のプロセスへデータの受け渡しを行う

メッセージパッシング方式 直接通信方式 ... link は一つのみ 間接通信方式 ... link は複数 総称してチャネル send(pid,message) receive(pid,message) 間接通信方式 ... link は複数 チャネル(channe) ポート(port) メールボックス(mailbox) send(チャネル、message), receive(チャネル、message) 通信相手 1対多通信 ... 受信者多数。プロセスグループ or チャネルで定義           マルチキャスト(multicast) 多対1通信 ... 送信者多数。送信者を特定しない 多対多通信 総称してチャネル

同期式通信と非同期式通信 同期式通信(synchronous communication) メッセージの受け渡しが完了(確認)されるまで待ち続ける blocking 非同期式通信(asynchronous communication) メッセージの受け渡し完了を待たず、メッセージをバッファリングして先に処理を進める non blocking バッファ式通信

パイプ(pipe) バイト単位のデータの読み出し/書き込みをプロセス間通信に拡張したもの 一度読み出したデータは再び読み出すことはできない(stream:ストリーム) Unixのパイプでは、入出力とプロセス間通信のインターフェースを統一 プロセスA プロセスB write パイプ read

ソフトウェア割込み プロセスにおいて、プロセスの実行とは独立して、個々の命令の実行によって発生する様々な事象をとらえる仕組み。 ソフトウェア割込みでは、ハードウェア割込みと同様に個々の事象ごとに処理をするハンドラが定義される。 定義された事象がプロセスの実行において発生すると、プロセスを中断して、ハンドラの処理を行い、その後、中断プロセスを再開するかそのままプログラムを終了させる シグナル: Unix やOS/2では、シグナル(signal)として実装されている SIGINT, SIGHUP,SIGSEGV,SIGKILL など

RPC(遠隔手続き呼び出し) RPC(Remote Procedure Call) クライアント・サーバ型通信で用いられる クライアントがサーバの手続き(関数)をローカル  (自分持ち)の手続き(関数)を呼び出すのと同じよう  に呼び出す スタブ(stub) クライアントスタブ ... 1.RPCから要求メッセージの作成と送信           2.応答メッセージを受信してRPCに返す サーバスタブ... 1. 要求メッセージを受信してサーバプログラムへ (RPC受理)         2. RPCの実行結果を応答メッセージにして送信