1 / 21

Windows 进程与线程实验

Windows 进程与线程实验. 操作系统课程组. 内容提要. 实验一:观察进程线程的相关数据结构 实验二:线程的同步与互斥. 实验一:观察进程线程的相关数据结构. 实验目的 通过 WinDbg 观察进程线程的相关数据结构,加深对 Windows 进程线程结构和相关概念的理解。 实验内容 观察执行体进程块 (EPROCESS) 观察内核进程块 (KPROCESS) 观察系统中的正在运行的进程 观察进程的相关信息 观察线程的相关信息 观察某个未知的对象. 实验一:观察进程线程的相关数据结构. 预备知识 Windows 进程线程的相关数据.

gail-martin
Download Presentation

Windows 进程与线程实验

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Windows进程与线程实验 操作系统课程组

  2. 内容提要 • 实验一:观察进程线程的相关数据结构 • 实验二:线程的同步与互斥

  3. 实验一:观察进程线程的相关数据结构 • 实验目的 • 通过WinDbg观察进程线程的相关数据结构,加深对Windows进程线程结构和相关概念的理解。 • 实验内容 • 观察执行体进程块(EPROCESS) • 观察内核进程块(KPROCESS) • 观察系统中的正在运行的进程 • 观察进程的相关信息 • 观察线程的相关信息 • 观察某个未知的对象

  4. 实验一:观察进程线程的相关数据结构 • 预备知识 • Windows进程线程的相关数据

  5. Kernel Process Block (or PCB) EPROCESS Process ID Parent Process ID Exit Status Create and Exit Time EPROCESS Next Process Block Quota Block Memory Management Information Exception Port Debugger Port Primary Access Token Handle Table Process Environment Block Image File Name Image Base Address Process Priority Class Win32 Process Block 实验一:观察进程线程的相关数据结构 • EPPEOCESS结构

  6. KPROCESS Dispatcher Header Process Page Directory Kernel Time User Time Inwwap/Outswap List Entry . . . KTHREAD Process Spin Lock Processor Affinity Resident Kernel Stack Count Process Base Priority Default Thread Quantum Process State Thread Seed Disable Boost Flag 实验一:观察进程线程的相关数据结构 • KPROCESS结构

  7. ETHREAD KTHREAD Create and Exit Time Process ID EPROCESS Thread Start Address Access Token Impersonation Information LPC Message Information Timer Information Pending I/O Requests 实验一:观察进程线程的相关数据结构 • ETHREAD结构

  8. KTHREAD 实验一:观察进程线程的相关数据结构 • KTHREAD结构

  9. 实验一:观察进程线程的相关数据结构 • 实验步骤 • 启动WRK到内核调试模式

  10. 实验一:观察进程线程的相关数据结构 • 查看执行体进程块(EPROCESS) • 键入命令“dt _eprocess”或“dt _EPROCESS”

  11. 实验一:观察进程线程的相关数据结构 • 查看内核进程块(KPROCESS) • 键入命令“ dt _kprocess ”或“dt _KPROCESS”

  12. 实验一:观察进程线程的相关数据结构 • 查看系统中的正在运行的进程 • 键入命令“!process 0 0”

  13. 实验一:观察进程线程的相关数据结构 • 查看进程的相关信息 • 键入命令“!process 813b6770 1”(813b6770是被观察进程的地址)

  14. 实验一:观察进程线程的相关数据结构 • 查看线程的相关信息 • Step1: 输入命令“!process 0464 2”

  15. 实验一:观察进程线程的相关数据结构 • Step2:键入命令“!thread 81221db 0”和“!thread 81221db0 6”

  16. 实验一:观察进程线程的相关数据结构 • 查看某个未知的对象 • 用“!Object address”来查看此地址的对象信息。例: 更过实验信息参见《实验一:观察进程线程的相关数据结构(实验指导)》

  17. 实验二:线程的同步与互斥 • 实验目的 • 通过WinDbg观察线程的同步和互斥过程,加深对同步和互斥问题的理解。 • 实验内容 • 编写生产者消费者模拟程序 • 在WRK平台下观察线程的同步互斥过程 • 分析结果

  18. 实验二:线程的同步与互斥 • 问题阐述 • 生产者和消费者问题 生产者进程的功能:生产东西,供消费者消费; 消费者进程的功能:消费生产者生产的东西。

  19. 实验二:线程的同步与互斥 • 生产者和消费者P、V操作描述 生产者: P(生产者的信号量) //如果P操作之后此值小于0,那么不可以继续执行 P(互斥体状态) //如果临界区没被占用,就可以继续执行 生产1个产品 V(互斥体状态) //释放已占的临界区 V(消费者的信号量) //消费者可消费的个数增加1 消费者: P(消费者的信号量) //如果P操作之后此值小于0,那么不可以继续执行 P(互斥体状态) //如果临界区没被占用,就可以继续执行 消费1个产品 V(互斥体状态) //释放已占的临界区 V(生产者的信号量) //生产者可生产的个数增加1

  20. 实验二:线程的同步与互斥 • 编写模拟程序 • 使用VC6.0编写代码模拟生产者和消费者(参考代码保存在 “..\ Source code\testthread.cpp文件中)。 • 编译并运行

  21. 实验二:线程的同步与互斥 • 在WRK平台下观察结果 • 将编译好的程序(exe文件)拷贝到虚拟机与宿主机的共享目录(D:\WRK-v1.2)下,以便在虚拟机上也可以直接运行 • 运行程序,并使用Break命令停止虚拟机运行,用WinDbg进行观察。 更多信息参见《实验二:线程的同步与互斥(实验指导)》

More Related