恐竜本1章練習問題を解きました。章末問題は解答がなかったため、ネット上の著者のページに有る問題です。
1.1 What are the three main purposes of an operating system?
自身の解答:
- ハードウェアリソースを最大限活用すること
- ハードウェアの操作を抽象化すること
- 複数のプロセスを同時に走らせること
模範解答:
- コンピュータのハードウェア上で簡便かつ効率的にプログラムを実行する環境をユーザーに与えること
- できる限り公正かつ効率的に、与えられた課題を解くのに必要なだけのコンピューターリソースを分割して割り当てること
- ユーザープログラムの実行を監視しエラーや不適切な使用を防ぎ、I/Oデバイスの操作と制御を管理すること
1.2 We have stressed the need for an operating system to make efficient use of computing hardware. When is it appropriate for the operating system to forsake this principle and to “waste” resources? Why such a system not really wasteful?
自身の解答:
ユーザーの操作を受け付ける必要がある場合は効率が落ちても操作の通りに動かなければならない。
模範解答:
単一ユーザーシステムはそのユーザーの利便性を最大化するべきであり、GUIはCPUサイクルを無駄にするかも知れないがユーザーとシステムの相互作用を最適化している。
1.3 What is the main difficulty that a programmer must overcome in writing an operating system for a real-time environment?
自身の解答:
Realtime環境では処理にかけて良い時間が厳密に決まっているので、それを保証するため処理のキャンセルやキャンセル後の始末、処理の高速化などが難しさとなる。
模範解答:
OSが固定された時間制限の中で動かなければならないことが主要な困難となる。そのためリアルタイムシステムのOSを書く場合、時間制限を破るのを許さないようにスケジューリング手法を構築しなければならない。
1.4 Keeping in mind the various definitions of operating system, consider whether the operating system should include applications such as Web browsers and mail programs. Argue both that it should and that it should not, and support your answers.
自身の解答:
OSはアプリケーションプログラムを動かすための場であるべきであり、アプリケーションを含むのは責務分担的にいびつに思える。
模範解答:
アプリケーションをOSに組み込むべきとする議論ではカーネルの特性をより利用できパフォーマンス向上につながると言われる。組み込むべきではないとする議論ではアプリケーションはプリケーションでありOSではない、パフォーマンス向上は脆弱性と表裏一体、OSが膨張する、などと言われている。
1.5 How does the distinction between kernel mode and user mode function as a rudimentary form of protection (security) system?
自身の回答:
I/Oやハードウェアの状態を直接操作するような命令をユーザーモードで実行できなくしておくことで、アプリケーションのバグや悪意あるアプリケーションによってシステムが不安定になるのを防ぐ。
模範解答:
一部の命令やハードウェアへのアクセス、割り込みの有効化と無効化などがカーネルモードでしかできないことにより、重要なリソースへの保護が強化できている。
1.6 Which of the following instructions should be privileged?
自身の回答:
a,b,d,e,f,h
模範解答:
a,c,e,f,h
1.7 Some early computers protected the operating system by placing it in a memory partition that could not be modified by either the user job or the operating sysyem itself. Describe two difficulties that you think could arise with such a scheme.
自身の回答:
OSモジュールを動的にロードしたりアンロードしたりできない。I/Oのバッファをユーザーがいじれる場所に置かなければならなくなり、プロテクトできない
模範解答:
OSに必要なパスワードやアクセスコントロール、アカウント情報などのデータを保護されていないメモリに置く必要がでてしまい、認可されていないユーザーがアクセスできてしまう。
1.8 Some CPUs provide for more than two modes of operation. What are two possible uses of these multiple modes?
自身の回答:
アプリケーションが使って良い命令をきめ細かく制御できる。
模範解答:
複数のユーザーモードが存在できるので、例えばあるグループにモードを割り当て、そのモードにいるときは同じグループ内の他のユーザーのコードを実行できる、といったアクセスコントロールができる。また、カーネルモードが複数存在できる。これは、特定のモードでだけUSBデバイスを動かせるというような使い方ができる。
1.9 Timers could be used to compute the current time. Provide a short description of how this could be accomplished.
自身の解答:
模範解答:
プログラムが未来のある時刻にタイマーをセットし、スリープする。タイマー割り込みで起動した時、今まで何回割り込みが起きたかをカウントするカウンターをインクリメントする。これを繰り返せば時刻をトラックできる。
1.10 Give two reasons why caches are useful. What problems do they solve? What problems do they cause? If a cache can be made as large as the device for which it is caching (for instance, a cache as large as a disk), why not make it that large and eliminate the device?
自身の回答:
メモリより高速にアクセスできるので、頻繁にアクセスするデータを置くと実効メモリアクセス速度が向上する。問題はキャッシュのサイズは有限であるためどのデータを残しておいてどのデータをメモリに書き出すのかを考える必要がある。また、サイズが非常に大きくなっても揮発性メモリなのでディスクを置き換えることはできない。
模範解答:
キャッシュは複数のコンポーネント間でデータを交換する必要があるが、それぞれの転送速度が異なるときに役立つ。キャッシュは中間的な速度で転送でき、速い方のコンポーネントが待つ時間が短くなる。問題はデータがコンポーネント間で整合している必要があるということである。マルチプロセッサシステムでは特に問題で、キャッシュ内容とメモリ内容が異なっているとプロセッサ間で不整合が起きる。また、遅いコンポーネントをキャッシュで置き換えることは可能であるが、それは不揮発性にでき、同じ容量を十分安い値段で買える場合に限る。
1.11 Distinguish between the client-server and peer-to-peer models of distributed systems.
自身の回答:
クライアント・サーバーシステムでは中央にサーバーが存在しクライアントにジョブを投げる。ピアツーピアシステムではノード同士が互いを発見しジョブを分散する。
模範解答:
クライアント・サーバーモデルでは、クライアントとサーバーの役割が明確に区別されており、クライアントはサーバーにサービスを提供することを要求する。ピアツーピアモデルでは厳密な役割がなく、あるノードが別のピアにサービスを要求したり、同じノードが別のノードにサービスを提供したりすることもある。
コメント