内存基础小知识(arm)

 

 

 

处理器的cr0寄存器Pcd标志用来启用或者禁用高速缓存电路。

pcd标志是访问叶匡中的数据时高速缓存是否开启,pwt表示将数据写到叶匡的时候采用的回写策略是通写还是回写。

TLB用于缓存刚刚被访问的物理地址。每个cpu都有一个TLB。

常用宏功能:

PAGE_SHIFT:指定offset字段的位数,页框大小。

PMD_SHIFT指定线性地址的offset字段与table字段的总位数。32位当PAE被禁用的时候是22位offset(12)+table(10),PMD_MASK为0xffe00000。

PUD_SHIFT:页上级目录项所映射的区域大小的对数。32位的环境上由于是两级页表所以总是等于PMD_SHIF。

PGDIR_SHIFT:页全局目录项所能映射的区域大小的对数。PGDIR_MASK宏用于屏蔽offset、table、middle、upper字段的所有位。

PTRS_PER_PTE、OTRS_PED_PMD、PTRS_PER_PUD、PTRS_PER_PGD用于计算页表、页中间目录、页上级目录和页全局目录表中的表项个数。

pte_t、pmd_t、pud_t、pgd_t分别描述页表项、页中间目录项、页上级目录和页全局目录定义。

__pte\__pmd\__pud\__pgd\__pgprot和pte_val\pmd_val\pud_val\pgd_val\pgprot_val是将相应表项和无符号整数相互转换。

pte_none\pmd_none\pud_none\pgd_none表示相应的表项值为0则返回1否则返回0。

pte_clear\pmd_clear\pud_clear\pgd_clear清除相应的表项,set_pte\set_pmd\set_pud\set_pgd向一页表中写入指定的值。

pte_same表示两个页表项指向相同的页且有相同的访问优先级则返回1否则返回0。

pmd_large(e)当e指向大型页则返回1。

pmd_bad用于检查传入的页中间目录参数,如果页中间所指向的页表满足下列之一返回1。

a页不存在(present标志被清除)b页只允许读访问(read\write标志被清除) c access或者 dirty标志被清除。pud_bad和pgd_bad总是返回0,没有定义pte_bad。

pte_user\pte_read读取user/supervisor标志

pte_write\pte_exec读取read/write标志

pte_dirty 读取dirty标志

pte_young 读取accessed标志

pte_file读取dirty标志

设置页标志函数:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值