根据维基百科有关内存分段的文章,x86 处理器在硬件中进行分段边界检查。是否有任何系统可以在软件中进行边界检查?如果是这样,会产生什么样的开销?在硬件实现中,有没有办法跳过边界检查来避免惩罚(如果有惩罚的话)?
最佳答案
除了段边界检查和内存映射查找之外,所有现代语言都在软件中进行边界检查。 One benchmark建议开销约为 0.5%。这是为了稳定和安全而付出的很小的代价。
486 可以 load a memory location in a single cycle ,而 CPU 只是在片上处理方面变得更好,因此分段边界检查根本不可能有任何开销。
尽管如此,您仍然可以简单地在 64 位模式下运行:“处理器在 64 位模式下运行时不会执行段限制检查”(Intel's developer manual, 3.2.4) 。
关于linux - 内存分段边界检查是如何完成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24296009/