- 13
- 0
- 约2.9万字
- 约 36页
- 2017-01-30 发布于重庆
- 举报
实验3 Windows虚拟内存
(一)、虚拟内存
1 背景知识
在Windows环境下,32位Windows系统中,232=4GB的虚拟地址空间被划分成两个部分:低端2GB提供给进程使用,高端2GB提供给系统使用。这意味着用户的应用程序代码,包括DLL以及进程使用的各种数据等,都装在用户进程地址空间内(低端2GB)。用户过程的虚拟地址空间也被分成三部分:
1)虚拟内存的已调配区(committed):具有备用的物理内存,根据该区域设定的访问权限,用户可以进行写、读或在其中执行程序等操作。
2)虚拟内存的保留区(reserved):没有备用的物理内存,但有一定的访问权限o
3)虚拟内存的自由区(free):不限定其用途,有相应的PAGE_NOACCESS权限。
与虚拟内存区相关的访问权限告知系统进程可在内存中进行何种类型的操作。例如,用户不能在只有PAGE_READONLY权限的区域上进行写操作或执行程序;也不能在只有PAGE_EXECUTE权限的区域里进行读、写操作。而具有PAGE_NOACCESS权限的特殊区域,则意味着不允许进程对其地址进行任何操作。
在进程装入之前,整个虚拟内存的地址空间都被设置为只有PAGE_NOACCESS权限的自由区域。当系统装入进程代码和数据后,才将内存地址的空间标记为已调配区或保留区,并将诸如EXECUTE、READWRITE和READONLY的权限与这些区域相关联。
如表1所示,给出了MEMORY_BASIC_INFORMATION的结构,此数据描述了进程虚拟内存空间中一组虚拟内存页面的当前状态,其中State项表明这些区域是否为自由区、已调配区或保留区;Protect项则包含了Windows系统为这些区域添加了何种访问保护;Type项则表明这些区域是可执行图像、内存映射文件还是简单的私有内存。VirtualQueryEX()API能让用户在指定的进程中,对虚拟内存地址的大小和属性进行检测。
Windows还提供了一整套能使用户精确控制应用程序的虚拟地址空间的虚拟内存API。一些用于虚拟内存操作及检测的API如表2所示。
表1 MEMORY_BASIC_INFORMATION结构的成员
成员名称 目 的 PVOID BaseAddress 虚拟内存区域开始处的指针 PVOID AllocationBase 如果这个特定的区域为子分配区的话,则为虚拟内存外面区域的指针;否则,此值与BaseAddress相同 DWORD AllocationProtect 虚拟内存最初分配区域的保护属性。其可能值包括:PAGE_NOACCESS,PAGE_READONLY,PAGE_READWRITE和PAGE_EXECUTE_READ DWORD RegionSize 虚拟内存区域的字节数 DWORD State 区域的当前分配状态。其可能值为MEM_COMMIT,MEM_FREE和MEM_RESERVE DW()RD Protect 虚拟内存当前区域的保护属性。可能值与AllocationProtect成员的相同 DWORD Type 虚拟内存区域中出现的页面类型。可能值为MEM_IMAGE,MEM_ MAPPED和MEM_PRIVATE
表2 虚拟内存的API
APl名称 描 述 VirtualQueryEx() 通过填充MEMORY_BASIC_INFORMATION结构检测进程内虚拟内存的区域 VirtuaAlloc() 保留或调配进程的部分虚拟内存,设置分配和保护标志 VirtualFree() 释放或收回应用程序使用的部分虚拟地址 VirtualProtect() 改变虚拟内存区域保护规范 VirtualLock() 防止系统将虚拟内存区域通过系统交换到页面文件中 VirtualUnlock() 释放虚拟内存的锁定区域,必要时,允许系统将其交换到页面文件中 提供虚拟内存分配功能的是VinualAlloc()API。该API支持用户向系统要求新的虚拟内存或改变已分配内存的当前状态。用户若想通过VirtualAlloc()函数使用虚拟内存,可以采用两种方式通知系统:
1)简单地将内存内容保存在地址空间内。
2)请求系统返回带有物理存储区(RAM的空间或换页文件)的部分地址空间。
用户可以用flAllocation Type参数(commit和reserve)来定义这些方式,用户可以通知Windows按只读、读写、不可读写、执行或特殊方式来处理新的虚拟内存。
与VirtualAlloc()函数对应的是VirtualFree()函数,其作用是释放虚拟内存中的已调配页或保留页。用户可利用dwFreeType参数将已调配页修改成保留页属性。
Vi
您可能关注的文档
- 采用静态优先权优先算法的进程调度程序.doc
- 计算机应用技术专业大学生职业生涯规划书.doc
- 山东大学操作系统实验5进程互斥实验.doc
- linux进程和线程通信.doc
- 辽宁工程技术大学大学软件项目实训报告.doc
- 操作系统第二次实验报告.doc
- 北邮操作系统进程同步实验报告及源代码.docx
- 操作系统 生产者-消费者模型模拟进程调度.doc
- 使用ptrace向已运行进程中注入.so并执行相关函数.doc
- 应用技术学院学生约谈制度.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
最近下载
- 2025江苏农牧科技职业学院单招数学能力检测试卷含答案详解(典型题).docx VIP
- 2025年黑龙江艺术职业学院单招语文测试模拟题库通用题库.docx VIP
- 2026年上海市初三语文一模试题汇编之古诗文阅读(教师版).docx
- 2025年江苏农牧科技职业学院单招(语文)测试试卷.docx VIP
- 《数据管理能力成熟度模型》DCMM评估内容及流程.pptx VIP
- 2025黑龙江艺术职业学院单招《英语》考前冲刺练习试题(夺冠)附答案详解.docx VIP
- (2026年)危重患者体位管理PPT课件.pptx VIP
- 2026年上海市初三语文一模试题汇编之现代文阅读(教师版).docx
- 2025黑龙江艺术职业学院单招《数学》模拟试题含完整答案详解【全优】.docx VIP
- 人教版|六年级下册体育全册教案.docx
原创力文档

文档评论(0)