Windows进程冻结与恢复方法及其实验教学探索.docVIP

Windows进程冻结与恢复方法及其实验教学探索.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文档。上传文档
查看更多
Windows进程冻结与恢复方法及其实验教学探索   摘要:本文在分析进程冻结与恢复所涉及的相关知识点基础上,给出了基于WRK(Windows Research Kernel)实现Windows进程冻结与恢复的技术方案。通过将相关知识点按照相关性和难度分类,设计并实施了一种基于研究性学习法的教学方式,使学生变被动学习为主动学习,提高了综合分析能力和动手能力,取得了满意的教学效果。   关键词:WRK;进程;实验教学   中图分类号:G642 文献标识码:B      1引言      在现代操作系统中,完整的进程概念不仅表示一个运行程序,实际上包括了处理器、内存、文件、外设等程序运行时可能涉及的各种“资源”,当然也隐含了运行中的程序如何与内核“打交道”的相互调用问题。因此,围绕进程的概念展开实验内容的安排有助于学生系统了解“进程”在各实用操作系统中的具体实现方式,从抽象到具体,经过理解消化后,再转化为学生自己理解的“抽象”,最终达到系统化掌握各知识点的培养目标。   将一个系统中的进程冻结到外存,或通过网络传输到别的机器,然后在必要的时候再恢复其运行,需要涉及到除进程调度之外的几乎所有操作系统核心知识点,因此不仅适用于对“操作系统”课程的实验教学,而且可应用于进程中间状态保存、进程在分布式环境中迁移以平衡负载等实际应用,所以具有很好的教学和应用研究价值。   将业界广泛应用的实用操作系统Solaris、Linux和Windows内核应用于“操作系统”课程实验已经得到了国内诸多知名高校的认同。   由于Windows NT在最初设计时采用的就是适用于多CPU、大内存的1对1线程模型,因此,尽管Linux和Solaris都在新版本中逐步向这一模型靠近,但在模型实现方面都没有Windows清晰。   微软推出的用于教学和科研目的的WRK(Windows Research Kernel),提供了大部分内核源代码,相应配备的Windbg工具,以及配套教学资料,也为学习和研究Windows内核提供了强有力的支持。   本文基于WRK及其相关的教学材料,通过将进程冻结和恢复时需要解决的问题按内容和难度分类,设计了相关的实验模块和学习步骤,使学生通过研究性学习法完成力所能及的实验内容,变被动学习为主动学习,提高了综合分析能力和动手能力,取得了满意的教学效果。      2技术方案的设计      要将一个已有的进程冻结,可以从用户态应用程序中调用系统提供的API完成,也可通过在内核中添加自己的系统调用完成相应功能。前者依赖于系统的提供的API,功能相对受限,实验难度相对容易控制,文献[9]介绍了一种此类实现方法。我们选择了后一种方案,相对来说实现比较灵活,但对学生来说实验工作量相对较大。   2.1进程冻结涉及的内容   进程冻结时需要处理的内容可分为两大类:一类是进程/线程自身特有的程序和数据,不涉及别的进程,因此只要按一定的格式保存到外存,然后释放内存资源即可。另一类是共享资源,包括内核同步工具、共享数据等。对于这类数据,需要根据其具体作用分析如何使进程/线程与其“脱钩”。“脱钩”有两个步骤,一是恢复时共享数据/对象的状态,是直接保存到时恢复,还是到时根据具体情况创建一个新的对象然后设置成一定的状态;二是共享数据/对象的用户数减1,用户数为零时释放资源。   第一类私有数据主要用于表示进程和线程及其运行上下文,包括EPROCESS、KPROCESS、PEB、ETHREAD、KTHREAD、TEB、VAD、页表等数据结构,另外,还包括进程各线程已经运行产生的相关中间数据,如堆、栈、数据段、运行环境等。如果启用了交换功能,还要考虑进程在交换空间的数据。   第二类共享数据主要包括进程所用到的各种共享内核对象,如session、mutex、socket等,也包括共享数据,DLL映射等信息。这类信息都可通过第一类内核对象中的指针找到。   2.2保存格式与恢复运行   设计保存格式的主要目的是能够在恢复时将当初保存的数据“识别”出来。有两种办法。   第一种是没有特别的格式表示,恢复程序按照保存数据结构的顺序依次读出即可。这种方式的缺点的要求保存与恢复一一对应,只能一个写入程序对一个读出程序。在学生一个人做尝试实验时可这样完成。   对于需要由多个同学协作完成的实验,显然不能采用以上方式。为此,我们设计了借鉴文件系统的实现方式,设计了一种“通用”的记录格式。如图1所示。      其中单元总长度是整型,占4个字节,表示一个数据单元的总的长度;类型名表示本数据单元所存储数据的类型,字符串,占10个字节,它通常是结构名称,如EPROCESS、datapage(数据页)等。数据表示单元中要保存的数据,实

文档评论(0)

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

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

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档