_nosay 发表于 2016-03-09 12:39

关于多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执行?

nswcfd 发表于 2016-03-10 16:16

PG_lock使用的是辅助数据结构page上的字段,cpu hw并不关心。

而pte上的内容,是有可能被(其它)cpu hw更新的,比如access/dirty bit。(不知道是不是所有的cpu都这样)

CPU更新这些bit的时候可不管OS附加的同步语义(比如PG_lock)

nswcfd 发表于 2016-03-10 16:54

参考http://stackoverflow.com/questions/21546541/x86-dirty-bit-in-page-table-entry

_nosay 发表于 2016-03-10 16:57

回复 2# nswcfd

软件关心page->flag里面的位,硬件关心pte里面的位,不能搞混淆了,是吧?


   

nswcfd 发表于 2016-03-11 16:24

也不完全是吧,比如dirty位,cpu期望由hw设置,由os更新。

kernel里大多数的mm逻辑,只需要关注page的状态;少部分操作页表项的内容,需要跟cpu进行配合。

_nosay 发表于 2016-03-11 16:30

回复 5# nswcfd

噢,反正它们都在内存里,好多时候内核将pte的信息转移到page结构,但硬件只能看得到pte,是这样吧?


   
页: [1]
查看完整版本: 关于多CPU多核,你想告诉我什么~