码迷,mamicode.com
首页 > 系统相关 > 详细

linux内存管理子系统

时间:2016-05-24 01:36:34      阅读:375      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

技术分享

内存管理模型: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内存管理子系统

标签:

原文地址:http://www.cnblogs.com/gary-guo/p/5522010.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!