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

Linux内核源码分析 (B.x)Linux页表的映射

Linux内核源码分析 (B.x)Linux页表的映射

文章目录

  • Linux内核源码分析 (B.x)Linux页表的映射
  • 一、ARM32页表
    • 1、页表术语
    • 2、虚拟地址到物理地址转换
    • 3、一级页表项
    • 4、二级页表项
  • 二、ARM64页表
    • 1、ARMv8-A架构
    • 2、4KB大小页+4级映射
  • 三、Linux内核中关于页表的函数和宏
    • 1、查询页表
    • 2、判断页表项的状态
    • 3、修改页表
  • 四、研究实例
  • 五、ARM32页表和Linux页表解惑
    • 1、ARM32页表和Linux页表
    • 2、ARM32的PTE页表项和Linux页表不一样
  • 六、其他实例问题

一、ARM32页表

1、页表术语

在这里插入图片描述

  • 在Linux内核源码中会用到PDG、PUD、PMF和PT等简称,但在ARM芯片手册上会使用L1、L2、L3等术语

2、虚拟地址到物理地址转换

在这里插入图片描述

  • 针对两级级页表而言,这里的L1索引和L2索引分别对应于PGD(全局目录)和PT(页表项)
  • ARM32中的一级页表项和二级页表项大小均为4个字节

3、一级页表项

在这里插入图片描述

  • 如果只需要支持超级大段和段映射,那么只需要一级页表即可。如果要支持4KB页面或64KB大页映射,那么需要用到二级页表。不同大小的映射,一级或二级页表中的页表项的内容也不一样
    在这里插入图片描述
    • 00:缺页,虚拟存储空间没有被映射到物理存储空间,因而访问该存储空间将产生缺页异常。
    • 01:包含了粗粒度的二级页表的物理地址,它可以实现以大页和小页为单位的地址映射
    • 10:段描述符(Section Descriptor),段描述符定义了对应的 1MB 的虚拟存储空间的地址映射关系
    • 11:包含了细粒度的二级页表的物理地址
  • 关于段映射,更多请看,其实段映射跟页表映射的流程是差不多的,博客里面的段内偏移地址可以类比于页表中的VPO(Virtual Page Offset),下面展示别的博客里的图。
    在这里插入图片描述

4、二级页表项

在这里插入图片描述

二、ARM64页表

1、ARMv8-A架构

在这里插入图片描述

  • 为什么不是64根地址线?
    • 因为48根地址线就已经足够了(2^48=256T),再增加地址线只会增加系统的复杂度

2、4KB大小页+4级映射

在这里插入图片描述

三、Linux内核中关于页表的函数和宏

1、查询页表

在这里插入图片描述

2、判断页表项的状态

在这里插入图片描述

3、修改页表

在这里插入图片描述

四、研究实例

在这里插入图片描述在这里插入图片描述

  • special mapping:特殊映射 Linux内核不希望页面参与页面管理的活动中

  • pgd指向第一级页表(页全局目录)的基址。

在这里插入图片描述- ARM32不是只有两级页表吗,为什么要需要遍历这么多?

在这里插入图片描述

在这里插入图片描述

  • ARM32的二级页表没有用到PTE_SPECIAL标志位,而ARM64的三级页表中用到了。

五、ARM32页表和Linux页表解惑

1、ARM32页表和Linux页表

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 实现了两套平行页表
    • HW(HardWare)页表 ,属于ARM32架构的页表
    • SW(SoftWare)页表,属于Linux内核的页表

在这里插入图片描述

2、ARM32的PTE页表项和Linux页表不一样

在这里插入图片描述

  • 缺页中断和页面回收的时候会讲

六、其他实例问题

在这里插入图片描述
在这里插入图片描述

相关文章:

Linux内核源码分析 (B.x)Linux页表的映射

Linux内核源码分析 (B.x)Linux页表的映射 文章目录 Linux内核源码分析 (B.x)Linux页表的映射一、ARM32页表1、页表术语2、虚拟地址到物理地址转换3、一级页表项4、二级页表项 二、ARM64页表1、ARMv8-A架构2、4KB大小页4级映射 三、Linux内核中关于页表的函数和宏1、查询页表2、…...

机器学习(15)---代价函数、损失函数和目标函数详解

文章目录 一、各自定义二、各自详解三、代价函数和损失函数区别四、例题理解 一、各自定义 1. 代价函数:代价函数(Cost Function)是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。它用于衡量模型在…...

计算机专业大学规划之双非

​ 亲爱的计算机专业大一学弟学妹们,欢迎来到充满挑战和机遇的大学校园!在经历了小半年的大学生活后,是否会对自己的未来感到一些迷茫,借着前几天给我大一的妹妹聊天的机会,我想发表一下关于我的建议(仅限个…...

2.策略模式

UML图 代码 main.cpp #include "Strategy.h" #include "Context.h"void test() {Context* pContext nullptr;/* StrategyA */pContext new Context(new StrategyA());pContext->contextInterface();/* StrategyB */pContext new Context(new Strat…...

算法通过村第七关-树(递归/二叉树遍历)黄金笔记|迭代遍历

文章目录 前言1. 迭代法实现前序遍历2. 迭代法实现中序遍历3. 迭代法实现后序遍历总结 前言 提示:在一个信息爆炸却多半无用的世界,清晰的见解就成了一种力量。 --尤瓦尔赫拉利《今日简史》 你是不是觉得上一关特别简单,代码少,背…...

MySQL数据库简介+库表管理操作+数据库用户管理

Mysql Part 1 一、数据库的基本概念1.1 使用数据库的必要性1.2 数据库基本概念1.2.1 数据(Data)1.2.2 表1.2.3 数据库1.2.4 数据库管理系统(DBMS)1.2.5 数据库系统 1.3 数据库的分类1.3.1 关系数据库 SQL1.3.2 非关系数据库 NoSQL…...

PyTorch实战:卷积神经网络详解+Python实现卷积神经网络Cifar10彩色图片分类

目录 前言 一、卷积神经网络概述 二、卷积神经网络特点 卷积运算 单通道,二维卷积运算示例 单通道,二维,带偏置的卷积示例 带填充的单通道,二维卷积运算示例 Valid卷积 Same卷积 多通道卷积计算 1.局部感知域 2.参数共…...

MapRdeuce工作原理

hadoop - (三)通俗易懂地理解MapReduce的工作原理 - 个人文章 - SegmentFault 思否 MapReduce架构 MapReduce执行过程 Map和Reduce工作流程 (input) ->map-> ->combine-> ->reduce-> (output) Map: Reduce...

完整指南:使用JavaScript从零开始构建中国象棋游戏

引言 中国象棋,又被称为国际象棋,是一款起源于中国的古老棋类游戏。本文旨在为大家提供一个简单明了的步骤,教你如何使用JavaScript从零开始构建这款经典的棋类游戏。 1. 游戏简介 在中国象棋中,两方各有一军队,包括…...

PG-DBA培训19:PostgreSQL高可用集群项目实战之Patroni

一、风哥PG-DBA培训19:PostgreSQL高可用集群项目实战之Patroni 课程目标: 本课程由风哥发布的基于PostgreSQL数据库的系列课程,本课程属于PostgreSQL主从复制与高可用集群阶段之PostgreSQL高可用集群项目实战之Patroni,学完本课…...

数据库管理-第105期 安装Database Valut组件(20230919)

数据库管理-第105期 安装Database Valut组件(20230919) 之前无论是是EXPDP还是PDB中遇到的一些问题,其实都跟数据库的DV(Database Valut)组件有关,因为目标库没有安装DV导致启动时会出现问题。 1 DV/OLS …...

企望制造ERP系统RCE漏洞 复现

文章目录 企望制造ERP系统RCE漏洞 复现0x01 前言0x02 漏洞描述0x03 影响平台0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 企望制造ERP系统RCE漏洞 复现 0x01 前言 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播…...

【unity小技巧】Unity 存储存档保存——PlayerPrefs、JsonUtility和MySQL数据库的使用

文章目录 前言PlayerPrefs一、基本介绍二、Demo三、优缺点 JsonUtility一、基本使用二、Demo三、优缺点 Mysql(扩展)完结 前言 游戏存档不言而喻,是游戏设计中的重要元素,可以提高游戏的可玩性,为玩家提供更多的自由和…...

2023-9-22 滑雪

题目链接&#xff1a;滑雪 #include <cstring> #include <algorithm> #include <iostream>using namespace std;const int N 310;int n, m; int h[N][N]; int f[N][N];int dx[4] {-1, 0, 1, 0}, dy[4] {0, 1, 0, -1};int dp(int x, int y) {int &v f…...

基于Yolov8的工业小目标缺陷检测(6):多检测头结合小缺陷到大缺陷一网打尽的轻量级目标检测器GiraffeDet,暴力提升工业小目标缺陷检测能力

💡💡💡本文改进:多头检测器结合大小缺陷一网打尽的GiraffeDet,进一步提升处理低分辨率图像和小物体等更困难的检测能力。 多头检测器+ GiraffeDet | 亲测在工业小目标缺陷涨点明显,原始mAP@0.5 0.679提升至0.734 收录专栏: 💡💡💡深度学习工业缺陷检测 :h…...

exe文件运行后无输出直接闪退如何找解决办法

一.搜索栏搜事件查看器 二.点开windows日志下的应用程序 三.找到错误处 四.搜索异常代码 点开有错误的详细信息&#xff0c;直接用搜索引擎搜索这个异常代码能大致判断是什么问题&#xff0c;给了一个解决思路&#xff0c;不至于不知道到底哪里出了问题...

OpenHarmony应用开发—ArkUI组件集合

介绍 本示例为ArkUI中组件、通用、动画、全局方法的集合。 效果预览 使用说明&#xff1a; 1.点击组件、通用、动画、全局方法四个按钮或左右滑动切换不同视图。 2.点击二级导航&#xff08;如通用属性、通用事件等&#xff09;&#xff0c;若存在三级导航则展开三级导航&#…...

Linux(CentOS)安装msf

目录 一、安装MSF 1.1 在线安装 1.2 离线安装 二、安装Postgresql数据库 一、安装MSF 1.1 在线安装 需要挂梯子&#xff01;挂完梯子需要reboot重启&#xff0c;多试几次就可以&#xff0c;国内网络我试了很久都不行。没条件没梯子的看1.2离线安装 cd /opt curl https://ra…...

工作几年还是悟不懂自动化测试的意义

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程&#xff0c;刷完面试就稳了&#xff0c;你也可以当高薪软件测试工程师&#xff08;自动化测试&#xff09; 有人问&#xff1a;自动化测试的成本高效果差&#xff0c;那么自动化测试的意义在哪呢&#xff1f; 我…...

Redis面试问题三什么是缓存雪崩怎么解决

定义 缓存雪崩是因为大量的key设置了同一过期时间的导致在同一时间类缓存同时过期&#xff0c;而这时因为请求过来已经没有缓存了&#xff0c;DB压力大数据库崩溃了。 解决方法 我可以在设置过期时间的时候加一个随机时间&#xff0c;在1-5分钟那样可以分散过期时间&#xf…...

如何快速集成KYGooeyMenu:iOS粘液菜单的完整实现指南

如何快速集成KYGooeyMenu&#xff1a;iOS粘液菜单的完整实现指南 【免费下载链接】KYGooeyMenu A not bad gooey effects menu. 项目地址: https://gitcode.com/gh_mirrors/ky/KYGooeyMenu KYGooeyMenu是一款为iOS应用打造的粘液效果菜单组件&#xff0c;能为你的应用添…...

MCGS触摸屏Modbus通讯调试避坑指南:从驱动安装到脚本调试的全流程解析

MCGS触摸屏Modbus通讯调试避坑指南&#xff1a;从驱动安装到脚本调试的全流程解析 第一次接触MCGS触摸屏与Modbus通讯集成的工程师&#xff0c;往往会在调试过程中遇到各种"坑"。本文将从实际项目经验出发&#xff0c;梳理从驱动安装到脚本调试的全流程中那些容易踩雷…...

Chromatic深度解析:基于QuickJS的跨平台动态代码注入框架实现原理

Chromatic深度解析&#xff1a;基于QuickJS的跨平台动态代码注入框架实现原理 【免费下载链接】chromatic Universal modifier for Chromium/V8 | 广谱注入 Chromium/V8 的通用修改器 项目地址: https://gitcode.com/gh_mirrors/be/chromatic 你是否曾经遇到过这样的技术…...

终极解决方案:如何一键修复所有Visual C++运行库问题

终极解决方案&#xff1a;如何一键修复所有Visual C运行库问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经因为"找不到MSVCR140.dll"而…...

5分钟快速上手:Windows触控板优化终极指南

5分钟快速上手&#xff1a;Windows触控板优化终极指南 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/ThreeFingersDragOnWindows …...

直面2026检测算法:英文论文降AI实战,3款工具深度避坑盘点

赶稿季来临&#xff0c;英文长稿的AI率到底该怎么降&#xff1f;不少同学愁的头都要秃了&#xff0c;不要再一个词一个词的扣了&#xff0c;这不仅慢&#xff0c;还会把好好的学术英语改得支离破碎。 坦率的讲&#xff0c;真正聪明的降ai&#xff0c;绝对不是机械替换&#xf…...

终极QMC解码器实战指南:3分钟快速解锁QQ音乐加密文件

终极QMC解码器实战指南&#xff1a;3分钟快速解锁QQ音乐加密文件 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾经下载了QQ音乐平台的歌曲&#xff0c;却发现文件…...

半导体行业成本管理:从学习曲线到EDA工具链的实战策略

1. 行业成本与价格压力的永恒博弈在半导体这个行当里干了十几年&#xff0c;我越来越觉得&#xff0c;我们这行最核心的生存法则&#xff0c;不是什么高深莫测的量子物理&#xff0c;而是一个看似简单、实则残酷的算术题&#xff1a;一边是不断上涨的原材料、设备和设计成本&am…...

终极指南:3分钟掌握Translumo实时屏幕翻译工具,游戏外语学习两不误

终极指南&#xff1a;3分钟掌握Translumo实时屏幕翻译工具&#xff0c;游戏外语学习两不误 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr…...

Go语言服务网格流量管理:熔断与限流

Go语言服务网格流量管理&#xff1a;熔断与限流 1. 熔断器模式 熔断器防止级联故障&#xff0c;提高系统可用性。 package meshimport ("sync""time" )type CircuitBreaker struct {mu sync.RWMutexstate CircuitStatefailureCount intma…...