'脏旗'/'脏值'是什么意思?

时间:2012-11-21 22:41:31

标签: caching computer-architecture dirty-data

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

4 个答案:

答案 0 :(得分:30)

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

答案 1 :(得分:13)

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

“肮脏”可能令人困惑和误导。它会建议许多新程序员腐败或错误的表单数据。 “脏”工作意味着出现了问题,需要清除或删除数据。肮脏的东西毕竟是不受欢迎的,不洁净和不愉快的。

如果我们的意思是“表格已被触及”或“表格已被修改但尚未将更改写入服务器”,那么为什么不“触摸”或“写入”而不是“脏”?

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

答案 2 :(得分:6)

脏可能意味着许多事情,你需要提供更多的背景。但在一般意义上,“脏标志”用于表示是否已触摸/修改某些内容。

例如,请参阅wiki for Page Table

中内存管理上下文中“脏位”的用法

答案 3 :(得分:4)

"脏"通常用于缓存,从应用程序级缓存到体系结构缓存。

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

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

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

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