x86页表项中的脏位翻译为dirty bit。

5
英特尔架构手册指出,当第一次写入访问内存页面时,CPU会设置页面表项的脏位。我对这个问题有一些疑问。
1. The 'dirty bit' in this context is used for guaranteeing the correctness of disk swapping in, out of memory pages. is this correct?
2. Is this automatically performed by the hardware? or is this an implementation of operating system?
3. If it is automatically performed by the hardware, is there any noteworthy difference compared to the usual memory updates which are performed by software instructions?

Thank you in advance.

1个回答

5

1 在这种情况下,“脏位”用于保证将内存页面换入和换出磁盘的正确性。这个说法正确吗?

这是分页支持的硬件部分。该位可以帮助操作系统以非常快速和高效的方式确定必须转储到磁盘的页面。因为如果内存页面将被分页到磁盘,并且页面文件中已经分配了空间,则如果清除了此标志,则无需将此页面转储到磁盘。这只是操作系统在分页中使用此标志的一种方式的示例。

2 这是由硬件自动执行的吗?还是操作系统的实现?

软件清除此标志。硬件设置此标志:

3.7.6 页面目录和页面表条目

脏(D)标志,第6位

当设置时,表示是否已写入页面。 (此标志未在指向页面表的页面目录条目中使用。)内存管理软件通常在页面最初加载到物理内存时清除此标志。然后,处理器在第一次访问页面进行写操作时设置此标志。

.

3 如果这是由硬件自动执行的,与通常由软件指令执行的常规内存更新相比,是否有任何值得注意的差异?

它们具有LOCK语义和原子性。


在内存压力下,具有读/写权限且未设置脏位的页面是否会被丢弃或交换到磁盘上? - Arun Kp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接