- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows内存原理与内存管理
(2013-04-06 00:09:50)
WIndows为每个进程分配了4GB的虚拟地址空间,让每个进程都认为自己拥有4GB的内存空间,4GB怎么来的? 32位 CPU可以取地址的空间为2的32次方,就是4GB(正如16位CPU有20根寻址线所有拥有2的20次方的寻址空间一样)
当我们在Windows中双击一个应用程序图标后,系统为该应用程序创建一个进程,Windows使得每个进程都拥有2GB的地址空间,这2GB地址空间用于程序存放代码,数据,堆栈,自由存储区(堆),另外2GB用于共享系统使用
前面的这些地址并不是物理内存中的地址,而是该进程空间中的虚拟地址虚拟空间只是Windows为该进程分配的一个虚拟的地址空间,只有当其和物理内存相关联后才有意义内存的分页每个物理地址对应一个虚拟地址?1GB那页表该有多长,所以将内存分页管理,4K为一页,即4K就是一个最小单位。虚拟地址到物理地址的??射见图,中间的那个就是页表了。
如何映射?进程被创建时会建立一个 虚拟内从到物理内存的映射表--------页表,根据页表可以将虚拟内存和物理内存关联起来
?
-----------------------------------------页表如何工作,怎么将虚拟地址关联物理地址----------------------------------
虚拟内存是什么?就是把磁盘拿来当内存用,这是以前买电脑时的想法。所以就一直都想不明白一个问题:要真是这样,那内存分个什么1GB,2GB,4GB,大家都买个1M的内存条,然后把自己磁盘拿来当内存用多好,比2GB,4GB不知道要大多少。其实这个说法有一点擦边球的味道,虚拟内存是一些系统页文件,存放在磁盘上,每个系统页文件大小也为4K,物理内存也被分页,每个页大小也为4K,这样虚拟页文件和物理内存页就可以对应,实际上虚拟内存就是用于物理内存的临时存放的磁盘空间。页文件就是内存页,物理内存中每页叫物理页,磁盘上的页文件叫虚拟页,物理页+虚拟页就是系统所以使用的页文件的总和。还有映像页文件和映射页文件,映像页文件就是拿程序本身当页文件使用(而不是用系统的页文件),映射页文件就是使用磁盘上的文件(非系统页文件)来当页文件使用(这主要用于读取文件)。
虚拟地址页的状态:空闲:该区域没有被所使用,也没有被预定,没有和物理内存管理私有:该区域虽然没有被使用,但是已经被申请(预定了),别人无法使用它。同样也没和物理内存关联提交:该区域已经和物理内存管理,可以使用了
虚拟内存和物理内存的管理(Windows内存管理的核心)Windows是多任务的系统,在每个进程创建时,系统为每个进程也创建了一个页表,用于虚拟地址到物理地址的转换。比如现在程序在执行进程A,用户切换到了另外一个进程B,则系统会将进程A在内存中的数据存放到页文件中,并更新进程A的页表(使虚拟地址和页文件形成映射)。然后读取进程B的页表,根据页表判断进程B的数据是在内存中还是在页文件中(通过页文件的类型来判断),如果在内存中就直接读取,如果在页面文件中,就将页面文件内容读入物理内存,然后更新页表(使虚拟地址和物理内存形成映射)。这样一看,虚拟内存实际上就是冒牌的物理内存了吧。程序的执行一个PE文件有数据区,代码区,堆栈区(由系统分配,用于管理局部变量),使用OD载入一个程序就可以知道这些都是以二进制的形式保存在文件中。程序刚运行的时候,系统不直接将整个程序载入到物理内存中,也不将其载入到页文件中,而是以程序文件本身作为页文件形成映射(虚拟地址到页文件的映射),建立页表,然后随着程序的执行通过页表来将其虚拟地址转换成物理地址(将页文件读入内存),然后在读取内存中的指令或数据。当进程被切换时,将内存内容保存到页文件,更新页表,如此往复,实现多任务操作。
可以知道,程序的代码段,数据段,堆栈区(系统分配)这些虚拟地址区域已经是映射状态,即有相应的物理内存与之对应。系统为每个进程提供了2G的自己的虚拟地址空间,剩下的虚拟地址空间干什么用?剩下的虚拟地址空间就是给程序运行时动态分配内存使用。C++中 new的功能就是动态分配地址空间:申请内存的最小单位是区域,每个区域为CPU粒度大小,即64K,每次申请的内存都必须是64K的整数倍,C++ new功能申请一个区域,保留该区域,然后提交需要的页,其他的保留。
char *address=new char[1024]; //分配1K的内存这条语句首先申请一个区域的地址空间,表示这个区域已经被预定了,这就是上述区域状态中的私有状态,虽然预定了,但是还没有和物理内存关联起来,所以程序也无法使用该内存,然后程序将这1K的内存提交,就是映射
您可能关注的文档
- 第2课时物质的性质探究.ppt
- 第三章中国的传播思想(下探究.ppt
- 第2课时做友好往来的使者探究.ppt
- 吊篮施工安全交底探究.doc
- 高校计费系统的思考探究.pptx
- 第2章(阅读)探究.ppt
- 第十二章表面微细加工技术探究.ppt
- 第2章_Intel_8086-8088CPU语言编程结构探究.ppt
- 第十二章复习探究.ppt
- 定向凝固读书探究.doc
- 金融与投资行业2025研究报告:金融科技在智慧城市建设中的核心地位与挑战.docx
- 饮料行业2025年新型甜味剂法规监管下的市场趋势与法规政策调整前瞻报告.docx
- 2025年教育直播平台在线教育平台政策法规与行业规范研究报告.docx
- 艺术市场数字化交易市场政策法规与行业自律研究报告.docx
- 2025年环境保护公众参与机制优化与生态环境保护政策实施报告.docx
- 2025年高速公路智能交通系统与智能交通监控与检测技术研究报告.docx
- 2025年消费与零售行业儿童教育用品市场消费趋势及消费者行为分析报告.docx
- 2025年农业新型经营主体农村电商发展路径研究报告.docx
- 疫情后线下演出市场恢复力评估与发展趋势预测报告.docx
- 教育信息化0下教学工具与翻转课堂模式的结合与应用报告.docx
最近下载
- 桥台计算书.doc VIP
- 2025年甘肃亚盛实业股份有限公司校园招聘模拟试题附带答案详解完整版.docx VIP
- 我国商业银行开展绿色信贷业务存在的问题和对策.docx VIP
- 甘肃亚盛实业股份有限公司校园招聘模拟试题附带答案详解附答案.docx VIP
- 2023年西安文理学院计算机应用技术专业《计算机组成原理》科目期末试卷A(有答案).docx VIP
- 2024年中国工会审计条例知识竞赛试题及答案.docx VIP
- VDA6.3过程审核检查表(中英文版)6.xls VIP
- 2024年山东水发集团高校毕业招聘笔试真题.docx VIP
- 甘肃亚盛实业股份有限公司校园招聘模拟试题附带答案详解完美版.docx VIP
- 双减背景下小学语文作业的优化设计.pptx VIP
文档评论(0)