是否可以访问物理地址0?

xml*_*lmx 5 c c++ x86 assembly operating-system

在C/C++中,不允许访问地址0处的数据.

但是,物理内存从0开始编号.在DOS时代,中断向量表位于物理地址0处.第一个中断向量是除零异常的处理程序.

我的问题是:

在什么情况下允许访问物理地址0?

Non*_*upt 8

要访问物理地址零,取决于您正在谈论的平台.语言不了解底层寻址模型,它取决于操作系统.

  • 在裸机环境中,如果启用了分页,则可以对页表进行完全控制,如果未启用分页,则只需取消引用零.
  • 在某些Unix和Linux变体上,您mmap可以打开/ dev/mem来获取非空指针,其逻辑地址非零但物理地址为零,可能需要一些访问权限.
  • 我不确定在Windows上.

PS.其他答案似乎使语言级指针和物理地址混淆.