The invention relates to the field of computer technology, in particular to a memory list, including: a first sublist; a second sublist; a first header; a second header pointer, pointing to the first memory page of the second sublist; a front pointer of the first header pointing to the last memory page of the second sublist; and a division in the second sublist The front pointer of the first other memory page points to the previous memory page, the front pointer of the first memory page in the second sublist points to the last memory page in the first sublist, the back pointer of the first table head points to the first memory page in the first sublist, and the last memory page in the first sublist except for the last memory page The latter pointer points to the latter memory page, the latter pointer of the last memory page in the first sub-list points to the first memory page in the second sub-list, and the optimization method of memory management using the above memory list can classify and manage the memory pages to ensure the efficiency of memory management.
【技术实现步骤摘要】
一种内存链表及内存管理的优化方法
本专利技术涉及计算机处理
,尤其涉及一种内存链表及内存管理的优化方法。
技术介绍
CMA(ContiguousMemoryAllocator连续内存分配器,简称CMA)是Linux系统上设备使用大块内存的一个重要方法。在CMA技术没有出现之前,设备驱动程序通常都是使用预留的方式申明大块连续物理内存。由于这些预留的物理内存对Linux内核的内存管理框架而言是不可见的,因此如果预留的内存过多,会导致系统容易出现内存紧张的情况。而预留内存的设备驱动程序并不总是工作并持有内存的,这也造成了这部分内存的使用率低下,存在资源浪费的情况。CMA技术很好的平衡了设备对大块连续内存的需求以及Linux内存管理之间的矛盾。内核通过在启动阶段对设备申明的CMA内存做特殊类型标记来识别CMA。并且,在设备驱动程序不使用CMA内存的时候,将其共享给应用程序的数据,而在设备驱动程序需要内存的时候,通过内存迁移、回收等方法整理出一块连续的内存区域提供给驱动。LRU(LeastRecentlyUsed最近最少使用,简称LRU)是Linux内存管理中的一种内存页置换算法。Linux系统对应用数据按照来源和活跃程度,分为四类:活跃文件缓存,不活跃文件缓存,活跃匿名页,不活跃匿名页。并且为每种类型的内存构建了一个LRU链表,如图1所示。图1中以活跃文件缓存为例,画出了LRU算法的大致示意图。内核为这种类型的内存页创建了一个双向链表头,这个链表结构有一个后方向和前方向,当有新的活跃文件缓存需要被添加到LRU中来的时候,内核会将其插入到链表头的后方向后面,并 ...
【技术保护点】
1.一种内存链表,其特征在于,包括:一第一子链表,用于放置依次排列的第一内存迁移类型的内存页;一第二子链表,用于放置依次排列的第二内存迁移类型的内存页;第一表头;第二表头指针,指向所述第二子链表的第一个所述内存页;所述第一表头和每个所述内存页均具有一前指针和一后指针;所述第一表头的所述前指针指向所述第二子链表的最后一个所述内存页;所述第二子链表中除第一个的其他所述内存页的所述前指针分别指向前一个所述内存页;所述第二子链表中的第一个所述内存页的所述前指针指向所述第一子链表中的最后一个所述内存页;所述第一表头的所述后指针指向所述第一子链表的第一个所述内存页;所述第一子链表中除最后一个的其他所述内存页的所述后指针分别指向后一个所述内存页;所述第一子链表中的最后一个所述内存页的所述后指针指向所述第二子链表中的第一个所述内存页。
【技术特征摘要】
1.一种内存链表,其特征在于,包括:一第一子链表,用于放置依次排列的第一内存迁移类型的内存页;一第二子链表,用于放置依次排列的第二内存迁移类型的内存页;第一表头;第二表头指针,指向所述第二子链表的第一个所述内存页;所述第一表头和每个所述内存页均具有一前指针和一后指针;所述第一表头的所述前指针指向所述第二子链表的最后一个所述内存页;所述第二子链表中除第一个的其他所述内存页的所述前指针分别指向前一个所述内存页;所述第二子链表中的第一个所述内存页的所述前指针指向所述第一子链表中的最后一个所述内存页;所述第一表头的所述后指针指向所述第一子链表的第一个所述内存页;所述第一子链表中除最后一个的其他所述内存页的所述后指针分别指向后一个所述内存页;所述第一子链表中的最后一个所述内存页的所述后指针指向所述第二子链表中的第一个所述内存页。2.一种内存管理的优化方法,其特征在于,应用于如权利要求1所述的内存链表;包括:步骤S1,提供一新的所述内存页;步骤S2,判断新的所述内存页为所述第一内存迁移类型还是所述第二内存迁移类型;若为所述第一内存迁移类型,则转向步骤S3;若为所述第二内存迁移类型,则转向步骤S4;步骤S3,对新的所述第一内存迁移类型的所述内存页的所述前指针和所述后指针进...
【专利技术属性】
技术研发人员:曾涛,
申请(专利权)人:晶晨半导体上海股份有限公司,
类型:发明
国别省市:上海,31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。