欢迎来到天天文库
浏览记录
ID:863688
大小:431.53 KB
页数:27页
时间:2017-09-21
《操作系统优秀课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、目录第一章基本原理1$1.1代码中涉及的概念1$1.2各个文件的作用2第二章功能实现4$2.1各个函数的功能4$2.1.1必读函数CreateProcess4$2.1.2ProcessInfo.cpp中各个主要的函数作用5$2.2功能5$2.3界面显示6第三章实现9$3.1代码精读ProcessInfo.cpp9$3.2代码精读ToolHelp.cpp19第四章实验心得27第一章基本原理$1.1代码中涉及的概念ProcessInfo应用程序中主要是运用了Toolhelp函数来实现的。关于ToolHelp后面会具体写到。下面先写一下我在读代码时遇到的一些陌生的概念。1.进程在《操作系统
2、》中进程(process)的定义是指一个程序在给定数据集合上的一次执行过程,是系统进行资源分配和运行调度的独立单位。3内核对象每个内核对象只是内核分配的一个内存块,并且只能由该内核访问。该内存块是一种数据结构,它的成员负责维护该对象的各种信息。有些数据成员(如安全性描述符、使用计数等)在所有对象类型中是相同的,但大多数数据成员属于特定的对象类型。例如,进程对象有一个进程ID、一个基本优先级和一个退出代码,而文件对象则拥有一个字节位移、一个共享模式和一个打开模式。当调用一个用于创建内核对象的函数时,该函数就返回一个用于标识该对象的句柄。为了使操作系统变得更加健壮,这些句柄值是与进程密切
3、相关的。内核对象句柄,是用来标识某个内核对象的一个ID 同一个对象的该id对于每个进程是不同的。4快照定义:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。作用:为存储用户提供了另外一个数据访问通道,当原数据进行在线应用处理时,用户可以访问快照数据,还可以利用快照进行测试等工作。5模块为完成某一功能所需的一段程序或子程序;或指能由编译程序、装配程序等处理的独立程序单位;或指大型软件系统的一部分。6线程线程(thread)是"进程"中某个单一顺序的控制流。一个标准的线程由线程ID
4、,当前指令指针(PC),寄存器集合和堆栈组成。在多线程OS中,通常是在一个进程中包括多个线程,每个线程都是作为利用CPU的基本单位,是花费最小开销的实体。7堆栈在程序中,堆用于动态分配和释放程序所使用的对象。在以下情况中调用堆操作: 1.事先不知道程序所需对象的数量和大小。 2.对象太大,不适合使用堆栈分配器。3.堆使用运行期间分配给代码和堆栈以外的部分内存。$1.2数据类型在Windows应用程序设计中,既可以使用C的基本数据类型,也可以使用Windows自定义的数据类型,但是要注意的是,Windows自定义的数据类型的关键字都要大写。具体的数据类型可以在VC++中右击“got
5、oDefinition”查看。$1.2各个文件的作用一般而言,每个C++/C程序通常由头文件(headerfiles)和定义文件(definitionfiles)组成。头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的声明(declaration),而定义文件用于保存程序的实现(implementation)。在ProcessInfo示例中:ProcessInfo.cpp是定义文件,ToolHelp.hResource.hCmnHdr.h都是头文件。下面依次讲解各个文件1CmnHdr.h所有范例程序皆在引入其他标头档前将CmnHdr.h标头档引入。该文件包含了巨集码、
6、连结器的指示词以及其他贯穿所有范例应用程序的常见程序代码。当想尝试某些不同的东西时,需要做的事就是修改CmnHdr.h,然后重新建置所有范例应用程序。2ToolHelp.hProcessInfo应用程序中主要是运用了Toolhelp函数来实现的。作者用C++类封装了一个ToolHelp快照。使得调用ToolHelp变得更容易一些。4ProcessInfo.cpp程序实现的主文件,代码实现中会具体分析。第二章功能描述$2.1各个函数的功能$2.1.1必读函数CreateProcess要想显示一个进程的信息,就必须要知道这个进程是怎样被创建的。进程通常被定义为一个正在运行的程序的实例,它
7、由两个部分组成:1.一个是操作系统用来管理进程的内核对象。内核对象也是系统用来存放关于进程的统计信息的地方。2.另一个是地址空间,它包含所有可执行模块或DLL模块的代码和数据。它还包含动态内存分配的空间。如线程堆栈和堆分配空间。BOOLCreateProcess(PCTSTRpszApplicationName, //pszApplicationName指定要创建进程的应用程序名,如在此设置需要全名 PTSTRpszCommandLine, //需要创建
此文档下载收益归作者所有