加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – TLB中的内核内存(虚拟地址条目)?

发布时间:2020-12-13 19:14:34 所属栏目:Linux 来源:网络整理
导读:Linux是操作系统,ARM是在此上下文中引用的处理器. TLB是否包含内核和用户空间虚拟地址? 内核内存从0xc000_0000开始,然后转到0xFFFF_FFFF 前3 GB属于用户空间的位置.在进程之间的上下文切换之间,刷新TLB. TLB是否包含内核和用户空间虚拟地址? 内核内存(虚拟
Linux是操作系统,ARM是在此上下文中引用的处理器.

TLB是否包含内核和用户空间虚拟地址?
内核内存从0xc000_0000开始,然后转到0xFFFF_FFFF
前3 GB属于用户空间的位置.在进程之间的上下文切换之间,刷新TLB.

TLB是否包含内核和用户空间虚拟地址?

内核内存(虚拟)直接对应物理内存(只需与0xC000_0000进行偏移即可为我们提供物理地址).是否有必要在TLB中使用内核(虚拟)(如果你说它存在于TLB中)?它应该只有用户空间地址.

解决方法

我们在现代CPU中进行虚拟到物理地址转换的主要原因是为了使我们能够更高效,更好地控制内存使用:

>分配任何物理内存,RAM(连续或不连续),并使其可在虚拟地址空间中的任何位置(连续或不连续)访问,而不会浪费内存碎片.
>使用磁盘或其他存储器扩展物理内存,RAM.
>使地址空间的某些部分仅可读或不可执行或仅内核等,并保护它们免受未经授权或错误的访问.
>将应用程序的存储器彼此隔离,以进一步提高保护,安全性和可靠性.
>分享记忆.

页表使这一切成为可能.

您确实希望能够在内核的虚拟地址空间中映射和取消映射物理内存,并且通常此转换机制可在整个系统中运行.当然,翻译是有代价的,因为您现在需要查阅和维护页面表,这会导致性能损失.但一切都没有丢失:

> TLB在一定程度上缓解了这个问题.他们缓存翻译.
>更大的页面(例如ARMv7-A的大页面和部分)可以提供更多帮助,因为每个翻译后的内存需要更少的TLB条目.
>还有像全球页面这样的东西.当您在应用程序之间切换并需要刷新当前TLB时,可以通过ASID与应用程序的ASID匹配来执行Invalidate TLB条目,从而避免TLB中的全局页面无效.如果将内核的页面标记为全局,则不会使其翻译无效,并且内核本身不会受到不必要的TLB失效的影响.

例如,有关ARM虚拟内存系统体系结构(VMSA),页表,TLB等的特定详细信息,请参阅“ARM?体系结构参考手册ARM?v7-A和ARM?v7-R版本”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读