我目前正在参加UNIX环境下的操作系统课程。以下是有关UNIX缓冲区缓存系统和文件执行的一些补充概念性问题。
如您所知,UNIX在RAM中维护一个块缓冲区缓存。但是,对包含目录信息的块的写入会立即写回磁盘。为什么在这种情况下放弃缓冲区缓存的效率呢?
我认为我对这里的答案有一个总体的想法,但如果我的理解是关闭的话,我想填补任何漏洞。通常,人们更愿意避免磁盘访问并通过缓冲区缓存,因为它要快得多。但是,由于写入包含目录信息的块将无论如何都要访问磁盘,因此使用块缓存是多余的。其次,如果块恰好对文件系统的一致性至关重要,则应立即将其写回磁盘,以避免在发生严重故障或崩溃时整个文件系统出现故障。我的问题是,正确的想法是这两个想法的组合,还是有一个更合适的想法。
在Windows中,当用户双击Windows资源管理器列出的文件时,会运行一个程序并将该文件作为参数。在UNIX中,事情的完成方式不同。列出操作系统可以知道运行哪个程序的两种不同方式。
嗯,我确实知道UNIX使用了一个所谓的"幻数",位于文件的第一个字节中,指示它是什么类型的文件以及如何处理它。因此,除了用户方便之外,使用文件扩展名命名UNIX文件似乎没有用处。然后,正如问题中明确指出的那样,我们使用Windows文件扩展来实现这一目标。我还缺少其他任何方法,特别是在UNIX中吗?
谢谢!
答案 0 :(得分:0)
我不能按照你的第一个推理。 “写入包含目录信息的块将访问磁盘而不管”为什么应该这样?目录信息没有任何固有的特殊之处(它仅在您的操作系统上下文中有用)。它至关重要,是的,但缓冲区缓存只知道,因为操作系统告诉它(据我所知)。你的第二点击中了标记。保持文件结构的顺序符合整个系统的利益,因此放弃一点效率是有道理的。