四川大学 操作系统上机实验 实验五 Windows虚拟存储器管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
实验名称:Windows虚拟存储器管理
实验时间:2013年5月27日
实验人员:____郑笑凡___(姓名)__1143041243__(学号)____2011____(年级)
实验目的:1、了解Windows 2000/XP的内存管理机制,掌握页式虚拟存储技术。
2、理解内存分配原理,特别是以页面为单位的虚拟内存分配方法。
3、学会使用Windows 2000/XP下内存管理的基本API函数
实验环境:windows xp
实验步骤:
1、下载virtumem.cpp;
2、建立工程,将virtumen.cpp加入;
3、编译工程,观察结果,确信六种状态都出现至少一次,必要时可改程
序,方便观察结果;
4、看懂程序,按要求另写一段小程序;
5、编译,执行,观察结果。
6,总结。
实验陈述:
1、基础知识:
pagefile.sys文件的位置在:__安装的系统盘根目录下____________________________________此文件的作用:____实现物理内存的扩展__________________________________________________ 改变此文件大小的方法:右击”我的电脑”,依次选择”属性”—“高级”—“性能选项”—
“更改”_______________________________________
虚拟地址空间中的页面分为:提交页面,保留页面,空闲页面
页面的操作可以分为:保留、提交、回收、释放、加锁
2、编程准备.
页面属性是在结构体MEMORY_BASIC_INFORMATION_的字段AllocationProtect 和字段中Protect体现出来的。
简述VirtualFree,VirtualPtotect,VirtualLock,VirtualUnlock,VirtualQuery的作用:_
VirtualFree:__释放虚存___________________________________________________
VirtualPtotect:_保留虚存_________________________________________________
VirtualLock:___加锁虚存_________________________________________________
VirtualUnlock:_解锁虚存________________________________________________
VirtualQuery:____查询虚存_______________________________________________
3、编程
1)将virtumem.cpp加入工程,编译,执行。
是否能编译成功?是
请描述运行结果:
请通过运行结果描述六种虚拟操作后虚拟存储空间和系统存储资源的变化:
__根据监控线程给出的虚拟活动和变化的信息,可知随机的不同的虚拟活动导致了程序虚拟空间和系统
包括物理内存使用量和页面文件使用情况等。在此拿虚存的保留与提交的虚拟活动来说明一下,虚拟内存的工作情况。先看两个图:
__由上可以明显看出两个相同的模拟活动中的变化,在物理内存、页面文件总数、虚拟空间总数不变的
可用虚拟空间数都多于图2中的虚拟提交后的统计数。这是因为在图1 的活动中的进程数少或者进程占用空间少,在物理内存中占用少,在虚拟内存上也如此。而图2的活动中在各个存储空间上进程都占用了较大的空间,或者进程数大,从而导致了各个可用存储空间变小。还有假如程序在进行一次虚存提交过后,显示的可用物理存储反而变多了,这是因为Windows的内存管理发现某个进程在一段时间没有运行后,会将它的部分页面转移到页面文件中,此时可用页面文件总数会减少。
______________________________________________________________________________
2)编写小程序得到当前系统的
附源程序:
#include
#include
int main(int argc, char* argv[])
{
MEMORYSTATUS Vmeminfo;
GlobalMemoryStatus(&Vmeminfo);
printf("当前整体存储统计如下\n");
printf("物理内存总数:%d(BYTES)\n", Vmeminfo.dwTotalPhys);
printf("可用物理内存:%d(BYTES)\n", Vmeminfo.dwAvailPhys);
printf("页面文件总数:%d(BYTES)\n", Vmeminfo.dwTotalPageFile);
printf("可用页面文件数:%d(BYTES)\n", Vmeminfo.dwAvailPageFile);
printf("虚存空间总数:%d(BYTES)\n", Vmeminfo.dwTotalVirtual);
printf("可用虚存空间数:%d(BYTES)\n", Vmeminfo.dwAvailVirtual);
getchar();
return 0;
}
实验总结:
经过这次实验我大概了解了Windows 2000/XP的内存管理机制和内存分配原理以及内存分配的内容。但是实验过程中还有很多不明白的地方,需要进一步的了解和学习。