- 1、本文档共70页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验项目二:存储管理 ? 三、相关知识介绍 3.存储系统的统计指标: MEMORY_BASIC_INFORMATION Structure 该结构体表示进程在某一个具体的虚拟地址空间的页面状态信息。 typedef struct _MEMORY_BASIC_INFORMATION {PVOID BaseAddress;PVOID AllocationBase;DWORD AllocationProtect;SIZE_T RegionSize;DWORD State; //页面状态DWORD Protect;//页面保护属性DWORD Type; } MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION; MSDN在线帮助: /en-us/library/aa366775(VS.85).aspx 通过查MSDN,把这2个参数的取值在实验报告中写出来。 实验项目二:存储管理 ?三、相关知识介绍 4.相关的API函数 (1) _beginthreadex函数:创建新线程(在本实验中,创建了2个线程:simulator模拟线程和inspector监控线程) (2) Sleep函数:使当前线程休眠(3) VirtualAlloc函数:保留或提交某一范围的虚拟地址(4) VirtualFree函数:解除已被提交的虚存,或释放被保留/提交的进程虚拟地址空间(5) VirtualProtect函数:改变虚拟内存页的保护方式(6) VirtualLock和VirtualUnlock函数:锁定或解锁虚拟内存页 (7) VirtualQuery函数:查询进程的虚拟内存 (8) GlobalMemoryStatus函数:获取程序存储空间的使用状况以及系统的使用情况信息 这些函数详细用法可以参考下面MSDN在线帮助: /en-us/library/aa366781.aspx 实验项目二:存储管理 四、实验示例 1.程序结构 (1) main函数 用_beginthreadex函数启动两个线程。 (2) simulator线程(模拟内存分配) 随机地进行各种虚存操作,包括虚存的保留与提交、虚存的注销、虚存的注销并释放虚存空间、改变虚拟内存页的保护、锁定虚拟内存页和虚存的保留。每个活动完成后,程序的全局变量Actnum被设置为一个特定的整数值。线程随即被阻塞直至Actnum被置回零。 实验项目二:存储管理 四、实验示例 1.程序结构 (3) inspector线程(跟踪内存分配活动) 该线程通过Actnum的值获得上一个虚存动作的类型,并通过BASE_PTR的值获得该动作发生的虚存地址,并输出相关信息。最后,设置Actnum为零,通知模拟线程继续下一次动作,实现两线程的同步。 程序的主线程派生上述两个主要线程后,就处于等待状态。用户此时可以观察模拟和监控线程的活动,也可以键入任意键结束程序的运行。 实验项目二:存储管理 四、实验示例 2. 数据结构 指示器Actnum Actnun初值为0。Actnun为0时,模拟线程处于活动状态,在一 个随机数的控制下,模拟线程进行各种虚存活动。当一个模拟 活动成功完成,模拟线程会设置指示器Actnum为一个非0的值并 自动阻塞直到Actnun被置回为0。 Actnun为非0时,监控线程处于活动状态,并通过Actnum的值确 定动作的类型,并通过全局变量BASE_PTR获得该动作发生的虚 存地址。监控线程完成对该动作的监控后,再设置Actnun为0, 然后模拟线程再开始活动。 ? 实验项目二:存储管理 四、实验示例 2. 数据结构 ? (2) 地址指针BASE_PTR 这个指针在进行虚存分配时用于记录返回的虚存的起始地址。它是由虚存分配函数VirtualAlloc来赋予虚存的起始地址的。 要求:查阅MSDN,找到每个函数及其参数的含义。 正确理解相关API函数的不同参数设置对结果的影响,例如:VirtualAlloc函数中的参数flAllocationType取值为MEM_COMMIT和MEM_RESERVE的含义。(在实验报告中写出来)。 思考题(在实验报告中写出来) : 分析各种虚存活动(提交、保留、回收、加锁、解锁等)对存储系统的影响? 虚拟存储有什么优越性? 每个同学交一份实验报告。(11.18号之前交) * 四、程序的实现 实验所用的测试用例文件 创建一个控制台进程,在此进程中创建n个线程来模拟生产者或者消费者。这些线程的信息在“测试用例文件”中予以指定。该文件的格式和含义如下: 3 1 P 3 2 P 4 3 C 4 1 4 P 2 5 C 3 1 2 4 说明: 第一行:给
您可能关注的文档
- 上海中考数学新定义类型题专项训练教程范本.docx
- 上海中考总复习第九单元磁教程范本.docx
- 上杭一中高三一轮复习选修3原子结构教程范本.ppt
- 上杭一中高三一轮复习原子结构(修改版)教程范本.ppt
- 上交科学基础-第四章固体中原子及分子的运动教程范本.ppt
- 上节课的回顾第3章砌体结构的设计原则教程范本.ppt
- 上课:法律逻辑学讲稿3:命题的一般特征、性质命题教程范本.ppt
- 上课3.2电阻教程范本.ppt
- 上课第二十四课教程范本.ppt
- 新高考生物二轮复习讲练测第10讲 人体的稳态与免疫调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)