- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
则访问后备链表。
Chapter 4 Memory Management 4.2内存管理体系结构 Windows 支持不同硬件结构,内存管理体系结构在源代码的不同文件中,比如x86在i386.h中,AMD64在amd64.h中。。 第二层内存管理专用接口都包含在mi.h中,其中包括了内存管理所必须的私有数据结构和函数 第三层是公共内存管理接口,操作系统的其他部分都是通过这些公共的接口来调用内存管理提供的服务。在这一层已经完全看不到任何硬件结构有关的信息,它们完全是独立于硬件平台的。 4.2内存管理体系结构 在底层的各个文件的内容是:地址空间布局的信息、页表项PTE的结构、页面大小、地址变换的级数、物理地址位数、对齐方式等。 第二层包括了内存管理所必须的私有数据结构和函数。 第三层是公共内存管理接口。 4.3工作集与页面机制 工作集:工作集描述了进程或系统拥有的驻留页面,而“页框号PFN数据库”描述了物理内存中各个页面的状态。 页面一定处于下表的8种状态之一。 活动(有效)。 过渡(transition)。 后备(stand by)。 修改。 修改不写入。 空闲。 零初始化。 坏。 其中,零初始化、空闲、后备、坏、修改、修改不写入组成了链表(6种链表),以便虚拟内存管理器可以很快定位某特定类型的页面。 4.4内存分配与回收 分配粒度与页面大小 每当你保留地址空间的一个区域时,系统要确保该区域从一个分配粒度的边界开始。 当你保留地址空间的一个区域时,系统还要确保该区域的大小是系统的页面大小的倍数。 系统也需要创建一个线程环境块(TEB),以便管理进程中当前存在的所有线程。用于这些TEB的区域将根据进程中的线程被创建和撤消等情况而保留和释放。虽然系统规定,要求保留的地址空间区域均从分配粒度边界(目前所有平台上均为64KB)开始,但是系统本身并不受这个规定的限制。为你的进程的PEB和TEB保留的地址空间区域很可能不是从64 KB这个边界开始的。不过这些保留区域仍然必须是CPU的页面大小的倍数。 4.6内存保护机制 Windows提供四种基本的方式来提供保护。 1、所有系统范围内核心态组件使用的数据结构和内存缓冲池只能在核心态下访问,用户态线程不能访问这些页面。如果他们试图这样做,硬件会产生一个错误信息,随后内存管理器向线程报告一个访问冲突。 2、每个进程有一个独立、私有的地址空间,禁止其他进程的线程访问。 3、除了提供虚拟地址到物理地址转换的隐含保护外,所有Windows Server 2003支持的处理机还提供了一些硬件内存保护措施,如读/写或只读等。 4、共享内存区域对象具有标准的Windows Server 2003存取控制表(ACL),当进程试图打开这些对象时会检查ACL表,这样对共享内存的访问也限制在具有适当权限的进程当中。 Chapter 4 Memory Management Experiment 4.1内存管理实验概述 函数调用过程 一个系统调用模块图。 4.2内存分配与回收验证实验 NTSTATUS MiFindEmptyAddressRangeDownTree函数检查进程的VAD,从而定位一个特定大小的未使用区域,并返回这个区域的初始地址。函数从高地址到低地址检查确保起始地址大于特定地址。 当函数MiFindEmptyAddressRangeDownTree返回STATUS_SUCCESS时,即成功找到未被占用的地址区域,完成这个区域的虚拟地址描述符的初始化,并将该区域的VAD插入到系统维护的用户地址空间的VAD树中。做到这一步也就是完成了内存的保留。 Vad-StartingVpn = MI_VA_TO_VPN (StartingAddress);Vad-EndingVpn = MI_VA_TO_VPN (EndingAddress);Status = MiInsertVadCharges (Vad, Process); 页面提交需要将物理内存映射到VAD树中。下面的代码完成物理内存到VAD的映射。 PhysicalView-StartingVpn = Vad-StartingVpn; PhysicalView-EndingVpn = Vad-EndingVpn; 内存分配工作完成。 4.2内存分配与回收验证实验 进行VirtualAlloc的验证实验 编写VirtualAllocation.exe(代码略) 在wrk中用windbg调试 1、user mode 4.2内存分配与回收验证实验 2、kernel mode 4.2内存分配与回收验证实验 2、kernel mode 4.2内存分配与回收验证实验 HeapAlloc与HeapFree函数调用分析 用同样的方法对堆分配和堆回收进行验证
您可能关注的文档
- 2014年三季度发生重大生产安全事故责任企业-国家安全生产监督管理.doc
- 2011级PPT作品17班滕翔宇.ppt
- 2011年全国中等职业学校信息化教学大赛获奖-中华人民共和国教育部.doc
- 2014苏州市属医疗卫生事业单位招聘笔试备考指导-浙江中公教育.ppt
- 2016年工业转型升级强基工程重点方向汇总表.doc
- 41.食用菌液体菌种发酵制备技术-河北经合网.doc
- 2016版居民医保协议-鞍山市社会保险局.doc
- 3Agilor企业管理器-安捷(Agilor)实时数据库-中国科学院软件研究所.doc
- ASTREE味觉指纹分析仪操作简明步骤系统启动前请确认windows系统.doc
- 50篇养生集-通知.doc
最近下载
- 初级银行专业人员职业资格《银行业法律法规与综合能力》考试题库-中(多选题汇总).docx
- 关于春天的古诗名句1.docx VIP
- 马原23版 期末章节笔记+练习【86页】 .pdf
- 数字化校园背景下提高课堂教学有效性的实践研究.doc VIP
- 22445_Dreamweaver网页设计04403开放大学考试题库.docx
- 高压隔离开关要点.ppt VIP
- 初级银行专业人员职业资格《银行业法律法规与综合能力》考试题库-上(单选题汇总).docx
- 2024年天津市中考地理试卷试题真题及答案详解(精校打印).docx
- 2023年东莞理工学院网络工程专业《计算机组成原理》科目期末试卷B(有答案).docx VIP
- 2024年安徽省阜阳市中考数学试题卷(含答案及逐题解析).docx
文档评论(0)