我读到这是一种防范常见攻击的安全措施。我的想法是它保持随机化虚拟内存空间,我认为这需要定期更新页表和TLB?我是对的吗?
我的另一个问题是,它是否完全随机化了物理内存中页面的物理位置?因为我一直在研究ASLR下和没有ASLR的物理内存的行为,并且行为是不同的。
答案 0 :(得分:1)
ASLR是一项安全功能,应该在每次运行上随机化程序的虚拟地址空间。程序的虚拟地址空间在运行时不会热插拔(这将是一场灾难)。
操作系统通常必须作为调度的一部分定期更新页表。是否启用ASLR与页表更新无关。
至于你的另一个问题,无论你是否在Linux下启用了ASLR,物理内存的布局都是随机的。页面经常被换入和换出内存,而且物理内存布局很快就会碎片化。物理内存中唯一半可预测的部分可能是为DMA保留的内存。
我仍然不确定你是如何设法"调查物理记忆的行为"并得出结论,ASLR启用与否之间的行为有很大差异。