没有合适的资源?快使用搜索试试~ 我知道了~
首页操作系统windows虚拟存储器管理报告+代码
资源详情
资源评论
资源推荐

《操作系统》课程设计报告
课题名称: 操作系统
专 业: 计算机科学与技术
班 级: 07 教育
学 号: 071114051
姓 名:
指导教师:
二零零九年 六 月 一 日

Windows 虚拟存储器管理
目 录
一、课程设计目的
课程设计是计算机科学与技术专业的重要实践性教学环节。在专业基础课程和操作
系统原理课程学习的基础上,通过课程设计可以达到以下目的:
1.巩固和加深对操作系统原理的理解,提高综合运用本课程所学知识的能力。
2.培养自身选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,
分析问题、解决问题的能力。
3.通过实际操作系统的分析设计、编程调试,掌握系统软件的分析方法和工程设
计方法。
4.能够按要求编写课程设计报告书,能正确阐述设计和实验结果、正确绘制系统
和程序框图。
5.通过课程设计,培养自身严谨的科学态度,严肃认真的工作作风和团队协作精神
6. 通过课程设计,为毕业设计及以后的工程实践打下良好的基础。
二、课程设计题目描述和要求
2.1题目描述
一个作业装入内存后,运行时可能出现的两种情况:1.有的作业内存很大,所要求的
内存总容量可能超过内存总容量,作业可能无法全部装入,所以无法运行。2.有大量作业
要求运行,但内存容量不足以容纳所有作业,只能将少数作业装入内存运行,其他大量作
业留在外存等待。因此,我们有待从物理上增加内存容量,从逻辑上扩充内存容量。由此
我们引入了虚拟存储器技术,即以cpu时间和外存空间换取宝贵的内存空间,以便作业能
有效的运行。
2.2题目要求
通过本实验,要求学生能够了解在Windows 2000/XP系统中如何控制虚存空间。具体
如下:
①在程序中利用一个线程模拟各种虚存活动,比如虚存的保留、提交等。
②在程序中运行另一个监控线程来实时监视系统当前所进行的虚存操作,并将监测到
第 1 页 共 14 页

Windows 虚拟存储器管理
的这些操作信息从控制台输出;要求本线程和上一个虚存活动模拟线程保持同步,即模拟
线程一旦有某一模拟活动则监控线程就应当随即监控到该活动的信息。
③在利用监控线程监视内存活动的同时汇报整个存储系统的使用情况。
三、课程设计报告内容
3.1设计方案的论证
1968年,Denning.P提出:程序在执行时将呈现出局部性规律,即在一较短的时间内,
程序的执行仅局限于某个部分;相应地,它所访问的存储空间也局限于某个区域。据此,
他也提出了相关的论证。另外,局限性还表现在时间和空间上。基于以上原理,我们知道
所谓虚拟存储器,是指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的
一种存储器系统。
虚拟存储器的实现要求是建立在离散分配的存储管理方式的基础上。它可以采用以下
方法两种方法进行实现:分页请求系统和请求分页系统。它要求一个作业能分成多次调入
内存运行,在作业运行过程中能进行换进、换出,还要求能够从逻辑上扩充内存容量,使
用户所看到的内存容量远大于实际内容容量。
综上所诉,我们就可以采用虚拟存储器技术来模拟内存的活动,具体内容是通过系统
的API函数来实现的。
3.2 设计目标
在深刻理解页式虚拟存储技术和Windows 2000/XP的内存管理机制的基础上,本次课
程设计我们要实现模拟各种虚拟存储活动,掌握创建线程的基本方法以及如何实现线程间
的通信。我们还要能够熟练掌握有关内存操作的api函数。
3.3 设计思想
在os中每个进程都被赋予它自己的虚拟地址空间,由于每个进程可以接收它自己的私
有的地址空间,因此当进程中的一个线程正在运行时,该线程可以访问只属于它的进程的
内存。属于所有其他进程的内存则隐藏着,并且不能被正在运行的线程访问。每个进程的
虚拟地址空间都要划分成各个分区。地址空间的分区是根据操作系统的基本实现方法来进
行的。当进程被创建并被赋予它的地址空间时,操作系统的监控线程即会对内存活动进行
监控,适时调用API函数对相关进程进行处理,实现内存空间的有效利用。
3.4 数据结构和算法描述
第 2 页 共 14 页

Windows 虚拟存储器管理
3.4.1数据结构
以下是程序要用到的一些变量:LPVOID BASE_PTR 用于保存已分配页面区域的的
首地址;int Actnum=0指示器,使用此参数使两个线程间相互通信; unsigned
ThreadID[2] , 定义一个数组用于接收线程的标示符;int randnum;用于接受产生的随机
数以便于线程做相应的动作;int structsize用于保存MEMORY_BASIC_INFORMATION
变量的大小;MEMORYSTATUS Vmeminfo用于获取程序存储空间的使用状况以及系
统的使用情况;
MEMORY_BASIC_INFORMATION inspectorinfo1; inspectorinfo1是指向
INFORMATION结构的指针,用于接收内存信息。
主函数(main)主要调用两个线程分别进行模拟和监控。
3.4.2算法描述
整个过程是通过主函数(main())调用两个线程_beginthreadex来模拟工作,监控
线程通过一个全局变量Actnum来获得上一个虚拟动作的类型,即两者是通过Actnum来通信
的。在模拟的过程中主要使用虚存指针BASE_PTR,它在过程中由虚存分配,函数动态调
整,如果某动作不成功,则将不会被监控线程监控到。主要动作有:虚存的保留与提交 、虚
存的保留、虚存的除配、虚存的除配并释放空间、改变虚拟内存页的保护、锁定虚存页、
解除锁定虚存页。另外在一个死循环中不断通过一个全局变量(监视器),来监控模拟线
程是否有新的动作,如果有,通过的API函数将相应虚存处(通过共用BASE_PTR实现)的信
息进行检查,从而验证该动作对存储使用的影响;
3.5系统模块划分
第 3 页 共 14 页
主函数
剩余15页未读,继续阅读















安全验证
文档复制为VIP权益,开通VIP直接复制

评论3