linux 内存管理
文章平均质量分 89
linux 内存管理
废言Pro
时间加努力
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
说出来你可能不信,内核这家伙在内存的使用上给自己开了个小灶!
现在你可能还觉得node、zone、伙伴系统、slab这些东东还有那么一点点陌生。别怕,接下来我们结合动手观察,把它们逐个来展开细说。(下面的讨论都基于Linux 3.10.0版本) 一、NODE 划分 在现代的服务器上,内存和CPU都是所谓的NUMA架构 CPU往往不止是一颗。通过dmidecode命令看到你主板上插着的CPU的详细信息 ProcessorInformation//第一颗CPU SocketDesignation:CPU1 Versi...转载 2021-02-02 10:27:21 · 358 阅读 · 0 评论 -
从资源池和管理的角度理解物理内存
早就想搞一下内存问题了!这次正趁着搞bigmemory内核,可以写一篇文章了。本文旨在记录,不包含细节,细节的话,google,百度均可,很多人已经写了不少了。我只是按照自己的理解记录一下内存的点点滴滴而已,没有一家之言,不讨论,不较真。 1.最简单的内存使用 最简单的模型是冯.诺依曼提出的原始模型,简单的把数据和指令存放在内存中,然后机器从内存中取出指令和数据进行计算,如下图所示: 当时...转载 2020-04-23 15:31:34 · 601 阅读 · 0 评论 -
SLUB DEBUG原理
1. 前言 在工作中,经常会遇到由于越界导致的各种奇怪的问题。为什么越界访问导致的问题很奇怪呢?在工作差不多半年的时间里我就遇到了很多越界访问导致的问题(不得不吐槽下IC厂商提供的driver,总是隐藏着bug)。比如说越界访问导致的死机问题,这种问题的出现一般需要长时间测试才能发现,而且发现的时候即使有panic log。你也没什么头绪。这是为什么呢?假设驱动A通过kmalloc()申请了一段...转载 2020-04-23 14:57:47 · 760 阅读 · 0 评论 -
图解slub
1.前言 在Linux中,伙伴系统(buddy system)是以页为单位管理和分配内存。但是现实的需求却以字节为单位,假如我们需要申请20Bytes,总不能分配一页吧!那岂不是严重浪费内存。那么该如何分配呢?slab分配器就应运而生了,专为小内存分配而生。slab分配器分配内存以Byte为单位。但是slab分配器并没有脱离伙伴系统,而是基于伙伴系统分配的大内存进一步细分成小内存分配。 前段时...转载 2020-04-23 14:45:06 · 803 阅读 · 0 评论 -
Linux用户态进程的内存管理浅析
相信大家都知道对用户态的内存消耗对象是进程,应用开发者面对的所有代码操作最后的落脚点都是进程,这也是说为什么内存和进程两个知识点的重要性,理解了内存和进程两大法宝,对所有软件开发的理解都会有了全局观(关于进程的知识以后再整理和大家分享)。 下面闲话少说,开始本篇的内容——进程的内存消耗和泄漏 进程的虚拟地址空间VMA(Virtual Memory Area) 在linux操作系统...转载 2020-04-17 18:05:23 · 338 阅读 · 0 评论 -
Linux内存描述之概述--Linux内存管理(一)
1 前景回顾 前面我们讲到服务器体系(SMP, NUMA, MPP)与共享存储器架构(UMA和NUMA) 1.1 UMA和NUMA两种模型 共享存储型多处理机有两种模型 均匀存储器存取(Uniform-Memory-Access,简称UMA)模型,将可用内存以连续方式组织起来, 非均匀存储器存取(Nonuniform-Memory-Access,简称NUMA)模型 1.2 UMA模型 传...转载 2019-11-07 00:15:57 · 408 阅读 · 0 评论 -
简析Windows Linux的内核映射
linux的内存管理我认为是高效的,windows xp的我认为是豪华的,vista的呢?我认为是无以伦比的(理论是无以伦比,但是实际上不是那样)。 linux把内核的主要数据结构映射到内核空间3g到3g+768的空间内,在系统初始化的时候就将物理内存的前896页映射到内核的3g到3g+896 的地址空间,这内部的内存是一一对应的,而且在进程创建之初,此进程的pgd是在slab分配的,而sl...转载 2019-01-15 14:51:23 · 357 阅读 · 0 评论 -
从物理页面的争抢看linux内核内存管理
linux的内核页面是不可换出的,这是事实,但是为什么呢?本文我将从物理页面争抢的角度来试图发现和解决这个疑问。 linux的内核地址空间很大一块 是一一映射,这实际上不是必须的,而是内核想尽可能简单的实现内核本身的管理(迎合mmu,人家必须要mmu插手,你内核无法逃避,只好用最简单的方式应 付一下,如果没有mmu,那么对于内核就好了)。 内核毕竟只是为用户进程提供服务,它不应该花很大的精力用...转载 2019-01-15 16:49:14 · 286 阅读 · 0 评论
分享