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

1. URL
2. 担当教員
3. 講義目的
4. 到達目標
5. 授業方法
6. 参考書
7. 成績評価
8. スケジュール
9. 大崎が担当する科目に共通の連絡事項・アドバイス
10. 1. オペレーティングシステムの概要
11. 2. CPU の原理
12. 3. プロセスとスレッド
13. 4. プロセス間通信
14. 5. スケジューリング (1)
15. 6. スケジューリング (2)
16. 7. 前半の総復習
17. 8. メモリ管理 (1)
18. 9. メモリ管理(2)

4. プロセス間通信

授業の流れ・チーム分けの方針・態度目標

2025-04-25 のものと同じ。

https://lsnl.jp/~ohsaki/lecture/os/2025/#12-1

内容目標

- プロセス間通信とは何かを理解し、他人に説明できるようになる。

- プロセス間通信によって何が実現できるかを他人に説明できるようになる。

- ミニ CPU の動作例を用いて、スレッドによる競合状態 (race condition) が発生する原理を理解できるようになる。

課題

資料

Inter-process communication
https://en.wikipedia.org/wiki/Inter-process_communication

Semaphore (programming)
https://en.wikipedia.org/wiki/Semaphore_(programming)

課題 1

以下の空欄 [ ア ]〜[ カ ] にあてはまる最も適切な語句を以下の (1)〜(15) から選べ。

プロセス間通信 (Inter-Process Communication; IPC) とは、 コンピュータ上で動作している [ ア ] 同士が情報を [ イ ] するための機能である。 コンピュータ上で動作しているプロセスは、 それぞれ [ ウ ] した [ エ ] を有しているため、 [ ア ] 同士が通信を行うためには、 [ オ ] が提供する何らかの仕組みを使用する必要がある。 代表的なプロセス間通信として、 [ エ ] の一部を複数の [ ア ] で共有する [ カ ] が挙げられる。

(1) アドレス、 (2) オペレーティングシステム、 (3) コンパイル、 (4) スレッド、 (5) ファイルサーバ、 (6) プロセス、 (7) マルチタスキング、 (8) メモリ空間、 (9) ユーザ、 (10) レジスタ、 (11) 交換、 (12) 保存、 (13) 共有メモリ、 (14) 実行、 (15) 独立

課題 2

実現のためにプロセス間通信が不可欠なものをすべて答えよ。

1. バックアップソフトウェア
2. プリエンプティブ・マルチタスキング
3. 複数プロセスの同期実行
4. 並列アルゴリズムの実装
5. 分割コンパイル

課題 3

資料: ミニ CPU の動作例 E6: 競合状態 (race condition) が発生する例 (2 スレッド版)
https://lsnl.jp/~ohsaki/lecture/os/2025/priv/mini-cpu-ipc.pdf

プリエンプティブ・マルチタスキングによる資料中の E6 (2 スレッド版) の動作を、 「ミニ CPU 係」と「オペレーティングシステム係」の 2 人がペアになってシミュレートせよ。

競合状態が発生しない場合と、 競合状態が発生する場合の両方をシミュレートせよ。

課題 4

スレッド同士であれば、 プロセス間通信 (より正確には「スレッド間通信」) が簡単に実現できるのはなぜか。

略解

課題 1

ア: (6) プロセス

イ: (11) 交換

ウ: (15) 独立

エ: (8) メモリ空間

オ: (2) オペレーティングシステム

カ: (13) 共有メモリ

※ なぜこれら以外の語句が適切でないかを論理的に説明できるようにせよ。

課題 2

4 のみ。

3 はシステムクロックを使って実現はできる (ので、 不可欠ではない)。

5 は分割したものを一つずつ順番にコンパイルすれば実現できる (ので、 不可欠ではない)。

※ 4 のみが正解であることを論理的に説明できるようにせよ。

課題 3

省略

課題 4

メモリ空間を共有しているため、 そもそもデータ領域を共有しているから。

レポート課題 2025-05-02

「レポート課題 2025-04-11」と同じ。

https://lsnl.jp/~ohsaki/lecture/os/2025/#10-10

質問

- Semaphore を用いたプロセス間通信の制御を行うときに、一つのプログラムで正常にリソースの解放が行われなかった場合、影響を受ける他のプログラム結果はどうなるのでしょうか?

blocked 状態に入ったままになります (普通のプログラムであれば一定時間でタイム
アウトし、エラー処理を実行します)。

- 課題2で4のみが正解なのは、4では演算結果などの次の処理で必要な情報を渡す必要があるが、3ではその必要ないから(システムクロックでも制御できる)ということなのでしょうか。

  はい。「6/1(日)の正午にみんなでカレーを食べよう」とあらかじめ約束していれば、
  複数人で同期してカレーを食べられるのと同じです。


[<12. 3. プロセスとスレッド] [>14. 5. スケジューリング (1)]