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分区作为虚拟内存,速度比真实内存加载慢。
-
用户进程只能操作用户空间的物理内存和虚拟空间,无法直接访问内核空间。
➡️