当进程从Linux内核请求物理内存页时,内核会尽力提供在内存中物理连续的页面块.我想知道为什么这些页面在物理上连续是重要的; 毕竟,内核可以通过简单地提供虚拟连续的页面来掩盖这一事实.
然而,内核当然最努力地提供物理上连续的页面,所以我试图弄清楚为什么物理连续性如此重要.我做了一些研究,并在几个来源中发现了以下原因:
1)更好地利用缓存并实现更低的平均内存访问时间(GigaQuantum:我不明白:怎么样?)
2)你必须摆弄内核页面表以映射非物理上连续的页面(GigaQuantum:我不明白这一个:不是每个页面都是单独映射的吗?必须做什么?)
3)映射非物理连续的页面会导致更大的TLB颠簸(GigaQuantum:我不明白:怎么样?)
根据我插入的评论,我真的不明白这三个原因.我的研究资料也没有充分解释/证明这三个原因.任何人都可以更详细地解释这些吗?
谢谢!会帮助我更好地理解内核......
我听说有趣的是,即使没有异常发生,在C++中使用"try"块也会在运行时减慢代码的速度.我搜索过,但一直无法找到任何解释或证据.有谁知道这是否属实,若有,为什么?