【问题标题】:File Systems - Memory-Mapped Files文件系统 - 内存映射文件
【发布时间】:2011-07-30 08:22:45
【问题描述】:

我的操作系统课程的最后一个示例问题:

大多数操作系统都支持“内存映射文件”;这描述了映射到正在运行的进程的地址空间的文件。对文件的读取和写入转换为内存读取和写入。我们可以想象存在两个新的系统调用,map() 和 unmap()。

a) 考虑 map();它接受文件名和虚拟地址,导致操作系统将文件映射到从虚拟地址开始的地址空间。描述如何使用虚拟内存系统来支持这个调用。

b) 考虑 unmap();它将文件与虚拟地址空间分离。描述实现此系统调用应采用的统计信息。列出你所有的假设。

c) 在许多 UNIX 系统中,inode 保存在磁盘的开头。另一种设计是在创建文件时分配一个 inode,并将该 inode 放在文件第一个块的开头。讨论这种替代方案的利弊。

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

非常感谢有关这些问题的任何讨论信息。

【问题讨论】:

    标签: memory operating-system virtual-memory memory-mapped-files virtual-address-space


    【解决方案1】:

    对于 c) 检索目录/文件和数据的开销在为新文件分配内存时尤其如此,这会导致查找每个 inode 并检索它们的 file_size、权限等 很好,当大量小文件需要大量空间时,这可能会在磁盘启动时消耗大量内存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 2012-07-06
      • 1970-01-01
      • 2010-11-01
      相关资源
      最近更新 更多