linux内存管理子系统
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux内存管理子系统相关的知识,希望对你有一定的参考价值。
内存管理模型:1、地址映射-虚拟地址到物理地址的映射;2、物理内存分配。
Linux可支持的地址空间由处理器硬件来决定的,假设为32位地址,那么共有4GB,其中0-3GB为用户空间,3G-4G为内核空间-内核空间被分成4个部分:a、内核代码,已初始化内核数据,未初始化内核数据等等。b、vmalloc区。c、永久内核映射。d、股东映射的线性地址
其中a为直接映射区,3G-3G+896M(最高到这个值);a、b、c、d到物理地址的映射方式不相同。
虚拟地址转化为物理地址:
上图是用户空间的映射方式。
下面是内核空间的映射方式
a直接映射区3G-3G+896MB在物理内存里896MB以下称为低端内存,高于896MB的内存称为高端内存。那么在这个区域的虚拟地址如何映射呢?如:3G+128MB映射到物理内存地址为128MB,所以很直接(减去3G)。
b、为vmalloc区,它既可以访问低端区域又可以访问高端区域,它的映射没有一个线性关系、
c、永久内核映射:固定用来访问高端内存的
d、固定映射先行区:这里的虚拟地址与特殊的寄存器建立了一种关系。
物理内存分配:
其中malloc、new等分配的地址是虚拟地址,当我们要去操作这些虚拟地址时,才会分配到实实在在的物理地址。。。
以上是关于linux内存管理子系统的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核 内存管理内存管理架构 ① ( 内存管理架构组成 | 用户空间 | 内核空间 | MMU 硬件 | Linux 内核架构层次 | Linux 系统调用接口 )
Linux 内核 内存管理内存管理架构 ④ ( 内存分配系统调用过程 | 用户层 malloc free | 系统调用层 brk mmap | 内核层 kmalloc | 内存管理流程 )