Operating System Concepts 2章練習問題

恐竜本の2章練習問題を解きました。

2.1 What is the purpose of system calls?
自身の回答:アプリケーションプログラムがカーネルモードの特権が必要な命令を使うため

解答:ユーザーレベルのプログラムがOSにサービスを要求するため。
2.2 What are the five major activities of an operating system with regard to process management?
自身の回答:プロセス作成
スケジューリング
権限管理
プロセス間通信
プロセスの終了
解答:ユーザー・システムプロセスの作成・削除
プロセスの停止と再開
プロセス同期の仕組みの提供
プロセス間通信の提供
デッドロックのハンドリング
2.3 What are the three major activities of an operating system with regard to memory management?
自身の回答:ページング
スワッピング
解答:メモリのどの領域をどのプロセスが使っているかのトラッキング
メモリ領域に空きがある時どのプロセスをロードするかの決定
メモリ空間の割当と解放
2.4 What are the three major activities of an operating system with regard to secondary-storage management?
自身の回答:空き領域の管理
ファイル・ディレクトリの管理
パーティションの管理
解答:空き領域管理
ストレージ割当
ディスクスケジューリング
2.5 What is the purpose of the command interpreter? Why is it usually separate from the kernel?
自身の回答:人間がインタラクティブにOSの機能を操作するため。人間が使うことを想定しないマシンにOSがインストールされる場合カーネルにコマンドインタプリタを実装していると無駄になるため。
解答:ユーザーもしくはファイルからコマンドを読み、通常1個以上のシステムコールに変換しつつ実行するため。カーネルに含めない理由は、コマンドインタプリタは変更されうるため。
2.6 What system calls have to be executed by a command interpreter or shell in order to start a new process?
自身の回答:forkとexec
解答:Unixではforkシステムコールとexecシステムコールが新たなプロセスを開始するために実行される。forkは現在実行中のプロセスをクローンし、execは呼び出し元プロセス上に別の実行可能プログラムを重ねる。
2.7 What is the purpose of system programs?
自身の回答:OSカーネルの機能にはないがOSを活用する上で必須となるようなGUIやターミナルエミュレータの機能を提供すること。
解答:システムプログラムは便利なシステムコールを集めたものと考えることができる。よくある課題を解決するためにユーザーが自分自身でプログラムを書く必要をなくすという機能を提供している。
2.8 What is the main advantage of the layered approach to system design? What are the disadvantages of using the layered approach?
自身の回答:下層の詳細は下層が抽象化するため、上層を変更することなく下層を差し替えたりその逆が可能となる。不利な点は下層は汎用性を高くするような実装をすることになり、ときに性能が犠牲となる。
解答:分割性の高いデザインの他の例に漏れず、OSを分割性高くデザインすることには利点が存在する。変更が限られたシステムのセクションにのみ影響を与えるのでシステムをデバッグし変更しやすくなる。また、情報が必要な場所にのみ保持され、限られた決まった領域からしかアクセスできないので、そのデータに影響があるバグは特定のモジュールやレイヤーに存在箇所が限定できる。(デメリットは?)
2.9 List five services provided by an operating system, and explain how each creates convenience for users. In which cases would it be impossible for user-level programs to provide these services? Explain your answer.
自身の解答:ファイルシステム:ディスクアクセスを抽象化し、どのセクタにどのようなデータが入っているかをユーザーは考えなくて良い。ユーザーレベルプログラムがもしそれを担当するなら、ディスクのスケジューリング等で他のプロセスと協調する必要があり現実的には不可能。
仮想メモリ:他のプロセスの領域を破壊する等考えなくてもメモリを割り当てたり開放したりする要求を出すだけで良い。ユーザーレベルプログラムは他のプロセスと協調(ry
プロセスのスケジューリング:明示的に実行権を別のプロセスに渡したりしなくて良い。
同期:
マシンの起動後処理:起動直後に起動されるプログラムがユーザーモードで起動されているとデバイスを操作できないので初期化できない。
解答:

a. プログラムの実行 OSはファイルのコンテンツをメモリに読み込んで実行を開始する。ユーザーレベルプログラムはCPU時間を適切に割り当てる事ができると信頼することができない。
b. I/Oオペレーション ディスク、テープ、シリアル線、その他デバイスは非常に低レベルで通信する必要がある。ユーザーはデバイスとそのデバイス上で実行するオペレーションを指定するだけでよく、システムはその要求をデバイスもしくはコントローラ特有のコマンドに変換する。ユーザーレベルプログラムはアクセスできるはずのデバイスにのみアクセスし、それ以外のときにはアクセスしない、ということを信頼することができない。
c. ファイルシステム操作 ファイル作成、削除、割当、ユーザーが行うべきではないネーミングに関して、多くの詳細事項が存在する。ファイルによって使用されているディスク空間のブロックは追跡されなければならない。ファイルを削除するということはファイル名の情報を取り除き割り当てたブロックを解放することを要求する。正常なファイルアクセスを保証するため保護のチェックもしなければならない。ユーザープログラムは保護手法に準拠したり空きブロックのみを割り当てファイル削除でブロックを解放するということを確約できない。
d. 通信 システム間のメッセージ受け渡しはメッセージを情報のパケットに変えてネットワークコントローラに送信され、通信媒体に送出され、目的地のシステムで再構成されることを要求する。パケットの並べ替えやデータの修正が行われなければならない。ユーザープログラムはネットワークデバイスへのアクセスを協調させないかもしれないし、別プロセス宛のパケットを受け取るかもしれない。
e. エラー検出 エラー検出はハードウェアとソフトウェアの両方で起こる。ハードウェアレベルでは、伝達中にデータが破損していないことを確約するためすべてのデータ送信を検査しなければならない。記録媒体のすべてのデータは書き込んだときから変化していないことを検査しなければならない。ソフトウェアレベルでは、データの整合性に関して媒体をチェックする。例えば割り当てたブロック数と未割り当てのブロック数がデバイスの合計ブロック数に一致することを確認する。ここでエラーはしばしばプロセスに依存しないので、全タイプのエラーに対処するグローバルなプログラムが必要となる。こうすることでユーザープログラムはシステムで起こりうるエラーを捕捉して修正するコードを含まなくて良くなる。
2.10 Why do some systems store the operating system in firmware, while others store it on disk?
自身の回答:ファームウェアに入れるメリットは書き換えが困難であるため、プログラムのエラーやOS脆弱性などによるOS破損をハードウェア的に防止できる。一方アップデートが難しいため、ディスクに入れたほうがアップデートし易いというメリットが有る。
解答:PDAや携帯電話などではファイルシステム付きのディスクが利用不可能である。この状況ではOSはファームウェアに保存されていなければならない。
2.11 How could a system be designed to allow a choice of operating systems from which to boot? What would the bootstrap program need to do?
自身の回答:ブートローダを最初に起動し、ディスク内のOSを認識させ、どのOSを起動させるかの選択肢を出すようにする。
解答:Windows XPと3つの異なるLinuxディストリビューションを動作させたいシステムを考える。それぞれのOSはディスクに保存されている。システムのブートアップでブートマネージャという特殊なプログラムがどのOSを起動するかを決める。これはOSを最初に起動するというよりもブートマネージャがシステムのスタートアップで最初に実行されるということを意味する。どのシステムを起動するかを決める責任があるのはブートマネージャである。ブートマネージャはシステムスタートアップ中に認識されるハードディスクの特定の領域に保存されなければならない。ブートマネージャはしばしばユーザーに起動するシステムの選択肢を与える。ブートマネージャは典型的にはユーザーが選択肢を選ばなければデフォルトのOSを起動するようデザインされている。

コメント

タイトルとURLをコピーしました