
memory
文章平均质量分 86
shuai_wen
这个作者很懒,什么都没留下…
展开
-
ioremap
iounmap 对应的函数arch/arm/include/asm/io.h:#define iounmap __arch_iounmap#define __arch_iounmap __iounmaparch/arm/mm/ioremap.cvoid __iounmap(volatile void __iomem原创 2013-07-27 08:41:30 · 1711 阅读 · 4 评论 -
Linux slab 分配器剖析
了解 Linux 内存管理的方式良好的操作系统性能部分依赖于操作系统有效管理资源的能力。在过去,堆内存管理器是实际的规范,但是其性能会受到内存碎片和内存回收需求的影响。现在,Linux® 内核使用了源自于 Solaris 的一种方法,但是这种方法在嵌入式系统中已经使用了很长时间了,它是将内存作为对象按照大小进行分配。本文将探索 slab 分配器背后所采用的思想,并介绍这种方法提供的接口转载 2014-01-07 11:02:35 · 728 阅读 · 0 评论 -
kmem
crash> kmem -p PAGE PHYSICAL MAPPING INDEX CNT FLAGSc09d0000 82000000 edc023a0 3000 2 860c09d0020 82001000 edc025a0 0 2 860c09d0040 82002000 0 83 1原创 2013-12-24 15:11:32 · 2472 阅读 · 0 评论 -
kmalloc
inlude/linux/slab_def.hstatic __always_inline void *kmalloc(size_t size, gfp_t flags){ struct kmem_cache *cachep; return __kmalloc(size, flags);}mm/slab.cvoid *__kmalloc(size_t siz原创 2013-07-30 13:44:42 · 1049 阅读 · 1 评论 -
memory managerment slab allocator(1)
/***************************************************************************/ * The memory is organized in caches, one cache for each object type. * (e.g. inode_cache, dentry_cache, buffer_head, v原创 2013-12-26 15:05:12 · 971 阅读 · 1 评论 -
memory managerment slab allocator(4)
#ifndef _LINUX_POISON_H#define _LINUX_POISON_H/********** include/linux/list.h **********//* * Architectures might want to move the poison pointer offset * into some well-recognized area转载 2014-01-14 09:09:10 · 870 阅读 · 0 评论 -
slab memory的错误类型(1)
/********************************************************************/测试代码:int slab_test(void){ void *object; pr_err("slab_test: Cache name is %s\n", my_cachep->name); pr_err("s原创 2014-01-07 17:59:56 · 1453 阅读 · 0 评论 -
slab memory的错误类型(2)
/******************************************************************/1] use the object after free:/*调用kmem_cache_free后,object就是inactive的,当有申请就会被分配 *一段时间后可能被回收。 *如果不打开slab_debug是不会有问题的,只是内容被改变而已原创 2014-01-08 13:33:36 · 2176 阅读 · 1 评论 -
Arm cache 研究
Cache的工作原理 Cache的工作原理是基于程序访问的局部性。 对大量典型程序运行情况的分析结果表明,在一个较短的时间间隔内,由程序产生的地址往往集中在存储器逻辑地址空间的很小范围内。指令地址的分布本来就是连续的,再加上循环程序段和子程序段要重复执行多次。因此,对这些地址的访问就自然地具有时间上集中分布的倾向。 数据分布的这种集中倾向不如指令明显,但对数组转载 2014-01-16 16:32:59 · 1059 阅读 · 1 评论 -
slab debug and kmalloc
跟踪kmalloc分到的memory为什么没有redzone and usercaller[ 0.000000:0] kmem_cache_create: size-64 set redzone and calluser[ 0.000000:0] kmem_cache_create: size-64 set poison[ 0.000000:0] kmem_cac原创 2014-01-16 11:30:06 · 1743 阅读 · 0 评论 -
开始物理地址哪里定义的
virt_to_phys:weshuai@weshuai-HP-ProBook-4330s:~/Android/kernel/linux-3.19.3/arch/arm64$ grep -nr 'virt_to_phys' ././include/asm/kvm_mmu.h:282:#define kvm_virt_to_phys(x)__virt_to_phys((unsigne原创 2015-11-11 22:00:22 · 1632 阅读 · 0 评论 -
Kmemleak检测工具介绍
一、 Kmemleak检测工具介绍Kmemleak工作于内核态,Kmemleak 提供了一种可选的内核泄漏检测,其方法类似于跟踪内存收集器。当独立的对象没有被释放时,其报告记录在 /sys/kernel/debug/kmemleak中,Kmemcheck能够帮助定位大多数内存错误的上下文。Kmemleak使用过程概述首先CONFIG_DEBUG_KMEMLEAK 在Kernel hacki转载 2016-03-31 21:46:47 · 1432 阅读 · 0 评论 -
memory managerment slab allocator(3)
/***********************************************************************************************/kfree_debugcheck:static void kfree_debugcheck(const void *objp){ if (!virt_addr_valid(objp))原创 2014-01-05 18:52:23 · 1096 阅读 · 0 评论 -
memory managerment slab allocator(2)
HI原创 2013-12-26 15:25:55 · 2754 阅读 · 0 评论 -
linux的swapper_pg_dir的初始化
转自:http://blog.youkuaiyun.com/dog250/article/details/5303446linux的启动涉及到一个解压与定位的过程,对于x86体系结构而言,系统被加载到0x100000的地方,那么swapper_pg_dir的值是什么呢?我们知道swapper_pg_dir是一个很重要的东西,它是所有进程内核空间的页表的模板,而且在涉及到896M以上的内存分配时转载 2013-07-16 17:16:47 · 1112 阅读 · 1 评论 -
进程地址空间的创建
转自http://hi.baidu.com/mystone7/item/c62d27ffb49b60753c198b34进程访问4G的空间[ something about page map ]每个进程都有它自己的页全局目录和它的页表集。因此每个进程都认为它独享整个内存,并且当虚拟地址大于实际的物理地址时,也是能正常工作的。当发生进程切换时,linux把当前cr3控制寄存器转载 2013-07-13 19:15:08 · 1770 阅读 · 0 评论 -
低端内存高端内存是怎样划分的
1. 对UBboot传入的mem参数,kernel 是怎样处理的在boot中 通过bootargs env常见 commandline tag:boot_prep_linux -> { char *commandline = getenv("bootargs"); setup_commandline_tag(gd->bd, commandline);}原创 2013-07-11 16:27:36 · 2343 阅读 · 1 评论 -
设备寄存器静态映射的建立
何时建立这个映射/* * Set up the device mappings. Since we clear out the page tables for all * mappings above VMALLOC_START, we will remove any debug device mappings. * This means you have to be car原创 2013-08-26 11:01:13 · 1255 阅读 · 0 评论 -
用户进程&内核线程的内核空间的pgd
/*************************************************/crash> task_struct | grep mm_struct struct mm_struct *mm; struct mm_struct *active_mm;crash> mm_struct | grep pgd pgd_t *pgd;cra原创 2013-08-21 11:31:47 · 2860 阅读 · 0 评论 -
页表机制
转自:http://lli_njupt.0fees.net/ar01s12.html12. 页表机制上一页 下一页12. 页表机制12.1. 引言在Linux系统中,存在以下三种地址:逻辑地址:它被包含在机器指令中用来指定一个操作数或一条指令的地址。每一个转载 2013-07-17 15:37:44 · 6569 阅读 · 5 评论 -
内核中描述memory数据结构的演变
内核从UBoot中得知memory的有关参数如大小等,是怎样使用的?怎样演变出各种数据结构,直到神奇的我们看不懂。本文希望能对 kernel memory 有个比较清晰的理解。1] setup_arch -> parse_early_param -> early_mem内核会通过输入参数中的 mem=xxxM得到内核可用 memory 的大小。是怎样调到 early_mem的?原创 2013-07-29 13:50:28 · 6648 阅读 · 0 评论 -
linux情景分析第二章-----存储管理(2)
2.4越界访问linux中的虚拟地址通过PGD,PTE等映射到物理地址。但当这个映射过程无法正常映射时候,就会报错,产生page fault exception。那么什么时候会无法正常呢?编程错误。程序使用了不存在的地址不是编程错误,linux的请求调页机制。即:当进程运行时,linux并不将全部的资源分配给进程,而是仅分配当前需要的这一部分,当进程需要另外的资源的时候(这时候就会产生转载 2013-10-18 09:53:57 · 1299 阅读 · 0 评论 -
linux情景分析第二章--存储管理(1)
linux混混之牢骚:可怜的安阳的,你承担和温州一样的故事,却引不起老温的注意……悲哀啊,故乡。。。2.1 linux内存管理基本框架 linux中的分段分页机制分三层,页目录(PGD),中间目录(PMD),页表(PT)。PT中的表项称为页表项(PTE)。注意英文缩写,在linux程序中函数变量的名字等都会和英文缩写相关。LINUX中的三级映射流程如图:但是arm结构的M转载 2013-10-18 09:49:50 · 1426 阅读 · 0 评论 -
vmalloc
/*************************************************************************/mm/vmalloc.c/** * vmalloc - allocate virtually contiguous memory * @size: allocation size * Alloc原创 2013-10-26 18:31:57 · 982 阅读 · 0 评论 -
virtual memory layout and how to get it by the correspoinding functuon
/****************************************************************************/Virtual kernel memory layout: vector : 0xffff0000 - 0xffff1000 ( 4 kB) fixmap : 0xfff00000 - 0xfffe0000原创 2013-10-28 09:56:55 · 1073 阅读 · 0 评论 -
android 系统内存检查
1. IntroductionAndroid对内存的使用包括内存泄漏和内存越界,内存泄漏会导致系统内存减少,最终分配不到内存,这样大的程序就不能运行,甚至系统没有内存而崩溃。Android中kernel和应用程序都可能会有内存泄漏和越界。对于Java代码,在越界的时候虚拟机会加以检查并抛出异常。而对于C/C++代码,越界的时候就悄无声息地让程序出错或crash2.转载 2016-03-09 07:35:36 · 1992 阅读 · 0 评论