代码改变世界

随笔分类 -  [linux内存源码分析]

linux内存源码分析 - 零散知识点

2016-05-11 15:15 by tolimit, 6493 阅读, 收藏, 编辑
摘要: 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 直接内存回收中的等待队列 内存回收详解见linux内存源码分析 - 内存回收(整体流程),在直接内存回收过程中,有可能会造成当前需要分配内存的进程被加入一个等待队列,当整个node的空闲页数量满足要求时,由ksw 阅读全文

linux内存源码分析 - 内存回收(整体流程)

2016-05-03 10:48 by tolimit, 25589 阅读, 收藏, 编辑
摘要: 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 概述 当linux系统内存压力就大时,就会对系统的每个压力大的zone进程内存回收,内存回收主要是针对匿名页和文件页进行的。对于匿名页,内存回收过程中会筛选出一些不经常使用的匿名页,将它们写入到swap分区中,然 阅读全文

linux内存源码分析 - 内存回收(lru链表)

2016-04-30 16:47 by tolimit, 16873 阅读, 收藏, 编辑
摘要: 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 概述 对于整个内存回收来说,lru链表是关键中的关键,实际上整个内存回收,做的事情就是处理lru链表的收缩,所以这篇文章就先说说系统的lru链表。 内存回收的核心思想,就是如果一些数据能够保存到磁盘,在内存不足时 阅读全文

linux内存源码分析 - 内存碎片整理(同步关系)

2016-04-25 20:55 by tolimit, 5615 阅读, 收藏, 编辑
摘要: 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 概述 最近在看内存回收,内存回收在进行同步的一些情况非常复杂,然后就想,不会内存碎片整理的页面迁移过程中的同步关系也那么复杂吧,带着好奇心就把页面迁移的源码都大致看了一遍,还好,不复杂,也容易理解,这里我们就说说 阅读全文

linux内存源码分析 - 内存回收(匿名页反向映射)

2016-04-17 15:01 by tolimit, 9189 阅读, 收藏, 编辑
摘要: 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 概述 看完了内存压缩,最近在看内存回收这块的代码,发现内容有些多,需要分几块去详细说明,首先先说说匿名页的反向映射,匿名页主要用于进程地址空间的堆、栈、还有私有匿名共享内存(用于有亲属关系的进程),这些匿名页所属 阅读全文

linux内存源码分析 - 内存碎片整理(实现流程)

2016-03-23 11:06 by tolimit, 13350 阅读, 收藏, 编辑
摘要: 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 概述 本文章最好结合linux内存管理源码分析 - 页框分配器与linux内存源码分析 -伙伴系统(初始化和申请页框)一起看,会涉及里面的一些知识。 我们知道内存是以页框为单位,每个页框大小默认是4K(大页除外) 阅读全文

linux内存源码分析 - 伙伴系统(释放页框)

2016-03-17 16:06 by tolimit, 3857 阅读, 收藏, 编辑
摘要: 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 翻了一下之前的文章,发现竟然忘记写内核是如何释放页框的,罪过。 释放页框很简单,其实只有几步 释放页框的操作最后都会调用到__free_pages()函数,我们主要从这个函数跟踪下去,看看内核是怎么执行的。 热页 阅读全文

linux内存源码分析 - 内存池

2016-03-12 15:08 by tolimit, 4275 阅读, 收藏, 编辑
摘要: 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 内存池是用于预先申请一些内存用于备用,当系统内存不足无法从伙伴系统和slab中获取内存时,会从内存池中获取预留的那些内存。内存池与特殊slab一样,需要使用的设备需要自己创建内存池,而不是系统会自动生成。书上形容 阅读全文

linux内存源码分析 - SLUB分配器概述

2015-07-21 10:51 by tolimit, 12157 阅读, 收藏, 编辑
摘要: 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/SLUB和SLAB的区别 首先为什么要说slub分配器,内核里小内存分配一共有三种,SLAB/SLUB/SLOB,slub分配器是slab分配器的进化版,而slob是一种精简的小内存分配算法,主要用于嵌入式系统。... 阅读全文

linux内存源码分析 - 伙伴系统(初始化和申请页框)

2015-07-01 15:59 by tolimit, 11654 阅读, 收藏, 编辑
摘要: 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 之前的文章已经介绍了伙伴系统,这篇我们主要看看源码中是如何初始化伙伴系统、从伙伴系统中分配页框,返回页框于伙伴系统中的。 我们知道,每个管理区都有自己的伙伴系统管理属于这个管理区的页框,这也说明了,在伙伴系统初始 阅读全文

linux内存源码分析 - 页表的初始化

2015-06-23 17:49 by tolimit, 12653 阅读, 收藏, 编辑
摘要: 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 本文章中系统我们假设为x86下的32位系统,暂且不分析64位系统的页表结构。 linux分页 linux下采用四级分页,一个线性地址会分为5个偏移量用于寻址,具体看图: 虽然有四级,但并不是每一级都会用到,在li 阅读全文

linux内存源码分析 - SLAB分配器概述

2015-06-11 12:19 by tolimit, 18755 阅读, 收藏, 编辑
摘要: 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 之前说了管理区页框分配器,这里我们简称为页框分配器,在页框分配器中主要是管理物理内存,将物理内存的页框分配给申请者,而且我们知道也可页框大小为4K(也可设置为4M),这时候就会有个问题,如果我只需要1KB大小的内 阅读全文

linux内存管理源码分析 - 页框分配器

2015-06-05 16:23 by tolimit, 11744 阅读, 收藏, 编辑
摘要: 本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 最近在学习内核模块的框架,这里做个总结,知识太多了。 分段和分页 先看一幅图 也就是我们实际中编码时遇到的内存地址并不是对应于实际内存上的地址,我们编码中使用的地址是一个逻辑地址,会通过分段和分页这两个机制把它转 阅读全文