aarch64-translaiton table descriptors 页表描述符-内存属性字段

2022/3/8 7:17:01

本文主要是介绍aarch64-translaiton table descriptors 页表描述符-内存属性字段,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

摘录自 原文: Linux内存管理(二):ARMv8 地址转换

 https://blog.csdn.net/yhb1047818384/article/details/108210044

  

memory attributes

Table descriptor和table entry, block entry中都有attribute的概念

table descriptor(only for stage1)

  
NSTable NS表示Non-Secure,该table描述符指向的下一级的转换表是否存储在secure memory之中。为0表示存储在Secutre PA中,否则表示存储在Non-secure PA中。当在non-secure状态下进行地址映射时,该标志别忽略
APTable 下一级level lookup的access permission
UXNTable Unprivileged Execute Never, 下一级level lookup的是否有内存的执行权限
PXNTable 下一级level lookup的是否有内存的特权执行权限(EL1)

table/block entry:
在这里插入图片描述

  
UXN Excute-never, 决定了descriptor指向的region是否excuteable
PXN privileged excute-never, 决定了descriptor指向的region在EL1是否excuteable
Contiguous 该表项是否为连续表项中的一项。即转换表在该表项前后是连续的,没有空洞。这样,这些连续的表项便有可能一次性加载到cache中(比如由一个TLB entry缓存)
DBM dirty bit modifier, dirty bit指示内存页有没有被修改
nG not global, 指明当前的entry是global(nG=0,所有process都可以访问)还是non-global(nG=1,only本process允许访问)。如果是global类型,则TLB中不会tag ASID;如果是non-global类型,则TLB会tag上ASID,且MMU在TLB中查询时需要判断这个ASID和当前进程的ASID是否一致,只有一致才证明这条entry当前process有权限访问。
AF access flag,当该标志为0,标明对应的内存区域(一个block或者一个page)并非真正映射到物理内存,访问会引发异常。为1表示 真正映射到了物理内存。
SH shareable attribute。00 non-shareable;  01 reserved; 10 outer shareable, 11 inner shareable
AP

access permission, 设置数据访问的权限,可以设置为4中, 只读,读写,非EL0的只读, 非EL0的读写。

 

 

NS security bit, 当从Secure状态访问内存时,该标志指示转换后的地址在Secure区域还是在Non-Secure区域
Indx index into the MAIR_ELn, 指向内存区域的类型以及可缓存性。见  https://www.cnblogs.com/zhangzhiwei122/p/15975446.html


这篇关于aarch64-translaiton table descriptors 页表描述符-内存属性字段的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程