5实验五存储管理参考代码(实际物理内存、虚拟内存操作)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五存储管理

一、实验目的

1.理解内存分配原理,特别是页式虚拟内存分配(4.4 请求分页存储管理)方法。

2.了解Windows 2000/XP的内存管理机制,掌握页式虚拟存储技术。

3.掌握Windows 2000/XP中内存管理基本API的使用方法。

二、实验环境

Windows 2000/XP+VC6.0

三、实验内容

1、在程序中,用一个线程模拟各种虚存活动,如虚存的保留、提交等。

2、用一个监控线程实时监控系统当前的虚存操作,并在控制台输出虚存操作信息。要求监控线程与模拟虚存活动的线程保持同步,即模拟线程出现模拟活动,监控线程应立即监控到该活动的信息。

3、在用监控线程监控内存活动的同时,汇报整个存储系统的使用情况。

四、设计思路和流程框图

1.程序结构

(1) main函数

用_beginthreadex函数启动两个线程。

(2) simulator线程(模拟内存分配)

随机地进行各种虚存操作,包括虚存的保留与提交、虚存的注销、虚存的注销并释放虚存空间、改变虚拟内存页的保护、锁定虚拟内存页和虚存的保留。每个活动完成后,程序的全局变量Actnum被设置为一个特定的整数值。线程随即被阻塞直至Actnum被置回零。

(3) inspector线程(跟踪内存分配活动)

该线程通过Actnum的值获得上一个虚存动作的类型,并通过BASE_PTR的值获得该动作发生的虚存地址,并输出相关信息。最后,设置Actnum为零,通知模拟线程继续下一次动作,实现两线程的同步。

程序的主线程派生上述两个主要线程后,就处于等待状态。用户此时可以观察模

拟和监控线程的活动,也可以键入任意键结束程序的运行。

2. 数据结构

(1)指示器Actnum

Actnun初值为0。Actnun为0时,模拟线程处于活动状态,在一个随机数的控制下,模拟线程进行各种虚存活动。当一个模拟活动成功完成,模拟线程会设置指示器Actnum为一个非0的值并自动阻塞直到Actnun被置回为0。

Actnun为非0时,监控线程处于活动状态,并通过Actnum的值确定动作的类型,并通过全局变量BASE_PTR获得该动作发生的虚存地址。监控线程完成对该动作的监控后,再设置Actnun为0,然后模拟线程再开始活动。

(2) 地址指针BASE_PTR

这个指针在进行虚存分配时用于记录返回的虚存的起始地址。它是由虚存分配函数VirtualAlloc来赋予虚存的起始地址的。

相关文档
最新文档