实验四Linuxx86-64内存分页机制分析.docx
《实验四Linuxx86-64内存分页机制分析.docx》由会员分享,可在线阅读,更多相关《实验四Linuxx86-64内存分页机制分析.docx(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实验四Linux X86-64内存分页机制分析实验1 .掌握Linux X86-64模式下内存分页机制;2 .掌握Linux操作系统虚拟内存的基本原理;3 . 了解Linux内核模块加载方法;4 .为后续操作系统内核实验做准备。二、实验环境及要求1 .在完成实验一、实验二和实验三的基础上完本钱实验;2 .本实验要求学生在自己安装的Ubuntul8.4 AMD64操作系统上完成。三、实验内容与步骤1 .系统安装(1) 在 Windows 下安装虚拟机软件 VMware Workstation ;(2)下载并安装在虚拟机中。2 .从github上下载本实验所需的软件并编译;(1) git clon
2、e#软件下载在当前目录的jingrep。目录下(2 ) tar -xvf #解包(3 ) make #在解包生成的目录下生成可执行文件编译成功后生成(1)两个内核模块文件:modules/sys_reg/sys_和 modules/phy_mem/phy_(2 )两个应 用程序 :apps/running-prog/running-prog 和 apps/read-phy- mem/read-phy-mem3 .安装内核模块文件(1) sudo insmod moduIes/sys_reg/sys_(2 ) sudo insmod modules/phy_mem/phy_4 .分页机制分析请仔
3、细阅读附录A ,参照操作过程,深入分析X86-64的分页机制,把变量a的线性地 址转换为物理地址,并读取该物理地址单元的值,观察和running-prog的输出是否一致。四、实验结果在实验报告的这个模块中撰写操作过程的结果,并做出适当的分析。五、实验小结包括:实验过程遇到的问题及解决过程,对本次实验的认识、心得。1.前言本文分析Linux在X86-64模式下的虚拟内存映射流程。讨论的平台是X86-64,也可以称为AMD64 ,IA-32e,是现在广泛使用的64位架构, 可以向前兼容16位和32位的x860另外一种独立的64位架构IA-64与现有架构不同而 且开展不好,比方,安腾(Itanium
4、)处理器,一般是接触不到的。我们平常讨论的64位基本 就是指x86-64o图1是IA-32e两种运行模式。根据处理器强大的兼容性,我们可以配置 为long mode和legacy mode,根据安装的操作系统的模式可以使用不同的模式。Operating modes editOperating modeOperating sub-modeOperating system requiredType of code being runDefault address sizeLong mode64-bit mode64-blt operating system or boot loader64-blt
5、 code64 bitsCompatibility mode64-blt operating system or boot loader32-blt protected mode code32 bits64-blt operating system16-blt protected mode code16 bitsLegacy modeProtected mode32-blt operating system or boot loader, or 64-blt boot loader32-blt protected mode code32 bits16-bit protected mode op
6、erating system or boot loader, or 32- or 64-blt boot loader16-bit protected mode code16 bitsVirtual 8086 mode16- or 32-bit protected mode operating system16-bit real mode code16 bitsReal mode16-blt real mode operating system or boot loader, or 32- or 64-blt boot loader16-blt real mode code16 bits图L
7、IA-32e两种运行模式从图1可以看出,我们下面要测试的是Operating mode = Long mode , Operating sub-mode = 64-bit mode下的虚拟内存映射流程。1)映射流程简述分段的存在更多就是为了兼容性,在X86-64下的Linux对于分段机制近似于绕过不 用。所以我们下面就不讨论逻辑地址到线性地址的转换了,因为每个段的基址为0 ,经过运 算后线性地址和逻辑地址是一样的。32-bit的操作系统进程空间是232字节,即4GBo但是,64-bit的操作系统并没有提 供264字节的空间,这受限于处理器的线性地址宽度。当前X86-64的CPU实际的线性地 址
8、宽度是48-bit,能提供248字节的进程空间。当前IA-32e架构的CPU地址总线的最大 宽度是52-bit,分页过程就是把48-bit的线性地址转换为不超过52-bit的物理地址。在X86-64模式下,48-bit线性地址有以下3种映射分配模式。(1) 4-KByte 页面Linear Address4739 3830 2921 2012 110I I ED IPML4Directory PtrDirectoryTableOffset当页面大小是4KB时,采用4级页表来组织分页系统。分别是:第一级:PML4 ( Page-Map Level-4 ,四级页表)第二级:PDPT ( page-
9、directory-pointer table ,页目录指针表)第三级:PD ( Page Directory ,页目录)第四级:PT ( Page Table ,页表)(2 ) 2-MByte 页面Linear Address 4739 3830 2921 200PML4Directory PtrDirectoryOffset当页面大小是2MB时,采用3级页表来组织分页系统。(3 ) 1-GByte 页面Linear Address 4739 3830 290PML4Directory PtrOffset当页面大小是1GB时,采用2级页表来组织分页系统。2)分页表项结构我们暂时还不知道Lin
10、ux使用哪种分页,但是知道了每种模式下各个寄存器和page structure entry 的格式,如图 2 所示(原表见 Intel 64 and IA-32 Architectures Software Developers Manual, Vol3, 4.4 % 可以一步一步分析。b3b2b10598756b5453521M1M-1i2J1J02827262524232221201918171615141312111 09876543210Reserved2Address of PML4 TableIgnoredPC DPTIgn.CR3IgnoredRsvd.Address of pa
11、ge-directory-pointer tableIgn.RsVC1 g nAPC DPTUR w1PMl4e: presentIgnored0RML46: not presentX0IgnoredRsvd.Address of 1GB page frameReservedPATIgn.G1DAPC DPTURw1PDPTE: 1GB pageA0IgnoredRsvd.Address of page directoryIgn.01 g nAP C DPTU /SR / VJ1PDPTe: page directoryIgnored0PDTPE: not presentA0IgnoredRs
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 Linuxx86 64 内存 分页 机制 分析
限制150内