作为这个系列的第一篇,我先来描述一下slab系统。因为近些天有和同事,朋友讨论过这个主题,而且觉得这个主题还算比较典型,所以就作为第一篇了。其实按照操作系统理论来讲,进程管理应该更加重要些,按照我自己的兴趣来讲,IO管理以及TCP/IP协议栈会更加有分量,关于这些内容,我会陆续给出。 Linux内核的slab来自一种很简单的思想,即事先准备好一些会频繁分配,释放的数据结构。然而标准的s...
分类:
系统相关 时间:
2015-09-16 06:27:21
阅读次数:
285
动态存储管理:伙伴系统分配内存算法思想:当程序提出大小为n的内存分配请求时,首先在可利用表中查找大小与n相匹配的子表.
◆ 若存在2^(k-1)< n ≤ 2^k-1的空闲子表结点:则将子表中的任意一个结点分配之;
◆ 若不存在2^(k-1) < n ≤ 2^k-1的空闲子表结点:则从结点大小为2^k的子表中找到一个空闲结点,将其中一半分配给程序,剩余的一半插入到结点大小为2k-1的子表中。...
分类:
其他好文 时间:
2015-08-30 23:11:00
阅读次数:
219
【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】
上一节最后说到对于小内存区的请求,如果采用伙伴系统来进行分配,则会在页内产生很多空闲空间无法使用,因此产生slab分配器来处理对小内存区(几十或几百字节)的请求。Linux中引入Slab的主要目的是为了减少对伙伴算法的调用次数。
内...
分类:
系统相关 时间:
2015-08-15 16:32:22
阅读次数:
243
malloc是怎样实现的呢?答案就是:可以基于伙伴系统实现(关于伙伴系统在之前的文章里面已经讲过),也可以使用基于链表的实现 。
??
它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表
调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分...
分类:
其他好文 时间:
2015-08-06 15:10:01
阅读次数:
102
linux支持非一致内存访问,就是将整个内存看做一个节点。在此节点中划分三个管理区。关于这三个管理区我就不再详细说明,其中: ZONE_DMA <16M??ISA DMA?使用这块内存。 ZONE_NORMAL 16~896M?被直接映射在内核...
分类:
系统相关 时间:
2015-07-23 20:05:29
阅读次数:
199
本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 之前的文章已经介绍了伙伴系统,这篇我们主要看看源码中是如何初始化伙伴系统、从伙伴系统中分配页框,返回页框于伙伴系统中的。 我们知道,每个管理区都有自己的伙伴系统管理属于这个管理区的页框,这也说明了,在伙伴系统.....
分类:
系统相关 时间:
2015-07-01 17:26:26
阅读次数:
207
伙伴系统 是一种 只 可以 分配 2的 幂次方 个 空间的 ,回收 内存 时 只 合并 “伙伴空间” 的一种 动态内存管理方式。
例如 一个 空间 大小 为 64 的 内存,伙伴 系统 为 这 64 的内存 建立 一组 双向循环 链表,分别 管理着 2的 0 次方,2的1 次方幂,2的 2 次方幂。。。2的6次方幂的 可用空间。
即使 我们 只想分配 一个 大小 为3的 空间,系统 却 只...
分类:
其他好文 时间:
2015-04-17 11:46:08
阅读次数:
151
使用看板的目的使项目管理的工作可视化。看板的布局介绍注:1.下图是我们真实工作中的看板照片。2.由于物料与办公场地大小的限制,所以我们把本来是两个看板的内容贴到了一块板子上——上面是组内版本开发的看板,下面是对合做伙伴系统的联调工作的看板——以下在做介绍时只以内部版本开发为例做介绍。从上到下,整个看...
分类:
其他好文 时间:
2015-04-15 18:46:23
阅读次数:
401
kmalloc/kfree用于划分和回收内核空间低区内存的方法。改组方法没有直接通过伙伴系统进行内存的划分,通过slab算法进行分配的。同时也为每个CPU提供一个阵列缓存,用于提高分配效率。下面对改组函数进行源码级的分析。内存分配static inline void *kmalloc(size_t ...
分类:
系统相关 时间:
2015-04-10 17:15:55
阅读次数:
249
1) Linux中主要有哪几种内核锁?2) Linux中的用户模式和内核模式是什么含意?3) 怎样申请大块内核内存?4) 用户进程间通信主要哪几种方式?5) 通过伙伴系统申请内核内存的函数有哪些?6) 通过slab分配器申请内核内存的函数有?7) Linux的内核空间和用户空间是如何划分的(以32位...
分类:
系统相关 时间:
2015-04-01 23:33:03
阅读次数:
192