页表条目中的x86脏位

时间:2014-02-04 07:34:56

标签: memory x86 paging dirty-data

英特尔架构手册说,当对内存页面进行第一次写访问时,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?

提前谢谢。

1 个答案:

答案 0 :(得分:3)

  

1 此上下文中的“脏位”用于保证磁盘交换内存页的正确性。这是对的吗?

此寻呼支持的硬件部分。该位有助于OS以非常快速和有效的方式确定哪个页面必须转储到磁盘。因为如果内存页面将分页到磁盘并且页面文件中已经分配了空间,如果清除此标志,我们就不能将此页面转储到磁盘。这只是操作系统如何在分页中使用此标志的示例。

  

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

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

  

3.7.6页面目录和页面表条目

     

脏(D)标志,第6位

     

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

  

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

他们有LOCK语义和原子。