Linux内存性能优化
倪朋飞
微软资深工程师,Kubernetes项目维护者
立即订阅
0 人已学习
课程目录
已完结 7 讲
01| 基础篇:Linux内存是怎么工作的?
02 | 基础篇:怎么理解内存中的Buffer和Cache?
03 | 案例篇:如何利用系统缓存优化程序的运行效率?
04 | 案例篇:内存泄漏了,我该如何定位和处理?
05 | 案例篇:为什么系统的Swap变高了(上)
06 | 案例篇:为什么系统的Swap变高了?(下)
07 | 套路篇:如何“快准狠”找到系统内存的问题?
Linux内存性能优化
登录|注册

01| 基础篇:Linux内存是怎么工作的?

倪鹏飞 2019-11-06
你好,我是倪朋飞。
前几节我们一起学习了 CPU 的性能原理和优化方法,接下来,我们将进入另一个板块——内存。
同 CPU 管理一样,内存管理也是操作系统最核心的功能之一。内存主要用来存储系统和应用程序的指令、数据、缓存等。
那么,Linux 到底是怎么管理内存的呢?今天,我就来带你一起来看看这个问题。

内存映射

说到内存,你能说出你现在用的这台计算机内存有多大吗?我估计你记得很清楚,因为这是我们购买时,首先考虑的一个重要参数,比方说,我的笔记本电脑内存就是 8GB 的 。
我们通常所说的内存容量,就像我刚刚提到的 8GB,其实指的是物理内存。物理内存也称为主存,大多数计算机用的主存都是动态随机访问内存(DRAM)。只有内核才可以直接访问物理内存。那么,进程要访问内存时,该怎么办呢?
Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样,进程就可以很方便地访问内存,更确切地说是访问虚拟内存。
虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同字长(也就是单个 CPU 指令可以处理数据的最大长度)的处理器,地址空间的范围也不同。比如最常见的 32 位和 64 位系统,我画了两张图来分别表示它们的虚拟地址空间,如下所示:
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《Linux内存性能优化》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(3)

  • 进程都有一定的堆空间,malloc超过对空间的大小需要srbk修改堆上限。我知道mmap用来做内存映射,但不知还可以用来分配内存,没看malloc的实现,我觉的不应该说是内存分配方式,只是一种映射关系,和malloc完全不一样吧
    2019-11-13
    1
  • Jeff.Smile
    感觉多讲一些命令的实际使用场景比较好,可以加深理解!
    2019-11-23
  • 郑宁林
    想请教一下,为什么32位系统时,内核空间为1G,用户空间为3G。这样分配的原理是什么?
    2019-11-21
收起评论
3
返回
顶部