深入理解Linux内存映射机制

ZDNet 安全频道频道 更新时间:2008-06-17 作者: 来源:SohuIT

本文关键词:内存映射 Linux 内存寻址

  作者: wzt,  出处:xsec.org, 责任编辑: 韩博颖,  2008-06-17 10:13



  我们经常在程序的反汇编代码中看到一些类似0x32118965这样的地址,操作系统中称为线性地址,或虚拟地址。虚拟地址有什么用?虚拟地址又是如何转换为物理内存地址的呢?



  一. 绪 论



  我们经常在程序的反汇编代码中看到一些类似0x32118965这样的地址,操作系统CPU线性地址,或虚拟地址。虚拟地址有什么用?虚拟地址又是如何转换为物理内存地址的呢?本章将对此作一个简要阐述。



  1.1 Linux内存寻址概述



  现代意义上的操作系统都处于32位保护模式下。每个进程一般都能寻址4G的物理空间。但是我们的物理内存一般都是几百M,进程怎么能获得4G的物理空间呢?这就是使用了虚拟地址的好处,通常我们使用一种叫做虚拟内存的技术来实现,因为可以使用硬盘中的一部分来当作内存使用。例外一点现在操作系统都划分为系统空间和用户空间,使用虚拟地址可以很好的保护内核空间被用户空间破坏。



  对于虚拟地址如何转为物理地址,这个转换过程有操作系统和CPU共同完成. 操作系统为CPU设置好页表。CPU通过MMU单元进行地址转换。



  1.2 浏览内核代码的工具



  现在的内核都很大, 因此我们需要某种工具来阅读庞大的源代码体系,现在的内核开发工具都选用vim+ctag+cscope浏览内核代码,网上已有现成的makefile文件用来生成ctags/cscope/etags。



  一、用法:



  找一个空目录,把附件Makefile拷贝进去。然后在该目录中选择性地运行如下make命令:



  



  $Content$nbsp;make



  将处理/usr/src/linux下的源文件,在当前目录生成ctags, cscope



  注:SRCDIR用来指定内核源代码目录,如果没有指定,则缺省为/usr/src/linux/

安全频道 内存映射 最新报道

安全频道 Linux 最新报道

安全频道 内存寻址 最新报道

[an error occurred while processing this directive]