发布时间:2013-01-29 10:49:16
一.前言mmap的具体实现以前在学习内核时学习过,但是对于其中的很多函数是一知半解的,有些只能根据其函数名来猜测其具体的功能,在本文中,一起来重新深入理解其具体的实现。二.mmap的用户层应用void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize); 具体参数含义start : 指向.........【阅读全文】
发布时间:2013-01-08 16:41:01
在阅读Linux2.6的内核内存管理这一部分时,我看到page结构中的一个mapping成员,我感到很迷惑,这个成员的属性太复杂了,我们来看看: struct address_space *mapping;表示该页所在地址空间描述结构指针,用于内容为文件的页帧 (1) 如果page->mapping等于0,说明该页属于交换告诉缓存swap cache (2) 如果page->mapping不等于0,但第0位为0,说明该页为......【阅读全文】
发布时间:2013-01-08 16:09:13
每次深入了解一个技术问题,随着挖据的深入,都发现其背后总非常深的背景知识,甚至需要深入到很多底层系统,这个过程有时会让自己迷失,会让自己忘了当初的目的。在前篇中介绍系统启动时内存的使用情况,本篇将介绍简要Linux如何接管主机的物理内存、组织内存,最后会较为详细的介绍Linux分配内存的一段代码。前面说了,Linux MM系统细节非常多,自己在探究的时候,也是尝试尽量抓住主线,这里也只能抽取了一些“主线剧情”介绍,其中还可以扩展出很多细节,看客感兴趣可以自己深究,后续如果兴趣还在,我也还会继续写出来。内核版本如果没有特别说明,就是使用2.6.33版本。1. 物理内存组织先声明一下,这里说的Li......【阅读全文】
发布时间:2013-01-08 16:07:23
memory cgroupmem_cgroup是cgroup体系中提供的用于memory隔离的功能。admin可以创建若干个mem_cgroup,形成一个树型结构。可以将进程加入到这些mem_cgroup中。(类似这样的管理功能都是由cgroup框架自带的。)为了实现memory隔离,每个mem_cgroup主要有两个维度的限制:1、res - 物理内存2、memsw - memory + swap,物理内存 + swap其中,memsw肯定是大于等于memory的。另外注意,memory控制是针对于组的,而不是单个进程的。(当然,你也可以一个进程一个组。)每个维度又有三个指标:1、usage......【阅读全文】
发布时间:2013-01-08 15:08:37
一、Linux伙伴系统分配器伙伴系统分配器大体上分为两类。__get_free_pages()类函数返回分配的第一个页面的线性地址;alloc_pages()类函数返回页面描述符地址。不管以哪种函数进行分配,最终会调用alloc_pages()进行分配页面。为清楚了解其分配制度,先给个伙伴系统数据的存储框图也就是每个order对应一个free_area结构,free_area以不同的类型以链表的方式存储这些内存块。二、主分配函数下面我们来看这个函数(在UMA模式下)[cpp] view plaincopyprint?#define alloc_pages(gfp......【阅读全文】
张子萌2012-03-26 13:34
博主您好,1-2月评选名单已公布您获得了系列博文参与奖,本次评选可选奖品种类较多,请您入内选择http://blog.chinaunix.net/uid-24789255-id-3132861.html,回复我您需要的奖品名称,也请把您的邮寄地址给我们(姓名、电话、邮寄具体地址),我们会尽快发给您快递。