OS Design and Impl ch2

1,140 views
996 views

Published on

Summary of OS Design and Implementation Chapter 2, Process

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,140
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
3
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

OS Design and Impl ch2

  1. 1. OPERATING SYSTEMS DESIGN AND IMPLEMENTATION Third Edition ANDREW S. TANENBAUM ALBERT S. WOODHULL Chapter 2 Processes presented by Yohei YasukawaTanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  2. 2. Outline2.1 プロセス概論 – プロセスモデル, プロセスの生成/終了, プロセスの階層, 状態, 実装2.2 プロセス間通信 – 競合状態, クリティカルセクション, ビジーウェイトによる相互排除, スリープ/ウェイクアップ, セマフォ, ミューテックス モニタ, メッセージパッシング2.3 IPCの古典的問題 – 哲学者の食卓問題, リーダライタ問題 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  3. 3. Outline2.1 プロセス概論 – プロセスモデル, プロセスの生成/終了, プロセスの階層, 状態, 実装2.2 プロセス間通信 – 競合状態, クリティカルセクション, ビジーウェイトによる相互排除, スリープ/ウェイクアップ, セマフォ, ミューテックス モニタ, メッセージパッシング2.3 IPCの古典的問題 – 哲学者の食卓問題, リーダライタ問題 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  4. 4. 2.1 プロセス概論– マルチプログラミングシステム • プロセスを次々と切り替えて処理するシステム – CPUは数十〜数百ミリ毎に処理を切り替える – どの瞬間も、CPUはただ1つのプログラムを実行 – 1秒間に複数のプログラムを実行(擬似並列処理) Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  5. 5. 2.1.1 プロセスモデル– 多数の逐次プロセスで構成されているという見方 • “プロセスは仮想CPUを占有して持っている”と捉える コンピュータから見た 人間から見た マルチプログラム処理 マルチプログラム処理 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  6. 6. 2.1.1 プロセスモデル – プロセスに関する留意点 • 実時間の要求があるプロセス – Ex. 磁気テープ装置を制御するI/O処理 • プロセスの切り替え方 – プロセス:活動 » プログラム, 入出力, 状態を持つ – プログラム:本, レシピ » プロセスがプログラムを読みながら処理を実行 – Ex. レシピを見てケーキを焼いている途中に、   蜂に刺された息子が泣きながら駆け込んできた。Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  7. 7. 2.1.2 プロセスの生成 – プロセスには四つの主要な事象が存在 1. システムの初期化 2. 実行中のプロセスによるプロセス生成 – Ex. makeプログラムによるコンパイル時 3. ユーザからの新たなプロセス生成の要求 – Ex. 対話システムにおけるプロセスの生成 4. バッチジョブの開始 – Ex. 大規模なメインフレームのバッチシステムTanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  8. 8. 2.1.3 プロセスの終了 – プロセスは以下のいずれかの条件によって終了 • Normal exit (voluntary) – なすべき仕事を完了した場合 • Error exit (voluntary) – 致命的なエラーを検出した場合 • Fatal Error (involuntary) – プログラムのバグ等によるエラーが発生した場合 Ex. 存在しないメモリの参照, ゼロ除算 • Killed by another process (involuntary)Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  9. 9. 2.1.4 プロセス階層 – 親プロセスと子プロセスは1対多の関係 – MINIX 3におけるプロセス階層の用例: • キーボードからのシグナル受信 – 受信 or 無視 or キルされる • RS, initスレッドを用いた自身の初期化 – Reincarnation Serverスレッド: ドライバおよびサーバの起動, 再起動を行う – Initスレッド: Rsに指令を発行して、ドライバとサーバの起動を行う – Ex. ドライバがクラッシュしたときの自動回復 » 1. RSの子プロセスとしてドライバ起動 » 2. ドライバ終了した時、通知される » 3. 通知が来たら再起動Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  10. 10. 2.1.5 プロセスの状態– プロセス同士の通信や同期をするとき、 状態の情報が必要になる。 Ex. “cat hoge1 hoge2 hoge3 | grep foo”– プロセスが取りうる3つの状態 1. Running – その瞬間CPUを実際に使っている 2. Ready – 実行可能だが、他プロセスが実行中のため一時停止 3. Blocked – 何らかの外部的事象が発生しない限り実行できない Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  11. 11. 2.1.5 プロセスの状態Figure 2-2 プロセスの状態遷移図 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  12. 12. 2.1.5 プロセスの状態Figure 2-3 プロセス構造をとるOSでは、OSの最下層が割り 込みとスケジューリングを処理する。   その上部に、逐次プロセスが存在する。 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  13. 13. 2.1.6 プロセスの実装– プロセスモデルの実現 • プロセステーブルの作成 – プロセス単位で確保するエントリーテーブル – Ex. PC, SP, メモリ割当て情報など– スケジューラの実現(→2.4章で詳しく説明) • 割込みディスクリプタテーブルの作成 • 割込みベクタ • 割込みサービス手続き Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  14. 14. 2.1.7 スレッド– プロセスとスレッドの違い • プロセス:独自のアドレス空間における制御の流れ – 関連する資源がまとめられ、管理が簡単。 • スレッド:同一アドレス空間内における制御の流れ – CPUでプログラム実行をスケジュールされる実態 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  15. 15. 2.1.7 スレッド– スレッドの管理方法 • ユーザ空間で管理 – スレッドの切り替えを速くするため • カーネル空間でもスレッドを認識 – プロセス全体のブロックを避けるため Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  16. 16. 2.1.7 スレッド– スレッドの問題 • プロセスの複製 – Ex. キーボード入力の受信 • データの複製 – Ex. ファイル読み込み中にクローズ • エラーの報告 – Ex. errnoを読み出す前にシステムコールを実行– 解決不可能ではないが、システムの再設計が困難 • Ex. システムコール, ライブラリの書き直し Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  17. 17. Outline2.1 プロセス概論 – プロセスモデル, プロセスの生成/終了, プロセスの階層, 状態, 実装2.2 プロセス間通信 – 競合状態, クリティカルセクション, ビジーウェイトによる相互排除, スリープ/ウェイクアップ, セマフォ, ミューテックス モニタ, メッセージパッシング2.3 IPCの古典的問題 – 哲学者の食卓問題, リーダライタ問題 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  18. 18. 2.2 プロセス間通信– プロセス間通信における3つの問題 1. 情報の伝達 2. 互いの処理を妨害しない • 正しい実行順序の決定– cf. スレッド間通信における問題との相違 1. 簡単に解決 2. プロセスと同じ解決方法 3. プロセスと同じ解決方法 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  19. 19. 2.2.1 競合状態– 競合状態:  2つ以上のプロセスが共有データを読み書きし、  その順序によって最終結果が異なるような状況。 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  20. 20. 2.2.2 クリティカルセクション– 競合状態の発生を避けるため、相互排除したい。 • クリティカルセクション(危険領域)に注意する。 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  21. 21. 2.2.2 クリティカルセクション– よい解決方法を得るための4つの条件 1. 同時に危険領域に入らない。 • 処理速度またはCPUの個数に関する仮定をおかない。 • 危険領域以外を実行中のプロセスは 他のプロセスをブロックしない。 • プロセスは危険領域に入るために無期限に待たない。 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  22. 22. 2.2.3 ビジーウェイトによる相互排除 – 相互排除を実現する方法のいくつかを紹介。 • 割込み禁止方式 • ロック変数方式 • 厳密な相互実行方式 – ビジーウェイトを使った解決法 Process 0 Process 1 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  23. 23. 2.2.3 ビジーウェイトによる相互排除 – 相互排除を実現する方法のいくつかを紹介。 • Petersonの解決方式 – 関数enter_regionと関数leave_regionを使った相互排除 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  24. 24. 2.2.3 ビジーウェイトによる相互排除 – 相互排除を実現する方法のいくつかを紹介。 • Petersonの解決方式 – 関数enter_regionと関数leave_regionを使った相互排除 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  25. 25. 2.2.3 ビジーウェイトによる相互排除 – 相互排除を実現する方法のいくつかを紹介。 • TSL命令 – ハードウェアを使った相互排除 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  26. 26. 2.2.4 スリープとウェイクアップ– CPU時間を消費せずに処理を停止させるプロセス間通信 • Sleep: 呼出元のプロセスを停止する • Wakeup: 引数に指定したプロセスを起こす– 用例:生産者消費者問題 • 2つのプロセスが共通の固定長バッファを共有 • 生産者は情報を入力し、消費者は情報を取り出す – 問題:バッファが空の場合の、消費者の振る舞い – 解決策:消費者は、生産者が情報を入力するまでsleep Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  27. 27. 2.2.4 スリープとウェイクアッププロセスA プロセスB 競合状態が起こる?起こらない? Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  28. 28. 2.2.5 セマフォ– セマフォ: 受け取ったウェイクアップ合図を正数変数に保存し、 後で使用する。 • Down操作: 値が0より大きいか検査し、大きければ1減らす。 値が0であれば、down操作を完了させずにスリープ。 • Up操作: 値を1増やし、down操作でスリープしているプロセス があれば起こす。 • 上述の操作はいずれもアトミックアクションとして 処理される Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  29. 29. 2.2.5 セマフォ– セマフォを用いた生産者消費者問題の解決法 • セマフォの検査, 更新, およびスリープを発行する間は 全ての割込みを禁止 • 3つのセマフォを利用 – Full: 使用中のスロット数 初期値は0, 同期処理のために用いる。 – Empty: 空きスロット数 初期値はバッファにあるスロット数, 同期処理のために用いる – Mutex: ロックの状態を表す変数 初期値は1, 相互排除のために用いる Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  30. 30. 2.2.5 セマフォTanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  31. 31. 2.2.6 ミューテックス– ロックされているか、されていないかの状態を取る変数 • セマフォの値を数える必要がない場合に用いる。– mutexに対する2つの手続き • mutex_lock: 危険領域にアクセスするときに呼び出す。 • mutex_unlock: 危険領域での作業が完了した時に呼び出す。 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  32. 32. 2.2.7 モニタ– セマフォよりも簡単に正しいプログラムを書ける。 • モニタ:高水準の同期のためのプリミティブ – 相互排除をコンパイラで実現 – プロセスの停止 / 再生の手続き » Wait: 状態変数を引数に指定して呼び出す。 呼出元のプロセスはブロックされる。 » Signal: 状態変数を引数に指定して呼び出す。  該当するプロセスをウェイクアップする。 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  33. 33. 2.2.7 モニタTanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  34. 34. 2.2.7 モニタTanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  35. 35. 2.2.7 モニタ– モニタおよびセマフォが抱えている問題 • 共有メモリにアクセス可能な1つ以上のCPUを備える 環境に置いて相互排除の問題を解決するために設計 – それぞれ独立した固有メモリを持つ、 複数のCPUからなる分散システムには適用できない。 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  36. 36. 2.2.8 メッセージパッシング– SendとReceiveの2つの基本構造を用いたプロセス間通信 • Send: 指定された送付先に対してメッセージを送信 • Receive: 送信元から送られるメッセージを受信– 設計上の問題 • ネットワークにおいてメッセージを見失った場合 – 受信者からの受領確認メッセージ • 受領確認メッセージを見失った場合 – 各メッセージに通し番号を振る • パフォーマンスの問題 – Ex. メッセージの大きさをマシンのレジスタのサイズに制限 レジスタを介してメッセージパッシングを行う Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  37. 37. 2.2.8 メッセージパッシング– メッセージパッシングによる生産者消費者問題 • Mail-box: 指定した数のメッセージを貯める場所 – Send, Receiveの引数にメールボックスの住所を指定 • Cf. Rendezvous方式 – 中間でのバッファリングを行わず、直接メッセージをコピー – Receive前にsendが発行された場合、 Receiveが発行されるまでブロックされる Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  38. 38. 2.2.8 メッセージパッシングTanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  39. 39. Outline2.1 プロセス概論 – プロセスモデル, プロセスの生成/終了, プロセスの階層, 状態, 実装2.2 プロセス間通信 – 競合状態, クリティカルセクション, ビジーウェイトによる相互排除, スリープ/ウェイクアップ, セマフォ, ミューテックス モニタ, メッセージパッシング2.3 IPCの古典的問題 – 哲学者の食卓問題, リーダライタ問題 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  40. 40. 2.3 IPCの古典的問題– プロセス間通信においてよく知られている2つの問題 1. 哲学者の食卓問題 2. リーダライタ問題 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  41. 41. 2.3.1 哲学者の食卓問題    1965年にDijkstraによって考案された同期問題      ルール • 左右のフォークを 取ろうとする 2. 成功すると食事 • フォークを置き, 思考を続ける 皆が同時にフォークを 取ろうとする場合 – デッドロック, 飢餓状態 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  42. 42. 2.3.1 哲学者の食卓問題Figure 2-19. A non-solution to the dining philosophers problem. Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  43. 43. 2.3.1 哲学者の食卓問題 ...Figure 2-20. A solution to the dining philosophers problem. Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  44. 44. 2.3.1 哲学者の食卓問題 ... ...Figure 2-20. A solution to the dining philosophers problem. Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  45. 45. 2.3.1 哲学者の食卓問題 ...Figure 2-20. A solution to the dining philosophers problem. Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  46. 46. 2.3.2 リーダライタ問題– データベースへのアクセスをモデル化した問題– 用例:航空券の予約システム • 多数の競合するプロセスが読み書きを行う。 • 多数が同時にデータベースを読むことは容認。 • あるプロセスがデータベースを更新している場合は その他のプロセスによるアクセスは全て許されない。 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  47. 47. 2.3.2 リーダライタ問題 ...Figure 2-21. A solution to the readers and writers problem. Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  48. 48. 2.3.2 リーダライタ問題 ...Figure 2-21. A solution to the readers and writers problem. Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  49. 49. Summary2.1 プロセス概論 – プロセスモデル, プロセスの生成/終了, プロセスの階層, 状態, 実装2.2 プロセス間通信 – 競合状態, クリティカルセクション, ビジーウェイトによる相互排除, スリープ/ウェイクアップ, セマフォ, ミューテックス モニタ, メッセージパッシング2.3 IPCの古典的問題 – 哲学者の食卓問題, リーダライタ問題 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  50. 50. 参考資料– Spin • 大学院講義科目 高信頼ソフトウェア – http://www.ueda.info.waseda.ac.jp/oess/RS2008/ • What is Spin? - Spin公式サイト – http://spinroot.com/spin/whatispin.html • Spin Online References - Spin公式サイト – http://spinroot.com/spin/Man/ Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  51. 51. OPERATING SYSTEMS DESIGN AND IMPLEMENTATION Third Edition ANDREW S. TANENBAUM ALBERT S. WOODHULL Chapter 2 Processes presented by Yohei Yasukawa 2009/04/30Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  52. 52. Outline2.1 プロセス概論 – プロセスモデル, プロセスの生成/終了, プロセスの階層, 状態, 実装2.2 プロセス間通信 – 競合状態, クリティカルセクション, ビジーウェイトによる相互排除, スリープ/ウェイクアップ, セマフォ, ミューテックス モニタ, メッセージパッシング2.3 IPCの古典的問題 – 哲学者の食卓問題, リーダライタ問題 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  53. 53. Outline2.1 プロセス概論 – プロセスモデル, プロセスの生成/終了, プロセスの階層, 状態, 実装2.2 プロセス間通信 – 競合状態, クリティカルセクション, ビジーウェイトによる相互排除, スリープ/ウェイクアップ, セマフォ, ミューテックス モニタ, メッセージパッシング2.3 IPCの古典的問題 – 哲学者の食卓問題, リーダライタ問題 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  54. 54. Outline2.1 プロセス概論 – プロセスモデル, プロセスの生成/終了, プロセスの階層, 状態, 実装2.2 プロセス間通信 – 競合状態, クリティカルセクション, ビジーウェイトによる相互排除, スリープ/ウェイクアップ, セマフォ, ミューテックス モニタ, メッセージパッシング2.3 IPCの古典的問題 – 哲学者の食卓問題, リーダライタ問題 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  55. 55. お詫びと訂正– ビジーウェイトによる相互排除 • 割込み禁止方式 • ロック変数方式 • 厳密な相互実行方式 • Petersonの解決方式 • TSL命令– 上述の方式は全てビジーウェイトによる相互排除 • CPU時間を浪費するので、避けるべき Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  56. 56. Outline2.1 プロセス概論 – プロセスモデル, プロセスの生成/終了, プロセスの階層, 状態, 実装2.2 プロセス間通信 – 競合状態, クリティカルセクション, ビジーウェイトによる相互排除, スリープ/ウェイクアップ, セマフォ, ミューテックス モニタ, メッセージパッシング2.3 IPCの古典的問題 – 哲学者の食卓問題, リーダライタ問題 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  57. 57. 2.2.5 セマフォ(復習)– セマフォ: 受け取ったウェイクアップ合図を正数変数に保存し、 後で使用する。 • Down操作: 値が0より大きいか検査し、大きければ1減らす。 値が0であれば、down操作を完了させずにスリープ。 • Up操作: 値を1増やし、down操作でスリープしているプロセス があれば起こす。 • 上述の操作はいずれもアトミックアクションとして 処理される Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  58. 58. 2.2.5 セマフォ– セマフォを2通りの用いる方法 1. 同期用のセマフォ – 汎用セマフォ » 2. 相互排除用のセマフォ – バイナリセマフォ » Mutex • Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  59. 59. Outline2.1 プロセス概論 – プロセスモデル, プロセスの生成/終了, プロセスの階層, 状態, 実装2.2 プロセス間通信 – 競合状態, クリティカルセクション, ビジーウェイトによる相互排除, スリープ/ウェイクアップ, セマフォ, ミューテックス モニタ, メッセージパッシング2.3 IPCの古典的問題 – 哲学者の食卓問題, リーダライタ問題 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  60. 60. 2.3 IPCの古典的問題– プロセス間通信においてよく知られている2つの問題 1. 哲学者の食卓問題 2. リーダライタ問題 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  61. 61. 2.3.1 哲学者の食卓問題    1965年にDijkstraによって考案された同期問題      ルール 1. 思考している 2. 左右のフォークを 取ろうとする 3. 成功すると食事 4. フォークを置き, 再び思考を始める 皆が同時にフォークを 取ろうとする場合 – デッドロック, 飢餓状態 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  62. 62. 2.3.2 リーダライタ問題– データベースへのアクセスをモデル化した問題– 用例:航空券の予約システム • 多数の競合するプロセスが読み書きを行う。 • 多数が同時にデータベースを読むことは容認。 • あるプロセスがデータベースを更新している場合は その他のプロセスによるアクセスは全て許されない。 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  63. 63. Summary2.1 プロセス概論 – プロセスモデル, プロセスの生成/終了, プロセスの階層, 状態, 実装2.2 プロセス間通信 – 競合状態, クリティカルセクション, ビジーウェイトによる相互排除, スリープ/ウェイクアップ, セマフォ, ミューテックス モニタ, メッセージパッシング2.3 IPCの古典的問題 – 哲学者の食卓問題, リーダライタ問題 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  64. 64. 2.2.8 メッセージパッシング– SendとReceiveの2つの基本構造を用いたプロセス間通信 • Send: 指定された送付先に対してメッセージを送信 • Receive: 送信元から送られるメッセージを受信– 設計上の問題 • メッセージを見失った場合 – 受信者からの受領確認メッセージ • 受領確認メッセージを見失った場合 – 各メッセージに通し番号を振る • 認証の問題 – 通信相手が本物かどうか • パフォーマンスの問題 – 送信者と受信者が同じマシンの場合 Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  65. 65. 2.2.8 メッセージパッシング– メッセージパッシングによる生産者消費者問題 • Mail-box: 指定した数のメッセージを貯める場所 – Send, Receiveの引数にメールボックスの住所を指定 • Cf. Rendezvous方式 – 中間でのバッファリングを行わず、直接メッセージをコピー – Receive前にsendが発行された場合、 Receiveが発行されるまでブロックされる Tanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8
  66. 66. 2.2.8 メッセージパッシングTanenbaum & Woodhull, Operating Systems: Design and Implementation, (c) 2006 Prentice-Hall, Inc. All rights reserved. 0-13-142938-8

×