当前位置: 首页 > 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…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...