操作系统实验-第四讲-物理存储器与进程逻辑地址空间的管理
- 格式:doc
- 大小:667.50 KB
- 文档页数:21
第四章存储器管理第0节存储管理概述一、存储器的层次结构1、在现代计算机系统中,存储器是信息处理的来源与归宿,占据重要位置。
但是,在现有技术条件下,任何一种存储装置,都无法从速度、容量、是否需要电源维持等多方面,同时满足用户的需求。
实际上它们组成了一个速度由快到慢,容量由小到大的存储装置层次。
2、各种存储器•寄存器、高速缓存Cache:少量的、非常快速、昂贵、需要电源维持、CPU可直接访问;•内存RAM:若干(千)兆字节、中等速度、中等价格、需要电源维持、CPU可直接访问;•磁盘高速缓存:存在于主存中;•磁盘:数千兆或数万兆字节、低速、价廉、不需要电源维持、CPU 不可直接访问;由操作系统协调这些存储器的使用。
二、存储管理的目的1、尽可能地方便用户;提高主存储器的使用效率,使主存储器在成本、速度和规模之间获得较好的权衡。
(注意cpu和主存储器,这两类资源管理的区别)2、存储管理的主要功能:•地址重定位•主存空间的分配与回收•主存空间的保护和共享•主存空间的扩充三、逻辑地址与物理地址1、逻辑地址(相对地址,虚地址):用户源程序经过编译/汇编、链接后,程序内每条指令、每个数据等信息,都会生成自己的地址。
●一个用户程序的所有逻辑地址组成这个程序的逻辑地址空间(也称地址空间)。
这个空间是以0为基址、线性或多维编址的。
2、物理地址(绝对地址,实地址):是一个实际内存单元(字节)的地址。
●计算机内所有内存单元的物理地址组成系统的物理地址空间,它是从0开始的、是一维的;●将用户程序被装进内存,一个程序所占有的所有内存单元的物理地址组成该程序的物理地址空间(也称存储空间)。
四、地址映射(变换、重定位)当程序被装进内存时,通常每个信息的逻辑地址和它的物理地址是不一致的,需要把逻辑地址转换为对应的物理地址----地址映射;地址映射分静态和动态两种方式。
1、静态地址重定位是程序装入时集中一次进行的地址变换计算。
物理地址= 重定位的首地址+ 逻辑地址•优点:简单,不需要硬件支持;•缺点:一个作业必须占据连续的存储空间;装入内存的作业一般不再移动;不能实现虚拟存储。
操作系统实验报告哈尔滨工程大学软件学院第四讲物理存储器与进程逻辑地址空间的管理一、实验概述1. 实验名称物理存储器与进程逻辑地址空间的管理2. 实验目的通过查看物理存储器的使用情况,并练习分配和回收物理内存,从而掌握物理存储器的管理方法。
通过查看进程逻辑地址空间的使用情况,并练习分配和回收虚拟内存,从而掌握进程逻辑地址空间的管理方法。
3. 实验类型(验证、设计)验证+设计4. 实验内容(1)准备实验(2)执行控制台命令“pm”,查看物理存储器的信息(3)分配物理页和释放物理页: a. 在pm命令函数中添加分配物理页和释放物理页的代码 b. 单步调试分配物理页和释放物理页(4)执行控制台命令“vm”,查看系统进程的虚拟地址描述符信息执行控制台命令“vm”,查看当创建了一个应用程序进程后,系统进程和应用程序进程中虚拟地址描述符的信息(5)在系统进程中分配虚拟页和释放虚拟页(6)在应用程序进程中分配虚拟页和释放虚拟页(7)结束实验二、实验环境操作系统:Windows xp实验环境:Oslab;编程语言:C++三、实验过程(每次实验不一定下面6条都写,根据实际情况定)1. 设计思路和流程图2. 源程序并附上注释#include "EOSApp.h"int main(int argc, char* argv[]){#ifdef _DEBUG__asm("int $3\n nop");#endifINT *a;if(d=VirtualAlloc(0,sizeof(int),MEM_RESERVE|MEM_COMMIT)){//调用API函数VirtualAlloc,分配一个整型变量所需的空间,并使用一个整型变量的指针指向这个空间。
printf("Allocated %d bytes virtual memory of 0x%x\n\n",sizeof(int),a);printf("virtual memory original value:0x%x\n\n",*a);//输出原始整型变量的值*d=0xFFFFFFFF;//修改整型变量的值为0xFFFFFFFFprintf("virtual memory new value:0x%x\n\n",*a);//输出修改后的整型变量的值printf("\nWait for 10 seconds\n");Sleep(10000);// 调用API函数Sleep,等待10秒钟。
Word格式操作系统实验报告哈尔滨工程大学计算机科学与技术学院一、实验概述1. 实验名称物理存储器与进程逻辑地址空间的管理2. 实验目的通过查看物理存储器的使用情况,并练习分配和回收物理内存,从而掌握物理存储器的管理方法。
通过查看进程逻辑地址空间的使用情况,并练习分配和回收虚拟内存,从而掌握进程逻辑地址空间的管理方法。
3. 实验类型验证+设计4.实验内容 3.1 准备实验3.2 阅读控制台命令“pm”相关的源代码,并查看其执行的结果3.3 分配物理页和释放物理页3.4 阅读控制台命令“vm”相关的源代码,并查看其执行的结果3.5 在系统进程中分配虚拟页和释放虚拟页3.6 在应用程序进程中分配虚拟页和释放虚拟页3.6.1 要求3.6.2 测试方法3.6.3 提示二、实验环境操作系统 windos xp编译器 OS Lab语言 c语言三、实验过程1. 设计思路和流程图MiAllocateAnyPages函数的流程图MiFreePages函数的流程图2.需要解决的问题及解答(1)在实验指导的P160-4.和5.按F10单步调试MmAllocateVirtualMemory函数的执行过程,要求给出监视窗口BaseAddress和RegionSize个变量前后变化截图界面。
截图见3.5。
在实验指导的P160-1.和2. 按F10单步调试MmFreeVirtualMemory函数的执行过程,要求给出监视窗口BaseAddress和RegionSize个变量前后变化截图界面。
截图见3.5。
(2)按照《实验指导》的P160-3.6 在应用程序进程中分配虚拟页和释放虚拟页,编写代码。
要求至少给出源代码及其解释。
程序见3.6.2。
(3)按F10单步调试MiAllocateAnyPages函数的执行过程,尝试回答下面的问题:①本次分配的物理页的数量是多少?分配的物理页的页框号是多少?②物理页是从空闲页链表中分配的?还是从零页链表中分配的?③哪一行语句减少了空闲页的数量?哪一行语句将刚刚分配的物理页由空闲状态修改为忙状态?答:①本次分配的物理页的数量是1,分配的物理页的页框号是0x409;②物理页是从空闲页链表中分配的③第226行MiFreePageListHead=MiGetPfnDatabaseEntry(Pfn)->Next;和第227 行MiFreePageCount--;减少了空闲页的数量,第229行将刚刚分配的物理页由空闲状态修改为忙状态;(4)按F10单步调试MiFreePages函数的执行过程,尝试回答下面的问题:①本次释放的物理页的数量是多少?释放的物理页的页框号是多少?释放的物理页是之前分配的物理页吗?②释放的物理页是被放入了空闲页链表中?还是零页链表中?③绘制MiFreePages函数的流程图。
操作系统中的进程管理与内存分配原理解析进程管理与内存分配是操作系统中非常重要的两个方面,它们直接影响着计算机系统的性能和稳定性。
本文将分别对进程管理和内存分配进行原理解析,希望能够帮助读者深入了解操作系统的核心原理。
一、进程管理1.进程的概念进程是指在计算机系统中运行的程序的实例。
每个进程都有自己的地址空间、堆栈、寄存器以及其他系统资源,它们之间相互独立,互不干扰。
进程是操作系统进行资源分配和调度的基本单位,它的有效管理对于系统的稳定性和性能至关重要。
2.进程的创建在操作系统中,进程的创建是通过调用系统调用来实现的。
当用户启动一个程序时,操作系统会创建一个新的进程,并为其分配相应的资源。
在进程创建的过程中,操作系统会为新进程分配一个唯一的进程标识符,用来标识该进程。
3.进程的调度进程调度是操作系统中非常重要的部分,它决定了系统中各个进程的执行顺序。
常见的调度算法包括先来先服务(FCFS)、最短作业优先(SJF)、优先级调度、多级反馈队列调度等。
这些调度算法可以根据不同的应用场景选择合适的调度策略,以优化系统的性能。
4.进程的同步与互斥在多进程的系统中,进程之间往往需要进行通信与同步。
在并发执行的场景下,不同的进程可能会访问共享资源,为了避免出现竞态条件和死锁现象,需要通过信号量、互斥锁等方式进行进程的同步与互斥操作。
5.进程的终止当一个进程执行完毕或者出现异常时,需要由操作系统对其进行清理和回收。
在进程终止的过程中,操作系统会回收该进程占用的资源,并将其从系统中移除。
6.进程间通信进程间通信是指不同进程之间进行数据交换和信息传递的机制。
常见的进程间通信方式包括管道、消息队列、信号量、共享内存等。
这些通信方式可以实现不同进程之间的数据共享与交互,为复杂的应用提供了实现手段。
二、内存分配1.内存管理的基本原理内存管理是操作系统中的一个重要组成部分,它负责对计算机系统的内存资源进行分配和管理。
内存管理的基本原理包括虚拟内存、分页、分段、段页式内存管理等。
操作系统实验报告&哈尔滨工程大学计算机科学与技术学院一、实验概述1. 实验名称物理存储器与进程逻辑地址空间的管理2. 实验目的通过查看物理存储器的使用情况,并练习分配和回收物理内存,从而掌握物理存储器的管理方法。
通过查看进程逻辑地址空间的使用情况,并练习分配和回收虚拟内存,从而掌握进程逻辑地址空间的管理方法。
3. 实验类型验证+设计4.实验内容准备实验阅读控制台命令“pm”相关的源代码,并查看其执行的结果分配物理页和释放物理页阅读控制台命令“vm”相关的源代码,并查看其执行的结果在系统进程中分配虚拟页和释放虚拟页~在应用程序进程中分配虚拟页和释放虚拟页要求测试方法提示二、实验环境操作系统windos xp编译器OS Lab[语言c语言三、实验过程1. 设计思路和流程图MiAllocateAnyPages函数的流程图MiFreePages函数的流程图-2.需要解决的问题及解答(1)在实验指导的P160-4.和5.按F10单步调试MmAllocateVirtualMemory函数的执行过程,要求给出监视窗口BaseAddress和RegionSize个变量前后变化截图界面。
截图见。
在实验指导的P160-1.和2. 按F10单步调试MmFreeVirtualMemory函数的执行过程,要求给出监视窗口BaseAddress和RegionSize个变量前后变化截图界面。
截图见。
(2)按照《实验指导》的在应用程序进程中分配虚拟页和释放虚拟页,编写代码。
要求至少给出源代码及其解释。
程序见。
:(3)按F10单步调试MiAllocateAnyPages函数的执行过程,尝试回答下面的问题:①本次分配的物理页的数量是多少分配的物理页的页框号是多少②物理页是从空闲页链表中分配的还是从零页链表中分配的③哪一行语句减少了空闲页的数量哪一行语句将刚刚分配的物理页由空闲状态修改为忙状态答:①本次分配的物理页的数量是1,分配的物理页的页框号是0x409;②物理页是从空闲页链表中分配的③第226行MiFreePageListHead=MiGetPfnDatabaseEntry(Pfn)->Next;和第227行MiFreePageCount--;减少了空闲页的数量,第229行将刚刚分配的物理页由空闲状态修改为忙状态;(4)按F10单步调试MiFreePages函数的执行过程,尝试回答下面的问题:;①本次释放的物理页的数量是多少释放的物理页的页框号是多少释放的物理页是之前分配的物理页吗②释放的物理页是被放入了空闲页链表中还是零页链表中③绘制MiFreePages函数的流程图。
答:①本次释放的物理页的数量是1,释放的物理页的页框号0x409,释放的物理页是之前分配的物理页;②释放的物理页被放入了空闲页链表中;③见实验过程开头流程图部分。
(5)按F10单步调试MmAllocateVirtualMemory函数的执行过程,尝试回答下面的问题:①分配的虚拟页的起始地址是多少分配的虚拟页的数量是多少它们和参数BaseAddress和RegionSize初始化的值有什么样的关系—②分配虚拟页的同时有为虚拟页映射实际的物理页吗这是由哪个参数决定的③分配的虚拟页是在系统地址空间(高2G)还是在用户地址空间(低2G)这是由哪个参数决定的④参考MiReserveAddressRegion函数的定义和注释,说明该函数的功能。
答:①分配的虚拟页的起始地址是0xa0003000,分配的虚拟页的数量是1,BaseAddress和RegionSize初始化的值是期望保留或者提交的地址区域的起始地址和大小;②分配虚拟页的同时有为虚拟页映射实际的物理页,这是由第三个参数AllocationType决定的;③分配的虚拟页是在系统地址空间(高2G),这是由第四个参数SystemVirtual 决定的;④MiReserveAddressRegion函数的功能是保留一段虚拟地址区域。
(6)按F10单步调试MmFreeVirtualMemory函数的执行过程,尝试回答下面的问题:%①本次释放的虚拟地址是多少释放的虚拟页是之前分配的虚拟页吗②参考MiFindReservedAddressRegion函数、MiFreeAddressRegion函数和MiDecommitPages函数的定义和注释,说明这些函数的功能。
答:①本次释放的虚拟地址是0xa0003000,是之前分配的虚拟页;②MiFindReservedAddressRegion函数用于查找已保留地址区域,如果目标区域非已保留区域则返回失败,MiFreeAddressRegion函数用于释放已保留地址区域和MiDecommitPages函数用于释放映射在连续虚拟页框上的物理页框。
(7)在本实验中,如果分配了物理页后,没有回收,会对EOS操作系统造成什么样的影响目前EOS操作系统内核函数MiAllocateAnyPages能处理所有物理页被分配完毕的情况吗例如在没有可分配的物理页的情况下调用该内核函数,是否会返回失败如果内核函数MiAllocateAnyPages还不能处理这种极端情况,尝试修改代码解决这个问题。
答:如果分配了物理页后,没有回收,将会使可分配自由页和零页越来越少,最终导致内存溢出,系统无法运行。
目前EOS操作系统内核函数MiAllocateAnyPages不能处理所有物理页被分配完毕的情况,在没有可分配的物理页的情况下,不会分配物理页,但仍然会返回成功,添加以下代码即可:Else{return STATUS_MEMORY_NOT_ALLOCATED;}(8).(9)在本实验中,在分配物理页时是调用的内核函数 MiAllocateAnyPages,该函数会优先分配空闲页,尝试修改代码,调用内核函数MiAllocateZeroedPages优先分配零页,并调试分配零页的情况。
尝试从性能的角 7 度分析内核函数 MiAllocateAnyPages 和 MiAllocateZeroedPages。
尝试从安全性的角度分析分配零页的必要性。
答:将MiAllocateAnyPages(1, PfnArray);修改为MiAllocateZeroedPages(1, PfnArray);即可。
系统启动时,所有空闲物理页都是未初始化的,此时零页链表为空,MiAllocateAnyPages函数可以直接从自由页链表分配,而MiAllocateZeroedPages函数会对从自由页链表中分配的每一页进行零初始化,确保所有分配页都是被零初始化的,再进行分配,因此MiAllocateZeroedPages函数效率较低。
但因为MiAllocateZeroedPages函数对自由页进行了初始化,减小了出错的可能性,从而安全性较高。
3.主要数据结构、实现代码及其说明typedef struct _MMPFN {ULONG Unused : 9; 序运行时的初值和运行结果准备实验1. 启动 OS Lab。
2. 新建一个 EOS Kernel 项目。
》阅读控制台命令“pm”相关的源代码,并查看其执行的结果执行控制台命令“ pm”,查看物理存储器的信息:分配物理页和释放物理页使用文件中 ConsoleCmdPhysicalMemory 函数的函数体替换 ke/ 文件中ConsoleCmdPhysicalMemory 函数的函数体。
调试并执行控制台命令“ pm”,查看物理存储器的信息:分配和释放多个物理页调用 MiAllocateAnyPages 函数时分配多个物理页,然后在调用 MiFreePages 函数时将分配的多个物理页释放。
阅读控制台命令“vm”相关的源代码,并查看其执行的结果执行控制台命令“ vm”,查看系统进程的虚拟地址描述符信息:按 F5 启动调试。
待 EOS 启动完毕,在 EOS 控制台中输入命令“pt”后按回车。
“pt”命令可以输出当前系统中的进程列表,其中系统进程的 ID 为 1。
]在 EOS 控制台中输入命令“ vm 1”后按回车得到虚拟地址描述符信息。
执行控制台命令“ vm”,查看当创建了一个应用程序进程后,系统进程和应用程序进程中虚拟地址描述符的信息:切换到“Console-2”,然后输入命令“ pt”后按回车。
输出的信息:输入命令“ vm 1”后按回车,可以查看系统进程中虚拟地址描述符的信息】输入命令“ vm 31”后按回车,可以查看应用程序进程中虚拟地址描述符的信息在系统进程中分配虚拟页和释放虚拟页使用文件中 ConsoleCmdVM 函数的函数体替换 ke/ 文件中 ConsoleCmdVM 函数的函数体。
在 EOS 控制台中输入命令“vm 1”后按回车调试分配虚拟页和释放虚拟页的过程:vm 命令开始执行后,会在调用MmAllocateVirtualMemory 函数的代码行处中断。
此时要注意参数BaseAddress 和 RegionSize 初始化的值。
(分配虚拟页的调试过程中BaseAddress 和RegionSize 的值的变化:进入函数之前BaseAddress 和RegionSize 的值退出函数以后BaseAddress 和RegionSize 的值释放虚拟页的调试过程中BaseAddress 和RegionSize 的值的变化:进入函数前BaseAddress 和RegionSize 的值刚退出函数时BaseAddress 和RegionSize 的值'在调用 MmAllocateVirtualMemory 函数时将 RegionSize 参数的值设置为PAGE_SIZE+1时“输出”窗口中转储的信息:Total Vpn from 655360 to 657407. (0xA0000000 - 0xA07FFFFF)1# Vad Include 1 Vpn From 655360 to 655360. (0xA0000000 - 0xA0000FFF)2# Vad Include 2 Vpn From 655361 to 655362. (0xA0001000 - 0xA0002FFF)3# Vad Include 2 Vpn From 655365 to 655366. (0xA0005000 - 0xA0006FFF)?4# Vad Include 2 Vpn From 655367 to 655368. (0xA0007000 - 0xA0008FFF)5# Vad Include 2 Vpn From 655369 to 655370. (0xA0009000 - 0xA000AFFF)6# Vad Include 2 Vpn From 655371 to 655372. (0xA000B000 - 0xA000CFFF)7# Vad Include 2 Vpn From 655373 to 655374. (0xA000D000 - 0xA000EFFF)8# Vad Include 2 Vpn From 655375 to 655376. (0xA000F000 - 0xA0010FFF)9# Vad Include 2 Vpn From 655377 to 655378. (0xA0011000 - 0xA0012FFF)10# Vad Include 2 Vpn From 655379 to 655380. (0xA0013000 - 0xA0014FFF)11# Vad Include 2 Vpn From 655381 to 655382. (0xA0015000 - 0xA0016FFF)《Total Vpn Count: 2048.Allocated Vpn Count: 21.Free Vpn Count: 2027.Zeroed Physical Page Count: 0.Free Physical Page Count: 7126."New VM's base address: 0xA0017000. Size: 0x3000.1# Vad Include 1 Vpn From 655360 to 655360. (0xA0000000 - 0xA0000FFF) 2# Vad Include 2 Vpn From 655361 to 655362. (0xA0001000 - 0xA0002FFF) 3# Vad Include 2 Vpn From 655365 to 655366. (0xA0005000 - 0xA0006FFF) 4# Vad Include 2 Vpn From 655367 to 655368. (0xA0007000 - 0xA0008FFF) 5# Vad Include 2 Vpn From 655369 to 655370. (0xA0009000 - 0xA000AFFF) 6# Vad Include 2 Vpn From 655371 to 655372. (0xA000B000 - 0xA000CFFF) @7# Vad Include 2 Vpn From 655373 to 655374. (0xA000D000 - 0xA000EFFF) 8# Vad Include 2 Vpn From 655375 to 655376. (0xA000F000 - 0xA0010FFF) 9# Vad Include 2 Vpn From 655377 to 655378. (0xA0011000 - 0xA0012FFF) 10# Vad Include 2 Vpn From 655379 to 655380. (0xA0013000 - 0xA0014FFF) 11# Vad Include 2 Vpn From 655381 to 655382. (0xA0015000 - 0xA0016FFF) 12# Vad Include 3 Vpn From 655383 to 655385. (0xA0017000 - 0xA0019FFF)Allocated Vpn Count: 24.@Free Vpn Count: 2024.Zeroed Physical Page Count: 0.Free Physical Page Count: 7126.Free VM's base address: 0xA0017000. Size: 0x3000.1# Vad Include 1 Vpn From 655360 to 655360. (0xA0000000 - 0xA0000FFF) :2# Vad Include 2 Vpn From 655361 to 655362. (0xA0001000 - 0xA0002FFF) 3# Vad Include 2 Vpn From 655365 to 655366. (0xA0005000 - 0xA0006FFF) 4# Vad Include 2 Vpn From 655367 to 655368. (0xA0007000 - 0xA0008FFF) 5# Vad Include 2 Vpn From 655369 to 655370. (0xA0009000 - 0xA000AFFF) 6# Vad Include 2 Vpn From 655371 to 655372. (0xA000B000 - 0xA000CFFF) 7# Vad Include 2 Vpn From 655373 to 655374. (0xA000D000 - 0xA000EFFF) 8# Vad Include 2 Vpn From 655375 to 655376. (0xA000F000 - 0xA0010FFF) 9# Vad Include 2 Vpn From 655377 to 655378. (0xA0011000 - 0xA0012FFF) 》10# Vad Include 2 Vpn From 655379 to 655380. (0xA0013000 - 0xA0014FFF) 11# Vad Include 2 Vpn From 655381 to 655382. (0xA0015000 - 0xA0016FFF)Allocated Vpn Count: 21.Free Vpn Count: 2027.Zeroed Physical Page Count: 0.Free Physical Page Count: 7126.;在调用 MmAllocateVirtualMemory 函数时将 BaseAddress 参数的值设置为已经被占用的虚拟内存,例如 0xA0000000,“输出”窗口中转储的信息:Total Vpn from 655360 to 657407. (0xA0000000 - 0xA07FFFFF)1# Vad Include 1 Vpn From 655360 to 655360. (0xA0000000 - 0xA0000FFF)2# Vad Include 2 Vpn From 655361 to 655362. (0xA0001000 - 0xA0002FFF)3# Vad Include 2 Vpn From 655365 to 655366. (0xA0005000 - 0xA0006FFF)4# Vad Include 2 Vpn From 655367 to 655368. (0xA0007000 - 0xA0008FFF)5# Vad Include 2 Vpn From 655369 to 655370. (0xA0009000 - 0xA000AFFF).6# Vad Include 2 Vpn From 655371 to 655372. (0xA000B000 - 0xA000CFFF)7# Vad Include 2 Vpn From 655373 to 655374. (0xA000D000 - 0xA000EFFF)8# Vad Include 2 Vpn From 655375 to 655376. (0xA000F000 - 0xA0010FFF)9# Vad Include 2 Vpn From 655377 to 655378. (0xA0011000 - 0xA0012FFF)10# Vad Include 2 Vpn From 655379 to 655380. (0xA0013000 - 0xA0014FFF)11# Vad Include 2 Vpn From 655381 to 655382. (0xA0015000 - 0xA0016FFF)Total Vpn Count: 2048.¥Free Vpn Count: 2027.Zeroed Physical Page Count: 0.Free Physical Page Count: 7126.New VM's base address: 0xA0003000. Size: 0x1000.1# Vad Include 1 Vpn From 655360 to 655360. (0xA0000000 - 0xA0000FFF)】2# Vad Include 2 Vpn From 655361 to 655362. (0xA0001000 - 0xA0002FFF)3# Vad Include 1 Vpn From 655363 to 655363. (0xA0003000 - 0xA0003FFF)4# Vad Include 2 Vpn From 655365 to 655366. (0xA0005000 - 0xA0006FFF)5# Vad Include 2 Vpn From 655367 to 655368. (0xA0007000 - 0xA0008FFF)6# Vad Include 2 Vpn From 655369 to 655370. (0xA0009000 - 0xA000AFFF)7# Vad Include 2 Vpn From 655371 to 655372. (0xA000B000 - 0xA000CFFF)8# Vad Include 2 Vpn From 655373 to 655374. (0xA000D000 - 0xA000EFFF)9# Vad Include 2 Vpn From 655375 to 655376. (0xA000F000 - 0xA0010FFF)《10# Vad Include 2 Vpn From 655377 to 655378. (0xA0011000 - 0xA0012FFF)11# Vad Include 2 Vpn From 655379 to 655380. (0xA0013000 - 0xA0014FFF)12# Vad Include 2 Vpn From 655381 to 655382. (0xA0015000 - 0xA0016FFF)Free Vpn Count: 2026.Zeroed Physical Page Count: 0.Free Physical Page Count: 7126.》Free VM's base address: 0xA0003000. Size: 0x1000.1# Vad Include 1 Vpn From 655360 to 655360. (0xA0000000 - 0xA0000FFF)2# Vad Include 2 Vpn From 655361 to 655362. (0xA0001000 - 0xA0002FFF)3# Vad Include 2 Vpn From 655365 to 655366. (0xA0005000 - 0xA0006FFF)4# Vad Include 2 Vpn From 655367 to 655368. (0xA0007000 - 0xA0008FFF)5# Vad Include 2 Vpn From 655369 to 655370. (0xA0009000 - 0xA000AFFF)6# Vad Include 2 Vpn From 655371 to 655372. (0xA000B000 - 0xA000CFFF)7# Vad Include 2 Vpn From 655373 to 655374. (0xA000D000 - 0xA000EFFF)[8# Vad Include 2 Vpn From 655375 to 655376. (0xA000F000 - 0xA0010FFF)9# Vad Include 2 Vpn From 655377 to 655378. (0xA0011000 - 0xA0012FFF)10# Vad Include 2 Vpn From 655379 to 655380. (0xA0013000 - 0xA0014FFF)11# Vad Include 2 Vpn From 655381 to 655382. (0xA0015000 - 0xA0016FFF)Free Vpn Count: 2027.Free Physical Page Count: 7126.¥在调用 MmAllocateVirtualMemory 函数时将 RegionSize 参数的值设置为PAGE_SIZE*2,将BaseAddress 参数的值设置为 0xA0017004,“输出”窗口中转储的信息:Total Vpn from 655360 to 657407. (0xA0000000 - 0xA07FFFFF)1# Vad Include 1 Vpn From 655360 to 655360. (0xA0000000 - 0xA0000FFF)2# Vad Include 2 Vpn From 655361 to 655362. (0xA0001000 - 0xA0002FFF)3# Vad Include 2 Vpn From 655365 to 655366. (0xA0005000 - 0xA0006FFF) 4# Vad Include 2 Vpn From 655367 to 655368. (0xA0007000 - 0xA0008FFF) 5# Vad Include 2 Vpn From 655369 to 655370. (0xA0009000 - 0xA000AFFF) )6# Vad Include 2 Vpn From 655371 to 655372. (0xA000B000 - 0xA000CFFF) 7# Vad Include 2 Vpn From 655373 to 655374. (0xA000D000 - 0xA000EFFF) 8# Vad Include 2 Vpn From 655375 to 655376. (0xA000F000 - 0xA0010FFF) 9# Vad Include 2 Vpn From 655377 to 655378. (0xA0011000 - 0xA0012FFF) 10# Vad Include 2 Vpn From 655379 to 655380. (0xA0013000 - 0xA0014FFF) 11# Vad Include 2 Vpn From 655381 to 655382. (0xA0015000 - 0xA0016FFF)Total Vpn Count: 2048.%Allocated Vpn Count: 21.Free Vpn Count: 2027.Zeroed Physical Page Count: 0.Free Physical Page Count: 7126.New VM's base address: 0xA0017000. Size: 0x3000..1# Vad Include 1 Vpn From 655360 to 655360. (0xA0000000 - 0xA0000FFF) 2# Vad Include 2 Vpn From 655361 to 655362. (0xA0001000 - 0xA0002FFF) 3# Vad Include 2 Vpn From 655365 to 655366. (0xA0005000 - 0xA0006FFF) 4# Vad Include 2 Vpn From 655367 to 655368. (0xA0007000 - 0xA0008FFF) 5# Vad Include 2 Vpn From 655369 to 655370. (0xA0009000 - 0xA000AFFF) 6# Vad Include 2 Vpn From 655371 to 655372. (0xA000B000 - 0xA000CFFF) 7# Vad Include 2 Vpn From 655373 to 655374. (0xA000D000 - 0xA000EFFF) 8# Vad Include 2 Vpn From 655375 to 655376. (0xA000F000 - 0xA0010FFF) '9# Vad Include 2 Vpn From 655377 to 655378. (0xA0011000 - 0xA0012FFF) 10# Vad Include 2 Vpn From 655379 to 655380. (0xA0013000 - 0xA0014FFF) 11# Vad Include 2 Vpn From 655381 to 655382. (0xA0015000 - 0xA0016FFF) 12# Vad Include 3 Vpn From 655383 to 655385. (0xA0017000 - 0xA0019FFF)Free Vpn Count: 2024.Zeroed Physical Page Count: 0.Free Physical Page Count: 7126.|Free VM's base address: 0xA0017000. Size: 0x3000.1# Vad Include 1 Vpn From 655360 to 655360. (0xA0000000 - 0xA0000FFF)2# Vad Include 2 Vpn From 655361 to 655362. (0xA0001000 - 0xA0002FFF)3# Vad Include 2 Vpn From 655365 to 655366. (0xA0005000 - 0xA0006FFF)4# Vad Include 2 Vpn From 655367 to 655368. (0xA0007000 - 0xA0008FFF)5# Vad Include 2 Vpn From 655369 to 655370. (0xA0009000 - 0xA000AFFF)6# Vad Include 2 Vpn From 655371 to 655372. (0xA000B000 - 0xA000CFFF)·7# Vad Include 2 Vpn From 655373 to 655374. (0xA000D000 - 0xA000EFFF)8# Vad Include 2 Vpn From 655375 to 655376. (0xA000F000 - 0xA0010FFF)9# Vad Include 2 Vpn From 655377 to 655378. (0xA0011000 - 0xA0012FFF)10# Vad Include 2 Vpn From 655379 to 655380. (0xA0013000 - 0xA0014FFF)11# Vad Include 2 Vpn From 655381 to 655382. (0xA0015000 - 0xA0016FFF)Free Vpn Count: 2027.Zeroed Physical Page Count: 0.》在应用程序进程中分配虚拟页和释放虚拟页要求创建一个 EOS 应用程序,并编写代码完成下列功能:1. 调用 API 函数 VirtualAlloc,分配一个整型变量所需的空间,并使用一个整型变量的指针指向这个空间。