1

我的操作系統類的最後一個問題的例子:文件系統 - 內存映射文件

大多數操作系統都支持「內存映射文件」。這描述了映射到正在運行的進程的地址空間中的文件。讀取和寫入文件被轉換爲內存讀取和寫入。我們可以想象存在兩個新的系統調用map()和unmap()。 a)考慮map();它接受文件名和虛擬地址,導致操作系統將文件映射到從虛擬地址開始的地址空間。描述如何使用虛擬內存系統來支持這個呼叫。 b)考慮unmap();它將文件與虛擬地址空間分離。描述實施這個系統調用應該採取的統計數據。列出你所有的假設。

c)在很多UNIX系統中,inode都保存在磁盤的起始位置。另一種設計是在創建文件時分配inode,並將inode放在文件的第一個塊的開頭。討論這種替代方案的優缺點。

d)如果包含有關空閒磁盤塊信息的位圖或空閒列表由於崩潰而完全丟失,會發生什麼情況?無論如何要從這場災難中恢復過來,或者磁盤不再可用。討論您對UNIX和FAT樣式的磁盤塊分配的答案。

任何有關這些問題的討論信息將不勝感激。

回答

1

對於c)開銷檢索目錄/文件和數據尤其是真正的分配內存的新文件,這導致查找每個inode和檢索他們的file_size,權限等 很好的時候大量的小文件需要大量空間,這可能會在磁盤啓動時花費大量內存。