ARM在输入向量表时使用物理地址还是虚拟地址?
启用分页并发生异常时,是否会进行转换表遍历以访问地址0x00000000处的异常向量表ARM在输入向量表时使用物理地址还是虚拟地址?,arm,paging,mmu,Arm,Paging,Mmu,启用分页并发生异常时,是否会进行转换表遍历以访问地址0x00000000处的异常向量表 如果仍然启用分页,那么用户模式进程和向量表如何共享地址0x00000000?TTBR(转换表基址寄存器)不会在异常条目上更新,并且TTBR不是一个存储寄存器(我们这里不讨论在安全和非安全世界之间切换) 如果否,那么我们必须使用物理寻址输入异常,在这种情况下,分页现在被禁用了吗 启用分页并发生异常时,是否会进行转换表遍历以访问地址0x00000000处的异常向量表 几乎所有ARM CPU都有配置异常表地址的方法
没有启用分页,因为缓存可能也处于打开状态。如果某些访问是物理访问,而其他访问是虚拟访问,则CPU的加载/存储单元将更加复杂;特别是当缓存由传统ARM CPU中的虚拟地址填充时。许多操作系统将使用virt==phys映射来别名物理RAM。这可以简化操作系统内存分配。没有物理支持的地址可以由用户空间使用(或用于其他目的)。非常简单的操作系统/引导代码通常只使用virt==phys映射来启用MMU进行缓存。节条目(1MB)使此映射相当紧凑。回答得很好,谢谢。因此,澄清一下,用户进程无法访问整个地址空间?通常是的,对于sane系统。您可以授予用户空间完全访问权限,但是用户空间可以修改向量表。这对于引导代码来说可能很好,但通常不会进入用户模式。在以后的一些ARM CPU中,如果启用了mmu,那么处理器只能看到mmu的虚拟地址端,则可以进行映射。对于ARM用户应用程序,用户模式程序通常从0x8000开始,而不是0x0000。为了好玩,请尝试从用户模式应用程序访问0x0000,查看是否出现故障。