- OSはどのようにして一般ユーザーの不正なアクセスを防ぐか
ユーザープログラムを低い特権レベルで動かす
- 割り込みとは何か?割り込みにはどのような種類があるか
CPUに送られる要求の一種である。デバイスの動作が完了したときなどに発生する
ハードウエア的な割り込みと、不正な命令の実行時やシステムコールの呼び出し、デバッガの
ブレークポイントなどのソフトウエア的な割り込みが存在する。
割り込みに優先度を付けて優先度順に実行する
内部割込みは実行しているプログラムに起因する割り込みである。一方で外部割込みは
プログラムとは関係なく、起こる割り込みである。
例外割り込みと制御プログラム呼び出し割り込みがある。
各割り込み番号に対応する割り込みハンドラのアドレス情報などを保持する
- I/Oの種類にはどのようなものがあるか?それぞれについて説明せよ
memory mapped I/Oとport mapped I/Oがある。memory mapped I/Oはメモリを読み書きすることでI/Oを行うことができる。一方でport mapped I/Oはシステムコールでポート単位に読み書きする。
割り込みを利用して実現される。ユーザープログラムがシステムコール用の例外を発生させ、割り込みが行われる。システムコール処理用の割り込みハンドラにジャンプし、これがシステムコールテーブルから個別のシステムコールハンドラを引く。
プロセスに送られる信号のこと。SIGKILL:プロセス終了、SIGTERM:プロセス停止など様々なものがある。
- 現代的なOSで用いられているI/O時の動作について述べよ
DMAが用いられている。I/Oデバイスとメモリ間で直接情報を転送し、CPUを仲介しない。一連の仕事が終わった時点で割り込みを発生させる。
- ディスクへの書き込みを行ったときにディスクアクセスの遅延を隠蔽するためにどのような工夫があるか
バッファキャッシュ・ディスクキャッシュがある。ディスクへの書き込みはまずこのバッファに書き込まれ、その後適当なタイミングで反映される。
- 共有変数とそれに対する操作を一まとめにして排他制御を行う機構をなんというか?また、そのメリットは何か?
モニタと呼ぶ。モニタの中の変数に対する操作は自動的に排他制御が行われるためユーザーが排他制御を忘れることはない。
資源の確保で競合が発生し、プログラムが互いに互いの資源の解放を待った状態になってしまうことで処理が止まること。
デッドロックが起きないようなプロトコルを作成すればよい。1.プロセスが必要な資源は起動時にすべて確保されるようにする。2.一つでも資源を持つプロセスは新たな資源を獲得できないようにする。3.資源に順序をつける。
並行実行は見かけ上同時に仕事が実行される状態を言う。一方で並列実行は実際に仕事が並列に実行される状態を言う。
- セマフォに提供されている操作としてどのようなものがあるか。
1.wait(S)
sが1未満ならばその場で持つ。
そうでなければsから1を引ひいて通過。
2.signal(S)
待っているプロセスがいたら起こす。
そうでなければs=s+1として通過
レジスタの値を常にチェックしながら待つ方式。ロックが取れなくてもコンテキストスイッチしない。
ロックが取れるまで他のプロセスにコンテキストスイッチして待つ方式。
- プロセス間のメモリ保護はどのようにして実現されるか?
他のプロセス内のアドレスを指定する方法を提供しないことにより実現
- 物理メモリと仮想メモリを対応付ける方式としてどのようなものがあるか
固定長方式(ページング):物理メモリを固定長の細切れに分割する。
可変長方式(セグメンテーション):要求されたサイズの領域を物理メモリから切り取って、仮想メモリに割り付ける。
メモリを固定長の領域に分割したものである。
MMUとはCPUに乗っている仮想アドレスから物理アドレスへの変換を行う機構である。アクセス権の検査も行う
仮想アドレスと物理アドレスの対応を覚えておく表
- スラッシングとは何か?スラッシングの原因はどのようなことにあるか
スラッシングとはページイン・ページアウトが頻発し、プログラムの性能が著しく低下すること。
原因としては局所性の低いメモリ参照パターン・物理メモリの不足・多すぎるプロセス数などがある
- 物理アドレスと仮想アドレスの変換の処理を軽減する方法としてどのようなものがあるか
TLBがある。TLBが過去のアドレス変換をキャッシュする。
最終更新:2009年08月03日 20:59