linux - 内存分段边界检查是如何完成的?

标签 linux memory operating-system x86 memory-segmentation

根据维基百科有关内存分段的文章,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/

相关文章:

regex - linux + 不规则表达式查找机制(查找命令)或 perl

architecture - 编译器与解释器

linux - 不使用 -javaagent 初始化 jmockit

c - 可移植 GTK cmake 项目

mysql - 在 Ubuntu 上记录 MySQL 查询

c - 如何检查c代码中的内存泄漏?

python - Tensorflow:在 pb 模型中使用 tensorflow.contrib.memory_stats.MaxBytesInUse

python - 在python中集成多个字典(大数据)

jquery - 根据 angularjs 中的操作系统更改 CSS

c# - 获取 Windows 机器上的 PC(系统)信息