版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第12章相关说明章相关说明说明:(1)实验相关ppt内容选自操作系统课程设计的核心实验,本实验为内存管理实验,加强学生对内存分配的理解。(2)该实验中学生对windows操作系统api函数很陌生,缺乏对它们实践,以及对内存分配的原理认识不够,讲解时原理部分要重复讲解,督促学生多利用网络资源进一步加深对操作系统函数的理解,有遗力的同学可以学习Linux内核内存分配代码。(3)该课程上课时间为2015年春季,全班人数共54人。第第12章章:内存管理实验:内存管理实验提纲提纲提纲提纲实验目的实验目的n了解了解Windows XP/7及及Linux内存管理机制。内存管理机制。n掌握页面虚拟存储技术。
2、掌握页面虚拟存储技术。n了解内存分配原理,特别是以页面为单位的虚拟了解内存分配原理,特别是以页面为单位的虚拟内存分配方法。内存分配方法。n学会使用学会使用Windows XP/7下内存管理的基本下内存管理的基本API函函数。数。n了解进程中内存分配与虚内存的区别;了解进程中内存分配与虚内存的区别;提纲提纲实验内容实验内容n运行运行vs,创建工程,并导入,创建工程,并导入virtumem.cpp文件。文件。n再次编译,通过后直接在再次编译,通过后直接在vs下运行,观察输出结下运行,观察输出结果,确信六种虚存操作都出现过。果,确信六种虚存操作都出现过。n看懂程序,要求另写一段小程序,获得当前系统看
3、懂程序,要求另写一段小程序,获得当前系统的存储空间使用概况。的存储空间使用概况。n编译、运行小程序,观察结果。编译、运行小程序,观察结果。n打开打开memoryAlloc.cppn运行运行vs,直接编译,直接编译memoryAlloc.cpp,创建了一,创建了一个工程。个工程。n编译、运行小程序,观察结果。编译、运行小程序,观察结果。 实验内容实验内容n小组任务小组任务 根据实验课提供的根据实验课提供的Windows虚拟内存管理代码虚拟内存管理代码以及相关以及相关Linux内存管理知识在内存管理知识在Linux系统下完成同系统下完成同样功能的程序。样功能的程序。 提纲提纲实验算法实验算法n堆和
4、栈的区别?堆和栈的区别? 栈(stack) 堆(heap) 区别申请方式系统自动分配需要程序员向操作系统申请,并指明大小,在C语言中使用malloc函数来分配分配条件操作若栈的剩余空间大于申请空间,则系统为程序分配内存;否则提示栈溢出遍历链表(操作系统中用于记录空闲内存地址的链表),找到第一个空间大于申请空间的堆结点,将该结点从链表中删除,并将该节点对应的存储空间分配给程序。申请大小限制在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存区域,即栈顶的地址和栈的最大容量是系统预先规定好的;在Windows下,栈的大小是由编译器决定,通常为1M,如果申请的空间超过栈的剩余空间时,将提
5、示overflow。因此,能从栈获得的空间较小。堆是向高地址扩展的数据结构,系统通过链表结构来组织,因此是不连续的内存区域。遍历方向是由低地址向高地址。堆的大小受限于计算机系统中有效的虚拟内存。由此可见,堆获得的空间比较灵活,容量也比较大。 申请效率系统自动分配,速度较快,程序员无法控制。 由new分配内存,使用方便,但是速度较慢,且容易产生内存碎片实验算法实验算法nWindows系统存储器管理相关知识系统存储器管理相关知识n页面文件页面文件 以磁盘文件的形式来存储没有装入内存的程序和数以磁盘文件的形式来存储没有装入内存的程序和数据文件部分,文件名为据文件部分,文件名为pagefile.sys
6、,默认安装在系统,默认安装在系统盘的根目录下,属性为系统隐藏文件。通过系统设置盘的根目录下,属性为系统隐藏文件。通过系统设置可以使页面文件位于非系统盘的根目录下。可以使页面文件位于非系统盘的根目录下。n虚拟内存虚拟内存 页面文件和物理内存共同构成页面文件和物理内存共同构成“虚拟内存虚拟内存”,必,必要情况下,要情况下,Windows操作系统可将数据从页面文件操作系统可将数据从页面文件移至内存,或将数据从内存移至页面文件,以便为移至内存,或将数据从内存移至页面文件,以便为新数据释放内存空间。新数据释放内存空间。实验算法实验算法nWindows系统存储器管理相关知识系统存储器管理相关知识nWind
7、ows的虚拟存储技术的虚拟存储技术 Windows采用分页存储方式,实现虚拟内存技术,利用采用分页存储方式,实现虚拟内存技术,利用页面文件在内存中的调入调出实现物理内存的扩展。页面文件在内存中的调入调出实现物理内存的扩展。n虚拟内存的页面状态虚拟内存的页面状态 A提交页面:已经分得物理存储的虚拟地址页面,通过提交页面:已经分得物理存储的虚拟地址页面,通过设定该区域的属性可对它加以保护。设定该区域的属性可对它加以保护。 B保留页面:逻辑页面已分配,但尚未分配物理存储页保留页面:逻辑页面已分配,但尚未分配物理存储页面,即为某些进程保留的一部分虚拟地址。面,即为某些进程保留的一部分虚拟地址。 C空闲
8、页面:可以保留或提交的可用页面,对当前的进空闲页面:可以保留或提交的可用页面,对当前的进程是不可存取的。程是不可存取的。实验算法实验算法nWindows系统存储器管理相关知识系统存储器管理相关知识n页面操作页面操作A保留:保留进程的虚拟地址空间,而不分配物理存储空间。保留:保留进程的虚拟地址空间,而不分配物理存储空间。B释放:全部释放物理存储和虚拟地址空间。释放:全部释放物理存储和虚拟地址空间。C提交:为进程的虚拟地址分配物理存储空间,可以对处于空闲、提交:为进程的虚拟地址分配物理存储空间,可以对处于空闲、保留、提交状态的页面进行提交操作。保留、提交状态的页面进行提交操作。D回收:释放物理内存
9、空间,保留虚拟地址空间。回收:释放物理内存空间,保留虚拟地址空间。E加锁:对已提交的页面进行加锁,使得页面常驻内存而不会产生加锁:对已提交的页面进行加锁,使得页面常驻内存而不会产生缺页现象。缺页现象。F解锁:对已加锁的页面进行解锁操作。解锁:对已加锁的页面进行解锁操作。实验算法实验算法nWindows内存管理内存管理nWindows内存管理程序采用内存管理程序采用VS编译器编译。程编译器编译。程序最初执行时交没有给地址指针序最初执行时交没有给地址指针BASE_PTR赋初赋初值,所以在前几次随机的虚存模拟活动中可能导值,所以在前几次随机的虚存模拟活动中可能导致动作失败,但这不影响程序功能的实现。
10、致动作失败,但这不影响程序功能的实现。实验算法实验算法nWindows系统系统API函数(函数(1)nGlobalMemoryStatus:获取存储系统的概况及程序存储空间:获取存储系统的概况及程序存储空间的使用状况。的使用状况。 void GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer ) GlobalMemoryStatus是本实验重要的是本实验重要的API函数,该函数无返函数,该函数无返回值,参数是一个指向名为回值,参数是一个指向名为MEMORYSTATUS的结构的指针。的结构的指针。函数的返回信息会被存储在函数的返回信息会被存储在MEMORYSTA
11、TUS结构中。结构中。实验算法实验算法nWindows系统系统API函数(函数(2)nVirtualQuery:查询一个进程的虚拟内存。:查询一个进程的虚拟内存。DWORD VirtualQuery( LPCVOID lpAddress, / 指向查询页区域基地址的指针指向查询页区域基地址的指针PMEMORY_BASIC_INFORMATION lpBuffer, / 查询信息返查询信息返回到该缓冲区中回到该缓冲区中SIZE_T dwLength / lpBuffer指向缓冲区的大小指向缓冲区的大小);实验算法实验算法nWindows系统系统API函数(函数(3)n_beginthreadex
12、:创建新线程执行指定的可执行模块。:创建新线程执行指定的可执行模块。实验算法实验算法nWindows系统系统API函数(函数(4)VirtualAlloc:保留或提交某一范围的虚拟地址:保留或提交某一范围的虚拟地址LPVOID VirtualAlloc(LPVOID lpAddress, /分配内存区域的地址分配内存区域的地址 SIZE_T dwSize, /要分配或者保留的区域的大小要分配或者保留的区域的大小DWORD flAllocationType,/分配类型,页面状态分配类型,页面状态(类型类型):MEM_COMMIT或或MEM_RESERVE DWORD flProtect /页面属
13、性,指定了被分配区域的访问保护页面属性,指定了被分配区域的访问保护方式方式); 返回值:如果调用成功,返回分配的首地址;否则,返回返回值:如果调用成功,返回分配的首地址;否则,返回NULL。可通过可通过GetLastError函数来获取错误消息函数来获取错误消息实验算法实验算法nWindows系统系统API函数(函数(5)nVirtualFree:解除已被提交的或者释放被保留(或提交)的进程虚拟地址:解除已被提交的或者释放被保留(或提交)的进程虚拟地址空间。空间。 BOOL VirtualFree ( LPVOID lpAddress, /要释放的页面区域的地址要释放的页面区域的地址 SIZE
14、_T dwSize, /区域大小区域大小 DWORD dwFreeType /类型类型 ); 其中其中dwFreeTye参数的内容如下:参数的内容如下:MEM_DECOMMIT:取消:取消VirtualAlloc提交的页;提交的页;MEM_RELEASE:释放指:释放指定页,如果制定了这个类型而定页,如果制定了这个类型而dwSize设置为设置为0,否则函数会调用失败。,否则函数会调用失败。返回值:如果调用成功,返回一个非返回值:如果调用成功,返回一个非0值;否则,返回值;否则,返回0实验算法实验算法nWindows系统系统API函数(函数(6)nVirtualProtect:改变虚拟内存页的保
15、护方式(所操作的区块必须是由同一:改变虚拟内存页的保护方式(所操作的区块必须是由同一次分配动作保留或提交的区块)次分配动作保留或提交的区块) BOOL VirtualProtect( LPVOID lpAddress, /目标地址起始位置目标地址起始位置 SIZE_T dwSize, /要变更的记忆体分页区域的大小要变更的记忆体分页区域的大小 DWORD flNewProtect, /请求的保护方式请求的保护方式 PDWORD lpflOldProtect / 输出参数,指向保护原保护属性值的输出参数,指向保护原保护属性值的DWORD变量,可以为变量,可以为NULL);返回值:返回返回值:返回
16、BOOL值,表示是否成功,可以使用值,表示是否成功,可以使用GetLastError函数获取错函数获取错误代码。误代码。实验算法实验算法nWindows系统系统API函数(函数(7)nVirtualLock:对虚拟内存页加锁以保证对它们的使用不会出现缺页现象。:对虚拟内存页加锁以保证对它们的使用不会出现缺页现象。 VirtualLock( LPVOID lpAddress, SIZE_T dwSize ); VirtualUnlock:对加锁的虚拟内存页解锁。:对加锁的虚拟内存页解锁。 VirtualUnlock( LPVOID lpAddress, SIZE_T dwSize );实验算法实
17、验算法n相关数据结构相关数据结构n1)相关数据结构:)相关数据结构: Actnum:指示器,通过它实现两个线程的同步和信息传递。:指示器,通过它实现两个线程的同步和信息传递。初始化为初始化为0,模拟线程将,模拟线程将0值改变为一个值改变为一个16的随机数,监视线程的随机数,监视线程恢复它的初值恢复它的初值0. BASE_PTR:地址指针,记录虚存分配操作时返回的虚存起:地址指针,记录虚存分配操作时返回的虚存起始地址,程序初始执行时并没有赋初值,所以在开始几次随机的始地址,程序初始执行时并没有赋初值,所以在开始几次随机的虚存模拟活动中可能导致动作失败。虚存模拟活动中可能导致动作失败。n2)存储系
18、统的统计指标:)存储系统的统计指标:A 系统虚拟和物理内存的指标系统虚拟和物理内存的指标实验算法实验算法n相关数据结构相关数据结构n3)内存状态:)内存状态:typedef struct _MEMORYSTATUS / mst DWORD dwLength; / sizeof(MEMORYSTATUS) DWORD dwMemoryLoad; / percent of memory in use DWORD dwTotalPhys; / bytes of physical memory DWORD dwAvailPhys; / free physical memory bytes DWORD
19、dwTotalPageFile; / bytes of paging file DWORD dwAvailPageFile; / free bytes of paging file DWORD dwTotalVirtual; / user bytes of address space DWORD dwAvailVirtual; / free user bytes MEMORYSTATUS, *LPMEMORYSTATUS;实验算法实验算法n相关数据结构相关数据结构n内存基本信息内存基本信息_MEM_MEMORY_BASIC_INFORMATION PVOID BaseAddress; PVOI
20、D AllocationBase; DWORD AllocationProtect; /页面属性页面属性 SIZE_T RegionSize; DWORD State;/页面状态页面状态 DWORD Protect;/取值可能与取值可能与AllocationProtect相同相同 DWORD Type;/内存块类型内存块类型MEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION;实验算法实验算法n相关数据结构相关数据结构页面状态页面状态state: 提交状态:提交状态:MEM_COMMIT 释放状态:释放状态:MEM_FREE 保留状态:保留状态:MEM_RESERVE内存块类型的变量内存块类型的变量type: 镜像:镜像:MEM_IMAGE 映射:映射:MEM_MAPPED 私有:私有:MEM_PRIVATE实验算法实验算法n相关数据结构相关数据结构页面属性变量页面属性变量AllocationProtect六种取值:六种取值: 只读:只读:PAGE_READONLY 只读写:只读写:PAGE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林艺术学院《水彩画实践》2021-2022学年第一学期期末试卷
- 2024年供应工厂灯具合同范本
- 吉林师范大学《中国现当代文学》2021-2022学年第一学期期末试卷
- 2024年大型游艇租赁合同范本
- 2024年大批旺铺转让合同范本
- 2022年公务员多省联考《申论》真题(河南县级卷)及答案解析
- 烧烤店商家合作协议书范文
- 外研版高中英语选修6教案
- (人教版2024)数学四年级上册第7单元《条形统计图》大单元教学课件
- 吉林师范大学《世界古代史专题》2021-2022学年第一学期期末试卷
- 动画概论教程课件 第4章 动画的分类
- 区域市场的开发与管理
- 单元103热固性塑料注射成型及模具
- 译林版六年级上册英语 unit 5 story time课件
- 五年级上册阅读理解20篇(附带答案解析)经典1
- 2023年国家电投校园招聘笔试题库及答案解析
- SB/T 10016-2008冷冻饮品冰棍
- GB/T 28035-2011软件系统验收规范
- GB/T 1591-2008低合金高强度结构钢
- 公开课课件拿来主义
- 煤矿人力资源管理制度
评论
0/150
提交评论