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

news2024/10/7 5:25:36

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页表不一样

在这里插入图片描述

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

六、其他实例问题

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1011535.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第三方ipad笔哪个牌子好用?开学季比较好用的电容笔

新学期有什么电容笔值得入手?这款平替电容笔,名为Apple Pencil,唯一的区别就是它的压力感应功能,同时拥有重力压感以及倾斜压感,而平替电容笔仅只拥有倾斜压感一种功能,不过它的压力感应能力很强&#xff0…

034:vue项目利用qrcodejs2生成二维码示例

第034个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使…

无涯教程-JavaScript - IF函数

描述 如果条件为TRUE,则IF函数返回一个值,如果条件为FALSE,则返回另一个值。 语法 IF (logical_test, value_if_true, [value_if_false]) 争论 Argument描述Required/Optionallogical_testThe condition you want to test.Requiredvalue_if_trueThe value that you want re…

藿香正气水泡脚火了!谁都可以“插一脚”吗?

白露身不露,寒露脚不露 眼见着凉凉秋意脚步将至 不少人又把泡脚养生提上了日程 不过,用藿香正气水泡脚你有尝试过吗? 有人说泡完能祛湿 可有人居然腹泻了这是怎么回事? 👇👇👇 藿香正气水…

足不出户游登封,千里之外访嵩山

阿里元境联合河南登封文旅打造首个虚实结合的文旅元宇宙 虚实结合元宇宙成效明显 说到河南嵩山,很多人会想到“五岳”。作为五岳之一,嵩山历史悠久,历史人文景观众多。徐霞客曾评价:“嵩山天下奥,少室险奇特。不游三皇…

【css】能被4整除 css :class,判断一个数能否被另外一个数整除,余数

判断一个数能否被另外一个数整除 一个数能被4整除的表达式可以表示为:num%40,其中,num为待判断的数,% 为取模运算符,为等于运算符。这个表达式的意思是,如果num除以4的余数为0,则返回true&…

uniapp——生成一个签字板

在开发项目中有签名/签字的需求&#xff0c;以下实现&#xff1a; <template><view class"new_file" v-if"showAutograph"><view class"popupBox"><view class"popupTopBox">签字板</view><canvas c…

SpringBoot-Actuator

SpringBoot-Actuator 1 综合 Spring Boot Actuator 模块 详解&#xff1a;健康检查&#xff0c;度量&#xff0c;指标收集和监Spring boot——Actuator 详解Spring Boot Actuator官网 - 最新Spring Boot Actuator官网-2.3.x关于spring-boot-actuator的httptrace端点不生效问题…

焊接符号学习

欧美焊接符号举例 4.5------表示焊点直径 【3】------根据图示说明&#xff0c;表示此项为CC项或者SC项 6-------表示此处为第六CC项或者SC项 BETWEEN①AND②------表示①件和②件俩点之间的焊点 12X------表示俩点之间的焊点个数为12个 日本焊接符号举例 A------根据图示&…

IO和进程day08(消息队列、共享内存、信号灯集)

今日任务 1.代码 inversion.c #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/ipc.h> #include <sys/shm.h> #include <sys/types.h> #include …

革命性创新:RFID技术引领汽车零部件加工新时代

革命性创新&#xff1a;RFID技术引领汽车零部件加工新时代 RFID&#xff08;Radio Frequency Identification&#xff0c;射频识别&#xff09;技术是一种利用无线电频率进行自动识别的技术&#xff0c;可以快速、准确地识别物体并获取相关数据。在汽车零部件加工中&#xff0…

科普AI技术中API不可缺的理由

API是什么 API是应用程序接口&#xff0c;是一些预先定义的函数&#xff0c;或指软件系统不同组成部分衔接的约定。 API目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力&#xff0c;而又无需访问原码或理解内部工作机制的细节。API的一个主要功能是提供…

RDPV5P-10/350-EB、RBP10P-10/50Y-EB电控比例溢流阀放大器

RDPV5P-10/50-EC、RDPV5P-10/100-EB、RDPV5P-10/150-EC、RDPV5P-10/250-EB、RDPV5P-10/315-EC、RDPV5P-10/350-EB电液比例直动式溢流阀 RBP10P-10/50Y-EB、RBP20P-10/100Y-EC、RBP30P-10/150Y-EB、RBP35P-10/250Y-EC、RBP20P-10/315Y-EB、RBP10P-10/350Y-EC电液比例柱塞平衡式溢…

【技术方案】深度分析打印日志为啥要使用占位符

背景&#xff1a; 最近项目上&#xff0c;关于是否使用占位符有不同的意见&#xff0c;尤其是以前使用字符串拼接的&#xff0c;觉得挺好的&#xff0c;没啥问题&#xff0c;为啥使用占位符&#xff0c;然后&#xff0c;他们在网上还找了一篇专门做性能比对的&#xff0c;主要…

怎么裁剪图片?总结了下面几个方法

怎么裁剪图片&#xff1f;在日常的生活中&#xff0c;图片已经成为了我们不可或缺的一部分。或许你正在整理自己的相册时&#xff0c;或者我们需要向互联网上发布一些图片的时候&#xff0c;总之我们随时都可能会遇到一张需要进行裁剪的图片。比如说&#xff0c;一些图片上存在…

【OJ比赛日历】快周末了,不来一场比赛吗? #09.16-09.22 #12场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 2023-09-16&#xff08;周六&#xff09; #3场比赛2023-09-17…

中尺度混凝土二维有限元求解——运行弯曲、运行光盘、运行比较、运行半圆形(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【每日一题】744. 寻找比目标字母大的最小字母

744. 寻找比目标字母大的最小字母 - 力扣&#xff08;LeetCode&#xff09; 给你一个字符数组 letters&#xff0c;该数组按非递减顺序排序&#xff0c;以及一个字符 target。letters 里至少有两个不同的字符。 返回 letters 中大于 target 的最小的字符。如果不存在这样的字符…

【C++】基础知识点回顾 下:auto关键字、范围内的for循环

前言 前两篇文章&#xff0c;我们分别复习了这些知识点 命名空间与输入输出 函数重载、引用和内联函数 今天&#xff0c;我们来学习auto关键字、范围内的for循环 auto关键字 定义 C11中&#xff0c;标准委员会赋予了auto全新的含义即&#xff1a;auto不再是一个存储类型指…

中断子系统 -- 中断通用框架

目录 通用数据结构 中断注册 中断线程化 中断处理 获取hwirq号 irq_enter preempt_count generic_handle_irq irq_exit 通用数据结构 内核提供了两种中断描述符组织形式&#xff1a; 打开CONFIG_SPARSE_IRQ宏&#xff08;中断编号不连续&#xff09;&#xff0c;中断描…