linux 内核空间 缺页,Linux-3.14.12内存管理笔记【缺页异常处理(1)】

发布时间:2017-06-18 15:57:06

缺页异常是很常见的现象,但是其来源有两种,一种是真实的异常,这是由于内存访问的地址未分配并未映射而产生的访问了非法地址的情况;另外一种是虚拟内存已经分配出去了,但是实际上的物理内存并未映射分配而产生的缺页异常。这里主要分析后者,这是与内存管理相关的,前者是代码逻辑的问题。根据惯例,先来了解一下.........【阅读全文】

阅读(1667) | 评论(0) | 转发(0)

发布时间:2017-05-14 00:26:48

前面分析了不连续页面管理的初始化以及申请的实现,最后以释放不连续页面空间vfree()收尾。【file:/mm/vmalloc.c】/** * vfree - release memory allocated by vmalloc() * @addr: memory base address * * Free t.........【阅读全文】

阅读(1397) | 评论(0) | 转发(0)

发布时间:2017-05-14 00:07:56

从前文分析来看,不连续页面管理的初始化较为简单,现在分析一下具体的分配实现。vmalloc内存申请函数入口为vmalloc():【file:/mm/vmalloc.c】/** * vmalloc - allocate virtually contiguous memory * @size: allocation size .........【阅读全文】

阅读(1432) | 评论(0) | 转发(0)

发布时间:2017-05-13 23:49:16

伙伴管理算法初衷是解决外部碎片问题,而slab算法则是用于解决内部碎片问题,但是内存使用的得不合理终究会产生碎片。碎片问题产生后,申请大块连续内存将可能持续失败,但是实际上内存的空闲空间却是足够的。这时候就引入了不连续页面管理算法,即我们常用的vmalloc申请分配的内存空间,它主要是用于将不连续的页面,通.........【阅读全文】

阅读(1488) | 评论(0) | 转发(0)

发布时间:2017-01-09 13:25:34

【注:往事不可追,也不知道是自己的编辑问题还是其他原因,整理博文的时候,发现有篇博文居然漏了,只好在此补上,该文延续《系统启动阶段的memblock算法(1)》的分析补充。难怪总觉得怪怪的,可愁死我这强迫症患者了,没法往回插入,只好作罢】     结束完memblock算法初始化前的准备工作,回到memblo.........【阅读全文】

阅读(2741) | 评论(0) | 转发(0)

发布时间:2017-01-09 08:46:38

分析完kmemleak实现后,照常实验一下,以确定功能正常。如kmemcheck一样,该功能需要在内核开启的情况下才能够使用。主要的配置项有:CONFIG_DEBUG_KERNEL、CONFIG_HAVE_DEBUG_KMEMLEAK、CONFIG_DEBUG_KMEMLEAK,以及配置信息记录条数的CONFIG_DEBUG_KMEMLEAK_EARLY_LOG_SIZE,通常情况下配置数量的可以不必修改,但.........【阅读全文】

阅读(4591) | 评论(0) | 转发(0)

发布时间:2017-01-09 08:42:05

kmemleak的工作原理很简单,主要是对kmalloc()、vmalloc()、kmem_cache_alloc()等接口分配的内存地址空间进行跟踪,通过对其地址、空间大小、分配调用栈等信息添加到PRIO搜索树中进行管理。当有匹配的内存释放操作时,将会把跟踪的信息从kmemleak管理中移除。通过内存扫描(包括对保存的寄存器值),如果发现某块内存.........【阅读全文】

阅读(5161) | 评论(0) | 转发(1)

发布时间:2016-12-23 14:10:53

前面分析了kmemcheck的实现,那么现在就针对其功能进行试验,鉴于kmemcheck支持KMEMCHECK_SHADOW_UNALLOCATED、KMEMCHECK_SHADOW_UNINITIALIZED及KMEMCHECK_SHADOW_FREED的检测且检测上报信息大同小异,本文中的实验主要针对于未初始化的内存进行。如果需要使能kmemcheck,需要进行一系列的内核参数设置,具体的配置.........【阅读全文】

阅读(2058) | 评论(0) | 转发(0)

发布时间:2016-12-23 14:03:59

kmemcheck和kmemleak是linux在2.6.31版本开始对外提供的内核内存管理方面的两个检测工具,最初仅支持x86环境,时至今日已经能够支持arm环境了。其中kmemcheck主要是用于内核内存破坏检测,而kmemleak则是用于内核内存泄露检测。本文主要分析kmemcheck的实现,至于kmemleak下一篇文章再详细介绍。为什么要有kmemcheck.........【阅读全文】

阅读(1932) | 评论(0) | 转发(0)

发布时间:2015-12-14 00:46:19

kmalloc()是基于slab/slob/slub分配分配算法上实现的,不少地方将其作为slab/slob/slub分配算法的入口,实际上是略有区别的。现在分析一下其实现:【file:/include/linux/slab.h】/** * kmalloc - allocate memory * @size: how many bytes of memo.........【阅读全文】

阅读(2571) | 评论(0) | 转发(1)

给主人留下些什么吧!~~

5f31602fd72da9924ec1fa53686bd0f7.png

剑魂箫心2018-07-03 23:07

博主真是神人,我正在看4.9内核代码,每当遇到理解不了的地方总能搜到博主的文章。

c81ff8b7f70cca704c88cb923a20d7b1.png

Jean_Leo2016-02-19 00:52

xlzheng:后面没有更新了吗,很期待啊

e180c721456b42bd2471a3a692ff613d.gif

谢谢关注。后面会更新的,最近工作较忙,还抽不出时间来整理,下一篇是关于kmemcheck的内容

e180c721456b42bd2471a3a692ff613d.gif

8a38ecd5764c061489e5f071bf683805.png

xlzheng2016-02-18 14:57

后面没有更新了吗,很期待啊

e180c721456b42bd2471a3a692ff613d.gif

留言热议

请登录后留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值