登陆

章鱼彩票鱼丸怎么换钱-Linux-3.14.12内存办理笔记「同伴办理算法(3)」

admin 2019-12-14 184人围观 ,发现0个评论

前面剖析了同伴办理算法的初始化,在切入剖析代码完成之前,例行先剖析一下其完成原理。

同伴办理算法(也称之为Buddy算法),该算法将一切闲暇的页面分组划分为MAX_ORDER个页面块链表进行办理,其间MAX_ORDER界说:

【file:/include/linux/mmzone.h】
#ifndef CONFIG_FORCE_MAX_ZONEORDER
#define MAX_ORDER 11
#else
#define MAX_ORDER CONFIG_FORCE_MAX_ZONEORDER
#endif

一般该值都是界说为11,而CONFIG_FORCE_MAX_ZONEORDER界说:

【file:/arch/tile/include/asm/page.h】
/*
* If the Kconfig doesn't specify, set a maximum zone order that
* is enough so that we can create huge pages from small pages given
* the respective sizes of the two page types. See .
*/
#ifndef CONFIG_FORCE_MAX_ZONEORDER
#define CONFIG_FORCE_MAX_ZONEORDER (HPAGE_SHIFT - PAGE_SHIFT + 1)
#endif

该值详细多少没细入剖析。其间tile是指Tilera处理器,顺带介绍一下:Tilera公司是坐落硅谷的新创无晶圆半导体公司,该公司创始人之一是麻省理工学院(MIT)教授阿南特阿加瓦尔(Ana章鱼彩票鱼丸怎么换钱-Linux-3.14.12内存办理笔记「同伴办理算法(3)」nt Agarwal),他在2004年创建了该公司,由于在多核技能方面具有独家的先进技能,该公司曾被美国闻名媒体EETIMES评为全球最有期望的60家新式企业之一。该公司的处理器功耗听说很低,可是功能却是杠杠滴。迄今停止自己清炒西兰花还没触摸过该公司的处理器,羞愧羞愧,路漫漫其修远兮。

接着,根据MAX_ORD章鱼彩票鱼丸怎么换钱-Linux-3.14.12内存办理笔记「同伴办理算法(3)」ER为11的状况,同伴办理算法每个页面块链表别离包含了:1、2、4、8、16、32、64、128、256、512、1024个接连的页面,每个页面块的第一个页面的物理地址是该块巨细的整数倍。假定接连的物理内存,各页面块左右的页面,要么是同等巨细,要么便是整数倍,并且仍是偶数,形同同伴。

其办理起来如图:

同伴办理算法的开释进程是,满意条件的两个页面块称之为同伴:两个页面块的巨细相同且两者的物理地址接连。当某块页面被开释时,且其存在闲暇的同伴页面块,则算法会将其两者兼并为章鱼彩票鱼丸怎么换钱-Linux-3.14.12内存办理笔记「同伴办理算法(3)」一个大的页面块,兼并后的页面块假如还能够找到同伴页面块,则将会持续与相邻的块进行兼并,直至到巨细为2^MAX_ORDER个页面停止。

开释如图:

而同伴办理算法的请求进程则相反,假如请求指定巨细的页面在其页面块链表中不存在,则会往高阶的页面块链表进行查找,假如仍旧没找到,则持续往高阶进行查找,直到找到停止,不然便是请求失利了。假如在高阶的页面块链表找到闲暇的页面块,则会将其拆分为两块,假如拆分后仍比需求的大,那么持续拆分,直至到巨细刚好停止,这样避免了资源章鱼彩票鱼丸怎么换钱-Linux-3.14.12内存办理笔记「同伴办理算法(3)」糟蹋。

详细的请求如图:

请关注微信公众号
微信二维码
不容错过
Powered By Z-BlogPHP