![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux内核之内存管理
麦兜weixinluo
这个作者很懒,什么都没留下…
展开
-
kswapd内核线程
linux内核中有一个非常重要的内核线程kswapd,负责在内存不足时回收页面,kswapd内核线程初始化时会为系统中每个NUMA内存节点创建一个名为“kswapd%d”的内核线程。kswapd线程的初始化实现如下:/* * This kswapd start function will be called by init and node-hot-add. * On node...原创 2019-04-04 15:02:13 · 1845 阅读 · 2 评论 -
【Linux内核学习笔记一】内存管理-节点(node)
本文用于学习和分享,参考了《深入理解linux内核》《深入理解linux虚拟内存管理》等书籍以及内存管理相关的博文。1.UMA和NUMA两种模型UMA:均匀存储器存取(Uniform-Memory-Access,简称UMA)模型 NUMA:非均匀存储器存取(Nonuniform-Memory-Access,简称NUMA)模型2.簇 在NUMA体系结构中,内存被...原创 2018-08-16 16:39:51 · 2809 阅读 · 0 评论 -
【Linux内核学习笔记二】内存管理-管理区(zone)
1.管理区类型 在前一篇笔记中,已经对节点的概念进行了讲解。而节点又被分为多个管理区(zone),zone用于表示内存中的某个范围。管理区被分为多个类型。 ZONE_DMA:内存首部16MB,即低端范围的物理内存,某些工业标准体系结构(ISA)设备需要用到ZONE_DMA; ZONE_DMA32:标记了使用32位地址字可寻址, 适合DMA的内存域。...原创 2018-08-24 18:22:05 · 3769 阅读 · 0 评论 -
【Linux内核学习笔记三】内存管理-页面(page)
1.页面 系统的内存划分成大小确定的许多块,这些块也称为页面帧,页帧是系统内存的最小单位。内核需要保持该结构尽可能小,因为对于现代计算机,物理内存包含大量的页帧,即便是增加page一点点空间,都会导致保存所有页帧page结构多占用大量物理内存。例如当页长度为4KB,主内存384MB时大约需要100000页。 每个物理页面帧由一个 struct page 描述。它在<ke...原创 2018-08-29 17:33:05 · 5427 阅读 · 0 评论 -
【Linux内核学习笔记四】内存管理-伙伴系统
1.伙伴系统算法描述 linux系统采用伙伴系统算法来解决外碎片问题。主要做法是记录现存的空闲连续页框块的情况,以尽量避免为满足对小块的请求而分割大的空闲块。 伙伴系统算法中,把所有的空闲页框分为11个组,每个组对应一个链表,每个链表分别包含1、2、4、8、16、32、64、128、256、512和1024个连续页框。对1024个页框的请求对应着4MB大小的连续RAM块。...原创 2018-09-23 22:09:01 · 511 阅读 · 0 评论 -
【Linux内核学习笔记五】内存管理-slab分配器
slab分配器的基本思想是:将内核中经常使用的对象放到高速缓存中,并且由系统保持为初始的可利用状态。如果没有基于对象的分配器,内核将花费更多的时间分配,初始化以及释放一个对象。slab分配器的目的是缓存这些空闲的对象,保留基本结构,从而能够重复使用它们。 slab分配器由多个高速缓存组成,它们通过双向循环链表链接在一起,称为高速缓存链表。每个高速缓存包含若干slab,slab由...原创 2018-10-07 21:37:00 · 571 阅读 · 0 评论 -
页框回收算法(PFRA)
1 页框回收算法(PFRA)linux内核的页框回收算法采取从用户态进程和内核高速缓存“窃取”页框的办法补充伙伴系统的空闲块列表。页框回收算法的目标之一就是保存最少的空闲页框池以便内核可以安全地从“内存紧缺”的情形中恢复过来。1.1选择目标页页框回收算法(PFRA)的目标就是获得页框并使之空闲。PFRA按照页框所含内容,以不同的方式处理页框。我们将他们区分成:不可回收页,可交换页,可同...原创 2019-03-21 17:59:15 · 1067 阅读 · 0 评论