深入理解linux内存映射机制

深入理解linux内存映射机制

ID:10981848

大小:66.00 KB

页数:12页

时间:2018-07-09

深入理解linux内存映射机制_第1页
深入理解linux内存映射机制_第2页
深入理解linux内存映射机制_第3页
深入理解linux内存映射机制_第4页
深入理解linux内存映射机制_第5页
资源描述:

《深入理解linux内存映射机制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、深入理解Linux内存映射机制创建时间:2008-08-31文章属性:原创文章提交:wzt(wzt_at_xsec.org)深入理解Linux内存映射机制Author:wztEMail:wzt@xsec.orgSite:http://www.xsec.org&http://hi.baidu.com/wzt85Date:2008-6-13一.绪论二.X86的硬件寻址方法三.内核对页表的设置四.实例分析映射机制一.绪论我们经常在程序的反汇编代码中看到一些类似0x32118965这样的地址,操作系统中称为线性地址,或虚拟地址。虚拟地址有什

2、么用?虚拟地址又是如何转换为物理内存地址的呢?本章将对此作一个简要阐述。1.1  Linux内存寻址概述现代意义上的操作系统都处于32位保护模式下。每个进程一般都能寻址4G的物理空间。但是我们的物理内存一般都是几百M,进程怎么能获得4G的物理空间呢?这就是使用了虚拟地址的好处,通常我们使用一种叫做虚拟内存的技术来实现,因为可以使用硬盘中的一部分来当作内存使用。例外一点现在操作系统都划分为系统空间和用户空间,使用虚拟地址可以很好的保护内核空间被用户空间破坏。对于虚拟地址如何转为物理地址,这个转换过程有操作系统和CPU共同完成.操作系统

3、为CPU设置好页表。CPU通过MMU单元进行地址转换。1.2  浏览内核代码的工具现在的内核都很大,因此我们需要某种工具来阅读庞大的源代码体系,现在的内核开发工具都选用vim+ctag+cscope浏览内核代码,网上已有现成的makefile文件用来生成ctags/cscope/etags。一、用法:    找一个空目录,把附件Makefile拷贝进去。然后在该目录中选择性地运行如下make命令:$make将处理/usr/src/linux下的源文件,在当前目录生成ctags,cscope  注:SRCDIR用来指定内核源代码目录,

4、如果没有指定,则缺省为/usr/src/linux/1)只创建ctags$makeSRCDIR=/usr/src/linux-2.6.12/tags2)只创建cscope$makeSRCDIR=/usr/src/linux-2.6.12/cscope3)创建ctags和cscope$makeSRCDIR=/usr/src/linux-2.6.12/4)只创建etags$makeSRCDIR=/usr/src/linux-2.6.12/TAGS二、处理时包括的内核源文件:1)不包括drivers,sound目录2)不包括无关的体系结构

5、目录3)fs目录只包括顶层目录和ext2,proc目录三、最简单的ctags命令1)进入进入vim后,用:tagfunc_name跳到函数func_name2)看函数(identifier)想进入光标所在的函数,用CTRL+]3)回退回退用    CTRL+T1.3  内核版本的选取本次论文分析,我选取的是linux-2.6.10版本的内核。最新的内核代码为2.6.25。但是现在主流的服务器都使用的是RedHatAS4的机器,它使用2.6.9的内核。我选取2.6.10是因为它很接近2.6.9,现在红帽企业Linux4以Linux2.

6、6.9内核为基础,是最稳定、最强大的商业产品。在2004年期间,Fedora等开源项目为Linux2.6内核技术的更加成熟提供了一个环境,这使得红帽企业Linuxv.4内核可以提供比以前版本更多更好的功能和算法,具体包括:?通用的逻辑CPU调度程序:处理多内核和超线程CPU。?基于对象的逆向映射虚拟内存:提高了内存受限系统的性能。?读复制更新:针对操作系统数据结构的SMP算法优化。?多I/O调度程序:可根据应用环境进行选择。?增强的SMP和NUMA支持:提高了大型服务器的性能和可扩展性。?网络中断缓和(NAPI):提高了大流量网络的

7、性能。Linux2.6内核使用了许多技术来改进对大量内存的使用,使得Linux比以往任何时候都更适用于企业。包括反向映射(reversemapping)、使用更大的内存页、页表条目存储在高端内存中,以及更稳定的管理器。因此,我选取linux-2.6.10内核版本作为分析对象。二.X86的硬件寻址方法请参考Intelx86手册^_^三.内核对页表的设置CPU做出映射的前提是操作系统要为其准备好内核页表,而对于页表的设置,内核在系统启动的初期和系统初始化完成后都分别进行了设置。3.1与内存映射相关的几个宏这几个宏把无符号整数转换成对应的

8、类型    #define__pte(x)              ((pte_t){(x)})    #define__pmd(x)            ((pmd_t){(x)})    #define__pgd(x)    

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。