第三章进程管理实验3.1实验概述进程管理实验包括进程创建和进程.docVIP

第三章进程管理实验3.1实验概述进程管理实验包括进程创建和进程.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章进程管理实验3.1实验概述进程管理实验包括进程创建和进程

第三章 进程管理实验 3.1 实验概述 进程管理实验包括进程创建和进程终止两部分。进程创建实验分析了进程创建过程和Windows API中CreateProcess函数对内核函数的调用过程。进程终止实验分析了进程终止过程,并修改内核代码,调整系统进程终止行为。 3.2进程创建 3.2.1 进程创建分析 进程创建过程中需要完成一些内核数据结构初始化,包括EPROCESS,PCB和PEB等。 每一个Windows进程都有一个执行体进程块(EPROCESS),执行体进程块描述进程的基本信息,并指向其他与进程控制相关的数据结构。如图3-1为EPROCESS的结构图: 图 3-1 EPROCESS的结构 内核进程块的核心进程块(Kernel Process Block 或者叫PCB)和进程环境块(PEB)也包含很多用于线程调度的相关信息,它们的结构如图 3-2 和图 3-3所示: 图 3-2 核心进程块(PCB)的结构 Kernel Time是内核时间;User Time是用户时间;Process State是进程状态;Process Page Directory是进程页目录;Process Base Priority是进程的基本优先级。 图 3-3 进程环境块(PEB)的结构 Image Base Address是映像基地址;Module List是模块列表;Thread-Local Storage Data是线程局部存储区数据;Code Page Data是代码页数据;Image Version Information是映像版本信息。 Windows环境进程的创建包括以下几个步骤: 打开EXE文件,创建局部的段对象; 创建Windows执行体进程对象; 创建和初始化主线程(包括栈、上下文、执行体线程块对象的创建); 通知Windows子系统新的进程已经创建,系统为新的进程运行设置环境; 开始执行初始线程(如果在创建进程的时候使用了CREATE_SUSPENDED标志,那么就挂起主线程); 在新的进程和线程的上下文中,完成地址空间的初始化(如动态链接库的加载等)和开始执行程序。 如图 3-4所示为进程创建过程图。 图 3-4进程创建过程图 3.2.2 关键代码分析 3.2.2.1 Stage2: 创建进程内核对象NtCreateProcessNtCreateProcessExPspCreateProcess创建进程内核对象设置EPROCESSLine 1108 ps\create.c //创建EPROCESSStatus = ObCreateObject (PreviousMode, PsProcessType, ObjectAttributes, PreviousMode, NULL, sizeof (EPROCESS), 0, 0, Process); if (!NT_SUCCESS (Status)) { goto exit_and_deref_parent; } //把EPROCESS结构初始化为0。 // 初始化进程锁。 // 初始化进程的线程列表。 // RtlZeroMemory (Process, sizeof(EPROCESS)); ExInitializeRundownProtection (Process-RundownProtect); PspInitializeProcessLock (Process); InitializeListHead (Process-ThreadListHead); (2)创建进程地址空间进程的地址空间分为4种Boot Process :进程地址空间在内存初始化时被分配。Parent is not specified; System Process:系统地址空间User Process (Cloned Address Space): 从指定的进程复制的User Process (New Image Address Space): 新的Line 1366 ps\create.c //用户进程 (新的地址空间). Status = MmInitializeProcessAddressSpace (Process,

文档评论(0)

busuanzi + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档