酒居敬一(sakai.keiichi@kochi-tech.ac.jp) オペレーティングシステムJ/K 2004年10月7日 酒居敬一(sakai.keiichi@kochi-tech.ac.jp) http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/OS2004/

Slides:



Advertisements
Similar presentations
アルゴリズムとデータ構造 第2回 線形リスト(復習).
Advertisements

第2回 プロセス管理 ジョブ、プロセスとは? プロセスの状態遷移 プロセス制御ブロック スケジューリング.
オペレーティングシステム (仮想記憶管理)
メモリコンシステンシモデル memory consistency model
Ibaraki Univ. Dept of Electrical & Electronic Eng.
記 憶 管 理(1) オペレーティングシステム 第9回.
オペレーティングシステム (割り込み&仮想記憶管理)
Android と iPhone (仮題) 情報社会とコンピュータ 第13回
スレッドの同期と、スレッドの使用例 スレッドの同期 Lockオブジェクト: lockオブジェクトの生成
オペレーティングシステム (プロセス管理)
データ構造とアルゴリズム 第10回 mallocとfree
アルゴリズムとデータ構造1 2007年6月12日
オペレーティングシステム 第5回 プロセスの相互排除
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
オペレーティングシステム (OSの機能と構造)
記 憶 管 理(2) オペレーティングシステム 第10回.
オペレーティングシステムJ/K 2004年11月4日
オペレーティングシステム 第6回 プロセス間通信
Ibaraki Univ. Dept of Electrical & Electronic Eng.
2007/1/11 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
オペレーティングシステム (割り込み処理)
第5回 CPUの役割と仕組み3 割り込み、パイプライン、並列処理
TinyOS 浅川 和久 2017/4/7 TinyOS.
オープンソフトウェア利用促進事業 第3回OSSモデルカリキュラム導入実証
CONCURRENT PROGRAMMING
第9回 プロセスの協調と排他制御 並行プロセスと資源の競合 競合問題 セマフォ 不可分命令の実装 プロセス間通信 PV命令
Occam言語による マルチプリエンプティブシステムの 実装と検証
オペレーティングシステム 第3回( ) デッドロックと排他制御.
オペレーティングシステム (仮想記憶管理)
オペレーティングシステム (プロセス管理)
オペレーティングシステム (プロセス管理)
オペレーティングシステム (プロセス管理とスケジューリング)
C言語でスレッド (Pthread) 2007年1月11日 海谷 治彦.
オペレーティングシステム (プロセス管理とスケジューリング)
Cプログラミング演習 第7回 メモリ内でのデータの配置.
アルゴリズムとデータ構造 補足資料11-1 「mallocとfree」
オペレーティングシステム イントロダクション
コンパイラ 2012年11月15日
アルゴリズムとデータ構造 補足資料4-1 「メモリと配列」
オペレーティングシステムJ/K (仮想記憶管理)
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
アルゴリズムとデータ構造1 2005年6月10日
計算機工学III オペレーティングシステム #4 並行プロセス:排他制御基礎 2006/04/28 津邑 公暁
Ibaraki Univ. Dept of Electrical & Electronic Eng.
オペレーティングシステムJ/K 2004年11月15日2時限目
オペレーティングシステム 第7回 デッドロック
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
オペレーティングシステム (OSの機能と構造)
オペレーティングシステム (プロセススケジューリング)
コンパイラ 2012年10月1日
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
全体ミーティング (5/23) 村田雅之.
オペレーティングシステムJ/K 2004年10月4日
担当:青木義満 情報工学科 3年生対象 専門科目 システムプログラミング 第12回 システムプログラミング 反復サーバと並行サーバ 担当:青木義満
オペレーティングシステムJ/K (管理のためのデータ構造)
アルゴリズムとデータ構造1 2006年6月23日
アルゴリズムとデータ構造1 2009年6月15日
6.5 セマフォ セマフォ(semaphore): 複数のタスク(もしくはスレッド)が「同期」または「相互排除」の制御のために取得(acquire)・リリース(release)できるカーネルオブジェクトの総称.
コンピュータアーキテクチャ 第 4 回.
オペレーティングシステムJ/K (並行プロセスと並行プログラミング)
オペレーティングシステム (プロセススケジューリング)
SMP/マルチコアに対応した 型付きアセンブリ言語
アルゴリズムとデータ構造 2010年6月17日
ソフトウェア工学 知能情報学部 新田直也.
オペレーティングシステム (OSの機能と構造)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
デッドロック問題 lock-r2 lock-r1 (blocked)   lock-r2 (blocked) lock-r1  
全体ミーティング(9/15) 村田雅之.
オペレーティングシステム (プロセス管理)
Ibaraki Univ. Dept of Electrical & Electronic Eng.
Presentation transcript:

酒居敬一(sakai.keiichi@kochi-tech.ac.jp) オペレーティングシステムJ/K 2004年10月7日 酒居敬一(sakai.keiichi@kochi-tech.ac.jp) http://www.info.kochi-tech.ac.jp/k1sakai/Lecture/OS2004/

予定(2004年10月4日版) 第1回講義 10月 4日2時限目 第2回講義 10月 7日2時限目 第1回演習 10月14日2時限目 第1回講義 10月 4日2時限目 第2回講義 10月 7日2時限目   第1回演習 10月14日2時限目 第3回講義 10月18日2時限目 第4回講義 10月18日5時限目   第2回演習 10月21日2時限目 第5回講義 10月25日2時限目 第6回講義 10月28日2時限目 第7回講義 11月 1日2時限目   中間試験 11月 1日5時限目 第8回講義 11月 4日2時限目 第9回講義 11月 8日2時限目   第3回演習 11月11日2時限目 第10回講義 11月15日2時限目 第11回講義 11月15日5時限目   第4回演習 11月18日2時限目 第12回講義 11月22日2時限目 第13回講義 11月25日2時限目 第14回講義 11月29日2時限目 クオータ末試験 11月29日5時限目 ※これらは予定なので、変更の可能性があります。

ハードウェアの管理 Uni-Processor Multi-Processor 管理する主体(=プロセッサ)がひとつ 管理する主体が複数ある つまり、プロセスの実行管理だけを考えればよい Multi-Processor 管理する主体が複数ある どのプロセッサが何を管理するか、という管理も必要! 計算機の実装方式が複数ある OS内部の管理表は唯一でなければならないが、 複数プロセッサ間で管理のための方法が単一ではない! (→ 教科書46ページの図)

並行プロセスと並行プログラミング プロセスの概念 並行プロセス間で生じる問題 その解決方法(並行プログラミング機構) デッドロック 相互排除 デッドロックの検出と回避 プロセスにまつわる実装の話 → もっと後の回

プロセスの概念 プロセッサを抽象化したもの 固有の記憶空間が与えられる 実行のひとつの単位 プログラム、データ、レジスタの中身… を含む プログラム、データ、レジスタの中身… を含む 固有の記憶空間が与えられる 記憶空間などを共有しているもの→スレッド スレッドとプロセスを明確に区別しない→タスク 実行のひとつの単位 プロセスは(理想的には)複数が同時に走行 (現実にはプロセッサはプログラムを処理するために使われる資源で、複数のプロセスで共有)→次回

このような逐次的資源が共有されるとき、Atomicに操作できるような機構が必要となる。 並行プロセス間で生じる問題 逐次的資源 たとえば、Read-modify-write のような、  一連の操作をAtomicに行う必要のある資源。 このような逐次的資源が共有されるとき、Atomicに操作できるような機構が必要となる。 もし、そういう機構がなければプログラムが意図したとおりに動かない。

処理の粒度 マルチジョブ マルチタスク マルチCPU レコードの排他的利用 トランザクションを不可分な処理単位とする メモリ上の共有領域の排他的利用 共有領域を使用するプログラムを排他的に実行 マルチCPU メモリ上の変数の排他的利用 プロセッサのバスサイクルを連続する

c1やc2は、自プロセスが 他プロセスに、臨界領域に入ること を知らせるための変数。 先に臨界領域に入ることを宣言した プロセスが実際に臨界領域に入る。 両方が臨界領域に入ろうとしたとき、 turn変数により一方が譲る。 臨界領域に入っているとき、 c1かc2の一方だけがtrueである。 [大久保英嗣, オペレーティングシステムの基礎]

TAS命令(計算機アーキテクチャの授業で既出) 相互排除 TAS命令(計算機アーキテクチャの授業で既出) もっとも原始的なロックの実装(primitive)。 2値セマフォを実現する。 セマフォ P操作(ロック)とV操作(アンロック)により実現。 再帰的ロックとも呼ばれる。 モニタ(Java言語で使われている) 共有資源とそれを操作する手続きを一体化。 セマフォのわかりにくさを、構造化により解消。 構造化セマフォと呼ばれることもある。

TAS命令 メモリ上の変数をテストする処理、メモリ上の変数に値をセットする処理、これらを順に他の処理をはさむことなく(=Atomic)行う。 テストとは、0かそうでないかを調べてフラグに結果を反映する処理 Intel系では lock xchg 命令で代用する。 バスサイクルをlock(不可分かつ連続)して処理 バイナリセマフォ、2値セマフォ、を実現する。

変形セマフォ セマフォ変数 P操作 V操作 正の値は利用可能な資源の数 負の値は現在待ちに入っているプロセスの数 セマフォの値をatomicに1減らしテストする テスト結果が負になったときは、待ち状態に入る V操作 セマフォの値をatomicにテストし1増やす テスト結果が負のときは、待ち状態にあるプロセスをひとつ動作可能状態にする

競合を避けるため相互排除機構を持っている。 相互排除とデッドロック 競合を避けるため相互排除機構を持っている。 これが時に問題を起こす。 2つのスレッドが資源Aと資源Bを同時にとりたいとき     資源が2つそろうまでは返さないぞ、というアルゴリズムだと… スレッド1 資源Aを獲得 資源Bを獲得したい! スレッド2 資源Bを獲得 資源Aを獲得したい!

デッドロックの発生条件と防止 2つのプロセスが資源R1と資源R2を同時にとりたいとき 逐次的資源に関する相互排除条件 待ち条件 資源要求は同時に行う 横取り不可条件 資源を同時に確保できない場合、解放し再度要求 循環待ち条件 資源を順序だてて取得する 2つのプロセスが資源R1と資源R2を同時にとりたいとき   資源が2つそろうまでは返さないぞ、というアルゴリズムだと… Deadlock! プロセスP1 プロセスP2 資源R1を獲得 資源R2を獲得 資源R2を獲得したい! 資源R1を獲得したい!

デッドロックの回避 プロセスが実行時に資源を要求する数 > プロセスが必要と宣言した資源の数 こういうプロセスがもし存在すれば、誤りであるのはあきらか プロセスが実行時に資源を要求する数 > 空いている資源の数 こういうプロセスは待つしかない 待っていればいつかは資源がわりあてられるのだろうか? 空き資源があり、それを割り当てることで、プロセスからの要求を満たせるか? 満たせるときだけ: プロセスに印をつける。プロセスに割り当てられた資源を解放。 ステップ4へもどり、印をつけていないすべてのプロセスを調べる。 すべてのプロセスに印がついてるか? ついてたら、システムは安全である。

資源割付けグラフ 有向グラフとして表現する プロセス:  四角 資源の型: 大きな丸 資源:    小さな丸 獲得:資源からプロセスへ向かう辺がある 要求:プロセスから資源の型へ向かう辺がある (排他的に割付ける機構→たとえばセマフォ)

P1 P2 R1 R2 R3 P3 P4 P5 資源割付けグラフの例

資源割付けグラフの簡約 簡約とは? 簡約できる場合とは? どうしても簡約できない場合は? 資源からプロセスへの有向辺をとりのぞく プロセスが必要な資源を使用後解放に相当 簡約できる場合とは? プロセスからの有向辺に対応できる空き資源がある プロセスが必要な資源の要求を満たせる場合に相当 どうしても簡約できない場合は? デッドロックが発生ということになり、回復を試みる デッドロック状態のプロセスを1つ以上消滅させる チェックポイントリスタートにより後退復帰する

P1 P2 R1 R2 R3 P3 P4 P5 資源割付けグラフの簡約 要求を満たした 要求を満たした 要求を満たした 要求を満たした