linux中内存管理子系统使用 节点(node)、区域(zone)和页(page) 三级结构描述物理内存。
内存节点内存节点分两种情况:uma和numa。
从管理内存的方法上区分,计算机可以分为两种类型:uma和numa。
uma:一致性内存访问,uniform memory access
numa:非一致性内存访问,non-uniform memory access
两种类型示意图:
对uma来说,每一个cpu访问的都是同一块内存,因此各cpu对内存的访问不存在性能差异
对numa来说,各内存和各cpu通过总线连在一起,每个cpu都有一个本地内存,访问速度快,cpu也可以访问其他cpu的本地内存,但速度稍慢
linux为了统一这两种平台,在内存组织中,将最高层次定义为内存节点 .
可以看到,图中uma只有一个内存节点,而numa有两个内存节点。
实际上,uma其实是numa的一个特例,所以内核可以将内存都看做numa类型的。
区域每个内存节点都划分为多个区,linux内核中定义了以下几个区:
include/linux/mmzone.h
enum zone_type{#ifdef config_zone_dma zone_dma,#endif#ifdefi config_zone_dma32 zone_dma32,#endif zone_normal,#ifdef config_highmem zone_highmem,#endif zone_movable,#ifdef config_zone_device zone_device,#endif __max_nr_zones};zone_dmadma是“direct memory access”的缩写,直接内存访问。
该区域用于isa设备的dma操作,范围是0-16mb。
如果有些设备不能直接访问所有内存,则需要使用dma区域。例如旧的工业标准体系结构(industry standard architecture, isa)总线只能直接访问16mb以下的内存。
只适用于intel x86架构,arm架构没有这个内存管理区。
zone_dma32在64位的系统上使用32位地址寻址的适合dma操作的内存区。
例如在amd64系统上,该区域为低4gb的空间。在32位系统上,本区域通常是空的。
zone_normal常规内存区,指的是可以直接映射到内核空间的内存。
也常称为“ 普通区域 ”“ 直接映射区域 ”“ 线性映射区域 ”。
所谓线性映射就是物理地址和映射后的虚拟地址存在一种简单的关系,即 虚拟地址=物理地址+固定偏移 。
在32位系统上,内核空间和用户空间按1:3划分,那么这个固定偏移就是: 0xc0000000 - 物理内存起始地址 。
既然存在一种线性关系,那还需要使用页表对物理地址和虚拟地址做映射吗?
不同处理器架构实现不一样,arm需要使用页表映射,mips则不需要。
zone_highmem高端内存区,32位时代的产物。在32位系统上,指的是高于896m的物理内存。
32位系统中,内核和用户地址空间按1:3划分,内核地址空间只有1gb,所以不能把1gb以上的内存直接映射到内核地址空间,因此就把不能直接映射的内存划分到了高端内存区。
要将高于896mb的物理内存映射在内核空间的话,需要通过单独的映射来完成,并且这类映射不能保证物理地址和虚拟地址之间存在固定的对应关系(例如zone_normal的固定偏移)。
zone_dma、zone_dma32、zone_normal通常都统称为低端内存区。
64位系统中没有这个区域,即没有高端内存。因为64系统的内核虚拟地址空间非常大,不再需要高端内存区域。
zone_movable一个伪内存区,用来防止内存碎片。
zone_device为支持持久内存(persistent memory)热拔插增加的内存区域
页站在处理器的角度来看,管理物理内存的最小单位是页面。
现在的处理器都采用分页机制来管理内存,在处理器内部有一个mmu硬件,它会处理虚拟内存到物理内存的映射,也就是做页表的翻译工作。
linux内核中使用一个page数据结构来描述一个物理页面。
页的大小通常是4kb ,但有个的架构的处理器可以支持大于4kb的页,例如8kb、16kb或者64kb的页。
目前linux内核默认使用4kb的页面。
所以,linux内核的用三级结构来管理物理内存,简言之就是 内存首先划分成若干个大的节点,每个节点又包含若干个区,每个区有包含若干页。 linux内核按页管理内存,最基本的内存分配和释放都是按页进行的。
华为开启第八届ICT大赛中国区报名通道并携手伙伴预发布《示范性软件学院联盟-软件工程》系列教材
PLC中的扩展模拟量输入模块是什么
人工智能技术使得2022北京8分钟惊艳平昌冬奥会
高通表示5G将会比3G过渡到4G时间更短
苹果又被起诉 Apple Watch的“紧急求救”功能被指涉嫌剽窃
Linux内核的物理内存组织结构详解
智能建筑技术正处于测试和升级的阶段
米尔科技ARM编译器介绍
插电式混动车型有哪些_插电式混动车型推荐
SpaceBok是一个可以在月球或者小行星等低重力体上行走的四足机器人
红外线的基本特性有哪些
在智能家居领域看到更多来自宜家的产品
除了石墨烯,还有哪些牛X的电池技术?
Vivo宣布在印度推出新手机
2016-2045年24个新兴科学和技术趋势解析
氮化镓快充控制芯片是什么
调频立体声的调制原理
无线传感器网络和ISM频带的应用介绍
TDK的元器件微世界观:我们立足于材料创新
美国高盛计划为比特币这创造一个贸易区