西工大计算机操作系统实验报告,西工大计算机操作系统课程设计实验报告bh05xh5...

《西工大计算机操作系统课程设计实验报告bh05xh5》由会员分享,可在线阅读,更多相关《西工大计算机操作系统课程设计实验报告bh05xh5(7页珍藏版)》请在人人文库网上搜索。

1、西北工业大学操作系统实验报告实验日期: 2013.12.07 实验名称: 查看WRK进程的等待队列一、实验目的了解进程的数据结构,熟悉WinDbg的用法。二、实验要求结合WinDbg的调试功能,分析一个进程的数据结构。三、实验过程及结果实验步骤:1联机调试界面启动WinDbg 到内核调试模式。2查看一个线程等待的所有同步对象1) 在WRK启动过程中,使用“!process”命令查看当前进程。图12) 使用命令“dt nt!_kthread 线程结构入口地址”查看拥有同步事件对象SynchronizationEvent的线程。图23) 查看其中的+0x054 WaitBlockList,可以看到。

2、其等待对象列表头,也就是第一个等待对象。使用命令“dt nt!_kwait_block 入口地址”进入第一个等待块查看信息。查询该等待块的NextWaitBlock,又看到另一个已知的事件对象。4) 使用命令“dt nt!_kwait_block 入口地址”进入下一个等待块查看信心。图35) 重复以上步骤,可以查看线程中全部正在等待的同步对象。可知线程正在等待的同步对象的队列是循环队列。图43查看某同步对象的所有线程1) 使用“!process”命令查看当前进程。图52) 然后观察线程等待的同步对象QueueObject。使用命令“dt nt!_dispatcher_header 入口地址”来。

3、解释该对象的分发器头。图63) 查看结构WaitListHead,从_LIST_ENTRY的首尾地址上我们可以看到,不止一个线程在等待该对象。因为等待列表头的前向和后向指针指向的位置不同。图74) 使用命令“dt nt!_kwait_block 入口地址”进入第一个等待块查看信息。图85) 查看结构WaitListEntry,使用命令“dt nt!_kwait_block 入口地址”进入另一个等待块查看信息。图96) 重复以上步骤,直到该等待对象的队列遍历完毕,统计队列中的线程数。图104创建线程实验通过修改WRK中的系统文件,wrk内核创建线程时打印信息。具体步骤为:1)对create.c 。

4、文件进行修改(文件路径为:/base/ntos/ps/create.c)。2)在文件开头适当位置定义两个变量,以分别记录系统线程和应用线程的数量:int WRK_SysThreadCount;int WRK_AppThreadCount;3)在PsCreateSystemThread函数中添加类似如下信息打印代码:DbgPrint(“System thread created, total = %drn”, + WRK_SysThreadCount); 4) 在PspCreateThread函数中添加相应信息打印代码:DbgPrint(“Application thread created, total = %drn”, + WRK_AppThreadCount)。重新编译WRK内核, 放入虚拟机c:windowssystem32下并重新加载、调试,在WinDbg中会出现下图所示的类似信息。图11四、实验分析WaitBlockList是等待对象循环队列的列表头,每一个等待对象都有一个指向下一个对象的指针(NextWaitBlock)。通过观察线程等待的同步对象QueueObject,查看其中的WaitListEntry,可以找到队列中所有等待线程。五、所遇问题及解决方法本次实验建立在实验一基础上,改变源代码中的程序,然后将编译好的exe文件直接拷入虚拟机运行即可得到结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值