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

URL


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

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

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

[授業中に使用] オペレーティングシステム CTF (パスワードが必要です)
https://lsnl.jp/~ohsaki/lecture/os/2024/priv/ctf.html

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

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

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

[自習後に提出] レポート送信フォーム (パスワードが必要です)
https://lsnl.jp/app/lecture/report/show/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-06-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/app/lecture/quiz/show/os

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

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

[授業中に提出] リフレクションシート (パスワードが必要です)
https://lsnl.jp/app/lecture/refl/show/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

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

レポート課題 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 [スロット]

レポート課題 2024-05-17

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

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

質問

- 先生のお気に入りの言語はありますか? あればどのような点で他の言語と異なりますか?

アセンブリ言語、Perl、Python、シェル (シェルスクリプト)、Emacs Lisp が特に好
きです。

アセンブリ言語 → 代用できないオンリーワン
Perl → 日常会話を交すような感覚でプログラムが書ける
Python → 直交性が高くてキレイ
シェル → UNIX の伝統、恐しいほどの記述力
Emacs Lisp → Emacs を自由に簡単にカスタマイズできる

- 授業後にCTFを1から解き直したい場合は、別のユーザーネームを取得していいのでしょうか?

はい。

要望

なし

コメント

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

- みんなで考えながら問題を解くのは楽しかったです。

- CTFでは各課題の理解を深めづらいです。(CTFに学んだことが活かせない)

6. スケジューリング (2)

授業の流れ

1. 解説 (40 分)
2. グループワーク (35 分)
3. CTF (10 分)
4. グループワーク (5 分)
5. リフレクションシート記入 (10 分)

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

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

https://lsnl.jp/~ohsaki/lecture/os/2024/#10-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 方式の中で最も大きい (ターンアラウンド時間の観点では最悪の性能) こともわかる。

レポート課題 2024-05-24

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

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

※次回は講義形式で前半の総復習をします。 前半の内容で理解が不十分なもの、 疑問が残っているもの、 もっと知りたいものを整理しておいてください。 次回の授業では、 授業中に「みなさんが聞きたいこと」を書き込んでもらって、 それらについて私が解説します。

質問

- 様々な言語を使用していて他言語のやり方をやってしまったりなどの混乱はないのですか?

使用する言語を切り替えた瞬間は多少はあります。が、そのほとんどは文法の違いに
起因したもので、文法の違いは入力時に機械的にチェックされるのでそれほど困りま
せん。

- 講義内で先生が利用しているchatGPTにコマンドラインから質問をなげるものはchatGPTのAPIを契約してそれを利用しているのか、スクレイピングを利用しているのかどちらですか?

スクレイピングに相当します。ChatGPT の API は使用していません。Chrome をリモー
トデバッグモードで起動し、外部のプログラムから制御しています。プログラムは以
下のページで公開しています。

chatgpt-el
https://github.com/h-ohsaki/chatgpt-el

要望

コメント

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

- CTFのグループ名が幾分ましになってよかった。

- 講義ありがとうございました。文字カウントがなくなっていたので少し不便でした

- レポート送信フォームで文字数カウントが出なくなりました。どの端末で操作しても表示されなかったのですが、原因はなんでしょうか?

  指摘ありがとう。先日、リフレクションシートやレポート提出フォームを作り直した
  のですが、その時に誤って文字数カウントの JavaScript コードを削除していました。
  修正したので、今は直っていると思います。



7. 前半の総復習

授業の流れ

1. ガイダンス・質問記入 (5 分)
2. 質問への回答 (35 分)
3. 席替え・CTF (15 分)
4. 質問への回答 (35 分)
5. リフレクションシート記入 (10 分)

態度目標

- 解説された内容を判的思考で分析し、できるだけ多くを吸収する。

- 脳が覚醒した状態のままでいる。

- クリッカーに記入する質問は、可能な限り、正しい日本語で具体的に記入する。

- 始めて知ったこと、なるほどと思ったことはノートに記録する。

内容目標

- 前半の「内容目標」すべてに到達できるようになる。

- 前半の内容に関連して、理解が不十分なもの、疑問が残っているもの、もっと知りたいものを言語化して質問できるようになる。

- 前半の内容に関連する疑問を一つでも多く解消できるようになる。

クリッカー

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

質問への回答

- 7/19の授業中試験は紙形式ですか?それともパソコン形式ですか?

筆記試験です。

- 実現のためにプロセス間通信が不可欠なものとして並列アルゴリズムの実装がありましたが、他にはどのようなものがありますか?

ほとんどのアルゴリズムは単一 CPU で計算できるので、それほど多くはありません。
複数の CPU を同時に、単一の目的のために使うような用途です (並列コンパイラ、
並列シミュレータ等です)。

- スケジューリングアルゴリズムとに多様な種類があるんですけどそれぞれの利点だけ集めて新しいアルゴリズムを作るにはどのような限界がありますか?

特に限界はないでしょう。ただし、種類の違うものは組み合せられませんが (プリエ
ンプティブとノンプリエンプティブなど)。

- 効率的なスケジューリングが困難である理由の一つである"何が効率的かは用途による"というものについて。理解しやすい具体例をなかなか見つけることができなかったので教えていただきたいです。

スマートフォンの OS なら「応答時間」が重要ですし、自動車の運転制御に使われる
OS なら実時間性 (例: 必ず○○ [ms] 以内に完了する) が重要になります。

- OSなどは今後C言語の物からRustに移り変わっていくと思われますか?

将来のことはわかりませんが、100 年後の OS は C 言語で記述していない気がしま
す。

- FCFSスケジューリングにおいて、リアルタイム性が求められるシステムには不向きとあったがそれはなぜでしょうか?

ターンアラウンド時間が大きくなるからです。

- 講義ではグループで勉強をしているが、オペレーティングシステムについて個人で学ぶ際におすすめの方法はありますか?

タネンバウムの教科書を読むことをおすすめします。

- じゃあ、私たちも頑張れば、c言語を使ってosを作れるの??

はい。もちろん可能です。

- 複数プロセスを同期実行する場合、必ずしもプロセス間通信は必要ではなく、システムクロックで実行可能であるという解答がありました。ここで、システムクロックは具体的にどのような働きをしているのですか?

システムクロックをプロセス間同期に使います。例えば言えば、「4 時ちょうどに公
園に集合」と約束して、各自が時計を持っていれば、LINE 等で連絡を取り合わなく
ても公園に集合できるのと同じです。

- 先ほどのos-07-review/10-multiplyの問題でB=6でループを抜け出すと思っていたのですが、B=7の積までもとめているのはなぜですか?

そういうプログラムだからです (質問の意図が違う?)

- スロットという単位の基準って何ですか?時間ですか?

slot は以下のような意味です。スケジューリングにおけるスロットの単位は、一定
の単位時間です。スロットの長さが何秒なのかは状況によってさまざまです。

---- COBUILD5: slot /sl'ɒt/ (slots slotting slotted)
slot /sl'ɒt/ (slots slotting slotted)
3 [N-COUNT] oft n N
  A _slot_ in a schedule or scheme is a place in it where an activity can take place.
  _Visitors can book a time slot a week or more in advance..._

- このクリッカーの構造にはどのようなプロセス、スレッド、スケジューリングが使われていますか?

Web サーバ (niginx) が 4 プロセスで動作していて、Web サーバから 4 スレッドの
Web アプリにプロセス間通信を実行することで動作しています。サーバの OS は
Linux なので、ラウンドロビンスケジューリング (の仲間) のスケジューリングアル
ゴリズムが使われています。

- 多くの種類があるプログラミング言語はどのように作られているのですか?プログラミング言語の設計や開発には共通の原則があるのでしょうか?

多くの場合、言語設計者にはそれぞれの目的 (特に、既存の言語に対する不満) があっ
て、それを実現するような言語を作っていると思います。プログラミング言語の設計
論はある程度確立しているので、多くの設計者はそれを学んだ上で設計していると思
います。

- 今はLinuxやWindows、MacなどのOSが代表的ですが、それぞれ利点もあれば、使いづらさやややこしいことがあったりしますよね。。。😑😣🙂‍先生はこれからまたさらに新たなOSが開発されたりして、そのOSが代表的なものになっていくことはあると思いますか?🫣

将来のことはわかりませんが、100 年後に同じ OS が使われているとは考えづらいと思います。

- スケジューリングにおいて効率的なスケジューリングが困難な理由の中に必要な計算量が事前にわからないとありましたがSJFやSRTFを見ると計算量が分かっているように感じるのでいまいち分からなくなりました。

SRTF は「必要な計算量がわかっている」時にだけ使えるスケジューリングアルゴリ
ズムです。SRTF は「必要な計算量がわかっている」ことが前提ですので、SRTF の説
明ではそのわかっている計算量をもとにスケジューリングすることを説明しています。

- 席をシャッフルする際にランダムになると言いますが、何をもってしてランダムとしているのですか?

Python の random.shuffle 関数を使っています。

- pcの初回起動時などに入るBIOSはOSよりも先に起動すると思うのですが、あれは具体的にどういったものですか?

BIOS もプログラムです。CPU に電源が投入された時に最初に実行されるプログラム
が (ハードウェアに書き込まれた) BIOS です。

- 講義で教えていただいたラウンドロビン方式では、プロセス1のタスク(ひとクォンタム)の終了時とプロセス2の生成が重なったらプロセス1を優先していました。そのときに先生はこのラウンドロビン方式ではプロセス1を優先している、のようなことをおっしゃっていましたが、プロセス2の生成時にプロセス2のタスクを実行するような方式もあるのでしょうか?またそのそれぞれの方式はどのような時に使われますか?

SRTF で、「残り時間最小のプロセスが複数あったらどうするか?」と同じ話で、「ラ
ウンドロビンスケジューリング」という考え方には細かい処理をどうするかは定めら
れていません。両方ありえますし、何なら「ランダムに決める」という方法もありえ
ます。具体的にどうするかはスケジューラ (ソフトウェアであって OS の一部) の実
装依存です。

- 以前、先生はパソコンに興味を持ってから自分で勉強を進めた、というようなお話を聞いたのですが、どのように勉強を進められましたか?

コンピュータの勉強、という意味ですか? 初期の頃はひたすらゲームを作ってました
(好きなゲームのクローンを作りたくて (作れませんでしたが) いろいろ格闘してい
ました)。

- 先生 macOSとWindowsOSどちらが好みですか

どちらも好みではありませんが、あえて選ぶなら macOS です。

- スマホなどにあるスケジューリングアルゴリズムは基本的に全て搭載されているんですか?その場合そのスケジューリングアルゴリズムはどのように判断して切り替わっているんですか?

マルチタスキングの OS → プロセスが複数存在する → 必ずスケジューラが存在す
る、です。通常、スケジューリングアルゴリズムは切り替えません。

- ソケット通信はどのように実現されていますか?

どういう意味ですか? UNIX 系オペレーティングシステムではシステムコールとして
実現されています。

- operating systemは、なぜbasicではないのかが載せていただいた単語の意味を見てもあまりよく分かりませんでした。なぜbasicではないのでしょうか?

operating system と比べると、beasic software のほうがより「あいまい」だから
です。オペレーティングシステムの授業を実施している場所の呼び方は、「部屋」や
「空間」や「多数の机と椅子のある場所」よりも「講義室」のほうが適しているのと
同じです。

- スケジューリングやスケジューラー、スケジューリングアルゴリズムを学びましたが、講義以外で今までにこれらの言葉をどのような時に使ってきましたか?

日常生活 (例: 仕事のスケジューリング、スケジュール張) やソフトウェア (例:
Web サーバのスケジューラ) やネットワーク機器 (例: ルータのパケットスケジュー
ラ) 等で使用しています。

- プログラムを書いていて、自分の思うようにできなかったり、もとめている値が出なかったとき、どのようにデバッグしていきますか。何を考えながら、何をまずやっていきますか?

デバッグに限らず、問題解決の方法は基本的に同じです。現状を分析し、目標を定め、
仮説を立てて、仮説を検証するための情報を収集し、その結果に基いて次の一定を決
める、という操作を繰り返します。

- 授業中で習ったスケジューリングアルゴリズムはどの順番で実装されてきたのか教えてほしいです。

「設計/考案」と「実装」は意味が違います。おそらく質問の意図は「設計/考案」の
順番ですね? 考案された順番は私も知りません。調べるには、各スケジューリングア
ルゴリズムが考案された論文を特定し、それらの発表年を見ればわかります。

- 内容的に次回も総復習にしませんか?

しません。が、後半にもう一度総復習を実施します。

- このクリッカーは授業後も閲覧可能ですか?

はい。

- 私はmacを使っています。大学に入るまでは情報系はWindowsでなければ厳しいという噂をよく聞いて恐ろしくなっていましたが、今のところそんなに不自由なく工学部生活を送れています。😌😌😌OSに関しての知識などはないのですが、これからmacだと厳しいことなどは増えてくるのでしょうか?🫠また、OSについて勉強していればその時にも対処できるのでしょうか?ちょっぴり不安です。。。😔🫣

その噂はデマでしょうね。macOS のエキスパートであれば何も困ることはないでしょ
う。OS のことがほんとわからなければ、macOS でも Windows でもどちらでも苦労す
るでしょう。

- OSはC言語で書かれていると伺いました。一般のC言語プログラミングとOSの違いは何で生まれるのですか?

「一般のソフトウェアを作成する時の C 言語プログラミング」と「OS を作成する時
の C 言語プログラミング」の違いですね? 基本的に同じですが、OS は低レベルなプ
ログラミングなのでより複雑です。

- オペレーティングシステムと一緒に取るべき科目はありますか?

すべて重要ですが、特に重要なのは数学だと思います。

- 色々なプログラミング言語を平均的にできるのと一つの言語を突出してできるのではどちらが社会に出て役立つでしょうか?

質問者の方が「何をしたいのか?」に依存しますが、一般論で言えば、プログラミン
グに限らず常に後者でしょう。

- OSとして、Mac,Windows, Linuxがあって、先生が新大学1年生だとしたら、どのOSを選びますか?また、それはなぜですか?

すべての OS を一通りマスターすると思います。どうしても一つ選ぶなら迷わず
Linux です。理由はフリーソフトウェアだから (ソースコードが入手でき、ソフトウェ
アの研究や改変が自由にでいるから) です。

- CTFって何の略ですか?????

Capture The Flag です。

- このクリッカーは講義後も書き込むことができますか?また応答はしてもらうことができますか?

講義後も書き込めますが、私が書き込みをチェックしていないので返答できません。
質問があればレポート送信フォームからください。

- この講義を学んで役に立つような職種はたとえばどのようなものがありますか?

この種の質問をよく受けるのですが、「(学んだ内容が) 役に立つ (自動詞)」ではな
く「(あなたが) 役に立てる (他動詞)」です。みなさんが学んだ内容を「どう役立て
るか」で決まります。何に役立てられるかはみなさん次第です。

役立てられる人は、この授業の内容を、「新種の米の栽培」や「思春期の息子や娘の
子育て」にも役立てられるでしょう。逆に、役立てられない人は、この授業の内容を、
「コンピュータの便利な使い方」や「ファイルのバックアップの作り方」にも役立て
られないでしょう。

- けいさんがむずかしいです。

どの計算ですか?

- この授業を受けきって我々がどうなる事を見据えてますか

シラバスや講義ページを読んでください。

オペレーティングシステム
https://lsnl.jp/l/os

- スレッドとプロセスの違いはなんですか?

- RRスケジューリングのクォンタムを増加させると、プロセスの応答時間が増えることについて、イメージが想像しにくくて、解説していただけますか?

- スケジューリングアルゴリズム (最短ジョブ優先方式、最小残り時間優先方式、ラウンドロビン方式) の特徴を理解し、他人に説明できるようにはなったのですが、これらは何に使用されているのですか?

- RRよりもSJFやSRTFの方が優先されるのは、情報量が自明である時だと予想されますが、実際にはどのような時に優先されますか?

- 色々なスケジューリングがある中で、一番使われているスケジューリングや身近なものは何ですか?やはりラウンドロビン方式でしょうか。

- FCFS、 SJF、 SRTF、 RRの4つのなかではどれが一番使用率が高いのでしょうか?

- スケジューリングにおいて効率的なスケジューリングが困難な理由の中に必要な計算量が事前にわからないとありましたがSJFやSRTFを見ると計算量が分かっているように感じます。何をもって優先するものを決めているのですか?

- 最短ジョブ優先方式や最小残り時間優先方式を用いている現実のスケジューラはどんなものがありますか?

他の質問で回答したので、もしまだわからなければ講義ビデオを観てください。

- 複数のスケジューリングアルゴリズムの特徴は掴めたのですが、それぞれどのように実用されているのか具体例を教えていただけますでしょうか?

- おすすめのプログラミング言語はありますか?

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

レポート課題 2024-05-31

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

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

質問

- サーバーの構築やネットワークに関しておすすめの勉強方法はありますか?(おすすめ書籍などがあれば教えていただきたいです)

図書館で関係ありそうな本を借りて読みまくる (理論) & VPS を借りてサーバをセッ
トアップする (実践) がおすすめです。特におすすめの書籍を以下にリストアップし
ています。

充実した研究活動のための 100 の書籍 (草稿)
https://lsnl.jp/~ohsaki/research/100-books/

要望

コメント

- 講義ありがとうございました。オペレーティングシステム CTFを自主学習で行った際に問題4と5が同じ問題でしたが、同じ回答を入れても答えが一致しなかったです。

授業中の「質問への回答」でも言及しましたが、問題が間違っていました (問題 4
は「並行」ではなく「並列」です)。今は直っていると思います。

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

8. メモリ管理 (1)

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

2024-05-24 のものと同じ。

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

内容目標

- マルチプログラミング環境における CPU の利用率を計算できるようになる。

- スワッピングとページングの違いを理解し、ページングの利点を他人に説明できるようになる。

- ページングにおける仮想アドレスと物理アドレスの違いを理解し、他人に説明できるようになる。

- ページングの原理を理解し、仮想アドレス、物理アドレス、ページテーブル、ページサイズの関係を他人に理解できるようになる。

課題

課題 1

主記憶上に同時に 4 つのプロセスを配置できるシステムにおける CPU 利用率を求めよ。 ただし、 各プロセスが実行中に I/O 待ちとなる割合を 50% とする。

課題 2

一般に、 スワッピング (swapping) よりも、 ページング (paging) のほうが効率的である理由を説明せよ。

課題 3

仮想アドレス (virtual address) と物理アドレス (physical address) の違いを説明せよ。

課題 4

16 ビットの仮想アドレス空間を持つページングにおいて、ページテーブルの大きさが 8 であった。 ページサイズを答えよ。

略解

課題 1

1 - (0.5)^4 = 0.9375 より約 94%。 各プロセスが I/O 待ちとなる確率が 0.5 であり、 すべてのプロセスが I/O 待ちとなった時に CPU が無駄となるから。

課題 2

スワッピングは主記憶上にあるプロセス全体を外部記憶装置に書き出す。 一方、 ページングは主記憶上にある (例えば 4K バイトの) ページ単位で外部記憶装置に書き出す。 このため、 ページングは、 プログラムが有する参照の局所性 (locality of reference) を活かせるから。

Locality of reference
https://en.wikipedia.org/wiki/Locality_of_reference

課題 3

「物理アドレス」とは、 プログラムが実際に格納されている主記憶上のアドレスである。 例えば、 主記憶の大きさが 256K バイトであれば、 物理アドレスの大きさは 18 ビットである。 「仮想アドレス」とは、 (オペレーティングシステムの仮想メモリによって) 各プロセスが利用できるアドレスである。 例えば、 主記憶の大きさが 256K バイトであっても、 仮想アドレスの大きさが 24 ビットであれば、 各プロセスには 16M バイトのメモリ空間が利用できるように見える。

課題 4

ページテーブルの大きさが 8 (= 2^3) であるから、 ページアドレスは 3 ビットである。 16 ビットの仮想アドレスの上位 3 ビットがページアドレスであるから、 下位 13 ビットがページ内オフセットを表す。 従って、 ページサイズは 8,192 バイトである。

課題 4 の補足

通常は、 仮想アドレス空間の大きさを決定し、 それとともにページングで用いるページサイズを決める。 仮想アドレス空間の大きさとページサイズが決まれば、 自動的に必要なページテーブルの大きさが決まる。

例えば、仮想アドレス空間の大きさが 24 ビットで、 ページサイズが 4 KB のページングを実現しようと決めたなら、 ページテーブルの大きさは 2^24 [B] / 4 [KB] = 4,096 だけ必要となる。 つまり、

(アドレス空間の大きさ) / (ページの大きさ) = (ページテーブルの大きさ)

という関係である。 上記の関係から、 「アドレス空間の大きさ」、 「ページの大きさ」、 「ページテーブルの大きさ」のうち 2 つがわかれば、 もう一つが求められる。

課題 4 は上記の関係を理解しているかを問う問題である (現実には、 ページテーブルの大きさからページサイズを推測するということは普通はしない (それが必要となる場面はほとんどない))。

レポート課題 2024-06-07

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

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

質問

- CPUの使用率の適正値のようなものは決まっているのでしょうか。

用途や状況によります。1 億円のコンピュータの CPU 利用率なら 100% が望ましい
でしょう (費用対効果を高めるため)。スマートフォンの CPU なら普段は低ければ低
いほうがいいでしょう (発熱せず、バッテリが長持ちするので)。スマートフォンの
CPU で、AI を使った画像の顔認識をしたいならなら目的によります。発熱、バッテ
リ消費、計算時間、実時間性、他のプロセスに対する影響の許容度など、さまざまな
要因によって決まります。

要望

- CTFの回答時間終了後の相談タイムをもう少し長くしてほしいです。なぜなら、誰がどの問題をどのように解いたのかを詳しく話し合いたいからです。

そうですね。CTF 前のグループワークを 5 分短縮し、CTF 後のグループワークを 5
分増やしてみます。

コメント

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

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

9. メモリ管理(2)

授業の流れ

1. 解説 (40 分)
2. グループワーク (30 分)
3. CTF (10 分)
4. グループワーク (10 分)
5. リフレクションシート記入 (10 分)

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

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

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

内容目標

- C 言語で書かれたプログラムのポインタの値と仮想記憶 (ページング) における仮想アドレスの関係を理解し、他人に説明できるようになる。

- ページ置き換えアルゴリズム FIFO を理解し、その動作をトレースできるようになる。

- ページ置き換えアルゴリズム LRU を理解し、その動作をトレースできるようになる。

- 最適なページ置き換えアルゴリズムがどのようなものかを理解するとともに、その実現がなぜ困難であるかを理解する。

課題

課題 1

以下のプログラム ex1-1.c および ex1-2.c をコンパイルし、 実行ファイル ex1-1 および ex1-2 を得た。 その後、 64 ビットの OS 上で ex1-1 および ex1-2 を同時に実行したところ以下のような出力が得られた。 ex1-1 の変数 x と ex1-2 の変数 y が同じアドレスに格納されているのはなぜか。

 ex1-1.c:
 #include <stdio.h>
 #include <unistd.h>
 
 int x = 123;
 int
 main (void)
 {
   printf ("&x = %p\n", &x);
   sleep (60);
 }

 ex1-2.c:
 #include <stdio.h>
 #include <unistd.h>
 
 double y = 456.789;
 int
 main (void)
 {
   printf ("&y = %p\n", &y);
   sleep (60);
 }

 プログラムの実行
 $ ./ex1-1 &           ← バックグラウンドで実行
 &x = 0x555555558038
 $ ./ex1-2 &           ← バックグラウンドで実行
 &y = 0x555555558038

課題 2

以下のページが順番に参照された時のページフォールト数と、 最終的に主記憶装置に格納されているページの番号をすべて答えよ。 ただし、 ページ置き換えアルゴリズムは FIFO とする。 また、 主記憶に格納できるページ数を 4 とし、 初期状態ではどのページも格納されていない (空の状態である) とする。

0, 2, 1, 3, 5, 4, 6, 3, 7, 4, 7, 3, 3, 5

課題 3

課題 2 において、 ページ置き換えアルゴリズムを LRU とした時の、 ページフォールト数と最終的に主記憶装置に格納されているページの番号をすべて答えよ。

課題 4

課題 2 において、 最適なページ置き換えアルゴリズムを用いた時のページフォールト数を答えよ。 なお、 ページの参照系列があらかじめ分かっていると仮定してよい。

略解

課題 1

変数 x や変数 y のアドレスがページングによって実現されている仮想アドレスだから。 プロセスのデータ領域は独立しているため、 変数 x と変数 y は異なるデータ領域に格納されている。 OS によって各プロセスには 64 ビットの仮想空間が提供されている。 変数 x と変数 y は同じ仮想アドレスに格納されているが、 実際には主記憶上の異なる物理アドレスに格納されている。

課題 2

ページフォールト数 10、 最終的に格納されているページ 7、 6、 5、 3 (順番は入れ替わっても構わない)。

FIFO (First In First Out)

課題 3

ページフォールト数 9、 最終的に格納されているページ 3、 5、 4、 7 (順番は入れ替わっても構わない)。

LRU

課題 4

次に参照される予定が最も先であるページを優先してページアウトすればよい。 ページフォールト数 8。

Wikipedia における「ページング」の説明について

 Memory paging
 https://en.wikipedia.org/wiki/Memory_paging
 
 In computer operating systems, memory paging (or swapping on some
 Unix-like systems) is a memory management scheme by which a
 computer stores and retrieves data from secondary storage[a] for
 use in main memory.[citation needed] In this scheme, the
 operating system retrieves data from secondary storage in
 same-size blocks called pages. Paging is an important part of
 virtual memory implementations in modern operating systems, using
 secondary storage to let programs exceed the size of available
 physical memory.
 
 For simplicity, main memory is called "RAM" (an acronym of
 random-access memory) and secondary storage is called "disk" (a
 shorthand for hard disk drive, drum memory or solid-state drive,
 etc.), but as with many aspects of computing, the concepts are
 independent of the technology used.
 
 Depending on the memory model, paged memory functionality is
 usually hardwired into a CPU/MCU by using a Memory Management
 Unit (MMU) or Memory Protection Unit (MPU) and separately enabled
 by privileged system code in the operating system's kernel. In
 CPUs implementing the x86 instruction set architecture (ISA) for
 instance, the memory paging is enabled via the CR0 control
 register.
 
 ページング方式
 https://ja.wikipedia.org/wiki/%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%B3%E3%82%B0%E6%96%B9%E5%BC%8F
 
 ページング方式 (Paging) とは、コンピュータのオペレーティングシス
 テムにおいて記憶装置をページと呼ばれる小さな単位に分割して割り当
 てを行うアルゴリズム群である。仮想記憶のベースとなる設計の一つ。
                   == 「方式」とは「群」である??
                                     ===== 「ベース」の意味が不明
                                               === 「方式」=「群」=「設計の一つ」??
 
 物理メモリ空間および論理メモリ空間を、基本的に一定サイズのページ
 と呼ばれる単位に分割して管理を行う。論理メモリから物理メモリ空間
 への対応づけはページテーブルと呼ばれる構造体で実現され、この構造
                                   ===== 「データ構造」の誤り?
 体はオペレーティングシステム (OS) によって管理される。物理メモリ
 空間に対応づけられていない論理メモリを参照した時にはページフォル
 トという例外によってOS側の例外処理ルーチンに制御が移行し、OS側の
 管理によって適宜対応したページを二次記憶等から読み込み、テーブル
                                    == なぜ「等」?? 他に何があるのか??
                                          ======= 「管理」によって「読み込む」??
                                                   ======= なぜ「ページテーブル」ではなく「テーブル」??
 を更新してその参照した命令の実行に戻る。
          ============== 日本語がおかしい。
 
 これを実現するハードウエアであるメモリ管理ユニット (MMU) の中には
 === 「これ」が何を差すか不明。「ページング」であれば実現するのは OS。
 トランスレーション・ルックアサイド・バッファ (Translation
 Lookaside Buffer:TLB) と呼ばれる一種のキャッシュがあり、ユニット
                                                     ======== 何を差している?? MMU??
 内部ではこの対応表に基づいてメモリアドレスの対応づけを行っている。
               == 上では「キャッシュ」、ここでは「表」??
                                ============ 何と何の対応か書かれていない。
 このテーブルから参照出来なかったときをTLBミスと呼ぶ。このときの処
               ================== 意味不明
 理はMMUの設計によって異なり、MMU内にはTLBのみを持ちTLBミスが即例
 外を起こし、OSがページテーブルを引いてTLBに追加することによって
                              ===== 意味不明
 TLBミスを解決するアーキテクチャや、ページテーブル自体のフォーマッ
                 ============ 何のアーキテクチャ?? この日本語だと「処理」の「アーキテクチャ」となって意味不明。
 トがOSが使えるビットを含めた形でMMUによって定義されていて、TLBミ
 ==================================================== 意味不明。書いている人が理解していないと思われる。
 ス時にMMU自身が与えられた物理アドレスにあるページテーブルを参照す
 るアーキテクチャもある。
   ================== そもそも「ページング」の本質と関係ない話。他にもっと重要なことがたくさんある。

レポート課題 2024-06-14

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

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

要望

- CTFで出題内容もしくは模範解答に誤りがあった場合、後日修正されたかどうかがCTF内に表示されると嬉しいです。なぜなら貴重な問題なので解けるようになりたいという思いがあったのですが、今回の自習中に正しい答えがわからない状態だったからです。

そうですね。授業後に回答を修正した場合は、CTF のページに掲載するようにします。

- 講義ありがとうございました。CTFで自主学習の時に授業内で確認していても後から振り返ったときにCTFの答えが分からなくなるので、自分たちが回答した答えは見えるようにしていただきたいです。

今の CTF は個々のユーザ認証を行っていないので (今の実装だと) 困難です (正解
した人の回答を誰でも見られるような実装だからです)。 技術的にはユーザ認証を追
加するのは困難ではありませんが、今の CTF のほうが単純で美しいと思ってます。

……と思いましたが、「回答済みであっても再度回答できる」ようにすればニーズに
は答えられるような気がしました。

コメント

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

10. 入出力 (外部 I/O)

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

2024-06-14 のものと同じ。

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

内容目標

- CPU とデバイスコントローラの通信において、ポートマップド I/O とメモリマップド I/O の長所と短所を理解し、他人に説明できるようになる。

- ミニ CPU を用いて割り込みの原理を理解するとともに、ミニ CPU における割り込みの動作をシミュレートできるようになる。

- 割り込みにおける割り込みハンドラの処理時間と最大割り込み頻度の関係を定量的に議論できるようになる。

- ラウンドロビンスケジューリングにおけるプロセス切り替えのオーバヘッドと CPU の利用効率の関係を定量的に議論できるようになる。

課題

資料: ミニ CPU による割り込みの理解
https://lsnl.jp/~ohsaki/lecture/os/2024/priv/mini-cpu-interrupt.pdf

課題 1

CPU とデバイスコントローラの通信において、 ポートマップド I/O と比較した時の、 メモリマップド I/O の長所と短所を述べよ。

課題 2

資料「ミニ CPU による割り込みの理解」中の「CPU 係と割り込み係によるシミュレーション」を二人ペアとなって実行せよ。 CPU 係と割り込み係の両方を、 それぞれ一回ずつ以上シミュレートすること。

課題 3

ミニ CPU において、 一命令の実行に要する時間をすべて等しくΔ [s] とする。 「ミニ CPU による割り込みの理解」中の「ミニ CPU による割り込みの例」の割り込みハンドラを、 一秒間に最大何回呼び出すことが可能か。

課題 4

ミニ CPU において、 一命令の実行に要する時間をすべて等しくΔ [s] とする。 ラウンドロビンスケジューリングを用いたプリエンプティブマルチタスキングにおいて、 プロセスの切り替えを行うプログラム (割り込みハンドラを含むすべての割り込み処理) の命令数を N とする。 クォンタムの大きさを T [s] とした時の CPU の実効利用率 (CPU がプロセス実行に利用される割合) を答えよ。 ただし、 各プロセスが実行中に I/O 待ちになることはないとする。

略解

課題 1

長所: I/O のための専用の機械語命令が必要ない。 C 言語のような高級言語でデバイスを操作するプログラムが書ける。 メモリ保護機能を使える (例: アクセス制限がかけられる)。

短所: 特定のアドレス範囲のキャッシュを無効にする必要がある (複雑なキャッシュ機構が必要となる)。 メモリバスが複数ある場合に複雑な制御が必要となる。

課題 2

割り込まれた瞬間の PC の値を保存するのも、 すべて「CPU 係」の役割であることに注意せよ。 「割り込み係」は単に自由なタイミングで声をかけるのみである。

課題 3

割り込み発生から、 割り込まれた時の PC に戻るまでの処理が 12 命令 (割り込まれた瞬間の PC の値の保存に 1 命令とカウントしている) である。 1 回の割り込みに要する時間が 12 Δ [s] であるから、 一秒間に最大

  1
-----
12 Δ

回の呼び出しが可能である。

課題 4

1 回のプロセス切り替えに要する時間が N Δ [s] である。 T [s] ごとのクォンタムごとに N Δ [s] だけの CPU 時間をプロセス切り替えに消費するから、 CPU の実効利用率は

    T
---------
 T + N Δ

である。

レポート課題 2024-06-21

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

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

質問

- スポーツとAIを掛け合わした内容のニュースや情報ってどのようなサイトを見たり読んだりするのがいいですか? オススメなどがあれば教えてください。

私の専門外なのでわかりません。もし私が「スポーツとAIを掛け合わした内容のニュー
スや情報」を知りたいと思ったら、

informatics sports
https://duckduckgo.com/?t=h_&hps=1&start=1&q=informatics+sports&ia=web

などで検索して、サーベイ論文や学会を探すと思います。上記の検索結果だと、サーベイ論文っぽい

Sport Informatics: A Historical Review
https://www.researchgate.net/publication/354043431_Sport_Informatics_A_Historical_Review

Advances in Sports Informatics Research
https://www.researchgate.net/publication/282273722_Advances_in_Sports_Informatics_Research

Sports Information Systems: A systematic review
https://www.researchgate.net/publication/351503014_Sports_Information_Systems_A_systematic_review

あたりから始めて、いろんな文献をチェックすると思います。

要望

- CTFでチームの画面に飛んでも、総合点ランキングやホームページに戻れるボタンが欲しいと思いました。

各ページの末尾に、総得点ランキングへのリンクを追加しました。

競技中に総得点ランキングが見られる
→ 他のチームの正解状況を見て、どこを解けばよいかの戦略が立てられる?

競技中に総得点ランキングが見られない
→ 競技が終わるまでワクワク感が保てる

で、トータルで考えると、見える/見えないのどちらが良いのでしょうね。

コメント

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

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

11. 入出力 (ユーザインターフェース)

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

2024-06-14 のものと同じ。

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

内容目標

- 文字ベースの端末、GUI (Graphical User Interface)、ネットワーク端末の違いを理解し、他人に説明できるようになる

- 文字ベースの端末で用いられるシリアル通信を理解し、その通信時間を定量的に議論できるようになる。

- GUI に用いられるディスプレイの構造を理解し、フレームバッファの操作に必要なデータ量を定量的に議論できるようになる。

- ネットワーク端末の原理を理解し、その通信時間を定量的に議論できるようになる。

課題

課題 1

端末エミュレータ上で stty コマンドを実行したところ、以下の出力が得られた。

$ stty -a
speed 38400 baud; rows 45; columns 106; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>;
start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff -iuclc -ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc

現在、実行中のプロセスを停止したい時にどのキーを押せばよいか。

課題 2

9.6 Kbps の 8 ビットシリアル回線 (スタートビット、 ストップビットともに 1 ビット、 パリティなし) で接続された端末から、 ANSI エスケープシーケンスを用いて画面をクリアし、 画面上に「Hello, World!」を表示するためのメッセージ送信にかかる時間を答えよ。

ANSI escape code
https://en.wikipedia.org/wiki/ANSI_escape_code

課題 3

1920 x 1080 ピクセルで 24 ビットカラーのディスプレイをクリアし、 16x32 ドットの固定幅フォントで画面左上に「Hello, World!」と表示するために、 フレームバッファの VRAM (Video RAM) に計何バイトの書き込みが必要かを答えよ。

課題 4

1920 x 1080 ピクセルで 24 ビットカラーのディスプレイ映像を非圧縮で遠隔地に転送するネットワーク端末を作りたい。 10 フレーム/秒のフレームレートを実現するために必要なネットワークの通信速度を答えよ。 ただし、 ネットワーク端末の実現において、 ディスプレイ映像以外のデータは無視できるほど小さいとする。

略解

課題 1

Ctrl + C (INT シグナル) または Ctrl + \ (QUIT シグナル) 。

課題 2

画面クリアの ANSI エスケープシーケンスは ESC [ 2 J の 4 バイト。 「Hello, World!」は 13 バイト。 1 バイトの送信に、 スタートビット、 データ (8 ビット)、 ストップビットの計 10 ビットの送信が必要である。 従って、 合計すると (4 + 13) * 10 = 170 ビットの送信が必要である。 従って、

 170 
---- = 0.0177 [秒]
9600

課題 3

フレームバッファの大きさが 1,920 * 1,080 * 24 = 49,766,400 ビット。 バイト換算すると 49,766,400 / 8 = 6,220,800 バイト。 1 文字の表示に 16 * 32 * 24 / 8 = 1,536 バイトの書き込みが必要。 「Hello, World!」が 13 文字であるから、

6,220,800 + 1,536 * 13 = 6,240,768 バイト (約 6.0 Mバイト)

課題 4

1 枚のフレームのサイズは 1,920 * 1,080 * 24 = 49,766,400 ビット (c.f. 課題 3)。 1 秒間に 10 フレームの伝送が必要であるから、

 49,766,400 * 10 = 497,664,000 ビット/秒 (= 約 475 M ビット/秒)
 

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

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

レポート課題 2024-06-28

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

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

質問

- 6/28のリフレクションシートを授業終了直後に提出したはずなのですが、関学のメールアカウントに送信完了メールが届いていないということは提出したつもりだっだだけで実際には提出できていないということでしょうか。このレポートを書く際に気付いたのでどうしようも無いことは分かっているのですが、未提出の場合成績にどれくらい影響があるのかが知りたいです。以前に説明済みだったらすみません。

サーバに記録されているデータで採点します。成績評価は「授業中試験 50%、平常リ
ポート 50%」です。

ただ、「単位」や「点数」に興味を向けるのではなく、オペレーティングシステムや
情報工学そのものにぜひ興味を向けてください。

要望

- CTFが終わった後に答えや解説を載せていただきたいです。

回答は公開しませんので、答えがわからないものは解けた人を見つけて聞いてくださ
い。解説は (少なくともヒントは) 提供できると良いのですが、毎週の問題作成で手
いっぱいなので要望には応えられません。

コメント

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

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

- 昨日締め切りを完全に頭から抜けていました。大変申し訳ございません。

12. ファイルシステム

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

2024-06-14 のものと同じ。

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

内容目標

- オペレーティングシステムにおけるファイルの構造を理解し、さまざまな種類のファイルを判別する仕組みを理解する。

- 階層型ディレクトリシステムの構造を理解し、ツリー構造に対するアルゴリズムによってファイルシステムを走査する方法を理解する。

- 階層型ディレクトリシステムのパス名を理解するとともに、セキュリティホールが生まれる原因の一つを理解する。

- ファイルシステムにおけるディレクトリエントリの役割を理解し、通常、ファイルを削除してもファイルの実体は削除されないという仕組みを理解する。

課題

課題 1

以下のファイル foo がどのような種別のファイルかを調査せよ。 ただし、既存のファイル種別判別ツールの使用は禁ずる。

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

課題 2

階層型ディレクトリシステムのディレクトリ構造は木 (tree) で表現できる。 ファイルシステムに格納されているすべてのファイルの一覧を表示するアルゴリズムを説明せよ。

課題 3

以下は、 GET リクエストのクエリ文字列に指定された Python のヘルプファイルを表示する CGI プログラム badprog である。

#!/usr/bin/env python3
import os
print('Content-type: text/html\n\n')
# クエリ文字列は環境変数 QUERY_STRING に格納されている
file = os.getenv('QUERY_STRING')
# 指定されたファイルをオープンし、ファイルの内容を返す
with open(f'/var/www/html/python-help/{file}') as f:
    print(f.read())

/var/www/html/python-help ディレクトリ以下に、 Python のさまざまモジュールのヘルプファイル (例: python-help/sys.html) が置かれている。 例えば、

https://server/cgi-bin/badprog?sys.html

によって sys モジュールのヘルプファイルが表示される (上記は架空の URL である)。

このプログラムの脆弱性を利用し、 サーバ上のパスワードファイル /etc/passwd を盗み出す方法を説明せよ。

課題 4

ある人が USB メモリに誤って数万人の個人情報が入ったファイルをコピーしてしまった。 あわてて該当ファイルを削除し、 オペレーティングシステムのごみ箱を空にした。 この人の対応は正しいか。 正しくないなら、 何がどのように正しくないかを説明せよ。

略解

課題 1

現在の多くのオペレーティングシステムでは、 ファイルは単なるバイト列である。 ほとんどのファイルは、 ファイル先頭のマジックナンバーによって判別できる。

ファイルの先頭 16 バイトを 16 進ダンプするプログラムの例 (dymp.py)。

$ cat dump.py
#!/usr/bin/env python3
import sys
file = sys.argv[1]
with open(file, 'rb') as f:
    buf = f.read(16)
    for b in buf:
        print(f'{b:02x} ', end='')
print()

$ python3 dump.py foo
67 69 6d 70 20 78 63 66 20 76 30 31 31 00 00 00 

以下より、 GIMP の画像フォーマットである XCF ファイルであることがわかる。

List of file signatures
https://en.wikipedia.org/wiki/List_of_file_signatures

課題 2

木の走査 (tree traversal) アルゴリズムを使えばよい。 ルートディレクトリから、 深さ優先探索で木を走査し、 訪問した頂点 (ファイル) の一覧を出力すればよい。

課題 3

クエリ文字列をそのままオープンするファイルのパス名に使用しているところに脆弱性がある。 この CGI プログラムによって、 HTTP サーバ上のあらゆるファイルを取得できてしまう。

パス名に .. が利用できることを利用すれば、/etc/passwd ファイルは /var/www/html/python-help/../../../../etc/passwd によってアクセスできる。 したがって、

https://server/cgi-bin/badprog?../../../../etc/passwd

にアクセスすることで /etc/passwd ファイルを入手できる。

課題 4

正しくない。 ファイルシステムにおけるファイル削除は、 通常、 ディレクトリエントリを削除するだけであり、 ファイルの実体は削除されない。 したがって、削除したはずの個人情報のファイルを容易に復元することができる。

※巨大な (例えば 1 G バイトの) ファイルを書き込む時間と、 書き込んだファイルを削除する時間を計測してみよ。 ファイルの書き込みよりも、 ファイルの削除のほうが圧倒的に高速である。 これも、ファイル削除はディレクトリエントリを書換えているに過ぎないからである。

レポート課題 2022-07-05

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

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

質問

- 今回の講義で、ごみ箱にファイルを入れても、ディレクトリエントリだけが削除されるため完全には消去されないと学びましたが、動画ファイルなどの容量が大きなファイルをゴミ箱に入れようとすると容量が大きすぎるため、ごみ箱に入れることができませんと表示されます。ディレクトリエントリのみを削除するだけならこのようなことにはならないのではないかと思いましたが、なぜでこうなるのでしょうか。

Windows で「ごみ箱に入れる」は、実際には削除するのではなく「削除予定のリスト
に追加する」に相当します。「削除予定のリストに入れられる容量」の大きさが決まっ
ているので、上記のような挙動になります。

要望

- 先週の授業について事前にオンデマンドとお知らせされていたため、外せない予定を入れてしまっていました。そのため一週間前に授業形態をオンデマンドから体面に変更されましたが、受けることができませんでした。ご配慮していただけると嬉しいです。

以下のように対応してください。

病欠/公欠時の手続き・学習法
https://lsnl.jp/~ohsaki/lecture/#5

- 今回(12回)課題の課題1のような、Wikipediaからマジックナンバーを探す問題は出るでしょうか?また、ある程度マジックナンバーは覚えていた方が良いのでしょうか?

まだ問題は作成していませんが、重要でない知識の記憶を問う問題は出しません。

コメント

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

12. 後半の総復習

授業の流れ

1. ガイダンス・質問記入 (5 分)
2. 質問への回答 (85 分)
5. リフレクションシート記入 (10 分)

態度目標

- 解説された内容を判的思考で分析し、できるだけ多くを吸収する。

- 脳が覚醒した状態のままでいる。

- クリッカーに記入する質問は、可能な限り、正しい日本語で具体的に記入する。

- 始めて知ったこと、なるほどと思ったことはノートに記録する。

内容目標

- 後半の「内容目標」すべてに到達できるようになる。

- 後半の内容に関連して、理解が不十分なもの、疑問が残っているもの、もっと知りたいものを言語化して質問できるようになる。

- 後半の内容に関連する疑問を一つでも多く解消できるようになる。

クリッカー

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

質問への回答

- テストは全て何問ですか?

まだ問題を作成してませんので未定です。10 問くらいだと思います。

- 前回、授業でDFS, BFSについて学びましたが、BFSにあまりメリットを感じません。幅優先になると非効率なので深さ優先の方が結局はやく見つかると思うのですが、どこにメリットがありますか?

用途によります。詳しくは他の質問への回答を観てください。

- 前回の授業で行ったファイルの識別の問題はどのような形で出題されますか?

まだ問題を作成してません。出題するかも含めて未定です。

- 前回の総復習みたいにCTFはしないんですか?今回

今回は質問への回答のみです。

- テスト勉強何したらいいですか

特別なテスト勉強は不要ですが、何かするなら各回の課題を解けるようにしておいて
ください。

- loTやAIを含むOSの今後についてどう考えていますか

未来は予測できないと考えているのでわかりません。

- 夏休み資格の勉強しようと思ってるんですけど、情報系学生にとって勉強しておくといい資格って何ですか?資格ではなく教材的なものでもいいです。

資格を取るのもいいですが、プログラムを自分で作る、競技プログラミングや セキュ
リティ CTF、ハッカソン等に参加する等が面白いと思います。

- 第9回目講義の内容目標である「最適なページ置き換えアルゴリズムがどのようなもので、なぜ困難であるか」について教えていただきたいです。

それぞれのページが、将来いつ参照されるかがわからないからです。未来がわかれば
最適なページ置き換えが可能になります。「神様がやったらどこまでできるか?」を
考えて、なぜ「神様にしかできないのか?」を考えてみてください。

- 試験時間は何分ですか?

70 分程度の予定です。

- 英語を学ぶメリットはどのようなものがあると思いますか?また、おすすめの英語の勉強法があれば教えてください。

アクセスできる情報や世界が広がるところだと思います。以下を見てみてください。

効率的な英語学習のためのヒント (草稿)
https://lsnl.jp/~ohsaki/research/tips-english/

- 応用情報技術者試験の学習コストは、基本情報技術者試験に比べてどれくらいかかりますか? 勉強するとすれば、どのような勉強方法がおすすめですか? おすすめの参考書などを教えていただきたいです。

受験したのはずいぶん昔で、今と試験問題も変わっていると思うのでわかりません。

- プログラミングで何の言語を一番使いますか?

最近だと Python です。

- 情報系の学習は自分たちが就職するときに重宝されると思いますか?

はい。

- IT系に就職するうえで、一番根幹になるような知識を挙げるとしたら何だと思いますか。

「何を自分の柱とするか」で変わると思います。私が重視するのは、情報工学のさま
ざまな概念の「メンタルモデル」です。例えば、「オブジェクト指向パラダイム」が
どういうものか頭の中でモデルを描けるか、「ウィンドウシステム」がどういうもの
か頭の中でモデルを描けるか、です。別の言い方をすると、ある程度の時間と予算さ
え与えられたら「自分でそれを作れる」と思える程度に理解しているか、です。

- 仮想アドレスが大きければ物理アドレスの大きさ以上のメモリ空間が扱うことができ、主記憶の容量以上のデータも扱えるのはなぜでしょうか?

質問が変ですね。ページングによって物理アドレス以上の(仮想)アドレスを使えるよ
うにしています。仮想アドレスを大きくすることは「目的」であって、「原因」では
ありません。

- CTFのような英語などの問題形式の問題も過去に出題されていますか?

いいえ。

- クリエ文字列をパス名にしていることに脆弱性があることを学びましたが、サーバー上のファイルをの保護を強化したい時はどのようなことをすればいいですか?

入力を必ず sanitize することです。詳しくは他の質問への解説を観てください。

- ページングの時のページのイメージがあまりつかないのですが、具体的にどのようなものですか?

4K バイト程度の固定長のメモリブロックです。

- 個人的に仲の良い教授や先生はいますか?(他学部でも構いません)

みなさん同僚なので、仲が「良い」とか「悪い」という観点でとらえていません。工
学部情報工学課程には素敵な先生方が揃っています。

- プログラミングを上達させるための一番の秘訣はなんですか?

(プログラミングに限らず) 好きになること、楽しむこと、熱中することだと思いま
す。プログラミングであれば、「欲しいもの (= 自分が使いたいもの) を作る」こと
をおすすめします。

- プロセスの切り替えが少ないシステムでは、スワッピングのシンプルさがページングよりも有利になることあると考えられますが、具体的な例としてどんなものがありますか?

「スワッピングやページングが起こる = プロセス数が多い and/or 物理メモリが小
さい」です。そういう状況下ではスワッピングが有利になることは難しいと思います。

- 拡張子を使ってファイルの種類を判断するのは信頼できる方法ですか?例外がある場合、どのようなものがありますか?

いいえ。まったく信頼できない方法です。「例外」とはどういうい意味ですか?

- 文字ベースの端末、GUI (Graphical User Interface)、ネットワーク端末の違いを理解できなかったのでもう一度説明をお願いします

過去の講義ビデオを観てください。

- パリティありの場合、実際どんな動きをしているのでしょうか?メッセージの送信時間を遅らせてまで、どのようなメリットがあるのでしょうか?

「1 ビットの伝送誤りを検出できる」という非常に大きなメリットがあります。

- 仮想アドレスがプライバシー保護に役立つと自習でわかったのですがどのように役立つのですか?

一般的には、ページングとプライバシ保護は関係ありません。

- 理系の学部卒はトヨタ自動車以外にメーカー系の就職先が見つからないのでしょうか?

質問が変ですね。トヨタ自動車は自動車メーカーであって電気メーカーではありませ
ん。学部卒でも技術系として採用するかどうかは業界や会社によると思います。自動
車業界なら、トヨタ自動車に限らず学部卒の技術系を採用してそうなイメージです
(実際にどうかは自身で調べてみてください)。

- 社会に出る前にしておいた方が良いということはありますか?

大学・大学院生活を満喫することだと思います。

- FIFOとLRUはどのように使用されていますか?

どういう意味ですか?

- リフレクションシートやクリッカーのメッセージを入力する部分はなぜ大きさを変えられるようにしてるんですか?(右下の斜め線2本のやつです)

使っている Web ブラウザの機能だと思います (単なる textarea で、フォーム側で
特殊なことはしてません)。

- ファイルを削除しゴミ箱を空にしてもファイルの実体は消えないがストレージに空きができるのはなぜですか?

空きブロック数 (ただし初期化されていない) が増えるからです。

- 新しいOSを作ることはアプリ開発よりも難しいものですか?

OS やアプリの種類のもよりますが、一般的にはその通りです。ソフトウェアの開発
を容易にするために作られたのが OS ですので、難しい処理の多くは OS が引き受け
ています。

- ファイルシステムにおけるファイル削除は通常、 ディレクトリエントリを削除するだけでファイルの実体は削除されないと分かりましたが、前回授業の課題4のようにファイルを削除してごみ箱を空にしても完全には削除されないのでしょうか?ゴミ箱を空にすることでファイルの実体を削除できるわけではなのですか?また完全に削除するには削除してからどのような処理をすれば良いのでしょうか?

「ゴミ箱を空にする = OS における通常のファイル削除」ですので、実体は消えませ
ん。詳しくは他の質問への回答を観てください。

- 夏休みにプログラミングの勉強をしようと考えていますが、先生が最も習得するべきだと思うプログラミング言語は何でしょうか?

「すべき」言語はありませんが、「自分が作りたいものを作れる言語」をマスターす
ることをすすめます。

- 8回の課題3,4で1バイト=8bitだと思っていましたが、13bit=8192バイトとなっていて、分からなくなっているのですが、前者と後者のbitとバイトの関係は違うものですか?

「13 ビット = 8,192 バイト」と思っているのが勘違いです。課題の略解をもう一度
読んでみてください。13 ビットで表現できる非負整数が 0〜2^13-1 の 8192 種類で
す。

- 先生は英語でのサイトを読むように推奨していますが、機械翻訳で和訳させても大丈夫ですか?私自身はそのような方法で今までは学習していました。

大丈夫ではないと思います。普段は英語のまま読み、疲れている時は (疲れていて読
めないので) 機械翻訳に頼る、くらいが良いと思います。

- R (プログラミング)って独学でした方が良いですか?

上と同じで、習得「すべき」言語はありませんが、興味があるならマスターすると良
いと思います。(一部、大学の授業等で学ぶものを除き) 基本的に、プログラミング
言語は独学でマスターするのが普通だと思います。

- 出席できなかった授業もあるので、CTFの書く問題の答えを知りたいです。またその考え方なども添えてくれると嬉しいです。

過去の回答を観てください (回答は非公開で、解説はありません)。

- 第11回の内容目標「文字ベースの端末、GUI (Graphical User Interface)、ネットワーク端末の違いを理解」について。文字ベース端末とGUIが比較されるのは理解できるのですが、ネットワーク端末は単に別物としか思えませんでした。どういった要素に着目して並べているのですか?

タネンバウムの「モダンオペレーティングシステム」の分類です。ローカルか非ロー
カルで分類し、ローカルなものを情報の種別で分類しているのだと思います。

- 初心者がRaspberry Piを勉強するには何から手をつければいいですか?

Raspberry Pi に限らず、「欲しいものを作る」ことをおすすめします。

- 大崎先生は、どのような資格、免許をお持ちですか?

上の質問への回答で話したもの (IPA の資格、英検、運転免許、博士号) くらいしか
持ってません。

- ポートマップド I/O とメモリマップド I/Oについて、どちらがより主流ですか?

具体的なデータを見たことがないのでわかりません。両方併用されているケースが多
いような気がしますが、コンピュータの規模や用途にもよりそうです。

- パソコンのタイピングが遅いのですが、地道に練習すれば他の人のように早くなれますか?また、良い練習方法はどんなことがありますか?

はい。速く、正確にタイピングするのに特別な才能は必要ないと思います。ただし、
正しい知識を知って、正しいフォームで練習してください。

- 今回絶対時間オーバーするやんwww

授業中に回答できなかったものは (このように) 講義ページに回答を掲載します。

- CPUとデバイスコントローラの通信において、ポートマップドI/Oと比較した時の、メモリマップドI/Oの長所と短所は講義内で行いました。なので、ポートマップドI/Oの長所と短所を教えてください?

メモリマップド I/O の利点・欠点の裏返しです。一般に、A と B を比較した時の A
の利点・欠点は、B の欠点・利点です。

- 10. 入出力の課題3の解に割り込み発生から、割り込まれた時の PC に戻るまでの処理が 12 命令とありますが、なぜ12命令か教えて欲しいです

- 第10回の課題3の解説の計算で、行番号の何行目から何行目の命令を数えて12命令になっていますか?

この課題の略解では、割り込まれた瞬間の PC の値の保存に 1 命令、100 行目の値
にジャンプで 1 命令、200〜209 行目の命令の実行で 10 命令、と数えています。

- テストしんどいです

がんばってください。簡単なことを繰り返しても成長しないので、適度な負荷をかけ
ることは必要だと思います。

- リフレクションシートや自習後に提出するレポートって1人何分ぐらいのペースでみてるんですか?

測ったことはありませんが、数十秒くらい (?) だと思います。

- Appleの下取りサービスは個人情報漏洩の危険はないですか?

わかりません (知りません)。

- プログラミング実習Ⅱの落単が確定しました。これからどうすればいいですか???

私の好きな言葉を紹介します。「経験とは、求めていたものを手に入れられなかった
ときに、手に入るものだ。」 -- ランディ・パウシュ

- 生命、宇宙、そして万物についての究極の疑問の答えとは?

どういう意味ですか?

- なんでレッサーパンダが好きなんですか?

かわいいからです。

- 第10回の課題4で、CPUの実効利用率とはどのような意味ですか?CPUがプロセス実行に利用される割合というのがあまりイメージが付かないので、図などを使って説明していただきたいです。

effective な利用率 (utilization) という意味です。

---- Oxford Wordpower: effective /ɪˈfektɪv/ adjective
effective /ɪˈfektɪv/ adjective
1 successfully producing the result that you want
- Scientists are looking for an effective way to reduce energy consumption.
- a medicine that is effective against the common cold
- That picture would look more effective on a dark background.
[OPP] ineffective
2 [only before a noun] real or actual, although perhaps not official
- The soldiers gained effective control of the town.

CPU が 100% 動きっぱなしでも、処理の 20% が無駄なことをしていたとします。こ
の時の CPU の実行利用率は 100% - 20% = 80% となります。

- 資格はあまり役立たないとおっしゃっていましたが就活においてもあまり意味をなさないのでしょうか?よくTOEICの点数が高いと就活で大きなメリットだと耳にするのですが資格の種類や仕事の業種によるのでしょうか?

「価値があるもの = 希少性があるもの」です。22 歳で、TOEIC 950 点なら希少性が
あるので (就職活動においては) 多少は価値はあるでしょう。ただし、あくまで「多
少は」でしょう。

そもそも、人生において就職活動をしている時間は (普通は) ごく短時間です。例え
ば、結婚式に出席した時に役立つ知識 (例: スピーチのマナー) は持っているに越し
たことはありませんが、普通の人が一生の間に結婚式に出席する回数は限られていま
す。

- 研究内容は将来の仕事の業種にどのくらい影響があるとお考えですか?ほとんどの方が研究内容と関連した就職をされますか?

ある程度の影響があると思います。例えば、私の研究室出身の大学院生の多くは情報
通信関係の企業に就職しています。もともと情報通信に興味があったから私の研究室
に来たのか、私の研究室に来たから情報通信関係の企業に就職したのかはわかりませ
ん。

- 動画配信サービス「ニコニコ」のサイバー攻撃に関して大崎教授はどのように考えておりますか?

ひどい話ですが、明日は我が身でと思ってます。

- 今まで授業を受けてきてOSに興味が湧きました。自分で一度学習してみたいと考えているのですが、OSに関する書籍で先生の思う良著があれば教えていただきたいです。

OS の仕組みならタネンバウムの教科書、OS の使い方ならオライリーの本を読むと良
いと思います。

- 「FPSで動作がカクつくのはどうしてですか?」という質問をした者です。大崎先生は好きなゲームありますか?

コナミのグラディウスシリーズです。グラディウスに感動して、中学生の時に、グラ
ディウスを自分で作ってみたくてプログラミングを始めました。

- 授業でFIFOとLRUについて学びましたが、その2つが組み合わされることはあるのでしょうか?

面白い発想ですね。アリかもしれません。探せばそういう論文があるかもしれません。
ぜひ調べてみてください。

- フレームとパケットの違いは何ですか?

文脈にもよりますが、一般的にフレームはレイヤ 2 (データリンク層) における情報
のまとまりを、パケットはレイヤ 3 (ネットワーク層) における情報のまとまりを意
味することが多いです。したがって、イーサネットフレーム、IP パケットのように
呼ばれます。普通は、イーサネットパケット、IP フレームとは呼びません。

- 12回の課題4での具体的な解決策は何がありますか?

物理的に破壊するのが一番です。フラッシュメモリやハードディスクは、ゼロで上書
きしても技術的には復元できるようなので、論理的に消去しても安心はできません。

- 授業内でfooのファイル形式を調べる際、ダウンロードして調べたのですがこのやり方の場合ウイルスの危険に晒される可能性はありますか?また、ダウンロードせずに調べる方法があれば教えていただきたいです。

もちろんあります。危険なものには近付かないことです。原理的に、取得 (ダウンロー
ド) せずに調べるのは不可能です。

- CTFの一番最後の回の問6,7で、Weikipediaのリストに載っていなかったのですが、この場合どのような種別のファイルかをどのように判別したらよいですか?

載ってますよ。06-type は PDF です。07-type はひっかけ問題で、ただのテキスト
ファイルです。

- 大崎先生の研究室の生徒さんは今、どのような研究をやっているのですか?

以下のページを見てみてください。
https://rm.lsnl.jp/projects/public/news

- IT系の仕事に就く際に、とっておいた方がいい資格があれば教えてください。

- PCや携帯などで写真やアプリを削除して容量が減ったということは実体を完全に削除できているということでしょうか?復元はなんらかの方法でできるのでしょうか?

他の質問への回答を観てください。

レポート課題 2024-07-12

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

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


Hiroyuki Ohsaki (ohsaki[atmark]lsnl.jp)