Linux内存管理 | 一、内存管理的由来及思想

1、前言
《中庸》有:"九层之台,起于垒土" 之说,那么对于我们搞技术的人,同样如此!
对于Linux内存管理,你可以说没有留意过,但是它存在于我们日常开发的方方面面,你所打开的文件,你所创建的变量,你所运行的程序,无不以此为基础,它可以说是操作系统的基石;只是底层被封装的太好了,以至于我们在做开发的过程中,不需要关心的太多,哪有什么岁月静好,只是有人在负重前行罢了。
虽然日常开发中涉及的比较少,但是作为一个合格的Linux开发者,搞懂内存管理,又显得至关重要,同时也会对嵌入式开发大有脾益,今天我们就来详细聊聊内存管理的那点事。
该方面的文章,网上也有很多写的非常不错,但是100个人有100种理解方式,并且不同的人,基础不同,理解能力也不同,所以我写这系列的文章,也更有了意义。
2、内存管理的由来

为什么要有这个概念呢?

  • 首先,内存管理,管理的是个什么东西?

管理的其实是我们的物理内存,也就是我们的RAM空间,在电脑上,表现为我们安装的内存条,有的人装个4G的、8G的、甚至64G的,这些就是实打实的物理空间大小,也就是我们的实际的硬件资源。

  • 为什么要进行管理?

做嵌入式的都知道,像我们刚开始玩的C51单片机、STM32单片机,我们将程序烧录到Flash中后,开机启动后,然后CPU会将Flash程序加载到RAM中,也就是我们的物理内存,随后我们的所有操作都是基于这一个物理内存所进行的。

那么此时:

  1. 我们想再次运行一个一模一样的程序怎么办?
  2. 即使运行了,那两个程序同时操作了同一个变量,值被错误修改了怎么办?

这些就是Linux内存管理要做的事情。
顺便介绍一下 我的圈子:高级工程师聚集地,期待大家的加入。
3、Linux内存管理思想
为了解决上面的一些问题,Linux采用虚拟内存管理技术。

  1. Linux操作系统抽象出来一个虚拟地址空间的概念,供上层用户使用,这么做的目的是为了让多个用户进程,都以为自己独享了内存空间。
  2. 而虚拟地址空间与物理地址空间的对应关系,就交给了一个MMU(Memory Managerment Unit)的家伙来管理,其主要负责将虚拟内存空间映射到真实的物理地址空间。


添加图片注释,不超过 140 字(可选)
这么做的主要目的在于:

  1. 让每个进程都拥有相同大小的虚拟地址空间
  2. 避免用户直接访问物理内存,导致系统崩溃

这样,我们同时执行多个进程,虽然看起来虚拟地址操作都是相同的,但是通过MMU之后,就被映射到了不同的物理地址空间,这样就解决了以上的问题。
4、总结
熟悉了内存管理由来以及其思想,我们可以看出,操作系统的内存管理,主要分为以下几个方面:

  1. 虚拟内存空间管理:我们抽象出来的虚拟地址空间,该怎么使用,该怎么管理?
  2. 物理内存空间管理:虚拟地址映射到物理内存空间后,该如何管理,如何分配?
  3. 如何映射:虚拟内存如何映射到物理内存,是怎么操作的,映射方法有哪些?

下面我们来一一详细探究。

相关推荐
码观天工8 天前
解锁.NET 9性能优化黑科技:从内存管理到Web性能的最全指南
性能优化·c#·.net·内存管理·异步·.net 9
Thanks_ks11 天前
深度探索 C 语言:指针与内存管理的精妙艺术
指针·内存管理·c 语言·编程技巧·常见错误·野指针·动态分配
开源架构师16 天前
Java 大厂面试题 -- JVM 深度剖析:解锁大厂 Offe 的核心密钥
内存管理·大厂面试·性能监控·类加载器·垃圾回收机制·优化技巧·java 技术
清源妙木真菌18 天前
Linux:页表详解(虚拟地址到物理地址转换过程)
linux·性能优化·内存管理
开源架构师19 天前
Java大厂面试题 -- JVM 优化进阶之路:从原理到实战的深度剖析(2)
内存管理·性能提升·堆内存·垃圾回收算法·栈内存·jvm 优化·高并发电商系统
林政硕(Cohen0415)20 天前
Linux驱动开发进阶(四)- 内存管理
linux·驱动开发·内存管理
奔跑吧 android20 天前
《Linux内存管理:实验驱动的深度探索》【附录】【实验环境搭建 4】【Qemu 如何模拟numa架构】
linux·qemu·内存管理·kernel
Pandaconda2 个月前
【新人系列】Python 入门(三十一):内存管理
开发语言·经验分享·笔记·后端·python·面试·内存管理
DARLING Zero two♡3 个月前
C++传送锚点的内存寻址:内存管理
开发语言·c++·内存管理
韩曙亮3 个月前
【系统架构设计师】操作系统 ① ( 知识的三种层次 - 系统知识、高频考点、试题拆解 - 软考备考策略 | 操作系统涉及的软考知识点 | 操作系统简介 )
操作系统·文件管理·软考·进程管理·内存管理·系统架构设计师