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

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. 後半の総復習
23. 授業中試験について

12. 後半の総復習

授業の流れ

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

態度目標

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

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

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

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

内容目標

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

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

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

クリッカー

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

質問への回答

- 実際に実装可能なページ置き換えアルゴリズムの中で、最も最適だと考えられるものはどれですか?

- メモリ管理(2)で最適なページ置き換えアルゴリズムの実現は困難とありますが、実現しているアルゴリズムの中で最も最適なアルゴリズムは何ですか?

問題設定 (例えば、どのような事前知識があるのか) によりますが、特定の条件下で
なければ一般に LRU が有効だと思います (「最適」ではありませんが)。

- データを削除した後に、空いたところに新たなデータが入ることで元のデータは消えたと言えますか?

一般的には Yes です。

- I/O は CPU にとってどれくらい負担になるのでしょうか?

どういう意味ですか?

- USBメモリなどに書き込みと削除を繰り返したとき、過去に書き込んだデータが残っていることでメモリ容量が減っていき徐々に書き込みができなくなることはありますか?

ファイルシステムによりますが、普通はありません。

- ANSIエスケープシーケンスは基本どこに打ち込むものなのでしょうか?

端末に表示するものです。C 言語なら、printf 文の引数の文字列に書きます。

- オペレーティングシステムの講義の「自習」の際、授業HPを参照し、授業で提示された課題をしたり、録画された授業動画を見たりする人はもちろんいると思いますが、他にもどういった自習をされている人がいますか?「自習」に対して、新しい視点が欲しいです。

よく見られるのは、(1) テーマを定めて、自分で調査して理解を深める、(2) プログ
ラムを書いて動作させて学んだ概念の理解を深める、(3) 学んだ内容を友人と議論し
て理解を深める、というものです。

- 保存領域のファイルの中身を書き換えず、ディレクトリエントリを削除するだけなのは、SSDに書き込み回数の上限があることも理由の一つですか?

そういう意義もありますが、SSD が登場するずっと前からです (余計な処理は必要で
ない限りやらない、という設計方針です)。

- どんな学生に研究室に来てほしいですか

 教員は選ぶ立場ではなく、選ばれる立場だと思ってます。どういう学生さんに向いて
 いるかについては、以下のページを見てみてください。

 ネットワークアーキテクチャ研究室の紹介 (2024 年バージョン)
 https://lsnl.jp/~ohsaki/lsnl/intro/
 

- この授業のサイトでは、脆弱性を突かれないための対策は何かされているのですか?

はい。

- 脳が覚醒した状態のままでいるには日頃から何を行えば良いですか?

「自分はどういう時に集中力が低下するか / 眠くなるか」のパターンを理解し、そ
の逆を実行することだと思います。

- 第9回でFIFOとLRUについて学びましたが、FIFOを使うほうが適しているという場面はあるのでしょうか?

とにかく単純なことが求められる場合、「参照の局所性」が成り立たない時、などです。

- いつからアプリを自作しようと考えるようになったのですか?

中学生の時です。もともとはゲームセンターのシューティングゲームに感動し、同じ
ようなものを自分で作ってみたいと思いました。

- 先生が学生の時には何かアプリケーションの配信等について挑戦しましたか?

どういう意味ですか?

- PythonやC言語など様々なプログラミング言語がありますが、OSを学ぶ上でよく使うプログラミング言語を教えていただきたいです。よく使うプログラミング言語の利点も教えていただけると嬉しいです。

OS なら C 言語とアセンブリ言語です。C 言語とアセンブリ言語以外では事実上 OS
を作れないからです。

- メモリ保護機能について簡単に説明していただきたいです。

4 KB くらいのページ単位で、メモリへのアクセスを許可し、不正なアクセスを MMU
が監視しています。不正なアクセスが発生すると割込みが発生し OS が対処します。

- CPU とデバイスコントローラの通信において、ポートマップドI/OとメモリマップドI/Oは具体的にそれぞれどのようなシチュエーションが適しているのですか?

シチュエーション (状況) で決まるものではなく、コンピュータの設計時に (設計者
が) 決めるものです。

- アプリを作成するときは、何のプログラミング言語で書いていますか?

主に Python です。他には、シェル、Perl、Emacs Lisp、JavaScript、C、C++、アセ
ンブリ言語などもこの順によく使います。

- ゲームのプログラムをするのに最適なプログラムはなんですか?

プログラミング言語ですか? ゲーム開発のレベルによります。小学生なら Scratch
が良いでしょうし、商用のゲーム開発なら C++ が良いでしょう。

- 応用情報技術者試験は理系のみの職業に就くならば役に立つと思いますか。また、この先とっておくと良いと思う資格はありますか。

一般に「免許 (それがないとできないもの)」は役立ちますが、「資格 (それがなく
てもできるもの)」は大して役立ちません。それがないとできない「免許」なら取得
する価値があると思います。

- シェルスクリプトを勉強するときにおすすめの方法や本などあれば教えてください

UNIX プログラミング環境がおすすめです。以下も参考にしてください。

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

- 仮想記憶は大きさに制約がないのですか?

いいえ。仮想アドレスの大きさで決まります。

- テスト勉強としてCTFの問題の解きなおしをしたいのですが、問題や正解をまとめて公開していただくことは可能でしょうか?

過去の問題は公開しています (ランキングのページから閲覧できます)。正解は公開
していません。

- OSのプログラミングをする際にどの言語を使っていますか?また、何の言語が万能で最強だと思いますか?

OS は (今でも) C 言語とアセンブリ言語です。万能な言語は (言語に限らず何でも)
ありません。

- 先生が仰っているように10年後、20年後に役立つような質問をすべきだと思っています。ただ、今理解していないと10年後も理解していないと想像できるのは容易です。また、過去問が多くあることでより深い理解に繋がります。これらのことを考えると授業内テストに対する勉強も、10年後にも役立つ価値あるものになると思います。そのためにも過去問が必要なのですが、授業内テストの過去問やその解答・解説等はありますでしょうか? 授業内テストに関する質問に対してすぐに切り捨てるのは止めていただきたいです。

授業内テストの過去問は公開していません。「授業内テストの過去問が必要」と思い
込んでいるのが勘違いです (本当に重要で必要ならものなら提供しています)。

(私が優れた指導者かどうかは別にして) 一般に、優れた指導者との対話によって物
事への理解が深まります。

学生 (学習者) 「授業内テストの過去問は公開されているか。」
教員 (指導者) 「いいえ。もっと意味のある質問をせよ。」

上記の対話で、少しでも物事の真理に近づけるでしょうか (近づけません)。

他の人の質問だと例えばこう↓です。

学生 (学習者) 「FIFO より LRU が優れているのは理解した。しかし、FIFO が優れている場面はないのか。」
教員 (指導者) 「ある。単純であることが重要な場合。また、「参照の局所性」が成り立たない時だ。」

この質問者の方は、少しだけ物事の真理に近づけたかもしれませんね。

前半の総復習の時にも伝えたと思いますが、私の好きな言葉を送ります: 「すぐに役
立つものは、すぐに役立たなくなる」

- 最近のスマホアプリは必要な容量がとても多いと感じるのですが、自分でアプリ内部をいじって必要のない機能を消すことで容量を減らすといったことはできないのでしょうか?

ソースコードが公開されているものであれば可能ですし、それほど難しくありません。
しかし大部分のアプリはソースコードが公開されていないので不可能です。

- Linuxを使っている友人に「LinuxはWindowsよりメモリ効率が圧倒的にいい」と言われたのですが、実際なぜそのようなことが起こるのですか?

設計思想がまったく違うからです。

- 12回の課題1のような問題がテストで出題される場合、アスキーコード表は問題と一緒に載せていただけますか?それとも、アスキーコードも暗記しなければいけませんか?

ASCII コードを暗記することは単位取得には必要ありませんが、おおよその ASCII
コードを覚えておくことは役立ちます。

「単位を取るために何をすればよいか」から (そこに意識が向くようなことばかり今
までしてきて、離れることが難しいのは理解できますが) 離れましょう。

以下については、他の質問への解答を観て/見てください。

- ファイルを削除した時に行われる操作はなんですか

- 中古のパソコンを買った際に内部のHDDやSSDなどに入っていた内容も頑張れば復元できるということなのでしょうか

- 次回授業内テストがあると思いますが、どのような問題が出題されるのでしょうか?また、過去問やその解答・解説等は公開されていますでしょうか?OSについて深く理解しているか確認するために必要な要素だと思いますので知りたいです。

- ファイルなどを盗み出されないようにするためにすぐにできる簡単なことでどんな対策が出来ますか?

- 今から勉強すべきプログラミング言語はなんですか?

- ファイルの完全な削除の方法はありますか?

- テスト勉強は何をすればいいですか?

- 別の授業にて、学校で学ぶプログラミング言語以外も学ぶべきと聞いたのですがどの言語を学ぶべきだと思いますか

- 削除したファイルを復元するためにはどのようなことをすれば良いですか?

- 定期テストの形式が知りたいです

- 特定の深さにあるファイルを探す場合、DFSとBFSのどちらが向いていますか?

- CTFの知識は何に役立ちますか?

以下については過去の講義ビデオを観てください。

- ページフォルト数が最小となるような最適なページ置き換えアルゴリズムの求め方がいまいちわからないので教えてほしいです。

レポート課題 2025-07-04

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

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

[<21. 12. ファイルシステム] [>23. 授業中試験について]