还剩5页未读,继续阅读
文本内容:
一、背景知识在环境下,的虚拟地址空间被划分成两个部分低端提供给进程使用,高windows20004GB2GB端提供给系统使用这意味着用户的应用程序代码,包括以及进程使用的各种数据2GB DLL等,都装在用户进程地址空间内低端用户进程的虚拟地址空间也被分成三部分:2GB虚拟内存的已调配区具有备用的物理内存,根据该区域设定的访问权限,1committed:用户可以进行写、读或在其中执行程序等操作虚拟内存的保留区没有备用的物理内存,但有一定的访问权限2reserved虚拟内存的自由区不限定其用途,有相应的权限3free PAGE_NOACCESS
二、实验目的•通过实验了解内存的使用,学习如何在应用程序中管理内存,体会windows2000windows应用程序内存的简单性和自我防护能力•学习检查虚拟内存空间或对其进行操作了解的内存结构和虚拟内存的管理,为使用内存而提供的一些扩展功能windows2000windows
三、工具与准备工作在开始本实验之前,请回顾教科书的相关内容需要做以下准备一台运行操作系统的计算机1Windows2000Professional计算机中需安装专业版或企业版2Visual C++
6.0
四、实验内容与步骤步骤登录进入I:windows2000Professionalo步骤在“开始”菜单中单击“程序2:Microsoft visualstudio
6.0Microsoft VisualC++
6.0”,进入VisualC++窗口步骤在工具栏单击“打开”按钮,在“打开”对话框中找到并打开实验源程3序4-l.cppo步骤编译完成后,单击可执行文件5:操作能否正常进行?如果不行,原因是什么?答可以运行c r℃:\Documents andSettings\Administrator\^S\Debug\
2.eKeaa002cl000-002d
000060.0KBFi*ee.NOACCESS002d0000-00311000260KBCommitted,READONLY,Mapped00311000-
0032000060.0KBFree-NOACCESS00320000-
0032600024.0KBCounitted,READONLY.Mapped00326000-
0033000040.0KBFree.NOACCESS00330000-00371000260KBConnittedREADONLYMapped00371000-
0038000060.0KBFree,NOACCESSKBConnitted.READWRITE^Private KBResei*ued.READONLY Priuate00380000-
0038800002.0J JKBConnitted.READWRITE,Private KBFree,NOACCESS00388000-
0039000032.0JKB Comm itted^.READURI TE^Private KBFi*ee,NO ACCESS00390000-
003910004.00KBCommitted.READURI TE^.Private00391000-003a
000060.0JKBReserued.READONLY,Priuate KB Conn itted j.READONLY,Mapped003a0000—003al
0004.00JKBFree,NOACCESS003al000-003b
000060.0KBConmitted.READURI TE,Private003b0000-003b
400016.0003Jb4000—003c
000048.0003d6000-003e
000040.0KBReserued,READONLY,Private003c0000-003c
300012.0003e0000-00400000128KBFree.NOACCESS00400000—
004010004.00003c3000-003d
000052.0KBCommitted.READONLV.I mage,Module
2.exe00401000-0046d000432JKBCommitted^EXECUTEJEfiD.Image0046d000-
0047500032.0003d0000-003d
600024.0KBCommitted,READONLY.Image00475000-0047c
00028.0KBConnitted,READWRITE,Inage0047c000-
0048000016.0KBCoemitted,READONLY.1mage00480000-
0048500020.0KBConnitted,EXECUTEJREAD,Mapped00485000-00540000748KBReserved.READONLV.Mapped00540000-
005420008.00KBCommitted,EXECUTEJEAD,Mapped00542000-
0054800024.0KBReserved,READONLY,Mapped00548000-
0055000002.0KBFree.NOACCESS00550000-00653000l.01MBConnitted,READONLY.Mapped00653000-
0066000052.0KBFi*ee NOACCESS00660000-006cc000432KBConnitted.EXECUTE_READ.Mapped「006cc000-
009600002.57MBReserved^READONLY,Mapped00960000-
0096800002.0KBCommitted,READWRITE,Private00968000-00a60000992KBReserued.READONLV,Private00a60000-62c20000l.53GBFree,NOACCESS62c20000-62c
210004.00KBConnitted,READONLV.Image.ModuleLPK.DLL62c21000-62c
2600020.0KBConn±tted.EXECUTE_READ.Inage62c26000-62c
270004.00KBConnitted.READWRITE,Image62c27000-62c
290008.00KBCommitted^READONLY.1mage62c29000-73fa0000275MBFree,NOACCESS73f a0000-73£al
0004.00KB Conm itt e d,REA DONLV.Image ModuleUSP
10.dll73£al000-73fe5000272「KBConnnitted^EHECUTE_READ.Inage“3£eS00073£eF
00040.0KBCommitted,WRITECOPY,Image一步骤6:在工具栏单击Execute Program”按钮,执行4・l.exe程序分析运行结果如果运行不成功,则可能的原因是什么?1按、等三种虚拟地址空间分别记录实验数据,其中“描述”是指committed reservedfree对该组数据的简单描述,例如,对下列一组数据可描述为具有00010000-
000120008.OOKB Committed,READWRITE,Private权限的已调配私有内存区READWRITE将系统当前的自由区虚拟地址空间填入表中free4-3全部内容截图如下00010000-
0002000064.0KBCoinini tted,READWRITE,Mapped00020000-
000210004.00KBCoinini tted,READWRITE,Privat e00021000-
0003000060.0KBFree,NOACCESSKBCoininitted,READWRITE,Private00030000-
000310004.00KBFree,NOACCESS00031000-
0004000060.0KBCoirani tted,READONLY,Mapped00040000-
0004900036.0KBFree,NOACCESS00049000-
0005000028.000050000-00085000212KBReserved,READONLY,Private00085000-
0008800012.0KBC oirani11ed,GUARD,READWRITE,Pr ivat e00088000-
0009000032.0KBCoirani tted^READWRITE,Privat e00090000-0018c
0000.98MBReserved,READONLY,Private0018c000-0018e
0008.00KBCoinini tted,GUARD,READWRITE,Private0018e000-
001900008.00KB^oiranitted,READWRITE,Private00190000-
0019400016.0KBCoiranitted,READONLY,Mapped00194000-001a
000048.0KBFree,NOACCESS001a0000-001a
20008.00KBCoirani tted^READWRITE,Privat eKBFree,001a2000-001b
000056.0NOACCESS001b0000-00225000468KBCoinmitted,READONLY,Mapped00225000-
0023000044.0KBFree,NOACCESS00230000-
002310004.00KB^oiranitted,READWRITE,Private00231000-0024b000104KBReserved READONLY,PrivateJ0024b000-
0025000020.0KBFree,NOACCESS00250000-
0025800032.0KBCoirani11ed,READONLY,Mapped00258000-00350000992KBFre NOACCESSej00350000-
0035300012.0KB^oiranitted,READWRITE,Private00353000-
0036000052.0KBReserved,READONLY,Private00360000-00380000128KBFree,NOACCESS00380000-
0038600024.0KBCoiranitted,READWRITE,Private00386000-00400000488KBReserved,READONLY,Private00350000-
0035300012.0KBXoiranitted,READWRITE,Private00353000-
0036000052.0KBReserved READONLY,PrivateJ00360000-00380000128KBFree,NOACCESS00380000-
0038600024.0KBCoiranitted,READWRITE,Private00386000-00400000488KBReserved READONLY,PrivateJ00400000-
004010004.00KBCoirariitted,READONLY,Image,Module
2.exe00401000-00470000444KBCoiranitted,EXECUTE_READ,Image00470000-
0047800032.0KB^ommittedj READONLY,Image00478000-0047b
00012.0KBCoirariitted,READWRITE,Image0047b000-0047d
0008.00KBCo™itted,WRITECOPY,Image0047d000-
0048100016.0KBCoiranitted,READWRITE,linage00481000-
0048500016.0KBCommitted,READONLY,Image00485000-
0049000044.0KBFree NOACCESS300490000-004al
00068.0KBCoininitted,READONLY,MappedMBReserved,READONLY,Mapped004al000-
006100001.43KBC01nmi tted,READONLY,Mapped00610000-
0061300012.0KBReserved,READONLY,Mapped00613000-
0061800020.000618000-00660000288KBFree,NOACCESS00660000-0066d
00052.0KBXoiranitted,READWRITE,Private0066d000-00760000972KBReserved,READONLY,Private00760000-008el
0001.50MBCoiranitted,READONLY,Mapped008el000-008f
000060.0KBNOACCESS008f0000-009dc000944KB^oiranitted,READONLY,Mapped009dc000-01cf
000019.0MBReserved,READONLY,Mapped MBFreej01cf0000-01e30000l.25NOACCESS01e30000-01e
3500020.0KBCoiranitted,READWRITE,Private01e35000-01e
4000044.0KBReserved,READONLY,Private GBFreej01e40000-72cf
00001.76NOACCESS72cf0000-72cfl
0004.00KBComitted,READONLY,Image,ModulePROPSYS.dll72cfl000-72d7c000556KBCoiranitted,EXECUTE_READ,Image72d7c000-72d7e
0008.00KBXoiranitted,READWRITE,Image72d7e000-72e09000556KBCoiranitted,READONLY,Image72e09000-
7440000021.9MBFree,NOACCESS74400000-
744010004.00KB^oiranitted,READONLY,Image,Moduleshe ore.dll74401000-74466000404KBCoiranitted,EXECUTE_READ,linage74466000-
744670004.00KBCoiranitted,READWRITE,Image74467000-
744690008.00KB^oiranittedj READONLY,Image74469000-7446a
0004.00KBCoiranitted,READWRITE,Image7446a000-
7447300036.0KB^oiranitted,READONLY,Image74473000-
749500004.86MBFre NOACCESSej74950000-
749510004.00KBXoininitted,READONLY,Image,ModulebcryptPrimitives.dlla.txt-记事本文件F编辑E格式查看V帮助H74473000-
749500004.86MBFree,NOACCESS74950000-
749510004.00KBConunitted,READONLY,Image,ModulebcryptPrimitives.dll74951000-7499c000300KBCoiranitted,EXECUTE_READ,Image7499c000-7499d
0004.00KBCoinmitted,READWRITE,Image7499d000-749al
00016.0KBCoininittedj READONLY,Image749al000-749b
000060.0KBFree,NOACCESS749b0000-749bl
0004.00KBCoininitted,READONLY,Image,ModuleCRYPTBASE.dll749bl000-749b
500016.0KBCoinmitted,EXECUTE_READ,Image749b5000-749b
60004.00KBCoiranitted,READWRITE,Image749b6000-749b
900012.0KBCoiranitted,READONLY,Image749b9000-749c
000028.0KBFree,NOACCESS749c0000-749cl
0004.00KBCoiranitted,READONLY,Image,ModuleSspiCli.dll749cl000-749d
700088.0KBCoiranitted,EXECUTE_READ,Image749d7000-749d
80004.00KBCoirani tted,READWRITE,I mage749d8000-749dd
00020.0KBXoirariitted,READONLY,Image749dd000-75bd
000017.9MBFree,NOACCESS75bdl000-75bfc000172KBCoiranitted,EXECUTE.READ,Image75bd0000-75bdl
0004.00KBCoiranitted,READONLY,Image,Modulesechost.dll75bfc000-75bfd
0004.00KBCoiranitted,READWRITE,linage75bfd000-75bff
0008.00KBCoininitted,WRITECOPY,Image75bff000-75c
0400020.0KBCoiranitted,READONLY,Image75c04000-75dd0000l.79MBFree,NOACCESS75dd0000-75ddl
0004.00KBCoirani tted,READONLY,I mage,Modul eKERNEL
32.DLL75ddl000-75de
000060.0KBReserved,READONLY,Image75de0000-75e4a000424KBCoiranitted,EXECUTE_READ,Image75e4a000-75e
5000024.0KBReserved,READONLY,Image75e50000-75ebf000444KBCoininitted,READONLY,Image75ebf000-75ec
00004.00KBReserved,READONLY,Image75ec0000-75ec
20008.00KBCommitted READWRITE,Image375ec2000-75ed
000056.0KBReserved,READONLY,Image75ed0000-75edl
0004.00KBCoinmitted,READONLY,Image75edl000-75ee
000060.0KBReserved,READONLY,Image75ee0000-75ef
200072.0KBCoiranitted,READONLY,Image75ef2000-75f
0000056.0KBReserved,READONLY,Image75f00000-75f
010004.00KBCoiranitted,READONLY,Image,ModuleIMM
32.DLL75f01000-75fl
700088.0KBCoiranitted,EXECUTE_READ,Image75fl7000-75fl
90008.00KBCoiranitted,READWRITE,linage75fl9000-75fla
0004.00KBCoiranitted,WRITECOPY,Image75fla000-75f
2000024.0KBCoiranitted,READONLY,Image75f20000-
763000003.87MBFree,NOACCESS76300000-
763010004.00KBCoinini11ed,READONLY,Image,ModuleUSER
32.dll部分截图省略!对照分析清单的程序,请简单描述程序运行的流程4-1答获得系统的详细信息1分配要存放的信息的缓冲区2循环整个应用程序地址空间3获得下一个虚拟内存块的信息4计算块的结尾及大小5显示块地址和大小6显示块的状态7显示保护8显示类型9检查可执行的影像10除去路径并显示11移动块指针一获得下一个块12遍历当前进程的虚拟内存13・对照运行结果,分桥清单4-2的程序为了给数据库保留1GB的段地址空间,清单4-2给出了内存分配的四种方法・第一种技术即程序中说明为使用内存分配来获得的程序段,该段程序试图利用标准中的函1GB Cmalloc数,从已经调配的小内存区获得内存从运行结果看,这种技术成功了吗?没有・第二种技术即程序中说明为使用虚拟分配以获得物理的程序段,该段程序试图通过1GB VirtualAllocO,然后利用物理备用内存将整个块分配到虚拟内存空间的任何位置这种技术只对拥有以上1GB的且都有换页文件的计算机可行从运行结果看,这种技术成功了吗?RAM没有・第三种技术即程序中说明为使用虚拟分配来获得虚拟的程序段,该段程序利用如1GB VirtualAlloc,果函数成功,则获得大块内存,但不将任何物理内存调配到此块中从运行结果看,这种技术成功了吗?成功・第四种技术即程序中说明为使用虚拟非配以获得虚拟块,再为其调配的五路存储1GB1MB的程序段,该段程序保留的内存区,然后将物理内存调配给其中的很小一部分1GB IMBo这就是清单介绍的处理一个假想的数据库应用程序的方法;保留整个块,然后按要求在其4-2一小部分内进行读操作,让系统将用过的区域换页到磁盘中利用可用来在自己的进程空间中控制虚拟内存的行为这个函VirtualLock API,windows数与其成对的阻止或允许一块内存从物理中换页和换页到页面文件中VirtualUnlockRAM这样就会通知系统有一段特定的内存区要求对用户做出强烈的响应,所以系统不应将其移出当然,如果要将整个虚拟内存空间锁定,系统就会停留于试图将系统中工作内存的每一RAM小块换页到磁盘
五、试验总结1通过本次试验,对虚拟内存有了进一步的了解,虚拟内存是计算机系统内存管理的一种技术它使得应用程序认为它拥有连续的可用的内存,而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换;2对于虚拟存储来说,虽然每一个32位进程可使用4GB的地址空间,但并不意味着每一个进程实际拥有4GB的物理地址空间,该地址空间仅仅是一个虚拟地址空间,此虚拟地址空间只是内存地址的一个范围进程的虚拟地址空间是为每个进程所私有的,在进程内运行的线程对内存空间的访问都被限制在调用进程之内,而不能访问属于其他进程的内存空间;与没有使用虚拟内存技术的系统相比,使用这种技术的系统使得大型程序的编写变得更容易,对真正的物理内存的使用也更有效率;本次的试验中,详细的了解了虚拟内存的工作方式,以及分配内存的几种不同方法,已获得最佳的虚拟效果,通过实验验证,对虚拟技术更加了解。
个人认证
优秀文档
获得点赞 0