代码改变世界

linux内核源码分析 - nvme设备的初始化

2018-04-14 16:15 by tolimit, 12007 阅读, 9 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 本文基于3.18.3内核的分析,nvme设备为pcie接口的ssd,其驱动名称为nvme.ko,驱动代码在drivers/block/nvme-core.c. 驱动的加载 驱动加载实际就是module的加载,而m 阅读全文

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

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

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

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

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

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

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

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

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

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

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

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

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

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

linux内存源码分析 - 内存池

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

内核参数说明

2015-12-22 10:24 by tolimit, 37419 阅读, 2 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 因个人能力有限,不能保证所有描述都正确,还请大家集思广益,有错误的地方欢迎大家留言指正,同时也欢迎大家留言对未标注项进行补偿,谢谢。 内核参数列表 内存参数列表 网络参数列表 文件系统参数列表 用于注册或修改以上 阅读全文

总结一下linux中的分段机制

2015-10-13 15:06 by tolimit, 8815 阅读, 3 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 这篇文章主要说一下linux对于分段机制的处理,虽然都说linux不使用分段机制,但是分段机制属于CPU的一个功能,即使linux不使用,也要通过代码想办法绕过它,况且linux也使用到了分段机制中的某些功能。 阅读全文

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

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

给ubuntu换内核

2015-07-13 17:49 by tolimit, 7350 阅读, 1 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/下载内核源码 有两种方式,一种方式是直接从官网:https://www.kernel.org/直接下载,另一种方式是通过git进行下载。 首先,在官网内核版本分为三种:mainline:主线版本,最新的stab... 阅读全文

几句话总结内核中的锁

2015-07-06 12:28 by tolimit, 2580 阅读, 0 推荐, 收藏, 编辑
摘要:本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 原子操作(atomic): 通过在汇编操作码前缀加个lock(0xf0)来给add命令上锁, 这个锁可能是对cache上锁(数据在cache中)或者对总线上锁(数据在内存中, 不在cache中),让其他CPU无法 阅读全文

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

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