深入浅出内存管理--物理内存框架

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/rikeyone/article/details/85002788

NUMA

首先需要介绍一个NUMA的概念,非一致性内存访问模型,在这种系统中,CPU访问不同内存单元的时间可能是不一样的,物理内存被划分为不同的Node节点来进行管理,对于单CPU的系统也可能使用NUMA,因为这些系统的物理内存有可能不一定是整块的,而是中间包含有很大的洞,因此划分出多个Node进行管理。比如系统中存在两个内存芯片并且内存芯片的地址不连续,内核对应的也把物理内存划分为多个内存Node节点,每个Node代表着一个连续的物理内存块。

物理内存布局

为了保持内核代码的兼容型,内核默认启用对NUMA的支持,假如系统仅有一整块连续物理内存,那么该系统就只是单个Node来进行管理。内存节点Node中又可以划分为多个Zone来进行管理,比如常见的三种ZONE:ZONE_DMA/ZONE_NORMAL/ZONE_HIGHMEM。而每个ZONE中都有一个伙伴系统在管理,所谓伙伴系统就是一种内存管理的算法。物理内存布局
如上图所示,系统可能存在有很多个内存节点(NODE),每个节点内都会划分为多个管理区(ZONE),而每个管理区里面都涉及的内存的管理与分配,而他们使用的都是伙伴系统算法(Buddy System)。

猜你喜欢

转载自blog.csdn.net/rikeyone/article/details/85002788