Linux 物理内存组织结构

物理内存组织结构

系统调用mmap

虚拟内存区域使用起始地址和结束地址描述。链表按起始地址递增排序。

mmap指定的偏移单位是字节,mmap2指定的偏移单位是页。ARM64架构实现系统调用mmap。

系统调用munmmap

系统调用munmap用来删除内存映射,有两个参数:起始地址、长度。主要委托给do_munmap。

在这里插入图片描述

  1. vma = find_vma(mm, start); // 根据起始地址找到要删除的第一个虚拟内存区域vma
  2. 如果只删除虚拟内存区域vam的部分,那么分裂虚拟内存区域vma
  3. 根据结束地址找到要删除的最后一个虚拟内存区域vma
  4. 如果只删除虚拟内存区域last的一部分,那么分裂虚拟内存区域vma
  5. 针对所有删除目标,如果虚拟内存区域被锁定在内存中(不允许换出到交换区),调用函数解除锁定
  6. 调用此函数,把所有删除目标从进程虚拟内存区域链表和树中删除,单独组成一条临时的链表
  7. 调用此函数,针对所有删除目标,在进程的页表中删除映射,并且从处理器的页表缓存中删除映射
  8. 调用此函数执行处理器架构特定的处理操作
  9. 调用此函数,删除所有目标

体系结构

目前多处理器系统有两种体系结构:

  1. 非一致内存访问(Non-Unit Memory Access, NUMA):内存被划分成多个内存节点的多处理器系统。访问一个内存节点花费的时间取决于处理器和内存节点的距离。
  2. 对称多处理器(Symmetric Multi-Processor, SMP):即一致内存访问(Uniform Memory Access, UMA),所有内存处理器访问内存花费的时间是相同的。
    在这里插入图片描述
内存模型

内存模型是从处理器角度看到的物理内存分布,内核管理不同内存模型的方式存在差异。内存管理子系统支持3种内存模型:

  1. 平坦内存(Flat Memory): 内存的 物理地址空间是连续的,没有空洞。
  2. 不连续内存(Discontiguous Memory): 内存的物理地址空间存在空洞,这种模型可以高效的处理空洞。
  3. 稀疏内存(Space Memory): 内存的物理地址空间存在空洞,如果要支持内存热插拔,只能选择稀疏内存模型。
三级结构

内存管理子系统使用节点(node)、区域(zone)、页(page)三级结构描述物理内存。

  1. 内存节点

    • NUMA体系的内存节点,根据处理器和内存的距离划分;
    • 在具有不连续内存的NUMA系统中,表示比区域的级别更高的内存区域,根据物理地址是否连续划分,每块物理地址连续的内存是一个内存节点。

    node是内存管理最顶层的结构,在NUMA架构下,CPU平均划分为多个Node,每个Node都有自己的内存控制器及内存插槽。CPU访问自己的Node上内存速度快,访问其他CPU关联的内存速度慢。UMA被当做只是一个Node的NUMA系统。

  2. 内存区域

    • 内存节点被划分为内存区域。
  3. 物理页

    • 每个物理页对应一个page结构体,称为页描述符。内存节点的pglist_data实例的成员node_mem_map指向该内存节点包含的所有物理页的页描述符组成的数组。

    页是内存管理中的最小单位,页面中的内存其物理地址是连续的,每个物理页由struct page描述。为了节省内存,struct page是一个联合体。

    页,又称为页帧,在内核当中,内存管理单元MMU(负责虚拟地址和物理地址转换的硬件)是把物理页page作为内存管理的基本单位。体系结构不同,支持的页大小也相同。

    32位体系结构支持4kb的页;64位体系结构支持8kb的页;MIPS64架构体系支持16kb的页。

    总结

    本文介绍了Linux内存组织结构,先介绍了mmap munmmap的具体执行流程。主要介绍了内存模型,三级结构节点、区域、页相关内容。

    技术参考

    本文技术点出处:Linux内核源码视频系列:https://ke.qq.com/course/3294666

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值