【问题标题】:UNIX block buffer cache conceptUNIX 块缓冲区高速缓存概念
【发布时间】:2017-01-28 06:56:57
【问题描述】:

我目前正在学习基于 UNIX 环境的操作系统课程。以下是关于 UNIX 缓冲区缓存系统和文件执行的一些补充概念问题。

如您所知,UNIX 在 RAM 中维护一个块缓冲区高速缓存。但是,写入包含目录信息的块会立即写回磁盘。为什么在这种情况下放弃缓冲区缓存的效率?

我想我对这里的答案有一个大致的了解,但如果我的理解不正确,我想填补任何漏洞。通常,人们宁愿避免磁盘访问并通过缓冲区缓存,因为这样做要快得多。但是,由于写入包含目录信息的块无论如何都会访问磁盘,因此拥有块缓存是多余的。其次,如果块碰巧对文件系统的一致性至关重要,则应立即将其写回磁盘,以避免在发生某些重大故障或崩溃时整个文件系统故障。我的问题是,正确的想法是这两个想法的结合,还是有一个更合适的想法。

在 Windows 中,当用户双击 Windows 资源管理器列出的文件时,将运行一个程序并将该文件作为参数。在 UNIX 中做不同的事情。列出操作系统知道运行哪个程序的两种不同方式。

嗯,我知道 UNIX 使用所谓的“幻数”,位于文件的第一个字节中,指示它是什么类型的文件以及如何处理它。因此,使用文件扩展名命名 UNIX 文件似乎除了方便用户之外没有其他目的。然后,正如问题中明确指出的那样,我们让 Windows 使用文件扩展名来实现这一点。我还缺少其他方法吗,特别是在 UNIX 中?

谢谢!

【问题讨论】:

    标签: linux unix filesystems


    【解决方案1】:

    我不能按照你的第一个推理。 “写入包含目录信息的块将访问磁盘,无论”为什么会这样?目录信息本身并没有什么特别之处(它仅在您的操作系统上下文中有用)。是的,它至关重要,但缓冲区缓存只知道这一点,因为操作系统告诉它(据我所知)。你的第二点达到了目标。保持文件结构有序符合整个系统的利益,因此放弃一点效率是有道理的。

    【讨论】:

    • 我真的不明白这如何回答这个问题。这是一种模糊的猜想,就像某人通过考试 :-)。问题 1:“为什么要放弃效率/缓存?”,问题 2:“列出操作系统知道要运行哪个程序的两种方式”——公平地说,这并不能真正回答其中任何一个问题。因此,如果您没有为问题提供一个明确、确凿的答案,请为 cmets 保留这样的内容。使用2-min tour 了解情况,为自己获得一些代表点数,然后发表评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-04
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    相关资源
    最近更新 更多