关于多CPU多核,你想告诉我什么~
注释写的是:
/* From this point on, the odds are that we're going to
* nuke this pte, so read and clear the pte.This hook
* is needed on CPUs which update the accessed and dirty
* bits in hardware.
*/
书里的这句话是不是翻译错了?是不是说“其它CPU在执行其它进程的时候,可能已经修改了pte里面的accessed和dirty标志位”,而不是指这个进程也可能同时在别的CPU执行? PG_lock使用的是辅助数据结构page上的字段,cpu hw并不关心。
而pte上的内容,是有可能被(其它)cpu hw更新的,比如access/dirty bit。(不知道是不是所有的cpu都这样)
CPU更新这些bit的时候可不管OS附加的同步语义(比如PG_lock) 参考http://stackoverflow.com/questions/21546541/x86-dirty-bit-in-page-table-entry
回复 2# nswcfd
软件关心page->flag里面的位,硬件关心pte里面的位,不能搞混淆了,是吧?
也不完全是吧,比如dirty位,cpu期望由hw设置,由os更新。
kernel里大多数的mm逻辑,只需要关注page的状态;少部分操作页表项的内容,需要跟cpu进行配合。
回复 5# nswcfd
噢,反正它们都在内存里,好多时候内核将pte的信息转移到page结构,但硬件只能看得到pte,是这样吧?
页:
[1]