1

我的操作系统类的最后一个问题的例子:文件系统 - 内存映射文件

大多数操作系统都支持“内存映射文件”。这描述了映射到正在运行的进程的地址空间中的文件。读取和写入文件被转换为内存读取和写入。我们可以想象存在两个新的系统调用map()和unmap()。 a)考虑map();它接受文件名和虚拟地址,导致操作系统将文件映射到从虚拟地址开始的地址空间。描述如何使用虚拟内存系统来支持这个呼叫。 b)考虑unmap();它将文件与虚拟地址空间分离。描述实施这个系统调用应该采取的统计数据。列出你所有的假设。

c)在很多UNIX系统中,inode都保存在磁盘的起始位置。另一种设计是在创建文件时分配inode,并将inode放在文件的第一个块的开头。讨论这种替代方案的优缺点。

d)如果包含有关空闲磁盘块信息的位图或空闲列表由于崩溃而完全丢失,会发生什么情况?无论如何要从这场灾难中恢复过来,或者磁盘不再可用。讨论您对UNIX和FAT样式的磁盘块分配的答案。

任何有关这些问题的讨论信息将不胜感激。

回答

1

对于c)开销检索目录/文件和数据尤其是真正的分配内存的新文件,这导致查找每个inode和检索他们的file_size,权限等 很好的时候大量的小文件需要大量空间,这可能会在磁盘启动时花费大量内存。