实习4 内存相关管理 操作系统高级 .pptVIP

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实习4 内存相关管理 操作系统高级 .ppt

实习四:内存管理 题目说明(1) 实习要求 在Windows 环境下,编写一个程序,包括两个线程,线程作用如教材中内存管理示例。将VirtualAlloc函数的参数flAllocationType分别改为MEM_RESET,MEM_TOP_DOWN,将flProtect参数分别改为PAGE_GUARD,PAGE_NOACCESS,PAGE_NOCACHE,再执行,查看内存分配的结果 查阅MSDN,找到MEM_RESET,MEM_TOP_DOWN,PAGE_GUARD,PAGE_NOACCESS,PAGE_NOCACHE的属性含义 题目说明(2) 实现提示 参考《Windows内核实验教程》中内存管理实习(P91) 相应的API函数参考《Windows内核实验》中的内存管理实习和MSDN 题目说明(3) 回答问题 1.分析不同参数的设置对内存分配的结果影响 2.如果调换分配、回收、内存复位、加锁、解锁、提交、回收的次序,会有什么变化,并分析原因 题目说明(4) 思考题 若要实现一个支持200行乘256列的电子表格应用程序,可以采用二维矩阵或者链表来控制这些表元。前者访问快速,但存储开销很大;后者存储节约,但是查找速度很慢 请给出一种方法,使得它可以得到定义矩阵技术提供的快速简便访问和链表技术提供的优良存储节约 不需要写出具体程序,但要明确程序要做哪些工作,在分析报告中详细写出。 查找有关资料,总结物理存储提交的不同方法,并比较各自的优缺点 背景知识 Windows 的用户进程的虚拟内存空间管理和分配方法 作为32位操作系统,提供32位虚地址,每个进程虚地址空间最多4GB,其中2GB为进程的私有空间,操作系统占用剩下的2GB Windows以页为单位进行虚拟内存分配,利用二级页表结构来实现虚拟地址向物理地址的变换 虚拟地址页目录索引,页表索引和字节索引 页面状态空闲页面,保留页面,提交页面 API GetSystemInfo 说明:在一个SYSTEM_INFO结构中载入与底层硬件平台有关的信息 参数 lpSystemInfo :指向一个SYSTEM_INFO结构,用于装载适当的系统信息 API(续) GlobalMemoryStatus 说明:获得计算机系统中当前使用的物理内存和虚拟内存的信息 参数 lpBuffer:指向MEMORYSTATUS数据结构,将当前内存可用性的信息存储在该结构中 API(续) VirtualAlloc 说明:该函数可以在调用进程的虚拟地址中保留或提交页面。除非设置了MEM_RESET标志,否则被这个函数分配的内存单元自动初始化为0 返回值:若成功,则返回所分配页面的基址;否则,返回NULL 参数 lpAddress:待分配空间的起始地址 dwSize:定义分配空间的大小。若lpAddress为NULL,该参数值将四舍五入到下一个页面边界 ftAllocationType:定义分配类型,可以为MEM_COMMIT(分配物理内存)或者MEM_RESERVED(保留进程虚拟地址空间) flProtect:访问保护的类型 API(续) VirtualFree 说明:该函数用于释放,回收或者释放并回收进程虚拟地址空间中的页面 返回值:若成功,则返回一个非零值;否则返回0 参数 lpAddress:释放页面的基址 dwsize:定义释放区域的大小 dwFreeType:定义释放操作的类型,可以是MEM_DECOMMIT(回收指定的提交页面)和MEM_RELEASE(释放指定的保留页面)中的一个或者两个 API(续) VirtualLock 说明:该函数用于将进程虚拟地址空间中的指定区域锁近内存 返回值:若成功,返回非零值;否则,返回零 参数 lpAddress:指向加锁页面区域基址的指针 dwSize:定义加锁区域的大小(以字节为单位) API(续) VirtualUnlock 说明:该函数用于将进程虚拟地址空间指定范围内的页面解锁 返回值:若成功,返回一个非零值;否则,返回零 参数 lpAddress:指向解锁页面区域基址的指针 dwSize:定义解锁区域的大小(以字节为单位) API(续) CreateSemaphore 说明:创建一个信号量对象 返回值:若执行成功,则返回信号量对象的句柄;零则表示出错参数 lpSemaphoreAttributes :定义了信号机的安全特性,指向SECURITY_ATTRIBUTES结构,若为NULL则表示使用默认属性 lInitialCount :设置信号量的初始计数 lMaximumCoun

文档评论(0)

youngyu0329 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档