Linux中内存管理详解

💡 原文中文,约4500字,阅读约需11分钟。
📝

内容提要

Linux系统的内存管理涉及物理内存的组织和管理,包括内存的分配和回收。虚拟内存地址防止用户进程干扰内核和其他进程的内存。物理内存分为Page、Zone和Node,内存分配分为大内存和小内存分配。虚拟地址通过页表转化为物理地址,TLB用于加速虚拟地址和物理地址的映射。虚拟内存可以运行更大内存的程序,但速度较慢。

🎯

关键要点

  • Linux系统的内存管理涉及物理内存的组织和管理,包括内存的分配与回收。

  • 虚拟内存地址防止用户进程干扰内核和其他进程的内存。

  • 物理内存分为Page、Zone和Node,Page是内存的基本单位。

  • Zone分为ZONE_DMA、ZONE_NORMAL和ZONE_HIGHMEM,分别用于不同的内存管理。

  • 内存分配分为大内存和小内存,大内存使用伙伴系统,小内存使用slub分配。

  • 虚拟地址通过页表转化为物理地址,TLB用于加速映射过程。

  • 虚拟内存允许运行更大内存的程序,但速度较慢。

  • 用户态和内核态的虚拟空间在32位和64位系统中有不同的分配方式。

  • 每个进程对应一个用户态虚拟空间,内核共用一个内核态虚拟空间。

  • 动态映射允许内核空间的逻辑地址映射到物理内存中的任意地址。

  • 页表用于将虚拟地址转化为物理地址,虚拟地址分为索引偏移、页表记录偏移和页内偏移。

  • TLB缓存虚拟地址和物理地址的映射,提高查询效率。

  • 虚拟内存使用硬盘的swap分区作为虚拟内存,速度比真实内存加载慢。

  • 用户进程只能操作用户空间的物理内存和虚拟空间,无法直接访问内核空间。

➡️

继续阅读