物理存储器与进程逻辑地址空间的管理实验报告(3)

2019-04-16 14:37

15)在 ke/sysproc.c 文件的ConsoleCmdVM 函数中,在调用MmAllocateVirtual——Memory 函数的代码行添加一个断点,在调用 MmFreeVirtualMemory 函数的代码行添加一 个断点;

16)启动调试,待 EOS 启动完毕,在 EOS 控制台中输入命令“vm 1”后按回车,vm 命令开始执行后,会在调用 MmAllocateVirtualMemory 函数的代码行处中断。此时要注意参数 BaseAddress 和 RegionSize 初始化的值。按 F11(逐过程)调试进入 MmAllocateVirtualMemory 函数;

10

17)按 F10(逐过程)单步调试 MmAllocateVirtualMemory 函数的执行过程,继续执行,,会在调用 MmFreeVirtualMemory 函数的代码行处中断。此时要注意参数 BaseAddress 和 RegionSize 初始化的值。按 F11 调试进入 MmFreeVirtualMemory 函数;

11

12

18)尝试在调用 MmAllocateVirtualMemory 函数时将 RegionSize 参数的值设置为 PAGE_SIZE+1 或者 PAGE_SIZE*2+1。观察“输出”窗口中转储的信息,并说明申请虚拟内存的大小与实际分配的大 小之间的关系,以及分配的虚拟内存大小会对分配的虚拟地址产生什么样的影响。将“输出”窗 口中转储的信息保存在文本文件中;

19)尝试在调用 MmAllocateVirtualMemory 函数时将 BaseAddress 参数的值设置为已经被占用的虚拟 内存,例如 0xA0000000,观察“输出”窗口中转储的信息。将“输出”窗口中转储的信息保存在 文本文件中;

13

20)尝试在调用 MmAllocateVirtualMemory 函数时将 RegionSize 参数的值设置为 PAGE_SIZE*2,将 BaseAddress 参数的值设置为 0xA0017004,观察“输出”窗口中转储的信息,并说明申请虚拟内 存的大小与实际分配的大小之间的关系,以及申请的虚拟地址会对分配的虚拟内存大小产生什么 样的影响。将“输出”窗口中转储的信息保存在文本文件中;

21)创建一个EOS应用程序,调用API函数VirtualAlloc,分配一个整型变量所需的空间,并使用一个整型变量的指针指向这个空间。

修改整型变量的值为 0xFFFFFFFF。在修改前输出整型变量的值,在修改后再输出整型变量的值。

调用 API 函数 Sleep,等待 10 秒钟,调用 API 函数 VirtualFree,释放之前分配的整型变量的空间,进入死循环,这样应用程序就不会结束。 #include “EOSApp.h”

int main(int argc,char* argv[]){

//启动调试EOS应用程序前要特别注意下面的问题:

// 1、如果要在调试应用程序时能够调试进入内核显示对应的源码,必须使用EOS

核心项目编译生成完全版本的SDK 文件夹,然后使用此文件夹覆盖应用程序项目中的SDK 文件夹,并且EOS核心项目在磁盘上的位置不能改变。

2、在启动调试应用程序之前必须首先删除禁用所有的断点,在断点中断(int 3)

被命中后才能重新添加启用断点,否则启动调试会失败。 #ifdef_DEBUG

_asm(“int$3\\n nop”);

#endif

INT* p;

//调用API函数VirtualAlloc,分配一个整型变量所需的空间,并使用一个整

14


物理存储器与进程逻辑地址空间的管理实验报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:现场信号题库

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: