多级页表如何节省进程页表空间

Win10环境下VS2019离线部署OnnxRuntime的完整指南 本文提供了在Windows 10系统下,为Visual Studio 2019进行OnnxRuntime离线部署的完整教程。针对网络受限环境,详细讲解了如何获取正确的离线安装包、配置本地NuGet源,并逐步指导项目配置与测试,确保AI模型在C++环境中顺利运行。 阅读详情
<深入理解linux内核>:如果使用简单的一级页表,如果进程使用全部4G线性地址空间,那么将需要高达2^20表项(总共地址线是32位,每页大小为4kb,则页偏移量需要低12位,高20位当作页表地址)来保存表示每个进程的页表,若每项4B,则需要4MB的ram来存储页表。即使一个进程并不使用内的所有地址。

         书上提出:使用这种二级模式能够减少每个进程页表所需RAM数量。开始一直没想通,为什么节省了呢?从你最终要存储的表项来看,无论如何你存储的表项是不会少的,而且多级页表还会增加存储开销。

          其实是这样的,二级表只是从进程的角度来看,为进程节省了页表项(其实所有的页表存储空间增大了)。二级模式通过只为进程实际使用的那些虚拟内存区请求页表来减少页表,就是进程未使用的页暂时可以不用为其建立页表,因为如果使用一级页表的话,你就必须为所有的4G范围内分配页表,不能细分。每个活动进程必须有一个分配给它的页目录,不过没必要马上为进程的所有页表都分配ram,只有在进程实际需要一个页表时才给该页表分配ram,这样就提高了效率。

注:正在使用的页目录物理地址存放在控制寄存器cr3中。

注:linux进程的线性地址空间分成两部分:

            (1)0x00000000~0xbfffffff的线性地址,无论用户态和内核态的进程都可以寻址;

            (2)0xc0000000~0xffffffff的线性地址,只有内核态的进程可以寻址。

安卓端目标检测模型部署血泪史:从NCNN/TFLite/MNN全军覆没到Torchscipts终见光明 公司需在Android设备部署目标检测模型,要求: ✅ 实时检测速度≥15FPS ✅ 模型精度损失<5% ✅ 兼容中低端安卓设备👉 GitHub项目地址:pytorch/android-demo-app/ObjectDetection我已上传这份源码到csdn下载准备模型(必须走这步才能跑通安卓端源码)如果您没有设置PyTorch环境来运行该脚本,可以下载模型文件此处转到“android演示app/ObjectDetection/app/src/main/assets”文件夹,然后跳过此步骤的其余部分,直 阅读详情

相关推荐

跟着Cell学单细胞转录组分析(五):单细胞转录组marker基因鉴定及细胞群注释

书接上回(跟着Cell学单细胞转录组分析(四):单细胞转录组测序UMAP降维聚类)。完成数据降维和细胞聚类后,最主要的环节和工作就是确定各个细胞群,明确是什么类型的细胞,正群的细胞定群很关键,涉及到整个研究,所以这一步宁愿多费时间,也不要出错。当然,这也不是一蹴而就的,需要反复的确认。 要确定各个群是什么细胞,首先需要了解细胞群的marker基因,因为不同类型的细胞突出 表达的基因也是不同的。这里使用FindAllMarkers鉴定各个细胞群的高表达基因。 DefaultAssay(scedata)

qq_42090739的博客 1万+

页表是啥以及为啥多级页表能够节省空间

简单的说,页表就是一个存储物理页地址的表,我们知道,现在的程序使用的都是虚拟内存,CPU在取指令或者取数据的时候使用的是虚拟地址,为了能够从内存中取得数据,需要将虚拟地址转换为物理地址 ...

fuyuande的博客 7685

3DGS-to-PC实战指南:零代码实现3D高斯场景到点云/Mesh的高效转换

本文详细介绍了3DGS-to-PC工具如何实现3D高斯场景到点云/Mesh的高效转换,无需代码即可完成。通过实战案例和参数调优技巧,帮助用户快速掌握这一开源插件的使用方法,提升3D数据处理效率。特别适合建筑扫描、影视特效等领域的专业人士。

q1w3e5r7t9y的博客 273

多级页表为什么能够减少进程对内存的占用?

引言 操作系统中页表的作用是完成物理地址到逻辑地址的映射。在块大小为4K的32位系统中,逻辑地址的低12位为页内偏移,高20位为页索引。CPU通过查找页表将20位的页索引转换为数据块的物理地址(同样也是20位),然后与低12位的页内偏移拼接,形成最后的物理地址。 操作系统中页表的分配单位为进程。也就是说每个进程都有自己的页表,每个进程在创建时os会为其分配页表,进程终止时会回收页表(内存资源),并非整个操作系统只有一个页表。 单级页表存在的问题 单级页表也就是用一个页表完成整个所有地址的转换。32位的系

qq_45577173的博客 4329

避坑指南:ros2_control在Gazebo中的常见配置错误及解决方案

本文系统梳理了在Gazebo仿真环境中配置ros2_control框架时最常见的错误,并提供了详细的解决方案。重点解析了YAML配置文件的结构陷阱、URDF/XACRO中关键标签的正确写法、Launch文件的启动顺序管理,并分享了实用的调试命令与故障排查思路,帮助开发者高效避坑,实现流畅的关节运动控制。

q5r6s7的博客 971

【UOJ170】Picks loves segment tree VIII

【题目链接】 点击打开链接 【前置阅读】 【BZOJ4695】最假女选手 【BZOJ3064】【TYVJ1518】CPU监控【UOJ169】【UR #11】元旦老人与数列 【思路要点】 前置阅读中的前两题中,我们分别对线段树的区间取最大/最小值和线段树的历史最大/最小值进行了研究。本题中,两类问题同时出现,因此我们

cz_xuyixuan的博客 1250

多级页表如何节约内存

在学习计算机组成原理时,书中谈到,"使用多级页表可以压缩页表占用的内存",在了解了多级页表的原理后,恐怕对这句话还是理解不了:把页表换成多级页表了就能节约内存了?不是还是得映射所有的虚拟地址空间么? 比如做个简单的数学计算,假如虚拟地址空间为32位(即4GB)、每个页面映射4KB以及每条页表项占4B,则进程需要1M个页表项(4GB / 4KB = 1M),即页表(每个进程都有一个页表)占用4MB(1M * 4B = 4MB)的内存空间。而假如我们使用二级页表,还是上述条件,但一级页表映射4MB、二级页表映

weixin_42286658的博客 2090

ArcGIS Maps SDK for Unity实战:把真实世界地形‘搬进’游戏场景的保姆级教程

本文详细介绍了如何使用ArcGIS Maps SDK for Unity将真实世界地形导入游戏场景的完整流程。从高程数据获取、TPKX格式转换到Unity中的地形集成与优化,提供了保姆级教程,帮助开发者快速实现高精度地形建模,特别适用于开放世界游戏和数字孪生项目。

weixin_30621465的博客 346

页表和多级页表

我们在c和c++里看到的地址都是操作系统虚拟出来的,%p打印出来的也是虚拟地址,物理内存由操作系统统一管理.操作系统负责把虚拟地址映射到物理内存. 那么为什么要用到虚拟内存呢: 1,因为如果每个进程都访问物理内存的话,造成不可控性.如果进程有访问内存的权力,他就会把自己的数据存到内存上,但是他并不知道哪片内存被使用,那一片未被使用.所以在多个进程的情况下,数据会混乱,所以物理内存由操作系统管理,进程没有权限访问. 2,操作系统并不能预先知道这个进程有多大,这个进程运行多少时间,应该给他分配多少空间(如

m0_63089723的博客 3420

Serial RapidIO Gen2 IP 说明(一)

概述 高速IO(RapidIO)互联架构,用来兼容当前最流行的集成通信处理器、主处理器、联网的数字信号处理器,是一种高性能、分组交换(报文交换)的互联技术。它解决了高性能嵌入式产业稳定性、高带宽以及系统内部更快的总线速率的需求。 高速IO(RapidIO)标准由三层定义:逻辑层、传输层、物理层。逻辑层定义了所有的协议内容和报文格式。这些是终端发起和完成一次传输所必需的信息。传输层提供了报文从一个端点传输到另外一个端点必要的路线信息。物理层则描述了设备级的端口声明,如报...

记录所学,分享知识,结识挚友 1497

030、微透镜阵列与光场成像:从光场相机到深度感知的演进

文章摘要: 光场成像通过微透镜阵列(MLA)同时记录光线的位置与方向,实现单次曝光获取三维信息。其核心架构包括主镜头+MLA+传感器或相机阵列,各有分辨率与体积的权衡。光场支持先拍照后对焦和深度估计,但受限于微透镜基线短,精度较低。深度算法需结合多视角立体匹配与极平面图像分析,并处理噪声和温度漂移等实际问题。光场适用于短距离动态场景(如手势识别),而远距离高精度需求仍需激光雷达。建议初学者通过二手光场相机和开源工具入门,理解光场“角度域”与“空间域”的协同机制。

sundong_81的博客 50

操作系统-------加速分页过程、多级页表

以下是我在看《现代操作系统》时的知识的记录: 加速分页过程: 一、虚拟地址到物理地址的映射必须非常快 1、32位虚拟地址,需要更大的页面和页表 由于页面和页表是相对应的;因此计算机为32位地址空间,而页面大小为4KB,则需要页面个数;将超过100万页; 此时页表就得有100万条表项,并且每个进程都需要自己的页表,从而占用的存储空间也很大;由于在访问页表时需要访问内存,从而在启动一个...

qq_41983709的博客 911

嵌入式STM32F407CET6移植OpenHarmony系统方法

文件末尾添加:export PATH=~/gcc-arm-none-eabi-10-2020-q4-major/bin:$PATH。编译完成文件输出在LiteOs源码目录下out/STM32F407_ATK_Explorer文件夹中。②点击connect to the target,下方会自动显示识别出来的芯片型号以及flash大小。⑤点击program verify并点击start,等待烧写并校验完成,你就能看到程序正在运行了。,在选择刚才我们说的Huawei_LiteOS.hex文件。

嵌入式技术开发 546

linux内存-页表管理

2级页表:需要的页数是256M/4K = 65536个物理页,一个二级页表(占4K物理内存)能表示1024(1K)个物理页地址,因此65536个物理页面需要65536/1024 = 64 个二级页表,同理,一个一级页表,能够包含1K个二级页表首地址,所以一个一级页就够了(能涵盖64个二级页表)。在64位架构的机器上,一个进程的虚拟地址空间大小理论上可以达到2的64次方字节,即16 EB(exabytes,十八亿GB)。不过,即使如此,64位架构依然能够支持更高的内存容量和更高的性能。

inTheChangingRoad的博客 623

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Linux : 页表

页表设计的优点如果使用一级页表,整个4GB的内存地址空间都需要为每个页面创建一个对应的页表项,这会占用大量内存。而使用多级页表,页目录的大小一般为KB级别,且由于第二级页表是按需创建的,因此只在需要时才分配内存。这样可以显著节省内存。最坏情况下,内存占用也只是MB级别。多级页表的结构类似于一颗多叉树。第一层页表(页目录)指向第二层页表,第二级页表就像树的节点一样,可以按需创建、删除和管理。这种结构使得管理更加灵活和高效,尤其是当内存需求不均匀时,可以动态分配和释放内存。

2301_79927432的博客 1241

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Linux系统编程——详解页表

页表是我们之前在讲到程序地址空间的时候说到的,它是物理内存到进程程序地址空间的一个桥梁,通过它物理内存的数据和代码才能映射到进程的程序地址空间中,在信号这一节我们又提到了内核空间的页表,讲到了该内核级页表不同于前面说的用户级页表是每个进程都有的,内核级页表整个系统只有一份。但是之前我们对页表的理解还都处于一个比较简单的层面,事实上页表的实现还是比较复杂的,这次我们深入理解一下页表的构成及其功能。1、进程虚拟地址和物理内存的解耦在二级页表中,每个页表条目记录的是页面(page)的位置,未加载的页面会存储为。

学习日记 1295

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

计算机组成原理040

理解内存 虚拟内存和内存保护是什么? 映射的简单页表说起 实际应用的多级页表 多级页表像是一颗树 因为一个进程的内存地址相对集中和连续 页表树 大大节省空间 ...

ailinyingai的博客 632

40 | 理解内存(上):虚拟内存和内存保护是什么?

40 | 理解内存(上):虚拟内存和内存保护是什么?

luoganttcc的博客 506

OS 内存分区和分页 && 多级页表与快表

快表是寄存器,很昂贵,所以只能一部分页号,不在快表中就规规矩矩的去查。构建页目录 每个页目录号指向4M的地址。但是不连续需要的空间太多了,太麻烦了。多级页表:类比于书的章目录和节目录。每个进程的PCB都有一个LDT。内存紧缩不实用,所需时间太长。类似于段表,存在页表。

weixin_44273624的博客 259

CSAPP 虚拟内存01

一般我们把内存看做是一个由M个连续的字节大小的单元组成的数组,而这个数组的下标就是物理地址。 第一个字节的地址为0,接下来的字节地址为1,以此类推。CPU通过物理地址找到内存中的数据,这种查找数据的方式叫做物理寻址。相对应的,通过虚拟地址找到内存中的数据,称为虚拟寻址。主要寻址流程是通过 MMU(Memory management unit)把虚拟地址(Virtual Address, VA)转换为物理地址(Physical Address, PA),再由此进行实际的数据传输。大致的过程如下图所示 使用虚

qq_42136820的博客 522

【内存管理基础】-操作系统重点内容总结

为了提高内存的空间性能,提出了多级页表的概念;但是提高空间性能是以浪费时间性能为基础的,因此为了补充损失的时间性能,提出了快表(TLB)的概念。不论是快表还是多级页表实际上都利用了程序的局部性原理,局部性原理在后面的虚拟内存这部分会介绍到。

kybabcde的博客 191

操作系统分页机制

1.LinearSpace&PhysicalSpace在硬件工程师和普通用户看来,内存就是插在或固化在主板上的内存条,它们有一定的容量——比如64MB。但在应用程序员眼中,并不过度关心插在主板上的内存容量,而是他们可以使用的内存空间——他们可以开发一个需要占用1GB内存的程序,并让其在OS平台上运行,哪怕这台运行主机上只有128MB的物理内存条。而对于OS开发者而言,则是...

qq_42577465的博客 396

操作系统简单理解2

1.解决虚拟地址到物理地址的转换要快。解决虚拟地址空间大,页表也会很大的问题。 快表 : 加速虚拟地址到物理地址的转换。快表理解为一种特殊的高速缓冲存储器,其中的内容是页表的一部分或者全部内容。作为页表的 Cache,它的作用与页表相似,但是提高了访问速率。由于采用页表做地址转换,读写内存数据时 CPU 要访问两次主存。有了快表,有时只要访问一次高速缓冲存储器,一次主存,这样可加速查找并提高指令执行速度。 ...

dsaggdsd的博客 436

深入剖析虚拟内存工作原理

作者:allanpan,腾讯 IEG 后台开发工程师导言虚拟内存是当今计算机系统中最重要的抽象概念之一,它的提出是为了更加有效地管理内存并且降低内存出错的概率。虚拟内存影响着计算机的方方面...

腾讯技术工程 3661

为什么使用多级页表?

对于32位处理器来说,32位的线性地址被分成三部分,如下图。其中,最低12位表示偏移量,中间的10位表示页表项,最高10位表示页目录项。由线性地址转换成物理地址经过两部,也就是所谓的二级页表。 32位线性地址寻址过程如下: \ 说明:控制寄存器cr3中存放了页目录的物理地址,通过cr3寄存器可以找到页目录,而线性地址中的Directory部分决定页目录中的目录项,而页目录项中存放了要找的页表...

ibless的博客 3万+
上一篇: MMU(深入浅出)
下一篇: 关于优先级反转
shareCode
博客等级 码龄15年 125粉丝 40原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值