gpt4 book ai didi

x86 - x86如何提示设置页面脏位?

转载 作者:行者123 更新时间:2023-12-03 12:16:37 26 4
gpt4 key购买 nike

从软件的 Angular 来看,弄脏内存页面的指令与内核在页面表项(PTE)中实际将页面标记为肮脏之间的延迟是多少?

换句话说,如果一条指令弄脏了页面,那么下一条指令可以读取PTE并查看脏位设置吗?

我不关心实际经过的周期,只要有一个软件可见窗口可见,但其中的脏位尚未设置。我似乎在引用手册中找不到任何保证。

最佳答案

根据AMD手册(大约2005年),第2卷:系统编程:

5.4 Page-Translation-Table Entry Fields ... Dirty (D) Bit. Bit 6. This bit is only present in the lowest level of the page-translation hierarchy. It indicates whether the pagetranslation table or physical page to which this entry points has been written. The D bit is set to 1 by the processor the first time there is a write to the physical page.



英特尔的同上(大约2006年),第3-A卷:系统编程指南,第1部分:

3.7.6 Page-Directory and Page-Table Entries ... Dirty (D) flag, bit 6 Indicates whether a page has been written to when set. (This flag is not used in page-directory entries that point to page tables.) Memory management software typically clears this flag when a page is initially loaded into physical memory. The processor then sets this flag the first time a page is accessed for a write operation.



更新:

从最新的英特尔手册(第3A卷,系统编程指南)中:

8.1.2.1 Automatic Locking The operations on which the processor automatically follows the LOCK semantics are as follows: ... When updating page-directory and page-table entries — When updating page-directory and page-table entries, the processor uses locked cycles to set the accessed and dirty flag in the page-directory and page-table entries.



从第8.1节和第8.2节的其余部分可以看出,一旦CPU使用锁定操作设置了脏位,其他CPU就应该开始查看更新后的值。

当然,您可能会遇到争用情况,因为您首先在一个CPU(或其一个线程中)上读取脏位为0,然后再将另一个CPU(或同一CPU上的另一个线程)上的脏位设置为1,但这并不稀奇。

关于x86 - x86如何提示设置页面脏位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7924031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com