Chinaunix首页 | 论坛 | 博客
  • 博客访问: 631866
  • 博文数量: 1008
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 5175
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-31 09:44
文章分类
文章存档

2012年(1008)

我的朋友

分类:

2012-08-01 11:07:17

原文地址:Linux内存管理 作者:luozhiyong131

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

地址类型

物理地址

线性地址(虚拟地址)

逻辑地址

物理地址

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

逻辑地址

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

线性地址

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

地址转换

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

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

Linux进程地址空间

虚拟内存

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

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

进程空间

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

课件: Linux内存管理.pdf   

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

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