免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1193 | 回复: 0

Linux内存管理 [复制链接]

论坛徽章:
0
发表于 2011-12-23 03:35 |显示全部楼层

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

地址类型

物理地址

线性地址(虚拟地址)

逻辑地址

物理地址

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

逻辑地址

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

线性地址

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

地址转换

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

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

Linux进程地址空间

虚拟内存

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

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

进程空间

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

课件: Linux内存管理.pdf   

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

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP