Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7688859
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: 嵌入式

2011-09-14 20:35:08

内存Linux内核所管理的最重要的资源之一,内存管理子系统是操作系统中最重要的部分之一。对于立志从事内核开发的工程师来说,熟悉Linux的内存管理系统非常重要。

地址类型

物理地址

线性地址(虚拟地址)

逻辑地址

物理地址

物理地址是指出现在CPU外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果

逻辑地址

程序代码经过编译后在汇编程序中使用的地址。

线性地址

线性地址又名虚拟地址,在32CPU架构下,可以表示4G的地址空间,用16进制表示就是0x000000000xffffffff

地址转换

CPU要将一个逻辑地址转换为物理地址,需要两步:首先CPU利用段式内存管理单元,将逻辑地址转换成线程地址,再利用页式内存管理单元,把线性地址最终转换为物理地址

逻辑地址到线性地址映射保持不变,在Linux中所提到的逻辑地址和线性地址(或虚拟地址)指的也就是同一地址。看来,Linux巧妙地把段机制给绕过去了,而完全利用了分页机制

Linux进程地址空间

虚拟内存

Linux操作系统采用虚拟内存管理技术,使得每个进程都有独立的进程地址空间,该空间是大小为3G,用户看到和接触的都是虚拟地址,无法看到实际的物理地址。利用这种虚拟地址不但能起到保护操作系统的作用,而且更重要的是用户程序可使用比实际物理内存更大的地址空间

Linux4G的虚拟地址空间划分为两个部分——用户空间与内核空间。用户空间从00xbfffffff,内核空间从3G4G。用户进程通常情况下只能访问用户空间的虚拟地址,不能访问内核空间。例外情况是用户进程通过系统调用访问内核空间。

进程空间

用户空间对应进程,所以每当进程切换,用户空间就会跟着变化。

课件: Linux内存管理.pdf   

实例: 内存的分配和使用.rar   

阅读(1388) | 评论(0) | 转发(4) |
给主人留下些什么吧!~~