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

URL


アクセスできたら、まず最初にブックマークに追加しておいてください。
講義ページ (単一ページ版)
https://lsnl.jp/l/os

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

[授業開始時に提出] 出席確認フォーム (パスワードが必要です)
https://lsnl.jp/cgi-bin/lecture/attend?class=os

[授業中に使用] クリッカー (パスワードが必要です)
https://lsnl.jp/~ohsaki/app/clicker.html?class=os

[授業中に提出] 確認テスト答案提出フォーム (パスワードが必要です)
https://lsnl.jp/cgi-bin/lecture/quiz?class=os

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

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

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

担当教員

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

講義目的

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

到達目標

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

授業方法

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

【オンライン受講生対象】 オンラインでの受講を許可された学生に対しては、 同時双方向型オンライン授業で対応します。

資料の掲載場所: https://lsnl.jp/l/os

同時双方向型オンライン授業への接続方法については担当教員 (ohsaki[atmark]kwansei.ac.jp) に問い合わせてください。

参考書

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

成績評価

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

スケジュール

  2024 年度 オペレーティングシステム講義スケジュール (予定)
  2024-04-12 オペレーティングシステムの概要
  2024-04-19 CPU の原理
  2024-04-26 プロセスとスレッド
  2024-05-10 プロセス間通信
  2024-05-17 スケジューリング (1)
  2024-05-24 スケジューリング (2)
  2024-05-31 前半の総復習
  2024-05-07 メモリ管理(1)
  2024-06-14 メモリ管理(2)
  2024-06-21 入出力 (外部 I/O)
  2024-06-28 入出力 (ユーザインターフェース)
  2024-07-05 後半の総復習 (オンデマンド形式)
  2024-07-12 ファイルシステム
  2024-07-19 授業中試験
  2024-07-23 (補講日)



大崎が担当する科目に共通の連絡事項・アドバイス

注意事項、 教育方針、 学習のポイント、 病欠/公欠の時に何をすればよいか等を説明しています。

  大崎が担当する科目に共通の連絡事項・アドバイス
  https://lsnl.jp/~ohsaki/lecture/



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

授業の流れ

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

チーム分けの方針

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

態度目標

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

内容目標

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

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

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

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

課題

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

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

課題 1

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

なぜ、 operation system ではないのか? なぜ、 (日本では「基本ソフトウェア」と呼ばれるのに) basic software ではないのか? なぜ、 operating software ではないのか?

課題 2

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

課題 3

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

課題 4

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

略解

課題 1

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

参考資料

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

確認テスト

確認テストは持込み不可です。 回答用紙は、 持っている好きな用紙を使用してください。 ノートの 1 ページを使っても、 タブレット上に電子的に記入してもかまいません。 手持ちの紙がない人には A4 のコピー用紙を配布します。

回答後、 周囲の人と答案を交換して、 相互採点してください。 間違っている箇所があれば、再度解き直してください。 その後、周囲の人に再度採点を依頼してください。

100 点満点の答案になるまで上記を繰り返してください。

100 点満点の答案になったら、 答案の電子データ (写真、 スナップショット等) を以下のフォームから提出してください。 提出期限は授業実施日の 23:59 です。

[授業後に提出] 確認テスト答案提出フォーム (パスワードが必要です)
https://lsnl.jp/cgi-bin/lecture/quiz?class=os

リフレクションシート記入

以下のページから、リフレクションシートを記入して送信してください。

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

上記のフォームの上部にリフレクションシートのねらいや、 何を記入すべきかを説明しています。 これらをよく読んで、指示に従ってください。

リフレクションシートの提出期限も授業実施日の 23:59 です。

Wikipedia の説明

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

In computing, multitasking is the concurrent execution of multiple tasks (also
known as processes) over a certain period of time. New tasks can interrupt
already started ones before they finish, instead of waiting for them to
end. As a result, a computer executes segments of multiple tasks in an
interleaved manner, while the tasks share common processing resources such as
central processing units (CPUs) and main memory. Multitasking automatically
interrupts the running program, saving its state (partial results, memory
contents and computer register contents) and loading the saved state of
another program and transferring control to it. This "context switch" may be
initiated at fixed time intervals (pre-emptive multitasking), or the running
program may be coded to signal to the supervisory software when it can be
interrupted (cooperative multitasking).

ChatGTP による日本語訳

コンピューティングにおいて、マルチタスキングとは、一定期間に複数のタスク(プ
ロセスとも呼ばれる)を同時に実行することです。新しいタスクは、既に開始された
タスクが終了するのを待つのではなく、それらを中断することができます。その結果、
コンピュータは複数のタスクのセグメントを交互に実行しながら、中央処理装置
(CPU)やメインメモリなどの共通の処理リソースを共有します。マルチタスキング
は自動的に実行中のプログラムを中断し、その状態(部分的な結果、メモリ内容、コ
ンピュータレジスタの内容)を保存し、別のプログラムの保存された状態を読み込ん
で制御を移行します。この「コンテキストスイッチ」は、固定された時間間隔で開始
されることがあります(プリエンプティブマルチタスキング)、または、実行中のプ
ログラムが監視ソフトウェアに対して中断可能であることを通知するコードが組み込
まれている場合があります(協調マルチタスキング)。

マルチタスク https://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%83%81%E3%82%BF%E3%82%B9%E3%82%AF

マルチタスク (英: multi tasking) は、コンピュータにおいて複数のタスク(プロセ
ス)を切り替えて実行できるシステムのことである。Unix など「プロセス」という用
                       ============ システムではない
語を使うシステムではマルチプロセスともいう(ほぼ同じものを別のシステムでは別の
                  ============ task/tasking/process/processing を混同している
名で呼んでいることもあれば、違うものを同じ名で呼んでいることもあれば、何らかの
                                      
理由で呼び分けていることもある)。マルチプログラミングという語は複数のプログラ
============================ multitasking の本質と関係ない話
ムを動かすという点に着目した語である(一般に、「タスク」とか「プロセス」は、プ
ログラムの活動実体、といったようなものを指す語である)。逆に、同時に一つのタス
                                       ======= これは単なる task/process の話
クしか実行できない方式をシングルタスクという。
                === マルチタスクは「システム」で、シングルタスクは「方式」?

レポート課題 2024-04-12

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

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

レポート課題の内容や書き方については、 レポート送信フォームに説明があるのでそちらを参照せよ。

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

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

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

質問

- 授業ページ内でChatGPTについておすすめされていました。1.日本語のプロンプトより、英語のプロンプトの方が情報の精度が高いということを聞いたのですが、先生はどのようにお考えですか。2.授業や学習のリサーチで使うにあたり、先生は英語か日本語どちらのプロンプトを使ったほうがよいとお考えですか。3.より精度の高い返答を引き出すプロンプトを作るためには、どのようなことを意識したら良いとお考えですか。

日々状況が変わるので、あくまで現時点での私の認識です。

まず、「プロンプトの言語」と「回答の言語」の 2 種類があります。どちらも英語
のほうがベターですが、日本語と英語の差は GPT のモデルによります (GPT-4 では
差がかなり小さくなった気がします)。

プロンプトの作り方に限らず、何でも一次情報を参照することです。「(できるだけ
優秀な) 先人に学ぶ」のが成功の秘訣だと思います。

Prompt engineering
https://platform.openai.com/docs/guides/prompt-engineering/prompt-engineering

要望

- 1つ目と2つ目の問に言えるのですが、特に1つ目の「どのように自習を行いましたか?」の質問は初めのレポート提出なので400字書けましたが、今後も400字が続くとなると毎回同じ言葉を並べているだけになっている気しかしません。文章量を半分などにして頂いたり、例文を用意して頂きたいです。

「どのよう *な* 自習を行いましたか?」という設問で、

  自習した内容と、 その結果「内容目標」への理解がどの程度深まったかを *具体的に*
  記述したレポートを提出してください。

というレポートなので毎回同じような内容になりません。もし仮に同じような内容に
なるとすれば (a) 毎回同じことをしている、(b) レポートの記述が具体的ではない、
のどちらかです。(a) はありえないので (b) でしょう。

- もう少しでいいのでグループワークの時間を増やしてほしいです。

できるだけ解説の時間をコンパクトにするようにします。

コメント

- 講義ありがとうございました。グループワークの際に私のグループでは話し合ったり何人かで情報や意見を交換できたと思いましたが、周りが静かすぎて少しやりにくいなと感じました。

- Operating Systemについて。OperationではなくOperatingである理由は理解出来ましたが、なぜ「Basic」などの言葉ではなかったのかについては分かりませんでした。

英英辞典を引いて、各単語の意味 (英語におけるニュアンス) を理解してみてくださ
い。ちなみに、「通信用語の基礎知識」には以下のような記述がありました。

---- 通信用語の基礎知識'15: 基本ソフト [きほんソフト] (Operating System) 〔名詞〕
基本ソフト [きほんソフト] (Operating System) 〔名詞〕
新聞用語でオペレーティングシステム(OS)のこと。
* 特徴
  新聞には度々登場する用語だが、コンピューターの専門分野ではまず使われない。
▽
  ** 用語の所属
    - マスコミスラング
  ** 関連する用語
    - オペレーティングシステム
    - 応用ソフト
    - ネット閲覧ソフト

- これから頑張っていきたいと思います。

2. CPU の原理

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

2024-04-12 のものと同じ。

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

内容目標

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

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

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

課題

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

課題 1

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

課題 2

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

課題 3

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

課題 4

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

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

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

略解

課題 1

| 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

| 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

| 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

省略

参考図書

独習アセンブラ 新版
https://www.shoeisha.co.jp/book/detail/9784798170299

レポート課題 2024-04-19

「レポート課題 2024-04-12」と同じ。

https://lsnl.jp/~ohsaki/lecture/os/2024/#12-7

質問

なし

要望

- レポート課題の存在を今回の講義中に知ったため、前回のレポート課題を提出できていません。リフレクションシートとレポートを同一のものと思っていたため、知りませんでした。私がしっかりと講義資料を読んでいなかったのが悪いのですが、1回目の講義で右も左も分からなかったため、ご理解いただきたいです。全ての科目において100点を目指していたため、とても悔しいです。とても図々しいお願いだと分かっていますが、再提出できるチャンスがほしいです。自分が提出したリフレクションシートやレポート課題の履歴が残るようにしてほしいです。また、提出した課題の点数や評価基準を表示してほしいです。

「提出物の期限に遅れたけど、お願いしたら何とかなった」という間違った強化学習
をしてほしくないので、期限を過ぎたものは受理しません。ただし、4/12、4/19 分
については以下を見てください。

提出物は控えがメールで届きますので、それを見てください。平常レポート 50% で
成績評価します (個々の内訳は開示しません)。

- 他の授業も知りたいと言うことで他の授業に出席していたため、OSの第一回目の授業(履修登録期間)に参加できていないのですが成績の面ではどのような扱いになるのでしょうか?

履修登録が確定するまでの授業 (4/12、4/19) については、提出物に期限を 5/1(水)
5:05pm に延長します。この 2 回分に限り、授業に欠席していた場合でも、講義ビデ
オを視聴して実習し、リフレクションシートを提出すれば出席扱いにします。

- 今までに紹介した本をもう一度紹介して欲しい。

どの本のことですか?

コメント

- ペアワークが多い分、話し合う時間が多いという良い点もありつつ、分からなかったらずっと詰まったままになるのではと思った。

以下のページを読んでください。

アクティブラーニング型学習のポイント
https://lsnl.jp/~ohsaki/lecture/os/2024/#12

ペアワークではありません & もしそうなったら「態度目標」が達成できていないこ
とを意味します。

- 突き詰めたアクティブラーニングは確かに効果的だと思うが、この講義では余計に非効率になっているように思えてあまり好きではない。課題の字数制限がしんどい。項目別に分けられているが被る内容のものも多く枷でしかない。

まず、以下のページを読んで理解してください。

アクティブラーニング型学習のポイント
https://lsnl.jp/~ohsaki/lecture/os/2024/#12

その上で、「長時間に及ぶ自習を強制しないでほしい」と考えるなら、その理由を教
えてください。事実にもとづく理性的なクレームであれば私も真剣に対応します。

各項目は設問が違うので、同じ内容になりません (もしなるとしたら、設問に正しく
答えていません)。

- 先生が自身でプログラミングされているものを使っているのをみて自分もそのようなことをしたいと思いました。

- 講義ありがとうございました。

- これからも楽しみながら学習していこうと思います。

3. プロセスとスレッド

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

2024-04-12 のものと同じ。

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

内容目標

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

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

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

課題

課題 1

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

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

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

課題 2

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

課題 3

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

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

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

略解

課題 1

5

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

課題 2

blocked → running: blocked 状態は OS のスケジューリング対象ではないから

waiting → blocked: waiting 状態では OS に入出力を要求できないから

課題 3

省略

課題 4

- Lower resource consumption: E4 (2 スレッド版) では 「ノート」(メモリ) を切り替える必要がないから。

- Simplified sharing and communication: E4 (2 スレッド版) では 「ノート」上の値を 2 つのスレッドが共有できるから。

- Thread crashes a process: E4 (2 スレッド版) では一方のスレッドが他方のスレッドが使う「ノート」を破壊できるから。

レポート課題 2022-04-26

「レポート課題 2024-04-12」と同じ。

https://lsnl.jp/~ohsaki/lecture/os/2024/#12-7

質問

なし

要望

- 講義の最初に「前回何をしたか」といった簡単な復習があればうれしいです。

- スレッドが他方のスレッドが使う「ノート」を破壊する瞬間が見たい。

コメント

- 講義ありがとうございました。グループワークが残り5分くらいの時にタイマーの音がなって私たちに分かればいいなと思いました。

- 楽しかったです

- ファイル大きすぎて貼れませんでした(泣)

4. プロセス間通信

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

2024-04-12 のものと同じ。

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

内容目標

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

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

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

課題

課題 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/2024/priv/mini-cpu-ipc.pdf

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

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

課題 4

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

略解

課題 1

ア: (6) プロセス

イ: (11) 交換

ウ: (15) 独立

エ: (8) メモリ空間

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

カ: (13) 共有メモリ

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

課題 2

4 のみ。

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

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

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

課題 3

省略

課題 4

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

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

https://lsnl.jp/~ohsaki/lecture/os/2024/priv/ctf.html

レポート課題 2024-05-10

「レポート課題 2024-04-12」と同じ。

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

質問

- 先生はRustはC++の代替言語になると思いますか?それを踏まえて今から新しく学習するならどちらをお勧めしますか?教えて欲しいです。

将来のことはわかりませんが、C++ はかなり無理がある (複雑すぎる) と思います。
両方学ぶほうが良いと思いますが、どちらか一択なら Rust かな?

- 講義ありがとうございます。自習として、作業効率化のためのプログラムを作成したいと考えていますが、これは授業の「内容目標」と直接関連していないように感じています。このような自習は許可されますか?

そういう取り組みは大切なのでぜひ頑張ってください。ただ、この講義のレポート課
題は、シラバスに沿ったものにしてください。

- これから新しくプロセス間通信の手法が生まれることはあるのか。

将来のことはわかりませんが、「今後一切新しいプロセス間通信は登場しない」と考
えるのは無理があるでしょうね。

要望

- 講義のホームページが見にくい・扱いにくい。回を重ねるごとに縦方向に無限に伸びていく回ごとにページを分けたり適切なリンクを設定することでより簡単に必要な情報にたどり着けるようにしてほしい。

複数ページ版も用意してあります。が、「必要は発明の母」です。何が不便なのかを
分析して、それを解消するような環境を作ってみてください。私の講義はすべてオー
プンな技術しか使っていないので、ユーザ側で何でも自由にできます。

https://lsnl.jp/~ohsaki/lecture/os/2024/1.html

- 講義ありがとうございました。友人に聞いてオペレーティングシステムCTFの8.の課題を解決しようと思っていますが、ノートの初期状態の意味の部分などあまり分からないところがあったので授業で少し説明していただけるとありがたいです。

個別に解説はしませんので、わかっている人に教えてもらってください。

コメント

- 今日の講義も楽しかったです。

5. スケジューリング (1)

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

2024-04-12 のものと同じ。

https://lsnl.jp/~ohsaki/lecture/os/2024/#10-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 [スロット]

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

https://lsnl.jp/~ohsaki/lecture/os/2024/priv/ctf.html

レポート課題 2024-05-17

「レポート課題 2024-04-12」と同じ。

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


Hiroyuki Ohsaki (ohsaki[atmark]lsnl.jp)