You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

x86环境下内存边界多字节请求及越界访问会产生什么结果?

问题1:实模式下访问1MB末尾的2字节数据的行为

  • 实模式本身没有内存访问越界的异常触发机制,该操作不会触发CPU异常
  • 具体行为取决于A20地址线的启用状态:
    • 若A20地址线未开启(兼容8086的默认状态),20位以上地址位会被截断,访问0xFFFFF的2字节会返回0xFFFFF地址的1字节 + 0x00000地址的1字节(地址回绕)
    • 若A20地址线已开启,会正常读取0xFFFFF和0x100000两个物理地址的内容,不存在回绕

问题2:保护模式下分页开启/关闭时的对应行为

  • 分页关闭的保护模式:
    • 首先检查访问地址是否落在当前操作段的段界限内,若超出段界限直接触发#GP(通用保护异常)
    • 若段权限、段界限校验通过,线性地址直接等于物理地址,后续行为和实模式开启A20的情况一致,不会额外触发CPU异常
  • 分页开启的保护模式:
    • 同样先做段权限、段界限校验,不通过则触发#GP异常
    • 校验通过后会先查询页表完成线性地址到物理地址的转换:如果对应线性地址的页表项不存在、或者当前权限不满足访问要求,直接触发#PF(页错误)异常
    • 若页表映射有效,后续行为和分页关闭的保护模式一致

问题3:裸机非分页环境访问超物理内存容量地址的行为

  • 该行为由主板硬件逻辑决定,不属于x86 CPU架构的规范范畴,因此英特尔手册不会有对应说明
  • 绝大多数x86兼容平台的默认行为是:
    • 读操作:CPU将地址发送到总线后没有物理内存设备响应,会返回固定的无意义值(通常为全0xFF或全0x00,具体看主板实现),不会触发CPU异常
    • 写操作:写入的数据会被总线直接丢弃,不会产生任何实际效果

内容的提问来源于stack exchange,提问作者Aryan Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 03:24:03