我的操作系统类的最后一个示例:
大多数操作系统都支持“内存映射文件”;这描述了映射到正在运行的进程的地址空间的文件。对文件的读取和写入将转换为内存读取和写入。我们可以想象存在两个新的系统调用,map()和unmap()。
a)考虑map();它接受文件名和虚拟地址,使操作系统将文件映射到从虚拟地址开始的地址空间。描述虚拟内存系统如何用于支持此调用。
b)考虑unmap();它取消了文件与虚拟地址空间的关联。描述实现此系统调用应采取的统计信息。列出你所有的假设。
c)在许多UNIX系统中,inode保存在磁盘的起始位置。另一种设计是在创建文件时分配inode,并将inode放在文件的第一个块的开头。讨论这种替代方案的利弊。
d)如果包含有关可用磁盘块的信息的位图或空闲列表因崩溃而完全丢失,会发生什么?无论如何都要从这次灾难中恢复,或者磁盘不再可用。讨论您对UNIX和FAT样式的磁盘块分配的答案。
非常感谢有关这些问题的讨论信息。
答案 0 :(得分:1)
用于c)在为新文件分配内存时检索目录/文件和数据的开销尤为正确,从而查找每个inode并检索其file_size,权限等 当大量小文件需要大量空间时,这可能会在磁盘启动时花费大量内存。