有关page_address()的实现的问题

| 在具有高内存的x86机器上,当内核要查询物理帧的内核虚拟地址时,它将使用“ 0”。它的工作方式取决于是否定义了宏WANT_PAGE_VIRTUAL,该宏决定是否在
struct page
中添加
void *virtual
。如果没有
void *virtual
,内核将使用哈希表
page_address_htable
进行转换,这似乎适用于x86方法。相反,mip和m68k仅取
void *virtual
(对此我不太确定)。 所以我的问题是,为什么x86更喜欢哈希表而不是改进的
struct page
?它带来的好处是什么?     
已邀请:
        由于需要大量的
struct page
(每页一个!),因此在结构中再增加一个字是非常昂贵的(或者相反,将结构缩小一个字就可以带来很多好处)。在32位体系结构上,“ 8”特别昂贵-没有它,结构页恰好是32个字节,这意味着它可以很好地打包到高速缓存行等中。 在x86上,哈希查找速度足够快(因为在x86上乘法运算速度很快),因此折衷方案是强烈支持使结构页更小。我猜想在m68k乘法上足够昂贵,以至于将结构页面膨胀到36个字节是值得的。     

要回复问题请先登录注册