高端内存与低端内存

【原】Linux内存管理相关—基础知识篇(二) 对于每个进程而言有4GB的虚拟内存空间,一般来说3GB(0-3GB)用于用户空间,1GB(3-4GB)用于内核空间,其中内核空间这1GB是所有进程共用的(每个用户进程都有 0x00000000~0xbfffffff 范围的用户空间虚拟地址以及共用的 0xc0000000~0xffffffff 内核空间虚拟地址)。当然这一比例是可以通过内核配置而修改的,有3:1的,有1:3的,也有2:2的。 阅读详情

    高端内存是Linux中一个重要的概念,初涉Linux时曾经对这个概念非常迷惑。实际上这个概念比较简单,理解这个概念,需要追溯一下Linux的内存管理。


       从前,CPU的地址总线只有32位,再早的就不再追溯了。32的地址总线无论是从逻辑上还是从物理上都只能描述4G的地址空间,在物理上理论上最多拥有4G内存(除了IO地址空间,实际内存容量小于4G),逻辑空间也只能描述4G的线性地址空间。为了合理的利用4G空间,Linux采用了3:1的策略,即内核占用1G的线性地址空间,用户占用3G的线性地址空间。所以用户进程的地址范围从0~3G,内核地址范围从3G~4G,也就是说,内核空间只能管理1G的内存。


对于如此紧张的线性地址资源,内核空间与用户空间的肆意瓜分,导致了内存管理上的问题:当物理内存大于1G时,内核线性地址空间小于实际的物理内存容量,内核如何实现对大于1G内存的管理呢?说到这里,需要提一下内核空间对内存的管理方法。一方面为了提高内核空间对内存的管理效率;另一方面,为了简化内核空间对内存的管理方法,内核采用线性映射的方法实现对内存的管理,从Linux实现的方法来看,物理地址与内核的虚拟地址只差一个偏移量。所以,当物理内存大于1G时,物理内存无法全部映射到内核线性地址空间,这就产生了上述问题。


从上述描述可以看出,地址空间大于1G的内存区域称之为高端内存,同理,小于1G的内存区域称之为低端内存。高端内存的管理需要进行非线性映射,为此,在内核线性地址空间预留了128M的空间,位于线性地址空间的高端。如今,CPU的地址总线都扩大到64位了,线性地址资源非常丰富,所以,可以给内核空间预留足够的线性地址资源,在最近一段时间内,内核线性地址资源与物理内存容量之间的矛盾将不再突出,高端内存的概念也就在64位CPU上消失了。

优快云余额充值前必读:这5个隐藏条款,90%的开发者都忽略了(附iOS内购避坑指南) 本文揭示了优快云余额充值中90%开发者忽略的5个隐藏条款,包括不可退款规则、iOS内购限制、账号安全责任等关键内容,特别提供了iOS内购避坑指南,帮助开发者避免资金损失和账号风险。 阅读详情

相关推荐

欧姆龙PLC的FinsTCP协议

三个流行的PLC: PLC 通讯协议 默认IP和端口 区别 西门子S7-1200 S7 192.168.1.201 :102 2次验证(正常连接后,第一次发不断开,第二次发断开) 三菱Q系列 MC 192.168.1.250 :4096 不验证(正常连接后,怎么发都不断开) 欧姆龙CJ-2M系列 FinsTCP 192.168.1.14 :9600 1次验证(正常连接后,第一次发断开) ...

周林的博客 1万+

内存管理篇-22 高端内存和低端内存的分界线

如果配置3:1,3GB+760MB为线性映射区。如果2:2划分,2+1760MB为线性映射区。高端内存没啥用,都没人用了,64位地址的虚拟空间特别大,再大的物理内存也能直接映射。当ddr为256MB时,256MB都是低端内存。剩下的1776MB虚拟内存即使访问了,本质上还是被映射到了低端内存。当ddr为512MB时,512还是全部都是低端内存。当ddr为1GB时,低端内存为1024GB,vmalloc区别变成1008MB。重点是啥:观察配置内核和用户空间的比例为不同值,设置ddr的大小为不同值的情况下。

LuckyDog0623的博客 777

VH6501实战:手把手教你用CANoe脚本精准触发CAN总线干扰(附避坑点)

本文详细介绍了使用VH6501和CANoe脚本精准触发CAN总线干扰的实战技巧,包括触发位置控制、ValidityMask配置和干扰序列设置等关键步骤。通过具体代码示例和常见问题排查指南,帮助工程师避开实际应用中的常见陷阱,提升CAN总线干扰测试的准确性和效率。

weixin_33709219的博客 369

内核学习 —— Linux 内存管理

Linux 内存管理 内存布局 地址转换和MMU 内存分配机制(页、slab、kmalloc) I/O内存访问 内核内存到用户空间的映射mmap Linux缓存 设备资源管理框架 内存布局 分为内核空间和用户空间 二者的分割取决于CONFIG_PAGE_OFFSET(典型值,arm:0x80000000 x86:0xC0000000(3/1分割)) 布局状态(内核占高1G) 内核与每个进程都共享地址空间,以便于进行系统调用避免内存换入换出的开销,从而提高系统调用的效率 内存组织的单元:页(取决于PA

十寸甫先生的博客 397

计算机视觉-深度学习图像检测方法梳理

计算机视觉-深度学习图像检测方法梳理 由于之后要转方向啦,趁这段时间整理手中硕士研究方向的一些阅读笔记,这是一篇关于计算机视觉的基础知识梳理 先搞清一些小知识点 首先我们要弄清楚图像分类、目标定位、语义分割、实例分割的区别 a. 图像分类 :给定一张输入图像,图像分类任务旨在判断该图像所属类别; b. 目标定位 :在图像分类的基础上,我们还想知道图像中的目标具体在图像的什么位置,通常是以包围盒的(bounding box)形式; c. 语义分割 :语义分割是目标检测更进阶的任务,目标检测只需要框出每个目

qq_41662991的博客 9953

SAP Workflow 工作流开发步骤总结

SAP WORKFLOW

qq_36952606的博客 5089

【Linux】Linux的内核空间(低端内存、高端内存)

内核也是程序,也应该具有自己的虚存空间,但是作为一种为用户程序服务的程序,内核空间有它自己的特点。   内核空间与用户空间的关系 在一个32位系统中,一个程序的虚拟空间最大可以是4GB,那么最直接的做法就是,把内核也看作是一个程序,使它和其他程序一样也具有4GB空间。但是这种做法会使系统不断的切换用户程序的页表和内核页表,以致影响计算机的效率。解决这个问题的最好做法就是把4GB空间分成两个部...

Yngz_Miao的博客 7万+

抖音直播行为规范考试

抖音直播行为规范考试

Q1642968641的博客 1万+

arm32 linux 内存分布,linux内存管理笔记(十六)----ARM32内存空间分配

Linux内核一般将处理器的虚拟地址空间分成两部分,在32系统上,地址空间在用户进程和内核之间划分的典型比例为3:1,在给出的4GB的虚拟地址空间中,0 ~ 3GB将用于用户空间而3GB ~ 4GB将用于内核空间,内核提供了相关的配置项来修改该比例,也就是说Kernel最多寻址1GB的虚拟地址空间。当CPU启动MMU后,CPU访问的时虚拟地址空间,然后由MMU根据页表转换成物理地址,页表是由Ker...

weixin_39524882的博客 1144

主流仿真软件Sigrity/HFSS/Siwave/Hyperlynx/ADS差异

在电子设计自动化(EDA)领域,各种仿真软件如Cadence Sigrity、Mentor Graphics的HyperLynx、Keysight的ADS以及ANSYS的SIwave等,都广泛应用于不同的应用场景中。综上所述,这些EDA仿真软件在各自的应用场景中发挥着重要作用,帮助工程师在设计阶段就能够评估和优化电子产品的性能,提高设计的可靠性和效率。:Sigrity由全球最大的EDA公司Cadence推出,Cadence还推出了Orcad和Allegro等著名软件。:由安捷伦(现是德科技)公司开发。

Geektec的专栏 9401

④ Django创建用户中心应用users,扩展用户信息

本章配套视频教程 Django创建用户中心应用users,扩展用户数据 在settings.py文件中配置项目 1、语言配置:LANGUAGE_CODE = 'zh-hans’ 2、时区配置:TIME_ZONE = 'Asia\Shanghai’ 3、模板路径配置:‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)], 并创建templates文件

轻编程的博客 669

linux低端内存的好处,通俗易懂!高手带你理解嵌入式Linux中高端内存与低端内存...

高端内存是Linux中一个重要的概念,初涉Linux时曾经对这个概念非常迷惑。实际上这个概念比较简单,理解这个概念,需要追溯一下Linux的内存管理。从前,CPU的地址总线只有32位,再早的就不再追溯了。32的地址总线无论是从逻辑上还是从物理上都只能描述4G的地址空间,在物理上理论上最多拥有4G内存(除了IO地址空间,实际内存容量小于4G),逻辑空间也只能描述4G的线性地址空间。为了合理的利用4G...

weixin_35046143的博客 237

SRS流媒体服务器在Windows下的安装

在之前的流媒体开发中(视频会议),我基本上使用nginx加模块的方式进行学习、测试,正式开发的时候改为服务器端用EasyDarwin,客户端用rtsp-simple-server(这些流媒体服务器的用法见我以前的博文),这样可以充分利用客户端的资源,降低服务器端的压力。在流媒体协议方案,我选择相对较快的rtsp。这个协议优点是支持UDP协议,优化好的环境下可以实现3秒以下的延迟,基本满足甲方要求,缺点就是不支持网页播放。

dgnankai的专栏 2023

Linux内存管理之高端内存

高端内存与低端内存区别 持久映射

qq_25346431的博客 147

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

高端内存和低端内存

高端内存和低端内存

Mihawk专栏 4210

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

谈低端内存和高端内存

一、高端内存和低端内存的划分 Linux物理内存空间分为DMA内存区(DMAZone)、低端内存区(NormalZone)与高端内存区(HighmemZone)三部分。DMAZone通常很小,只有几十M,低端内存区与高端内存区的划分来源于Linux内核空间大小的限制。 二、来源: 过去,CPU的地址总线只有32位,32的地址总线无论是从逻辑上还是从物理上...

weixin_30641999的博客 657

linux中的高端低端内存以及逻辑虚拟地址

           内存在内核中以页表示,页对应的是物理内存,而不是虚拟内存。           由于体系结构的关系,内核并不能对所有页一视同仁,因此就有了不同的区。        ZONE_DMA    这个区包含的页能够用来执行DMA操作。        ZONE_NORMAL 这个区包含的都是能正常映射的页。        ZONE_HIGHMEM  这个区包含“高端内存”,其中的页不能永久地映射到内核地址空间,在申请这部分地址的时候,只能用返回page*指针的内存分配函数,同时,如果要是用它,必

sydnash的专栏 2537

详谈高端内存和低端内存

一、高端内存和低端内存的划分      Linux物理内存空间分为DMA内存区(DMA Zone)、低端内存区(Normal Zone)与高端内存区(Highmem Zone)三部分。DMA Zone通常很小,只有几十M,低端内存区与高端内存区的划分来源于Linux内核空间大小的限制。     二、来源: 过去,CPU的地址总线只有32位, 32的地址总线无论是从逻辑上还是从物理

2028

谈高端内存和低端内存

我是看ldd3种第十五章() 一、高端内存和低端内存的划分      Linux物理内存空间分为DMA内存区(DMA Zone)、低端内存区(Normal Zone)与高端内存区(Highmem Zone)三部分。DMA Zone通常很小,只有几十M,低端内存区与高端内存区的划分来源于Linux内核空间大小的限制。  二、来源: 过去,CPU的地址总线只有32位

YuZhiHui_No1的专栏 4062
上一篇: 很好的一片有关分段和分页解释的
下一篇: 物理地址,虚拟内存,linux内存管理....
killcpp
博客等级 码龄20年 13粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值