Linux 内存管理 Kmal loc
Linux内存管理: Kmal loc
这里只说物理内存管理l inux内核的看了很多讲解的内存的东西但是自己总结的时候总感觉无从下手这里就从实际物理内存分配接口开始吧。
Kmal loc它分配连续的物理内存空间它不负责把分配的内存空间清
零它能分配多大的呢并且它只能分配ZONE_NORMAL的不能分配dma 和high里的也就是只分配低端内存.一般情况下内存被分为三个zoneNORMAL、 DMA、 HIGH.
这个函数是建立在slab分配器的基础上的,通过cache而cache有通过slab分配obj 。在开始分析kmal loc函数之前我们需要说明一下l inux内核物理内存的分配函数API __get_free_pages它会调用al loc_pages它的特点是不能从HIGHMEM分配内存分配2的幂个连续物理页面。它有简化模式只分配一page __get_free_page,而get_zeroed_page接口分配的页面内容对应填充为0.从dma分配可以调用__get_dma_pages(它本质也是调用__get_free_pages
那么终极接口al loc_pages它可以从任何zone里申请内存 当然前提设置对应的flags.参考内核 l inux3.18.13参考书籍:《l inux内核设计与实现》
《l inux设备驱动程序》 《深入理解l inux设备驱动内核机制》
下面我们就说说kmal loc 关于分配时候的flags这里不讨论具体可以参考资料我们先看头文件#include而关于它的具体实现我们看slab.h
中
一般系统默认#include
这里可以补充下代码关于kmal loc_sizes.h
我们看到函数开头需要说明一下 __bui ltin_constant_p是编译器gcc 内置函数用于判断一个值是否为编译时常量如果是常数函数返回1 否则返回0。此内置函数的典型用法是在宏中用于手动编译时优化显然如果size为常数则用__kmal loc(size, flags);申请内存.
它查询需要分配的内存在哪个系统cache然后调用
我们看具体代码
它实际的分配是slab_al loc
它调用objp=__do_cache_al loc(cachep, flags);除了检查一些标志等继续调用
____cache_al loc(cachep, flags);
它是一个统一的接口 有检测numa和uma l inux默认是uma除非指定了numa
这里我们假定是第一次使用分配内存那么根据在kmem_cache_init 中的mal loc_sizes[]的初始化在kmal loc的时候返回的kmal loc_cache指针指向的cache中用到这样个函数我们知道不论array被赋了什么值最后都要初始化avai l等值.
所以如果array不可用那么就会调用当然如果array可用那么直接返回申请的obj的内存指针.
由于第一次使用nodel ist上slab链表都为空所以must_grow
它调用cache_grow这个函数首先计算了slab着色处理。然后调用kmem_getpages申请page大小根据cache->gfporder它返回申请pages 的虚拟地址.
而关于slab着色跟硬件缓冲有关为了尽量避免缓存冲突不命中问题提高效率cache_l ine问题。可以参考《深入理解计算机系统》。
具体操作见
我们看看另外一个很重要的操作
百纵科技:美国高防服务器,洛杉矶C3机房 独家接入zenlayer清洗 带金盾硬防,CPU全系列E52670、E52680v3 DDR4内存 三星固态盘阵列!带宽接入了cn2/bgp线路,速度快,无需备案,非常适合国内外用户群体的外贸、搭建网站等用途。C3机房,双程CN2线路,默认200G高防,3+1(高防IP),不限流量,季付送带宽美国洛杉矶C3机房套餐处理器内存硬盘IP数带宽线路防御价格/月套...
bgpto怎么样?bgp.to日本机房、新加坡机房的独立服务器在搞特价促销,日本独立服务器低至6.5折优惠,新加坡独立服务器低至7.5折优惠,所有优惠都是循环的,终身不涨价。服务器不限制流量,支持升级带宽,免费支持Linux和Windows server中文版(还包括Windows 10). 特色:自动部署,无需人工干预,用户可以在后台自己重装系统、重启、关机等操作!bgpto主打日本(东京、大阪...
螢光云官網萤光云成立于2002年,是一家自有IDC的云厂商,主打高防云服务器产品。在国内有福州、北京、上海、台湾、香港CN2节点,还有华盛顿、河内、曼谷等海外节点。萤光云的高防云服务器自带50G防御,适合高防建站、游戏高防等业务。本次萤光云中秋云活动简单无套路,直接在原有价格上砍了一大刀,最低价格16元/月,而且有没有账户限制,新老客户都可以买,就是直接满满的诚意给大家送优惠了!官网首页:www....