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

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

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
は「並行」ではなく「並列」です)。今は直っていると思います。

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

[<15. 6. スケジューリング (2)] [>17. 8. メモリ管理 (1)]