操作系统课程设计毕业设计.docVIP

  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文档。上传文档
查看更多
目录 第一章基本原理 1 $1.1 代码中涉及的概念 1 $1.2 各个文件的作用 2 第二章功能实现 4 $2.1各个函数的功能 4 $2.1.1 必读函数CreateProcess 4 $2.1.2 ProcessInfo.cpp 中各个主要的函数作用 5 $2.2 功能 5 $2.3 界面显示 6 第三章实现 9 $ 3.1 代码精读 ProcessInfo.cpp 9 $ 3.2 代码精读 ToolHelp.cpp 19 第四章 实验心得 27 第一章基本原理 $1.1 代码中涉及的概念 ProcessInfo应用程序中主要是运用了Toolhelp函数来实现的。关于ToolHelp后面会具体写到。下面先写一下我在读代码时遇到的一些陌生的概念。 1.进程 在《操作系统》中进程(process)的定义是指一个程序在给定数据集合上的一次执行过程,是系统进行资源分配和运行调度的独立单位。 3 内核对象 每个内核对象只是内核分配的一个内存块,并且只能由该内核访问。该内存块是一种数据结构,它的成员负责维护该对象的各种信息。有些数据成员(如安全性描述符、使用计数等)在所有对象类型中是相同的,但大多数数据成员属于特定的对象类型。例如,进程对象有一个进程ID、一个基本优先级和一个退出代码,而文件对象则拥有一个字节位移、一个共享模式和一个打开模式。当调用一个用于创建内核对象的函数时,该函数就返回一个用于标识该对象的句柄。为了使操作系统变得更加健壮,这些句柄值是与进程密切相关的。内核对象句柄,是用来标识某个内核对象的一个ID 同一个对象的该id对于每个进程是不同的定义关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。为存储用户提供了另外一个数据访问通道,当原数据进行在线应用处理时,用户可以访问快照数据,还可以利用快照进行测试等工作为完成某一功能所需的一段程序或子程序;或指能由编译程序、装配程序等处理的独立程序单位;或指大型软件系统的一部分程(thread)是进程中某个单一顺序的控制流。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成在多线程OS中,通常是在一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。在程序中,堆用于动态分配和释放程序所使用的对象。在以下情况中调用堆操作:   1.事先不知道程序所需对象的数量和大小。   2.对象太大,不适合使用堆栈分配器。 堆使用运行期间分配给代码和堆栈以外的部分内存。一般而言,每个C++/C程序通常由头文件(header files)和定义文件(definition files)组成。头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的声明(declaration),而定义文件用于保存程序的实现 (implementation)。Resource.h CmnHdr.h都是头文件。 下面依次讲解各个文件 1 CmnHdr.h 所有范例程序皆在引入其他标头档前将CmnHdr.h标头档引入该文件包含了巨集码、连结器的指示词以及其他贯穿所有范例应用程序的常见程序代码。当想尝试某些不同的东西时,需要做的事就是修改CmnHdr.h,然后重新建置所有范例应用程序。$2.1.1 必读函数CreateProcess 要想显示一个进程的信息,就必须要知道这个进程是怎样被创建的。 进程通常被定义为一个正在运行的程序的实例,它由两个部分组成: 一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。 另一个是地址空间,它包含所有可执行模块或D L L 模块的代码和数据。它还包含动态内存分配的空间。 如线程堆栈和堆分配空间。 BOOL CreateProcess( PCTSTR pszApplicationName, ? //pszApplicationName指定要创建进程的应用程序名,如在此设置需要全名 ?? PTSTR pszCommandLine, ?//需要创建进程的命令行参数,一般第一个字符用来存储应用程序名,不需要全地址 ??PSECURITY_ATTRIBUTES psaProcess, ???//描述进程的可继承特征,为SECURITY_ATTRIBUTES结构体 ???PSECURITY_ATTRIBUTES psaThread, ???//描述主线程的可继承性 ???BOOL bInheritHandles, ???//被创建的进程是否继承当前进程的内核操作权限 ???DWORD fdwCreate, ???//规定如何创建进程 ???PVOID pvEnvironmen

文档评论(0)

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

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

1亿VIP精品文档

相关文档