【问题标题】:What does 'dirty-flag' / 'dirty-values' mean?“脏标志”/“脏值”是什么意思?
【发布时间】:2012-11-10 07:02:27
【问题描述】:

我在一些工作源代码和一些其他代码中看到一些名为“脏”的变量。这是什么意思?什么是脏标志?

【问题讨论】:

  • 如果没有更多上下文,这是不可能回答的。在 DBMS 缓冲池中,一个页面可能被标记为“脏”,因为它在被读取后已被更改,并且必须在重新使用该页面之前对其进行重写。使用该术语可能还有无数其他可能的原因。
  • 我通常看到它用于表示需要更新的东西。
  • 这个问题并不是真正特定于 C++ 或编码风格。它更多地与数据结构和算法有关。
  • 我认为这是其中一个的欺骗,或者可能是一种合并:stackoverflow.com/questions/1745888/…stackoverflow.com/questions/553882/…

标签: caching computer-architecture dirty-data


【解决方案1】:

脏可能意味着很多事情,您需要提供更多上下文。但在非常笼统的意义上,“脏标志”是用来指示某物是否已被触摸/修改。

例如,请参阅wiki for Page Table 中内存管理上下文中“脏位”的用法

【讨论】:

    【解决方案2】:

    一般dirty flags用来表示一些数据已经改变,最终需要写入到某个外部目的地。它不会立即写入,因为相邻数据也可能会发生变化,并且写入大量数据通常比写入单个值更有效。

    【讨论】:

    • 通常不会跟踪更改,而是写入(即“静默存储”仍将数据标记为脏数据)。
    【解决方案3】:

    “脏”常用于缓存的上下文中,从应用程序级缓存到架构缓存。

    一般来说,有两种缓存机制:(1)直写; (2) 回写。我们简称WT和WB。

    WT 表示写入是同步同时写入缓存和后备存储。 (例如缓存和后备存储,它们可以分别代表数据库上下文中的主内存和磁盘)。

    相比之下,对于WB,最初,写入到缓存。对后备存储的写入被推迟,直到包含数据的缓存块即将被新内容修改/替换。

    数据是脏值。在实现WB缓存时,可以设置脏位来指示缓存块是否包含脏值。

    【讨论】:

      【解决方案4】:

      这里有一个更深层次的问题——而不是“脏是什么意思?”在代码的上下文中,我认为我们真的应该问 - “脏”是一个合适的术语,用于通常的意图。

      “脏”可能会造成混淆和误导。它会向许多新程序员建议损坏或错误的表单数据。工作“脏”意味着有问题,需要清除或删除数据。肮脏的东西毕竟是不受欢迎的、不干净的和令人不快的。

      如果我们的意思是“表单已被触动”或“表单已被修改但更改尚未写入服务器”,那么为什么不使用“触动”或“writePending”而不是“脏”?

      我认为,这是编程社区需要解决的问题。

      【讨论】:

      • 我更喜欢writePending,而不是无处不在的“脏”。谢谢。
      • 我认为“脏”是个好词。它很短(比writePending 短得多),并且不用于其他概念。写入可能由于其他原因而处于挂起状态,或者它感兴趣的原因可能不同。计算机上下文中的“脏”在任何类型的缓存/一致性/回写系统中都有一个well-established meaning 的修改数据。在维基百科上查找很​​容易:“脏”的消歧页面有那个链接。简洁而准确的技术语言是有用且重要的。
      • 阿门@Adrian NH。我只是浪费了我生命中的 5 分钟,试图弄清楚“脏缓存”对于 WiredTiger 的缓存意味着什么。在数据库缓存的上下文中,术语“脏”是纯粹的自我和可怕的命名法——经典的程序员花式跳舞 BS。
      • 脏是模棱两可的,需要学习这个术语。成立与否。用修饰词怎么样?它是描述性的和明确的。上面引用的维基百科页面引用了Dirty bit 上的另一个页面,它也称为修改位。
      猜你喜欢
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 2021-07-16
      • 2016-05-17
      • 1970-01-01
      • 2014-06-04
      • 2014-02-27
      相关资源
      最近更新 更多