1

私のオペレーティングシステムクラスの最後の質問の例:

ほとんどのオペレーティング システムは、「メモリ マップ ファイル」をサポートしています。これは、実行中のプロセスのアドレス空間にマップされるファイルを表します。ファイルへの読み取りと書き込みは、メモリの読み取りと書き込みに変換されます。map() と unmap() という 2 つの新しいシステム コールの存在を想像できます。

a) map(); を検討してください。ファイル名と仮想アドレスを受け入れ、オペレーティング システムが仮想アドレスから始まるアドレス空間にファイルをマップするようにします。この呼び出しをサポートするために仮想メモリ システムを使用する方法を説明してください。

b) unmap(); を検討してください。仮想アドレス空間からファイルの関連付けを解除します。このシステム コールを実装するために取得する必要がある統計を記述します。すべての仮定をリストします。

c) 多くの UNIX システムでは、inode はディスクの先頭に保持されます。別の設計では、ファイルの作成時に i ノードを割り当て、その i ノードをファイルの最初のブロックの先頭に配置します。この代替案の長所と短所について話し合います。

d) 空きディスク ブロックに関する情報を含むビットマップまたは空きリストがクラッシュにより完全に失われた場合はどうなりますか? この災害から回復する方法はありますか、それともディスクが使用できなくなりましたか。UNIX および FAT スタイルのディスク ブロック割り当てについて、あなたの答えを議論してください。

これらの質問に関する議論の情報は大歓迎です。

4

1 に答える 1

1

c)ディレクトリ/ファイルとデータを取得するためのオーバーヘッドは、新しいファイルにメモリを割り当てるときに特に当てはまります。その結果、すべてのinodeを検索し、それらのfile_size、権限などを取得しますディスクの開始時に多くのメモリを消費する可能性があります。

于 2011-04-07T11:03:02.823 に答える