1. 解説 (40 分)
2. グループワーク (30 分)
3. オペレーティングシステム CTF (10 分)
4. グループワーク (10 分)
5. リフレクションシート記入 (10 分)
2025-04-11 のものと同じ。
https://lsnl.jp/~ohsaki/lecture/os/2025/#10-1
- プロセスの状態遷移図を描き、なぜそうなるかを他人に説明できるようになる。
- ミニ CPU の動作を手作業でトレースすることにより、「プロセス」と「スレッド」の違いを理解する。
- プロセスとスレッドの原理から、それぞれの利点・欠点を理解する。
プロセスの状態が running から waiting に遷移するのはどの場合か。
+--------------->
|
+-----------+
+----->| running |-----+
| +-----------+ |
v v
+-----------+ +------------+
----->| waiting |<----------| blocked |
+-----------+ +------------+
1. プロセスが生成された。
2. プロセスが終了した。
3. プロセスが入出力要求を行った。
4. 入出力要求による処理が完了した。
5. より優先度の高いプロセスが waiting 状態となった。
課題 1 におけるプロセスの状態遷移図では、 状態数が 3 であるため、 合計 6 (= 3 x 2) 通りの遷移が考えられる。 状態遷移図に 4 通りの遷移しか示されていないのはなぜかを説明せよ。
以下の資料を読み、 2025-04-18 の課題 3 と同じように、 資料中の E4 (2 スレッド版) および E5 (2 プロセス版) におけるプリエンプティブ・マルチタスキングの動作を、 「ミニ CPU 係」と「オペレーティングシステム係」の 2 人がペアになってシミュレートせよ。
資料: 「ミニ CPU」 によるスレッドとプロセスの理解
https://lsnl.jp/~ohsaki/lecture/os/2025/priv/mini-cpu-process.pdf
課題 3 におけるスレッドとプロセスのトレース結果をもとに、 スレッドの利点・欠点が以下のように説明される理由を説明せよ。
Threads vs processes
https://en.wikipedia.org/wiki/Thread_%28computing%29#Threads_vs_processes
- Lower resource consumption of threads
- Simplified sharing and communication of threads
- Thread crashes a process
5
※ 5 が正解であること、 それ以外が正解でないことを論理的に説明できるようにせよ。
blocked → running: blocked 状態は OS のスケジューリング対象ではないから
waiting → blocked: waiting 状態では OS に入出力を要求できないから
省略
- Lower resource consumption: E4 (2 スレッド版) では 「ノート」(メモリ) を切り替える必要がないから。
- Simplified sharing and communication: E4 (2 スレッド版) では 「ノート」上の値を 2 つのスレッドが共有できるから。
- Thread crashes a process: E4 (2 スレッド版) では一方のスレッドが他方のスレッドが使う「ノート」を破壊できるから。
[授業中に使用] オペレーティングシステム CTF (パスワードが必要です)
https://lsnl.jp/~ohsaki/lecture/os/2025/priv/ctf.html
「レポート課題 2025-04-11」と同じ。
https://lsnl.jp/~ohsaki/lecture/os/2025/#10-10
- runningになったプロセスがrunning→blocked→waitingに遷移する時は、プロセス内のスレッドが全く実行されないのか、それともスレッドの実行途中でもblockedに遷移されることがあるのでしょうか。
スレッドはプロセスの一部です。プロセスが blocked 状態の時はスレッドも停止し
ます。
山田家 (プロセス) に、長男の山田一郎 (スレッド 1) と次男の山田次郎 (スレッド
2) がいるようなものです。山田家 (プロセス) が活動していない時は、一郎 (スレッ
ド 1) と次郎 (スレッド 2) も活動していません (活動できません)。
- 席移動までの40分間の時間で、これからやる課題を解くにあたってのヒントをもう少し具体的にお願いしたいです。席移動してからお互い分からなさすぎて話し合えない事が多いので。
グループワークの時間を確保したいので、アクティブラーニングで解決してください。
つまり、わからないことがあれば (グループワークの早い段階で) わかっている人を
探して教えてもらってください。
- CTFの問題と解答をセットで何度もチャレンジできると(そして問題がどんどん増えていくと)ゲーム感覚で学習が進んでいいなと思いました。
- 次の授業も色んな人とお話ししながら学んでいきたいと思います。
- プロセスとスレッドについて、そのどちらの方式を用いるかは自動で決めることができるのかあるいは何によって決まるのかが気になりました。
将来的にそういうプログラミング言語ができるかもしれませんが、現状はプロセスを
使うかスレッドを使うかはプログラマが決めます (プログラムをどう設計するかで決
まります)。
[<11. 2. CPU の原理] [>13. 4. プロセス間通信]