当前位置:首页 >科技 > 正文

今日热文:一文剖析Linux内核的内存管理
2023-05-25 23:39:15    面包芯语
点击左上方蓝色“一口Linux”,选择“设为星标”

内存管理的主要工作就是对物理内存进行组织,然后对物理内存的分配和回收。但是Linux引入了虚拟地址的概念。

虚拟地址的作用


【资料图】

如果用户进程直接操作物理地址会有以下的坏处:

1、 用户进程可以直接操作内核对应的内存,破坏内核运行。

2、 用户进程也会破坏其他进程的运行

CPU 中寄存器中存储的是逻辑地址,需要进行映射才能转化为对应的物理地址,然后获取对应的内存。

通过引入逻辑地址,每个进程都拥有单独的逻辑地址范围。

当进程申请内存的时候,会为其分配逻辑地址和物理地址,并将逻辑地址和物理地址做一个映射。

1、物理内存

物理内存的组织

Linux 中内存分为 3 个级别,从下到上依次为:

1、Page: 一个 page 的大小为 4k, Page 是内存的一个最基本的单位。

2、Zone: Zone 中提供了多个队列来管理 page。

Zone分为 3 种

2.1、 ZONE_DMA:用来存放 DMA 读取 IO 设备的数据,内核专用

2.2、 ZONE_NORMAL:用来存放内核的相关数据,内核专用

2.3、 ZONE_HIGHMEM:高端内存,用来存放用户进程数据

3、Node 节点,一个 CPU 对应着一个 Node,一个 Node 包括一个 Zone_DMA、 ZONE_NORMAL、ZONE_HIGHMEM。

物理内存的分配

Linux将内存分配分为两种:

当请求 (2i-1 ,2i] 大小的 page 的时候,会直接请求 2i 个页, 如果对应的链表中有对应的页块,就直接分配。如果对应的链表没有,就往上找 2i+1,如果 2i+1 存在,就将其分为 2 个 2i 页块,将其中 1 个 2i 加入到对应的链表中,将另外一个分配出去。

2、如何组织虚拟地址

用户态结构

内核态结构

Linux 的内核程序共用一个内核态虚拟空间。其中分为了以下几部分:

1、直接映射区

896M,内核空间直接映射到对应的ZONE_DMA和ZONE_NORMAL中。为什么叫做直接映射呢?逻辑地址 直接 减去对应的差值就可以得到对应的物理地址。固定死了。

2、动态映射

动态映射分为三种:

3、如何将虚拟地址映射到物理内存

页表映射

映射流程图

用户态申请内存时,只会申请对应的虚拟地址,不会直接为其分配物理内存,而是等到真正访问内存的时候,产生缺页中断,然后内核才会为其分配,然后为其建立映射,也就是建立对应的页表项。

TLB

TLB 就是一个缓存,放在 CPU 中。用来将虚拟地址和对应的物理地址进行缓存。当查询对应的物理地址的时候,首先查询 TLB,如果TLB中存在对应的记录,就直接返回。如果不存在,就再去查询页表。

虚拟内存

虚拟内存 指的是 将硬盘中划出一段 swap 分区 当作 虚拟的内存,用来存放内存中暂时用不到的内存页,等到需要的时候再从 swap 分区中 将对应的内存页调入到 内存中。硬盘此时相当于一个虚拟的内存。

从逻辑上能够运行更大内存的程序,因为程序运行的时候并不需要把所有数据都加载到内存中,只需要将当前运行必要的相关程序和数据加载到内存中就可以了,当需要其他数据和程序的时候,再将其调入。

相较于真正的内存加载,虚拟内存需要将数据在内存和磁盘中不断切换,这是一个耗时的操作,所以速度比不上真正的内存加载。

总结

虚拟空间 和 物理内存 都分为 内核空间 和 用户空间。

虚拟地址需要通过页表转化为物理地址,然后才能访问。

用户虚拟空间 只能映射 物理内存中的用户内存,无法映射到物理内存中的内核内存,也就是说,用户进程只能操作用户内存。

内核空间 只能被 内核 申请使用,用户进程只能操作用户空间的物理内存和虚拟空间。

当用户进程 调用系统调用的时候,会将其对应的代码和数据运行在内核空间中。

原文:

https://kernel.0voice.com/forum.php?mod=viewthread&tid=1769&extra=

这是一口君的新书,感谢大家支持!

精彩文章合集

文章推荐

关键词:

下一篇: 最后一页
上一篇: 劳动法规定离职时间是多久_劳动法规定离职时间 天天微速讯

今日热文:一文剖析Linux内核的内存管理

劳动法规定离职时间是多久_劳动法规定离职时间 天天微速讯

天津公积金政策打补丁 售楼员称比认房不认贷更重要的是老房子得卖得掉|焦点信息

成都幼儿入学体检准备什么资料? 焦点日报

颐海国际5月25日回购100.00万股 耗资1814.07万港币_全球球精选

碧桂园27.4亿摘得佛山南海大沥地块_全球滚动

世界今亮点!王楚钦/孙颖莎击败对手,国乒两对混双组合进四强

天天看点:陕西聚焦重点群体实施创业推进行动工作八项计划

小红书携手欧拉好猫:一起春日出逃,满载春天而归

2023中国国际大数据产业博览会六盘水分会场活动开幕

世界观点:瑞银证券:上调时代天使目标价至119港元 评级买入

打通为民服务的“最后一公里”!苏州相城黄桥街道党建引领基层治理,“锋巢红管家”在行动

判断两个三角形相似的条件_三角形相似的条件

老人也要上战场?民进党当局竟征召80岁老翁参训

华塑股份董秘回复: 股价受多方面因素影响,其波动存在不确定性,风险较大,请投资者谨慎判断,理性投资

天天播报:大连万达集团:网传“160亿销售20个万达广场”为不实消息

北戴河刘庄家庭旅馆哪家好(北戴河刘庄家庭旅馆)

2023年中央财政支持招收中西部农村订单定向免费本科医学生6150人

名誉损害

德意志银行首席执行官呼吁欧洲央行继续加息以遏制通胀

记者:格雷茨卡并未与其他球队谈判,他与拜仁都希望继续合作

中航电子(600372):5月24日北向资金增持51.29万股-世界热头条

【热闻】早期肺癌手术后能活多久?治愈才是硬道理_早期肺癌手术后能活多久

最新资讯:“刷掌”乘地铁

武汉火瀑椒麻餐饮管理有限公司-世界今头条

百事通!2023宁波迎亚运数字人民币红包银行福利叠加指南

dota英雄简称表(dota英雄)

【全球速看料】首席证券内参

建设网红露营地!崇阳县铜钟乡打造浪漫的“诗和远方”_每日视讯

速看:“坐着太舒服了”,黄石一男子盗窃售楼部桌椅被拘留

思佳客·闰中秋_天天热头条

歌手胡栓栓简介_土匪胡栓子哪里人

全球报道:小说丨陈文双:最后的鼓王

三人行:5608.02万股限售股2023年5月30日解禁_速讯

海尔电视怎么开机直接进入电视家_海尔电视怎么开机

同程旅行发布2023年Q1财报:净利5亿元同比增105.6%,平均月活跃用户2.9亿同比增16.9%