当前位置: 首页 > news >正文

【微知】ARM CPU是如何获取某个进程的页表的?(通过TTBR寄存器,MMU进行处理)

ARM CPU 中用于存储访问某个进程的页表的寄存器是 TTBR(Translation Table Base Register)。有TTBR0和TTBR1。TTBR0用户空间的一级页表基址,1是内核页表。cpu访存获取物理地址流程 如果mmu发现tlb里面miss就通过pdbg拿pa物理地址。Intel是CR3。ARMv7 架构中每个 CPU 核也都有相应的 TTBR 寄存器来支持进程地址空间的管理。MMU 在进行地址映射时,会根据 TTBCR(TTB 控制寄存器)中的值以及虚拟地址的高位地址来选择对应的 TTBR 寄存器。V8架构更多,根据运行级别还有不同的TTBR更多参考:arm和intel的页表目录基地址寄存器。
每次进程切换的时候会把进程控制块(Process Control Block,PCB在linux中是task struct接口)的mm_struct中的属于进程页表的一级页表基地址写入TTBR寄存器。这个结构是mm_struct的pgd_t * pgd
当CPU访问虚拟内存的时候,如果tlb misss,MMU(Memory Management Unit 内存管理单元)会根据TTBR寄存器的值(是硬件提供给软件配置的接口)MMU能够动态的根据配置去获取不同进程页表的一级页表地址,然后依次根据偏移逐级获取到虚拟地址对应的物理地址,或者对应的IO地址。并且通过本次访问之后会将映射关系存入MMU的TLB(Translation Lookaside Buffer,转换后备缓冲器。MMU中的一个高速缓存,用于存储最近使用的虚拟地址到物理地址的转换映射信息。TLB的作用是加速地址转换过程,减少内存访问时间,提高系统性能)中,方便下次快速访问。
当通过MMU将虚拟地址转化为物理地址的最后一级页表的时候,如果发现当前页表不在内存中(比如被换出到swap分区),页表的标记位present位0表示不在内存中。会触发缺页中断,缺页中断处理例程中会将实际内存从swap分区切换到内存中。该部分用户不感知。具体内促访问磁盘还是物理内存的时延差别待进一步确认。

http://www.dtcms.com/a/107933.html

相关文章:

  • 基于javaweb的SSM+Maven校园共享自行车管理系统设计与实现(源码+文档+部署讲解)
  • 基于策略模式的CATIA元素显隐控制工具开发实践——PySide6与PyCATIA深度整合方案
  • 什么是PID控制?
  • FFmpeg命令详解
  • 波动率 计算学习 离散系数
  • 【JavaScript】十四、轮播图
  • 探索Ark-TS语言:什么是Ark-TS?如何入门?有什么基础容易上手?
  • 系统分析师备考启动
  • HashMap底层采用数组+链表而非数组+数组的设计,主要基于以下原因及两者的对比:
  • docker安装ngnix
  • diffusion-vas 提升遮挡区域的分割精度
  • openEuler24.03 LTS下安装Flume
  • 动态规划:第一弹(第N个泰波那契数列、使用最小花费爬楼梯、解码方法)
  • AI安全:构建负责任且可靠的系统
  • leetcode287.寻找重复数
  • 【开发问题记录】回流(Reflow) 和 重绘(Repaint)
  • C++的UDP连接解析域名地址错误
  • React PDF 预览终极优化:30 页大文件不卡,加载快如闪电!
  • 【机器学习】嘿马机器学习(算法篇)第14篇:决策树算法,学习目标【附代码文档】
  • Bigemap手机app数据照片同步至电脑教程
  • 数据结构初阶:二叉树的前中后序三种遍历(递归的暴力美学)
  • 3D意识(3D Awareness)浅析
  • 【Spring Boot 与 Spring Cloud 深度 Mape 之一】剖析 Spring Boot 核心:从快速构建到自动配置原理与实战
  • 零基础 LangGraph 多智能体开发
  • 使用mysqldump进行远程mysql本地定时备份
  • 模板模式——设计模式
  • 记一个.NET AOT交叉编译时的坑
  • 18认识Qt坐标系
  • 青少年编程与数学 02-015 大学数学知识点 01课题、概要
  • 【28BYJ-48】STM32同时驱动4个步进电机,支持调速与正反转