04_15页表缓存(TLB)和巨型页

news2024/12/24 2:49:14

前言

linux里面每个物理内存(RAM)页的一般大小都是4kb(32位就是4kb),为了使管理虚拟地址数变少
加快从虚拟地址到物理地址的映射 建议配值并使用HugePage巨型页特性

cpu和mmu和页表缓存(TLB)和cache和ram的关系

CPU看到的都是虚拟地址,需要经过MMU的转化,才能变成物理地址,然后访问cache或者主存中的物理地址。
从下图看得出来 cpu内置了mmu模块
MMU模块包含了TLB和TWU两个子模块。TLB是一个高速缓存,用于缓存虚拟地址到物理地址的转换结果。
页表的查询过程是由TWU硬件自动完成的,但是页表的维护是需要操作系统实现的,页表存放在主存RAM中。
在这里插入图片描述
页表查询(为了获取物理地址):
页表的查询是一个耗时的过程,理想情况下,TLB命中,可以从中直接得到虚拟地址对应的物理地址。
当TLB未命中的时候,MMU才会通过TWU查询页表,从而翻译虚拟地址得到物理地址。
获取物理地址(为了获取物理内容):
得到物理地址后,首先要查询该物理地址的内容是否存在于cache中,若cache命中,则直接取出物理地址对应的内容返回给处理器。
若cache没有命中,会进一步访问主存获取相应的内容,然后回写到cache,并返回给处理器。如果没能在页表中查询到虚拟地址对应的物理地址,则会触发一个与MMU相关的缺页异常,在异常处理的过程中,会将EMMC中相关的数据加载到主存,然后建立相应的页表,然后将物理地址对应的内容返回给cache及处理器。
上面说了这么多 就是因为tlb这个页表缓存空间小 CPU会缓存最近的虚拟内存地址和物理内存地址的映射关系放在tlb中
一个页4k的话 太多虚拟地址和物理地址的映射 其实命中率就不高 所以引入了巨型页

操作系统对ram的管理

对于内存的管理(物理内存+虚拟内存),大多数操作系统采用了分段或分页的方式进行管理。
分段是粗粒度的管理方式,而分页则是细粒度管理方式,分页方式可以避免内存空间的浪费。
相应地,也就存在内存的物理地址与虚拟地址的概念。
通过前面这两种方式,CPU必须把虚拟地址转换程物理内存地址才能真正访问内存。为了提高这个转换效率,CPU会缓存最近的虚拟内存地址和物理内存地址的映射关系,并保存在一个由CPU维护的映射表中。为了尽量提高内存的访问速度,需要在映射表中保存尽量多的映射关系。
linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会按照LRU算法在适当的时候将物理内存中不经常使用的内存页自动交换到虚拟内存中,而将经常使用的信息保留到物理内存(ram)。(真的要用到不常用的虚拟内存地址参考上面的去emmc里寻找内容)
通常情况下,Linux默认情况下每页是4K,这就意味着如果物理内存很大,则映射表的条目将会非常多,会影响CPU的检索效率。因为内存大小是固定的,为了减少映射表的条目,可采取的办法只有增加页的尺寸。因此Hugepage便因此而来。

linux系统中如何看当前巨型页的使用剩余等

上面的普及就差不多了 主要是还没发现需要对tlb和hugepage的编写地方
用的时候再完善

巨型页的信息
cat /proc/memoryinfo
在这里插入图片描述
Total 巨型页池总数
Free 没有分配的
Supr 临时的巨型页
巨型页池中的巨型页可分为两种:
永久巨型页:是保留的,不能有其他用途,被预先分配到巨型页池,当进程释放永久巨型页的时候,
永久巨型页被归还到巨型页池。
临时巨型页:也称为多余的(surplus)巨型页,当永久巨型页用完的时候,可以从页分配器分配临时巨型页;
进程释放临时巨型页的时候,直接释放到页分配器。当设备长时间运行后,内存可能碎片化,分配临时巨型页可能
会失败。

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

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

相关文章

langchain-ChatGLM源码阅读:模型加载

文章目录 使用命令行参数初始化加载器模型实例化清空显存加载模型调用链loader.py的_load_model方法auto_factory.py的from_pretrained方法modeling_utils.py的from_pretrained方法hub.py的get_checkpoint_shard_files方法modeling_utils.py的_load_pretrained_mode方法回到loa…

电脑远程接入软件可以进行文件传输吗?快解析内网穿透

电脑远程接入软件的出现,让我们可以在两台电脑之间进行交互和操作。但是,很多人对于这些软件能否进行文件传输还存在一些疑问。下面的文章将解答这个问题。 1.电脑远程接入软件可以进行文件传输。传统上,我们可能会通过传输线或者移动存储设…

听GPT 讲Prometheus源代码--promql/promdb

Prometheus的promql目录包含PromQL(Prometheus Query Language)的解析和执行代码: parser.go 定义PromQL语法结构和parser,用于将PromQL查询语句进行语法解析。 semantic.go 实现PromQL的语义分析,检查查询是否语法正确且语义合理。 engine.go 定义PromQL执行引擎的接口和数据结…

Chapter 15: Object-Oriented Programming | Python for Everybody 讲义笔记_En

文章目录 Python for Everybody课程简介Object-oriented programmingManaging larger programsGetting startedUsing objectsStarting with programsSubdividing a problemOur first Python objectClasses as typesObject lifecycleMultiple instancesInheritanceSummaryGlossa…

AlexNet阅读笔记

ImageNet classification with deep convolutional neural networks 原文链接:https://dl.acm.org/doi/abs/10.1145/3065386 中文翻译:https://blog.csdn.net/qq_38473254/article/details/132307508 使用深度卷积神经网络进行 ImageNet 分类 摘要 大…

all in one之安装群辉和加硬盘(第五章)

安装群辉和加硬盘 安装群辉 群辉系统选择和介绍 PVE7.1虚拟机安装黑群晖教程 安装教程2 下载对应的群辉系统,根据自己的电脑性能来选择并下载: 百度网盘链接:提取码: 4itr 下载链接【私人博客】 第一步,把下载的img镜像上传到pve 记住上…

idea2023 springboot2.7.5+mybatis+jsp 初学单表增删改查

创建项目 因为2.7.14使用量较少,特更改spring-boot为2.7.5版本 配置端口号 打开Sm01Application类,右键运行启动项目,或者按照如下箭头启动 启动后,控制台提示如下信息表示成功 此刻在浏览器中输入:http://lo…

UltraEdit2023代码编辑器下载安装教程

UltraEdit是深受编程人士喜爱的代码编辑器之一,简洁干净的工作界面,标配的语法高亮功能,代码折叠等高效编程功能,并且,还支持HTML、PHP和JavaScript等语法,让代码编辑、文档内容处理更加方便。 作为一款广…

文心一言 VS 讯飞星火 VS chatgpt (78)-- 算法导论7.4 2题

二、如果用go语言,证明:在最好情况下,快速排序的运行时间为 Ω(nlgn)。 文心一言: 在最好情况下,快速排序的运行时间为Ω(nlgn)的证明如下: 快速排序是一种分治算法,它将一个数组分成两个子数…

Android webrtc实战(一)录制本地视频并播放,附带详细的基础知识讲解

目录 一、创建PeerConnectionFactory 初始化 构建对象 二、创建AudioDeviceModule AudioDeviceModule JavaAudioDeviceModule 构建对象 setAudioAttributes setAudioFormat setAudioSource 创建录制视频相关对象 创建VideoSource 创建VideoCapturer 创建VideoTra…

一台电脑访问另一台电脑的虚拟机

打开虚拟机的ip:端口映射 虚拟网络编辑器设置:端口转发 访问虚拟机的主机IP 转发端口 ssh root另一台电脑的虚拟机主机ip: 9000注意:不是虚拟机的ip

通讯录实现【C语言】

目录 前言 一、整体逻辑分析 二、实现步骤 1、创建菜单和多次操作问题 2、创建通讯录 3、初始化通讯录 4、添加联系人 5、显示联系人 6、删除指定联系人 ​7、查找指定联系人 8、修改联系人信息 9、排序联系人信息 三、全部源码 前言 我们上期已经详细的介绍了自定…

docker学习(十五)docker安装MongoDB

什么是MongoDB? MongoDB 是一个开源的、面向文档的 NoSQL 数据库管理系统,它以高性能、灵活的数据存储方式而闻名。与传统的关系型数据库不同,MongoDB 采用了一种称为 BSON(Binary JSON)的二进制 JSON 格式来存储数据。它是一种非…

【AIGC 讯飞星火 | 百度AI|ChatGPT| 】智能对比

AI智能对比 🍸 前言🍺 概念类对比🍵 讯飞🍵 百度AI🍵 chatGPT 🍹 功能类对比☕ 讯飞☕ 百度AI☕ chatGPT 🥃 可输入字数对比🥤 百度AI🥤 讯飞🥤 chatGPT &…

markdown编写微信公众号文章

微信公众号文章编写,暂不支持MarkDown的使用, 推荐工具: 墨滴 全称叫做: Makedown Nice,后面会以mdNice代替使用。 通过官网的写文章,支持在线编译安装chrome浏览器插件, 支持在微信公众号编译…

字符串旋转(1)

目录 ​编辑 题目要求😍: 题目内容❤: 题目分析📚: 主函数部分📕:​编辑 方法一🐒: 方法二🐒🐒: 方法三🐒&#x1f…

Day978.如何在移动App中使用OAuth 2.0? -OAuth 2.0

如何在移动App中使用OAuth 2.0? Hi,我是阿昌,今天学习记录的是关于如何在移动App中使用OAuth 2.0?的内容。 除了 Web 应用外,现实环境中还有非常多的移动 App。 那么,在移动 App 中,能不能使…

手把手带你设计接口自动化测试用例(一):提取接口信息并分析

1、测试行业市场现状 随着市场需求的变化,大部分企业在招聘测试人员时,都会提出接口自动化测试的相关要求,为什么会这样呢? 目前,软件构架基本上都是前后端分离的,软件的主要功能由服务端提供。从整个软件…

生成国密SM2密钥对

在线生成国密密钥对 生成的密钥对要妥善保管,丢失是无法找回的。

windows无法与设备或主DNS服务器通信

今天电脑连上wifi后发现qq可以登录,爱奇艺也可以正常使用,但是就浏览器不能用,不管哪个网站都是无法访问,点击下面的Windows网络诊断后发现是因为windows无法与设备或主DNS服务器通信 1.右下角右键wifi图标,打开网络和internet设置 2.点击网络和共享中心 3. 点击更改适配器设置…