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

URL

  講義ページ (単一ページ版)
  http://www.lsnl.jp/l/os

  講義ページ (複数ページ版 (モバイル端末向け)、各回の資料のみ)
  https://lsnl.jp/~ohsaki/lecture/os/2022/toc.html

  受講者専用ページのパスワード (以下のページに書かれています)
  http://ist.ksc.kwansei.ac.jp/~ohsaki/lecture/os/2022/

  [授業中に提出] リフレクションシート (パスワードが必要です)
  https://lsnl.jp/cgi-bin/lecture/reflection?class=os

  [自習後に提出] レポート送信フォーム (パスワードが必要です)
  https://lsnl.jp/cgi-bin/lecture/report?class=os

  講義ビデオ (パスワードが必要です)
  http://www.lsnl.jp/video/os/2022/

担当教員

  大崎 博之
  関西学院大学 工学部 情報工学課程
  E-mail: os-staff[atmark]lsnl.jp

講義目的

コンピュータの基本ソフトウェアであるオペレーティングシステムの概念と、 その原理を学ぶ。オペレーティングシステムの歴史、プロセスとスレッド、デッ ドロック、メモリ管理、入出力、ファイルシステムなど基本的な概念に加えて、 マルチメディア処理、マルチプロセッサシステム、セキュリティなど最近のト ピックについても学ぶ。

到達目標

オペレーティングシステムの基本的な概念が理解できるようになる。

授業方法

まず、オペレーティングシステムに関する技術のエッセンスを説明する。その 後、それらの技術が、現在広く利用されているオペレーティングシステムにど のように実現されている (もしくは実現されていない) かを解説する。オペレー ティングシステムを、学術的な観点と、実践的な観点の両方から学ぶため、非 常に興味を持って取り組めるであろう。

【オンライン受講生対象】 オンラインでの受講を許可された学生に対しては、講義ビデオのオンデマンド 配信で対応します。掲載場所: https://lsnl.jp/~ohsaki/lecture/os/2022/ (試聴パスワードは担当教員 (ohsaki[atmark]kwansei.ac.jp) に問い合わせて ください)。

参考書

Andrew S. Tanenbaum 『モダンオペレーティングシステム第 2 版』 (ピアソ ン・エデュケーション・ジャパン、2004 年)

成績評価

授業中試験 40%、平常リポート 60%

スケジュール

  2022 年度 オペレーティングシステム講義スケジュール (予定)

  2022/ 4/ 8 オペレーティングシステムの概要
  2022/ 4/15 CPU の原理
  2022/ 4/22 プロセスとスレッド
  2022/ 5/ 6 プロセス間通信
  2022/ 5/13 スケジューリング (1)
  2022/ 5/20 スケジューリング (2)
  2022/ 5/27 中間試験 → 前半の総復習
  2022/ 6/ 3 メモリ管理(1)
  2022/ 6/10 メモリ管理(2)
  2022/ 6/17 入出力 (外部 I/O)
  2022/ 6/24 入出力 (ユーザインターフェース
  2022/ 7/ 1 ファイルシステム
  2022/ 7/ 8 マルチメディア処理
  2022/ 7/15 中間試験

Kwanseiコンピテンシー

  Kwanseiコンピテンシー
  https://www.kwansei.ac.jp/about/kg_competencies

大学の講義・演習とは

  教育基本法
  https://www.mext.go.jp/b_menu/kihon/about/mext_00003.html

  (学校教育)
  第六条の 2
  前項の学校においては、教育の目標が達成されるよう、教育を受ける者の心身
  の発達に応じて、体系的な教育が組織的に行われなければならない。この場合
  において、教育を受ける者が、学校生活を営む上で必要な規律を重んずるとと
  もに、自ら進んで学習に取り組む意欲を高めることを重視して行われなければ
  ならない。

  (大学)
  第七条
  大学は、学術の中心として、高い教養と専門的能力を培うとともに、深く真理
  を探究して新たな知見を創造し、これらの成果を広く社会に提供することによ
  り、社会の発展に寄与するものとする。

→ 必要な規律を重んずること、自ら進んで学習に取り組むことが大切。大学は、専門 的能力を培うとともに、深く真理を探究する場所である。

  大学設置基準
  http://www.mext.go.jp/b_menu/shingi/chousa/koutou/053/gijiroku/__icsFiles/afieldfile/2012/10/30/1325943_02_3_1.pdf

  (単位)
  第二十一条の 2
  前項の単位数を定めるに当たつては、一単位の授業科目を四十五時間の学修を
  必要とする内容をもつて構成することを標準とし、授業の方法に応じ、当該授
  業による教育効果、授業時間外に必要な学修等を考慮して、次の基準により単
  位数を計算するものとする。
  一 講義及び演習については、十五時間から三十時間までの範囲で大学が定める
  時間の授業をもつて一単位とする。
  二 実験、実習及び実技については、三十時間から四十五時間までの範囲で大学
  が定める時間の授業をもつて一単位とする。ただし、芸術等の分野における個
  人指導による実技の授業については、大学が定める時間の授業をもつて一単位
  とすることができる。

→ 2 単位の講義・演習では、90 時間の学修を必要とするので、67.5 時間の予習・復 習が必要になる。

教育方針

  × 単位を取るコツを教える
  ○ 知的好奇心を刺激する

  × ツールの使い方を教える
  ○ 概念を教える

  × 知識を伝える
  ○ 自分で学ぶ方法を教える

  × 教員が主役
  ○ 受講生が主役

  本当にこの授業を受講したいか? 自分自身で考えて決めてほしい。

  受講する場合
  → すべての授業に遅刻せず出席し、主体的に学習する
     学習共同体なので、他の人に対しても責任を負う
     出席するに値する授業になっていなければ大崎に知らせる



1. オペレーティングシステムの概要

授業の流れ

  1. 解説 (30 分)
  2. グループワーク (55 分)
  3. 確認テスト (10 分)
  4. 採点・リフレクションシート記入 (5 分)

チーム分けの方針

  - いろいろな人とチームになる
  - チームの人数は自由に決めてよい

態度目標

  - しゃべる
  - 質問する
  - 説明する
  - 動く (立ち歩く)
  - チームで協力する
  - チームに貢献する

内容目標

- オペレーティングシステムとは何かを他人に説明できるようになる。

- シングルタスク型とマルチタスク型のオペレーティングシステムの違いを他人に説明できるようになる。

- オペレーティングシステムにおけるプリエンプティブ・マルチタスキングの概要を他人に説明できるようになる。

- パソコンやスマートフォンに搭載されているオペレーティングシステムの種別を確認できるようになる。

課題

注意: Wikipedia 日本語版およびブログ等を情報源として用いてはならない。

英語が苦手な人へ: 英語のトレーニングも兼ねて、日頃から英語の文献を読む ことをおすすめします。英語を読み続けるのがつらい場合は、日本語の文献を 探すのではなく、機械翻訳 (DeepL がおすすめ) を使いましょう。

  DeepL
  https://www.deepl.com/translator

課題 1

オペレーティングシステム (operating system) とは何かを説明せよ。

  参考資料

  ---- JIS X0001 04.08
  operating system:プログラムの実行を制御するソフトウェアであって,資源割振り,スケジューリ
  ング,入出力制御,データ管理などのサービスを提供するもの.〈備考〉オペレーティングシステム
  は,ソフトウェアが主体であるが,部分的にハードウェア化することも可能である.

  ---- エンカルタ'05: オペレーティング・システム [Operating System]
  オペレーティング・システム Operating System コンピューターの基本ソフトウェア。OSと略され
  ることが多い。本来は、コンピューターを動作させるために必要な最小限のソフトウェア。メモリー、
  CPUの処理時間、ディスク、周辺機器などのハードウェアの割り当てや、その使用を管理する。ワー
  ドプロセッサーやスプレッドシートのようなアプリケーションを建物とすると、オペレーティング・シ
  ステムは、土台にあたるものである。

  ---- 広辞苑5: オペレーティング-システム【operating system】
  コンピューターで、利用者とハードウェアの間にあって、利用者がコンピューター-システムをで
  きるだけ容易に使うことができるようにするための基本的なソフトウェア。OS

  Operating system
  https://en.wikipedia.org/wiki/Operating_system

課題 2

シングルタスク型 (single-tasking) とマルチタスク型 (multi-tasking) の オペレーティングシステムの違いを説明せよ。

  参考資料

  Types of operating systems
  https://en.wikipedia.org/wiki/Operating_system#Types_of_operating_systems

課題 3

パソコンやスマートフォン等の上で、複数のプログラムを同時に実行できる (ように見える) のはなぜかを説明せよ。

  参考資料

  Computer multitasking
  https://en.wikipedia.org/wiki/Computer_multitasking

課題 4

自身が所有しているパソコンもしくはスマートフォンに搭載されているオペレー ティングシステムの正確な名称およびバージョンを実際に確認せよ。確認方法 と、確認によって判明したオペレーティングシステムの名称およびバージョン を答えよ。

  参考資料

  Check & update your Android version
  https://support.google.com/android/answer/7680439?hl=en

  Find the software version on your iPhone, iPad, or iPod
  https://support.apple.com/en-us/HT201685

  How do I determine the OS version at runtime in OS X or iOS (without using Gestalt)?
  https://stackoverflow.com/questions/11072804/how-do-i-determine-the-os-version-at-runtime-in-os-x-or-ios-without-using-gesta

  How can I check the system version of Android?
  https://stackoverflow.com/questions/3093365/how-can-i-check-the-system-version-of-android

レポート課題 2022/4/8

授業終了後に自習を行い、 到達目標まで到達せよ。 疑問に思った点、 わからない点は各自で信頼できる文献を用いて調査せよ。

その後、「今週の作業内容」、 「『内容目標』をどの程度達成できた/できなかったか」、 「質問・要望・コメント」、 「感想」を「オペレーティングシステム」レポート送信フォームから送信せよ。

提出方法: 「レポート送信フォーム」から送信せよ。 レポートが正しく提出されると、レポートの控えが自身のメールアドレス宛に送信される。 レポートの控えは成績発表まで保存しておくこと。 レポートが再提出された場合は、 新しいほうを採点対象とする。

提出期限: 次回の授業開始の 48 時間前とする (例えば、 4/8(金) の課題であれば、 4/15(金) 5:05pm の 48 時間前である 4/13(水) 5:05pm)。 期限を過ぎたものは受理しない。

注意事項: 「質問・要望・コメント」は匿名にした上で公開する (講義ページに掲載する)。 公開されて困る内容は「質問・要望・コメント」等に含めないこと。 個人的な質問・相談等は「感想」の覧に記入せよ。

レポート課題の内容について

大学の授業の授業時間そのものは 100 分だが、 授業開始前に 100 分予習し、 授業終了後に 100 分の復習をすることが想定されている。

  大学設置基準
  https://lsnl.jp/~ohsaki/lecture/os/2022/#9

したがって、 各回の授業終了後に、 100 分程度の自習を行い、 自習した内容と、 その結果「内容目標」への理解がどの程度深まったかをレポート送信フォームから報告せよ。

授業終了後に自習する目的は、 (1) 各回で学んだ内容への理解を定着させること、 (2) 各自の興味に基づき、 各回の「内容目標」への理解を深めることである。 授業終了時点での理解度や達成度、 また、 各回の内容に対する興味は人によって異なるため、 全員に一律の自習内容を課さない。 授業中だけでなく、 自習も通じて各自の Kwansei コンピテンシーを高めよ。

  Kwanseiコンピテンシー
  https://www.kwansei.ac.jp/about/kg_competencies

自習の例として、 情報収集・文献調査・演習問題への取り組み・実験・他者との議論などが挙げられるが、 「何を、 なぜ、 どのように取り組むか」は各自の興味や特性に応じて自由に設定せよ。

ただし、 レポート送信フォームの記入も含めた自習時間は 100 分を目安とする。 リフレクションシートは短時間で記入するために多くの分量は求めないが、 レポート課題のレポートには 100 分の自習にふさわしい内容・分量とせよ。

特に、 「今週の作業内容」と「『内容目標』をどの程度達成できた/できなかったか」には 100 分の自習にふさわしい粒度で具体的に記入せよ。 何をどのように書けばよいかは、 まず、 それぞれについて 5W1H を考えるとよい。

  5W1H
  - いつ (what)
  - どこで (where)
  - 誰が (who)
  - 何を (what)
  - なぜ (why)
  - どのように (how)

情報収集や文献調査の場合は、 必ず「信頼できると考えられる情報源」を使用すること。

質問

- 授業冒頭に画面に表示されていたターミナル (?) はどのようなものを使われていますか? MacBookでは、見たことがないものでしたので気になりました。また、文字も少し変わっているように思えました。

  ターミナルエミュレータは rxvt-unicode です。フォントは自作です。

- 先生に話しかけてもいいですか?

  はい。

- 中間試験では、どのような内容の問題が出題されますか。記述式ですか、選択式ですか。授業の内容を理解していれば十分点数は取れますか。

  未定です。授業の内容を理解していれば当然合格します。

- 大崎教授が講義で利用していたPCのような、OSなどを自らの好むものにすることに憧れていますが何から手を付ければよいか詳細がわかりません。そういったカスタムを行う上で、とりあえずしてみるべきことや必要な知識を得るためにおすすめの書籍などはありますでしょうか。

  3 年生なら大崎研の領域実習を受講してください (一通り学べます)。2 年
  生なら個別に教えますので声をかけてください。

- 日本語版Wikipediaと英語版Wikipediaの違いは何ですか?

- なぜ、Wikipedia 日本語版を情報源として用いてはいけないのでしょうか?

  多数の誤りが含まれている、レベルの低い情報源だからです。

- なぜ英語版のウィキペディアだと信頼できるのでしょうか?

  英語版の Wikipedia のすべてのエントリが信頼できる訳ではありません。
  多数の執筆者でチェックされたページはそれ相応の信頼度になっています。

- ネット上にある「IT用語辞典」というサイトは信頼していいサイトなんでしょうか? これもブログの一種なのでしょうか?

  (1) 一次資料か、(2) 執筆者は誰か、(3) 複数の目でチェックされているか、
  という観点でチェックしてください。すべて No なら普通は「信頼できない」
  情報源です。例えば、「オペレーティングシステム」の項をざっとチェック
  しただけで 10 以上の誤りが見つかりました。

  オペレーティングシステム
  https://e-words.jp/w/OS.html

- オペレーティングシステムの資源割振りとはどういう意味ですか。

  オペレーティングシステムが、それぞれのプロセスに、さまざまな資源
  (CPU、メモリ、ストレージ、デバイス等) を、いつ、どれだけかを決めて割
  り振る、ということです。

- 添付ファイルは空白で大丈夫なのでしょうか。

  はい。

- 説明を受けたのですが、確認として、(1) 授業が終わった当日にリフレクションシートで提出、(2) 授業が始まる二日前までにレポート課題で提出、ということであっていますか?

  おおよそ合ってます。リフレクションシートは授業終了までに提出してください。

- リフレクションシートの空白欄が各時間が5分に対して多いように感じてしまいました。リフレクションシートや授業終わりのレポートはどのくらい記述するのが目安になりますか?

  5 分で可能な限り詳しく記述することを期待しています。ぜひ、入力を高速
  化してください (タッチタイピング、高速入力できる IME の使用、音声入
  力など)。

- スマートフォンやパソコンのバージョンアップはこまめにするべきですか?

  一般論としては Yes です。リリースされたらすぐアップデートしましょう。

要望

- 正しい情報を手に入れる力が不十分であるので、調べ方を教えてほしい。

  「悪い人に騙されないために、どうすればいいか?」と同じで、簡単なこと
  ではありません。(1) 一次資料で、(2) 執筆者が明らかで、(3) 複数の目で
  チェックされていると思えるもの、が一つの目安です。

- グループワークそのものは良い取り組みだと思います。ただ、何も考えがまとまってない状態から話し合いを始めるのは難しかったので、次の講義ではグループワークの前に自分の中で考えをまとめる時間を設けてもらえると嬉しいです。

- 話し合う時間が少し長く感じました。

- 話し合い時間が長めに感じられました。

  グループワークの時間を何にどれだけ使うかも含めてみなさんに任せます。
  「55 分間議論し続けないといけない」といった制約はありません。

- 確認テストの模範解答を表示する際などに, モニターに表示される文字が小さく少し見づらく感じたので, 可能でしたら文字を大きく表示していただきたいです.

- 後ろのモニターの文字が少し小さくて見にくい。

- 後ろの方だと資料が見えにくいです。

  指摘ありがとう。工夫してみます。

- オペレーティングシステムはなくてもパソコンを動かすことが可能かどうかということを知りたいです。

  もちろん可能です (電源を投入した時点で動作しています)。

- 知らない人と話してみたいので勝手に席替えしてほしいです!

  毎回、違う場所に座ることをおすすめします。

- 次回からもグループワークを通じて講義内容について考えたり、知識を得たりできるような授業を受けていきたいです。

- アクティブラーニングは定着率が高いということがわかった。今学期は是非このような授業形態で講義を進めていってほしいと思った。

- このまま話し合いの時間を設けて講義を続けてほしいです。

  同じような形式を続ける予定です。

- 毎回の授業の課題について、自分の考えた解答が合っているか確認するためにも、すべての課題の解答例を提示していただくことはできないでしょうか?

  解答例があるものは示します。が、「問題にはそれぞれ正解がある」ことを
  期待しないでください (現実の問題の多くには「正解」が存在しません)。

コメント

- 面白い授業だった。

- プリエンプティブ・マルチタスキングについて難しかったのでこれから勉強して理解を深めたい。

- グループワークで他人と意見を交換することにより、課題に対する理解がより深まってよかったと思いました。

- 複数プログラムの実行を簡易的に実演している説明がとても分かりやすかったです。

- 対面でのグループワークは初めてだったのでとても楽しかったです。

- なぜiPhoneとAndroidではOSが違うのかが気になりました。

- 様々な人と意見交流ができるので違う意見があったり目標に向かって課題解決していく形式がとても身になっていると思った。

2. CPU の原理

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

2022/4/8 のものと同じ。

https://lsnl.jp/~ohsaki/lecture/os/2022/#11-1

内容目標

- 簡単なプログラムに対して、ミニ CPU の動作をトレースできるようになる。

- ミニ CPU の動作を手作業でトレースすることにより、CPU の原理を理解する。

- ミニ CPU とオペレーティングシステムの動作をシミュレートすることにより、プリエンプティブ・マルチタスキングの原理を理解する。

課題

  資料: 「ミニ CPU」によるコンピュータおよびオペレーティングシステムの動作の理解
  https://lsnl.jp/~ohsaki/lecture/os/2022/for-students/mini-cpu.pdf

課題 1

資料中の E1 (12 + 34 = 46) の動作をトレースせよ。 各ステップにおける、 4 枚のカード (PC、 A、 B、 C) の値と、 ノート 5 行目の値の変化を書き出せ。

  略解
  | PC |  A |  B | C | 5行目の値 |
  |----+----+----+---+-----------|
  |  0 |  0 |  0 | 0 |         0 |
  |  1 | 12 |  0 | 0 |         0 |
  |  2 | 12 | 34 | 0 |         0 |
  |  3 | 46 | 34 | 0 |         0 |
  |  4 | 46 | 34 | 0 |        46 |
  |  4 | 46 | 34 | 0 |        46 |
  |  4 | 46 | 34 | 0 |        46 |
  |  4 | 46 | 34 | 0 |        46 |
  |  4 | 46 | 34 | 0 |        46 |
  |  4 | 46 | 34 | 0 |        46 |

課題 2

資料中の E2 (1〜3 の和の計算) の動作をトレースせよ。 各ステップにおける、 4 枚のカード (PC、 A、 B、 C) の値と、 ノート 10 行目の値の変化を書き出せ。

  略解
  | PC |  A | B | C | 10行目の値 |
  |----+----+---+---+------------|
  |  0 |  0 | 0 | 0 |          0 |
  |  1 |  0 | 0 | 0 |          0 |
  |  2 |  0 | 1 | 0 |          0 |
  |  3 |  1 | 1 | 0 |          0 |
  |  4 |  1 | 1 | 0 |          0 |
  |  5 |  1 | 1 | 0 |          0 |
  |  6 |  1 | 2 | 0 |          0 |
  |  2 |  1 | 2 | 0 |          0 |
  |  3 |  3 | 2 | 0 |          0 |
  |  4 |  3 | 2 | 0 |          0 |
  |  5 |  3 | 2 | 0 |          0 |
  |  6 |  3 | 3 | 0 |          0 |
  |  2 |  3 | 3 | 0 |          0 |
  |  3 |  6 | 3 | 0 |          0 |
  |  4 |  6 | 3 | 0 |          0 |
  |  7 |  6 | 3 | 0 |          0 |
  |  8 |  6 | 3 | 0 |          6 |
  |  8 |  6 | 3 | 0 |          6 |
  |  8 |  6 | 3 | 0 |          6 |
  |  8 |  6 | 3 | 0 |          6 |

課題 3

資料中の E3 (1〜4 の積の計算) の動作をトレースせよ。 各ステップにおける、 4 枚のカード (PC、 A、 B、 C) の値と、 ノート 10 行目の値の変化を書き出せ。

  略解
  | PC |  A | B | C | 10行目の値 |
  |----+----+---+---+------------|
  |  0 |  0 | 0 | 0 |          0 |
  |  1 |  1 | 0 | 0 |          0 |
  |  2 |  1 | 1 | 0 |          0 |
  |  3 |  1 | 1 | 0 |          0 |
  |  4 |  1 | 1 | 0 |          0 |
  |  5 |  1 | 1 | 0 |          0 |
  |  6 |  1 | 2 | 0 |          0 |
  |  2 |  1 | 2 | 0 |          0 |
  |  3 |  2 | 2 | 0 |          0 |
  |  4 |  2 | 2 | 0 |          0 |
  |  5 |  2 | 2 | 0 |          0 |
  |  6 |  2 | 3 | 0 |          0 |
  |  2 |  2 | 3 | 0 |          0 |
  |  3 |  6 | 3 | 0 |          0 |
  |  4 |  6 | 3 | 0 |          0 |
  |  5 |  6 | 3 | 0 |          0 |
  |  6 |  6 | 4 | 0 |          0 |
  |  2 |  6 | 4 | 0 |          0 |
  |  3 | 24 | 4 | 0 |          0 |
  |  4 | 24 | 4 | 0 |          0 |
  |  7 | 24 | 4 | 0 |          0 |
  |  8 | 24 | 4 | 0 |         24 |
  |  8 | 24 | 4 | 0 |         24 |
  |  8 | 24 | 4 | 0 |         24 |
  |  8 | 24 | 4 | 0 |         24 |

課題 4

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

ミニ CPU 係の役割: 現在のカードセットを使って、 ミニ CPU の動作をひたすら実行する。 オペレーティングシステム係の指示に従ってカードセットを切り替える。 ただし、 カードセットを切り替えられるのはステップ 1 (PC カードに書かれている行番号の「指示」をノートから読み込む) の直前のみである。 つまり、 ステップ 1〜3 はまとめて一気に実行する (途中で切り替えられることはないアトミックな処理である)。

オペレーティングシステム係の役割: 自由なタイミング (例えば 10 秒ごと) で、 ミニ CPU に対して「はい、 カードセットを切り替えてください」と指示する。

レポート課題 2022/4/15

「レポート課題 2022/4/8」と同じ。

https://lsnl.jp/~ohsaki/lecture/os/2022/#11-6

質問

- 近くの人と話すと2回生が多いように感じたのですが、二回生以上の割合は大体どのようになっていますか?

  授業中に聞いてみます。

- 質問や要望は特になければ書かなくても大丈夫ですか?

  はい。

- どうしてPCは無限ループするのですか? 無限ループしないといけないのでしょうか。終了してはダメなのですか。

  「終了」するためには OS のシステムコールを呼び出す必要があります。
  「ミニ CPU」ではシステムコールを (まだ) 定義していないので「終了」で
  きません。終了できないので、代わりに無限ループさせています。

- 今回はミニCPUの動作をトレースしたが、実際のCPUはミニCPUの大体何倍程度の規模で動作していますか?

  CPU の動作クロックが 4 GHz なら、一秒間に 10 億命令くらい実行してい
  ます。従って、「10 億/(あなたが 1 秒間に実行できる命令数)」倍です。

  duckduckgo: how many clock cycles per instruction intel i7
  https://duckduckgo.com/?q=how+many+clock+cycles+per+instruction+intel+i7&ia=web

  Cycles per instruction
  https://en.wikipedia.org/wiki/Cycles_per_instruction

要望

- もう少し具体的な課題をいただいて取り組みたいです。

  みなさんが主体的に学ぶことを期待しています。以下を読んでください。

  レポート課題の内容について
  https://lsnl.jp/~ohsaki/lecture/os/2022/#12-7

- E3の8行目以降の動作が理解できなかったので説明をしてほしいです。E4について講義で改めて解説してほしいです。

  周りの人に聞いてみてください。

- 作業内容は課題と書かれているところの問題を書いて解くやり方であっていますか?

  いいえ。以下を見てください。

  レポート課題の内容について
  https://lsnl.jp/~ohsaki/lecture/os/2022/#12-7

- 複数の人間が執筆・文章チェックしているかどうかということはどのようにすればわかりますか.

  多くの場合、編集者・校正者が書かれています。その他にも、発信や出版の
  プロセスを調べればおおよそ分かります。

- OSのアップデートについて、バグがある場合があるからすぐするのは良くないと聞いたことがあるのですが、本当にすぐにしたほうがいいのでしょうか。以前、母がすぐにアップデートして不具合が出で、それ以来すぐアップデートするのを恐れています。

  一般論としては Yes です。常に、メンテナンスされているバージョンの最
  新版を使います (例えば、Windows 10 がメンテナンスされている間に、
  Windows 11 に移行すべきかはケースバイケースです)。

- マルチスレッドとマルチプロセスの違いは何でしょうか?

  今日 (4/22(金)) の講義で扱います。

- プリエンプティブ・マルチタスキングだと、処理が複雑であるように思うのですが、実際はその複雑さゆえのデミリットはあるのでしょうか。

  CPU 時間の何 % かをプロセスの切り替えのためだけに消費します。

- OSも一つのソフトウェアなら、割り込みの処理は、結局次OSが実行されるタイミングまで行われないということでしょうか

  どういう意味ですか?

- 一次資料であるかどうかはどのように判別できますか?

  定義通り、考案者/発明者/策定者/提案者が、資料の執筆者と同じかどうか
  で判定できます。関西学院大学の情報なら、関西学院大学が公式に発表して
  いる情報が一次資料です。Winodws の情報なら、マイクロソフトが公式に発
  表している情報が一次資料です。日本国内の著作権なら、著作権法や文化庁
  が公式に発表している情報が一次資料です。

コメント

- レポートの「今週の作業内容」に何を記入すればいいのかわからないです。

- レポート課題でなにをすればいいかがいまいち理解できていない。

  以下を見てください。

  レポート課題の内容について
  https://lsnl.jp/~ohsaki/lecture/os/2022/#12-7

- 人のお金稼ぎに騙されないようにしようと思った。

- チームでのディスカッションは対面だからこそできることなので、とてもいいなと思いました。

- 確認テストの際に文字が小さくて見えにくかったです。

  次回は、確認テストの問題も講義ページに掲載するようにしてみます。

- 講義資料がとても分かりやすかったです。

- 良い授業です。

  ありがとう。ただ、「良い授業だ」は、「私はあなたの授業の価値判断がで
  きるだけの (あなたより優れた) 人間だ」ということを意味します。(もし
  そういう意図ではないなら) 正しい日本語を使うようにしましょう。

- OSが必要とするシステム要件がどの様な目的をもって設けられているのかを考えたい。

- CPUの動作を確認することができ、面白かったです。

- トレースをすることでCPUがやっていることを疑似体験できて楽しかった。

- 実際に自分が手作業で体験するのとしないのとでは理解度が変わるような気がしました。

- 教室の窓が開けっ放しで寒いです。

  換気量を減らせないので、重ね着等で対応してください。

- CPUの原理を少しは理解できたと思う。

- 対面授業ならではのグループワークが非常に良いと思います。周りの人の意見を聞くことによって、理解が深まります。

- 様々な人と意見を交換できる講義はあまりない貴重な講義なので時間を大切に使いたいです。

3. プロセスとスレッド

授業の流れ

  1. 解説 (30 分)
  2. グループワーク (50 分) ← 5 分短縮
  3. 確認テスト (10 分)
  4. 採点・リフレクションシート記入 (10 分) ← 5 分延長

チーム分けの方針・態度目標

2022/4/8 のものと同じ。

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

内容目標

- プロセスの状態遷移図を描き、なぜそうなるかを他人に説明できるようになる。

- ミニ CPU の動作を手作業でトレースすることにより、「プロセス」と「スレッド」の違いを理解する。

- プロセスとスレッドの原理から、それぞれの利点・欠点を理解する。

課題

課題 1

プロセスの状態が running から waiting に遷移するのはどの場合か。

                          +--------------->
                          |
                    +-----------+
             +----->|  running  |-----+
             |      +-----------+     |
             v                        v
        +-----------+           +------------+
  ----->|  waiting  |<----------|   blocked  |
        +-----------+           +------------+

  1. プロセスが生成された。
  2. プロセスが終了した。
  3. プロセスが入出力要求を行った。
  4. 入出力要求による処理が完了した。
  5. より優先度の高いプロセスが waiting 状態となった。

  略解
  5
  ※ 5 が正解であること、それ以外が正解でないことを論理的に説明できる
  ようにせよ。

課題 2

課題 1 におけるプロセスの状態遷移図では、 状態数が 3 であるため、 合計 6 (= 3 x 2) 通りの遷移が考えられる。 状態遷移図に 4 通りの遷移しか示されていないのはなぜかを説明せよ。

  略解
  blocked → running: blocked 状態は OS のスケジューリング対象ではないから
  waiting → blocked: waiting 状態では OS に入出力を要求できないから

課題 3

  資料: 「ミニ CPU」 によるスレッドとプロセスの理解
  https://lsnl.jp/~ohsaki/lecture/os/2022/for-students/mini-cpu-process.pdf

以下の資料を読み、 2022/4/15 の課題 3 と同じように、 資料中の E4 (2 スレッド版) および E5 (2 プロセス版) におけるプリエンプティブ・マルチタスキングの動作を、 「ミニ CPU 係」と「オペレーティングシステム係」の 2 人がペアになってシミュレートせよ。

課題 4

課題 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

  略解
  - Lower resource consumption: E4 (2 スレッド版) では 「ノート」(メモリ) を切り替える必要がないから。
  - Simplified sharing and communication: E4 (2 スレッド版) では 「ノート」上の値を 2 つのスレッドが共有できるから。
  - Thread crashes a process: E4 (2 スレッド版) では一方のスレッドが他方のスレッドが使う「ノート」を破壊できるから。

レポート課題 2022/4/22

「レポート課題 2022/4/8」と同じ。

https://lsnl.jp/~ohsaki/lecture/os/2022/#12-6

質問

- 講義に関係のない世間話的な質問をすることは良くないでしょうか? やはり講義にある程度関係するものではないといけませんか?

  情報工学、大学生活、キャリア設計等に関するものであれば構いません。

- 次回の授業から知らない人の横に座らないといけないのは絶対ですか?

  私からの「提案」です。

- 多くのOSがあるが、全てのOSで同じ動きをしているのですか?

  どのレベルの話かによります。具体的に質問してみてください。

- 前々回の資料の中の2つのスレッドを共有したノートを使用しているものをプロセス版と書いていて前回の資料ではスレッド版と書いてあったのですが、スレッド版が正しいのですか。

  「プロセス」に明確な定義がある訳ではないので、「正しい/正しくない」
  という話ではありません (どちらも正しいと言えます)。4/22(金) の講義の
  文脈で言えば「スレッド版」が正しい表現です。

- 先生はIT用語でわからない単語が出た際などはどのように調べているのでしょうか?

  (どんな用語かにもよりますが) 多くの場合は、まず辞典を引きます。

- プロセスよりスレッドの方が細かいのはわかりましたが、シングルスレッドとシングルタスクではどちらの方が処理速度がはやいのでしょうか?

  状況によります。「ハサミと包丁のどちらが良く切れますか?」という質問
  と同じで、これだけでは答えられません。

- 中時間テストはどのような問題が出されますか。課題と同じような感じですか。

  未定です。試験や単位うんぬんより、ぜひオペレーティングシステムの中身
  に興味を向けてください。

- 今回「IT用語辞典バイナリ」というサイトを参考にしたのですがこのサイトは信頼できる情報源でしょうか。

  過去の質問への回答を見てください。

- プロセスとスレッドの、それぞれの利点・欠点があまり見えてこなかったのでどういう調べ方をすればいいのか教えていただきたい。

  良い教科書 (例えば https://lsnl.jp/~ohsaki/lecture/os/2022/#6) を読んでください。

- 授業中課題の予習をしてくるのはいけないでしょうか。

  もちろん「良い (望ましい)」ことです。

- 意味を説明する問題は暗記することは適切ですか?

  きわめて不適切です (最も効率の低い学習法です)。

- プロセスの状態遷移について様々なサイトを調べると、waitとBlockedは同じ場所で使われており、実行可能状態のことをReadyとされていたのですが、この授業のwaitはReadyと同じものととらえて大丈夫でしょうか?

  大丈夫かどうかはその資料を見ないと判断できません (信頼できる情報 *だ
  け* を使いましょう)。waiting 状態は ready 状態と呼ばれることもありま
  す。

要望

- 先生の説明はわかりやすいので、もう少し聞きたいです。

  私ももっと説明したいです。

- 授業のサイトを開いた際に、下までスクロールする必要があるので、授業回ごとにサイトを分けて欲しいです。

 講義ページ (複数ページ版 (モバイル端末向け)、各回の資料のみ) を作成しました。
  https://lsnl.jp/~ohsaki/lecture/os/2022/#1

- blocked の説明をもう一度聞きたい。

  毎回の解説は収録したものをアップロードしてあります。

  URL
  https://lsnl.jp/~ohsaki/lecture/os/2022/#1

- スレッドが利用される時と、プロセスが利用される時の例が知りたい。

  「良い」教科書を読んでください。

コメント

- 調べて出てきた知らない単語について調べたりすることにより、新たにいろいろな事を知ることが出来た。マルチスレッドプログラミングについても調べたが、難しかったのでより理解を深めたいなと思いました。

- 次回は知らない人と話さなければならない。私にとって少々酷だが、頑張りたい。

- 周りの人たちの意見を交換することで他の授業では味わえない楽しさがあるのでとてもこの授業を楽しみにしている自分がいます。もっといろんな人と話せるように頑張っていきます。

- いつも同じ友達と話しているので、次は違う人に話しかけてみようと思った。

- スレッドの利点・欠点を理解できたことで利点・欠点のどちらにもなる点が存在することがわかり、興味深いなと感じた。

4. プロセス間通信

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

2022/4/22 のものと同じ。

https://lsnl.jp/~ohsaki/lecture/os/2022/#14-1

内容目標

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

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

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

課題

※ リフレクションシートの URL を変更しています。 必ず新しいフォームから提出してください。

  URL
  https://lsnl.jp/~ohsaki/lecture/os/2022/#1

課題 1

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

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

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

  略解
  ア: (6) プロセス
  イ: (11) 交換
  ウ: (15) 独立
  エ: (8) メモリ空間
  オ: (2) オペレーティングシステム
  カ: (13) 共有メモリ
  ※ なぜこれら以外の語句が適切でないかを論理的に説明できるようにせよ。

課題 2

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

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

  略解
  4 のみ
  3 はシステムクロックを使って実現はできる (ので、不可欠ではない)。
  5 は分割したものを一つずつ順番にコンパイルすれば実現できる (ので、不可欠ではない)。
  ※ 4 のみが正解であることを論理的に説明できるようにせよ。

課題 3

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

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

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

課題 4

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

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

レポート課題 2022/5/6

「レポート課題 2022/4/8」と同じ。

https://lsnl.jp/~ohsaki/lecture/os/2022/#12-6

※ レポート送信フォームの URL を変更しています。 必ず新しいフォームから提出してください。

  URL
  https://lsnl.jp/~ohsaki/lecture/os/2022/#1

質問

- 資料:ミニCPUの動作例E6:競合状態(race condition)が発生する例(2 スレッド版)の一番最後の内容で、"プリエンプティブ・マルチタスキングのオペレーティングシステムでは、オペレーティングシステムに何らかの手助けをしてもらわない限り、スレッドの競合状態は回避できない。"とありますが、この"何らかの手助け"とは、例えばどのようなことが挙げられるのでしょうか。

  割り込みを禁止してもらう (プロセスの切り替えをしないようにしてもらう)、
  オペレーティングシステムが提供するセマフォやミューテックスなどの機構
  を使うなど、複数の方法があります。詳しくは「モダンオペレーティングシ
  ステム」を読んでみてください。

- オペレーティングシステムの知識があまりない人は、知識を増やすためにはネットで信頼できるサイトを見つけるか本を用いて調べるかどちらがいいと思いますか。

  圧倒的に後者です (まったく勝負になりません)。ネットの情報の多くはむ
  しろ有害です。残念ながら、junk in, junk out になっている人が大半です。

- 授業時間外に提出したリフレクションシートは、提出していないものとして見なされるのでしょうか?

  はい。授業中に説明した通り、当日の夜までに提出されたものは受理します。

- GeeksforGeeksのようなソースコードを公開しているがそのサイトに広告がある場合、一次資料としてとらえてもいいでしょうか?

  何の一次資料ですか? (何らかの一次資料が含まれているのでしょうか?)

  例えば、最短経路問題の解法である Dijkstra 法の 1 次資料は Dijkstra
  が 1959 年に発表した論文です。Dijkstra の 1959 年の論文を読んで書か
  れた (例えば) 英語の教科書が 2 次資料です。そういった英語の教科書を
  読んで勉強した日本人が日本語で書いた教科書が 3 次資料です。そういっ
  た日本語の教科書を読んで勉強した日本人が日本語で書いた PowerPoint の
  スライドが 4 次資料です。そういったスライドで勉強した学生がどこかの
  ブログに書いた記事が 5 次資料です (どういった種類の資料を N 次と呼ぶ
  かは定まっていませんので、あくまで一つの例です)。

  上の分類で言えば、Wikipedia 日本語版は 4〜5 次のレベル、Wikipedia 英
  語版は 2〜3 次のレベルだと思います。

- 授業後の自習用レポートに次の授業の予習として調べたことをまとめても良いのですか

  いいえ。以下を読んでください。もちろん、予習をすること自体は非常に良
  いことです。

  レポート課題の内容について
  https://lsnl.jp/~ohsaki/lecture/os/2022/#12-7

要望

- もう少し資料が欲しいです

- 次週講義の際に、共有メモリ以外のプロセス間通信がどのように行われているのかを大崎教授からご教示いただきたく存じます。

  図書館にあるオペレーティングシステムの本を読んでみてください。

- 各課題の答えが常に見えるようになっているので、講義の最後の方にまとめるなどして見えないようにしていただけると、最初に自分で考えることができるので、とても助かります。

  なるほど。略解を分けて書いてみました。

- アクティブラーニングの授業は今までに無い学びを体験できます。しかし、先生が持っている知識を私たちが知る場面は少なくなってしまいます。先生が培ってきた知識も私は知りたいです。

  そうですね。講義スタイルの授業もどこかで取り入れましょうか?

- シミュレーションタイプは理解が深まるので今後もお願いします。

  その回のテーマによりますが、そういう課題が作れるか考えます。

コメント

- 最初は、こういったコンピュータの構造を理解するのは難しいですが、理解できるととても面白いです。コンピュータの仕組みを理解しようとするのは難しいですが、わかるととても面白いです。

- 引用した本の中に、1年の時にコンピュータアーキテクチャで学んだ内容なども載っていて今回の授業内容以外の事についても復習が出来た。今回、自習を行う事により他にも色々な内容について本で学びたいと思った。

- 小テストの内容がよい復習になって良かったです。

- どんなゲームか楽しみです。

- 次回の授業でやるのがどんなゲームか楽しみです。

- 内容目標と課題レポートがにているととても理解が深まった。

- 競合状態が、ややこしく感じました。

- 復習したいので最初の解説で何か講義資料などを作っていただけないでしょうか。

- 全く知らない人たちの近くに座ったら誰とも話すことがなく、いたたまれない気持ちになったと友達から聞いたので、同じ講義室内でも大きな違いが生まれているのだと思った。

- 課題4が難しかったです。

- 授業内容がわかりやすかったです。

- 自分の知識では理解できない単語や内容が多く、ある用語について調べていてもその用語を説明している内容の中でさらにわからないことが出てきて、すべてを理解するのが自分にとってはなかなか難しいことだと思いました。ですが、調べることで少しずつ自分の知識が増えたと思うので、諦めずにできる限り理解する努力をしたいと思います。

スケジューリング (1)

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

2022/4/22 のものと同じ。

https://lsnl.jp/~ohsaki/lecture/os/2022/#14-1

内容目標

- スケジューリング (scheduling)、スケジューラ (scheduler)、スケジューリングアルゴリズム (scheduling algorithm) の違いを理解し、他人に説明できるようになる。

- 効率的なスケジューリングが困難である 4 つの理由を理解し、他人に説明できるようになる。

- 横取りなし (ノンプリエンプティブ) のスケジューリングと、横取りあり (プリエンプティブ) のスケジューリングが、それぞれどのような用途に向いているかを理解する。

- FCFS (First-Come First-Served) スケジューリングの動作をトレースし、ターンアラウンドタイムを計算できるようになる。

課題

  資料

  Scheduling disciplines
  https://en.wikipedia.org/wiki/Scheduling_(computing)#Scheduling_disciplines

  Turnaround time
  https://en.wikipedia.org/wiki/Turnaround_time

課題 1

オペレーティングシステムにおける、 「スケジューリング (scheduling)」、 「スケジューラ (scheduler)」、 「スケジューリングアルゴリズム (scheduling algorithm)」とは何か。

課題 2

オペレーティングシステムにおいて、 効率的なスケジューリングが困難である理由を 4 つ説明せよ。

課題 3

横取りなし (ノンプリエンプティブ) のスケジューリングと、 横取りあり (プリエンプティブ) のスケジューリングは、 それぞれどのような用途に向いているか。

課題 4

下表に示すプロセス P1〜P4 を、 FCFS (First-Come First-Served) スケジューリングを用いて実行した時の、 各プロセスのターンアラウンド時間をそれぞれ答えよ。

  | プロセス  | 生成時刻 [スロット]    | 計算時間 [スロット]   |
  |----------+---------------------+---------------------|
  | P1       |                   0 |                   4 |
  | P2       |                   2 |                   8 |
  | P3       |                   4 |                   2 |
  | P4       |                  10 |                   2 |

略解

課題 1

次に実行すべきプロセスを選択すること (行為) が「スケジューリング」であり、 その選択方法 (計算手順) が「スケジューリングアルゴリズム」である。 オペレーティングシステム (= ソフトウェア) において、 スケジューリングを実施するソフトウェアが「スケジューラ」である。

課題 1 のヒント: 専門用語の読み解き方

情報工学の分野では、 カタカナ語が過度なまでに多用される。 専門用語はカタカナで理解するのではなく、 元の英語で理解するのがポイントである。

上の「スケジューリング (scheduling)」、 「スケジューラ (scheduler)」、 「スケジューリングアルゴリズム (scheduling algorithm)」の例で説明しよう。

まず、それぞれの英単語の品詞を理解する。 特に、schedule には名詞と動詞の両方が存在する。 名詞としての schedule なのか、 動詞としての schedule なのかを理解する。

scheduling は単語の形 (末尾が -ing) からわかるように、 schedule (動詞) の動名詞である。 scheduling は schedule (動詞) の動名詞なので、 「schedule すること」という名詞の意味を持つ。

scheduling algorithm は「動名詞 + 名詞」の形なので、 scheduling algorithm における動名詞 scheduling は動名詞の形容詞用法 (名詞を修飾する形容詞としての動名詞) である。

動名詞の形容詞用法には、 「sleeping bagy (眠っている赤ん坊)」と「sleeping bag (眠ることのための袋)」の 2 つのパターンがある。 scheduling algorithm は、 意味から考えて「スケジュールすることのためのアルゴリズム (纂法)」であることがわかる。

scheduler は名詞である。 語尾が -er で終わっていることから、 「schedule する人もしくはモノ」を意味することがわかる。

これらの英単語の意味や、 英語の文法を正確に頭に入れてから、 課題 1 の「略解」を読んでみよ。

課題 2

  - プロセスの切り替えに時間がかかる (頻繁に切り替えると CPU が無駄になる)
  - プロセスはブロックされるかもしれない (ブロックされると CPU を割り当てられなくなる)
  - 必要な計算量は事前にわからない (事前にスケジューリング計画を立てるのが困難)
  - 何が重要かは用途による (何が「良い」スケジューリングなのかは状況による)
  ※ 具体的な例を考えて、これら 4 つが本当に困難である理由であるかを理論的に説明できるようにせよ。

課題 3

  横取りなし (ノンプリエンプティブ) → バッチ (サーバ向けの OS)
  横取りあり (プリエンプティブ) → 会話型 (一般的なエンドユーザ向けの OS)
  ※ なぜそうなのかを理論的に説明できるようにせよ。

課題 4

FCFS (First-Come First-Served)

  P1 ========
  P2     ----================
  P3         ----------------====
  P4                     --------====
     + + + + + + + + + + + + + + + + + + + + + + + +
     0         5         10        15        20

  ターンアラウンドタイム  
  P1: 4 [スロット]
  P2: 10 [スロット]
  P3: 10 [スロット]
  P4: 6 [スロット]
  平均: 7.5 [スロット]

レポート課題 2022/5/13

「レポート課題 2022/4/8」と同じ。

https://lsnl.jp/~ohsaki/lecture/os/2022/#12-6

質問

- どのスケジューリングアルゴリズムがよく使われていますか。

  何のためのスケジューリングなのかによりますが、デスクトップ向けのオペ
  レーティングシステムにおけるプロセススケジューリングならラウンドロビ
  ン方式 (の拡張版) です。

- 参考資料は絶対に書かないといけませんか?書いていなかった場合減点の対象となりますか?

  はい。ただ、「減点の対象がどうこう」という発想は捨てましょう。常に、
  「どうれば自分が成長できるか」を考えてください。

  [自習後に提出] 講義「オペレーティングシステム」 レポート送信フォーム
  https://lsnl.jp/cgi-bin/lecture/report?class=os

  > また、使用した文献をレポート中に明記してください。

- ネットで調べると、ほとんどのサイトでプロセスの状態遷移がwaiting,ready,runningであらわされており、blockedという表現をされているサイトがあまり見当たらなかったのですが、先生がwaiting,blocked,runningで表現しているのはどういう意図があるのですか?

  Wikipedia 英語版を資料に示したのでそれに合わせていますが、確かに
  Tanenbaum の教科書でも ready と呼んでいますね。

- 書籍を使って調べるとき、古い(2000年以前の)書籍をよく見かけるのですが、その書籍に書いてあることは今現在でも有用なものですか?

  (当たり前ですが) 内容によりますね。

- 教授が授業で黒板のように使われているソフトウェアで絵や文字を書くとき、どのようなもの(マウスやApple Pencilなど)で操作しているのでしょうか。

  Wacom のペンタブレットです。描画ソフトウェアは自作です。

  pydraw
  https://lsnl.jp/~ohsaki/lecture/os/2022/for-students/pydraw

- プロセス実行時間の予測が難しいのは、入出力装置などからの割り込みがどれだけあるかの予測が難しいからなのでしょうか

  それよりもむしろ、if 文などの条件分岐がする/しないのか、for 文などの
  ループが何回繰り返されるのかが、「プログラムを実行してみるまでわから
  ない」からです。例えば、今この瞬間に起動した Web ブラウザのプロセス
  が、いつ終了するかは誰にもわかりません。

要望

- 前半の解説部分をもう少し伸ばしてほしいと思いました。

コメント

- 各課題の問題と答えが別々に書かれていたことについて、こちらの方が以前の形式よりも学習効果があると感じました。なぜなら、復習するときに答えを見ないようにすることが容易になったからです。また、課題4の略解で、動画が添付されており、とても理解がしやすかったです。

- また、違ったゲームをするのが楽しみです。

- 略解の記載場所の移動ありがとうございます。まず、自分で考えることができ、大変見やすいです。

- これからも面白かったからゲームをたまに挟んでほしいです。

- 次回のゲームは成功したいです。

- 今回も面白い授業でした。

- 後からあげられていた動画がわかりやすくてよかったです。

- アイスブレークというものを今回の授業で初めて知り、また実際に行いましたが、あれだけの人数で言葉を発さずに目標を達成するのはなかなか難しいなと感じました。次回も行うとのことだったので、同じ授業内でかかわったことのない学生さんとも面識を持てたらいいなと思います。

- 毎回異なる人と話せる授業形式なのはとてもうれしいと感じた。

- 他の人と話す機会を作ってくださって、友達ではない人の意見も取り入れることができるからやりやすい

- これからの授業でも積極的にいろいろな人と話して、授業内容の理解を深めていきたいなと思います。

- 次のミニゲームが楽しみです。

リフレクションシートより

  感想 (パスワードが必要です)
  https://lsnl.jp/cgi-bin/lecture/reflection?class=os&action=impressions&date=2022%2F05%2F13

スケジューリング (2)

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

2022/4/22 のものと同じ。

https://lsnl.jp/~ohsaki/lecture/os/2022/#14-1

アイスブレーク

制限時間内に、 教室の先頭から時計周りに名前の辞書順に並んでください。 ただし、 言葉を発すること、 筆記具やスマートフォン等の道具を使うことは禁止です。

  辞書順の例
  あい
  あき
  あきお
  あきと
  あきのり
  あきら
  あきやす
  あさ
  あーさー
  あさこ
  あさみ
  あけみ
    :
    :
  しろう
  じろう   # 濁音、半濁音は後
  しん
  しんいち
  しんいちろう
  しんご
  しんじ
  しんじろう
    :
  わか
  わこ

内容目標

- 代表的なスケジューリングアルゴリズム (最短ジョブ優先方式、最小残り時間優先方式、ラウンドロビン方式) の特徴を理解し、他人に説明できるようになる。

- 代表的なスケジューリングアルゴリズムの動作をトレースし、ターンアラウンド時間の観点からそれぞれのスケジューリングアルゴリズムの特性の違いを理解できるようになる。

- 最短ジョブ優先方式や最小残り時間優先方式を現実のスケジューラで用いる場合に、どのような困難さがあるかを理解し、他人に説明できるようになる。

- ラウンドロビン方式のクォンタムの設定が、何と何のトレードオフであるかを理解し、他人に説明できるようになる。

課題

  資料

  Scheduling (computing)
  https://en.wikipedia.org/wiki/Scheduling_(computing)

  Shortest job next
  https://en.wikipedia.org/wiki/Shortest_job_next

  Shortest remaining time
  https://en.wikipedia.org/wiki/Shortest_remaining_time

  Round-robin scheduling
  https://en.wikipedia.org/wiki/Round-robin_scheduling

課題 1

最短ジョブ優先方式 (SJF; Shortest Job First) と最小残り時間優先方式 (SRTF; Shortest Remaining Time First) の共通点と相違点をそれぞれ答えよ。

課題 2

下表に示すプロセス P1〜P4 を、 SJF および SRTF スケジューリングを用いて実行した時の、 各プロセスのターンアラウンド時間および平均ターンアラウンド時間をそれぞれ答えよ。

  | プロセス  | 生成時刻 [スロット]    | 計算時間 [スロット]   |
  |----------+---------------------+---------------------|
  | P1       |                   0 |                   4 |
  | P2       |                   2 |                   8 |
  | P3       |                   4 |                   2 |
  | P4       |                  10 |                   2 |

課題 3

課題 2 の表に示すプロセス P1〜P4 を、 RR (Round Robin) スケジューリングを用いて実行した時の、 各プロセスのターンアラウンド時間および平均ターンアラウンド時間をそれぞれ答えよ。 ただし、クォンタムは 1 [スロット] とし、 新規に生成されたプロセスはキューの末尾に追加されるとする。

課題 4

RR スケジューリングにおけるクォンタムを増加させると、 オペレーティングシステムのどのような特性が向上し、 また逆にオペレーティングシステムのどのような特性が低下するかを答えよ。

略解

課題 1

SJF も SRTF もジョブの実行時間が既知であることを前提としている。

SJF は横取りなし (non-preemptive) であるが、 SRTF は横取りあり (preemptive) のスケジューリングアルゴリズムである。

※ SJF や SRTF には複数の名称があることに注意する。 例えば、 SJF (Shortest Job First) は、 SJN (Shortest Job Next) や SPN (Shortest Process Next) とも呼ばれる。

補足: ジョブ、タスク、プロセスの違い

「ジョブ (job)」や「タスク (task)」は、 計算機上が実行する処理のひとまとまりを表す。 どのくらいの単位の処理をジョブと呼び、 どのくらいの単位の仕事をタスクを呼ぶかは決まっていない。 一般的に、 ジョブは比較的大きな処理を、 タスクは比較的小さな処理を表すことが多い。

FCFS や SJF のようなスケジューリングアルゴリズムは、 汎用のアルゴリズムである。 つまり、 プロセスのスケジューリングのために用いられる専用のアルゴリズムではない。 例えば FCFS は、 オペレーティングシステムにおけるプロセススケジューリングにも、 データベースにおけるトランザクションのスケジューリングにも、 ルータにおけるパケットのスケジューリングにも用いられる (ことがある)。 このため、FCFS や SJF のようなスケジューリングアルゴリズムでは、 ひとまとまりの処理を「ジョブ」と読んでいる。

オペレーティングシステムにおけるプロセスのスケジューリングでは、 「ジョブ」が「プロセス (もしくはスレッド)」に相当する。 従って、 プロセスのスケジューリングという文脈では、 「SJF は残り時間が最も短いジョブに CPU を割り当てる」と言っても、 「SJF は残り時間が最も短いプロセスに CPU を割り当てる」と言っても、 どちらも正しい表現である。 「ジョブ」と「プロセス」のどちらを使うかは、 何を表現したいかによる。

課題 2

SJF (Shortest Job First)

  P1: 4 [スロット]
  P2: 12 [スロット]
  P3: 2 [スロット]
  P4: 6 [スロット]
  平均: 6.0 [スロット]

SRTF (Shortest Remaining Time First)

  P1: 4 [スロット]
  P2: 14 [スロット]
  P3: 2 [スロット]
  P4: 2 [スロット]
  平均: 5.5 [スロット]

ここでは、 プロセスの切り替え時間をゼロとしている。 SJF よりも、 SRTF のほうがターンアラウンド時間が小さくなっている。

課題 3

RR (Round Robin)

  P1: 5 [スロット]
  P2: 14 [スロット]
  P3: 5 [スロット]
  P4: 4 [スロット]
  平均: 7.0 [スロット]

ここでも、課題 2 と同じく、 プロセスの切り替え時間をゼロとしている。 RR のターンアラウンド時間が、 SJF や SRTF よりも大きくなっている。

課題 4

CPU の利用効率が向上する一方、 プロセスの応答性能が低下する (応答時間が増大する)。

参考: より多くのプロセスに対するシミュレーション結果

以下は、 より多く (16 個) のプロセスを、 FCFS、 SJF、 SRTF、 RR でスケジューリングした時のシミュレーション結果である。 4 つのシミュレーションにおいて、 プロセスの生成時刻および計算時間はすべて同じである。

FCFS (First-Come First-Served)

SJF (Shortest Job First)

SRTF (Shortest Remaining Time First)

RR (Round Robin)

ジョブの実行時間や残り時間を利用する (逆に言えば、 それが既知の時にしか使えない) SJF や SRTF の平均ターンアラウンド時間が小さいことがわかる。 また、 RR のターンアラウンド時間は、 これら 4 方式の中で最も大きい (ターンアラウンド時間の観点では最悪の性能) であることもわかる。

レポート課題 2022/5/20

「レポート課題 2022/4/8」と同じ。

https://lsnl.jp/~ohsaki/lecture/os/2022/#12-6

リフレクションシートより

  感想 (パスワードが必要です)
  https://lsnl.jp/cgi-bin/lecture/reflection?class=os&action=impressions&date=2022%2F05%2F20

Hiroyuki Ohsaki (ohsaki[atmark]lsnl.jp)