《实验一进程控制与描述》由会员分享,可在线阅读,更多相关《实验一进程控制与描述(15页珍藏版)》请在金锄头文库上搜索。
1、操作系统原理实验操作系统原理实验浙江工业大学计算机学院浙江工业大学计算机学院 熊丽荣熊丽荣实验一实验一 进程控制与描述进程控制与描述实验目的:实验目的:w w 利用利用WindowsWindows提供的提供的APIAPI函数,编写程序函数,编写程序 ,实现进程的创建和终止(如创建写字,实现进程的创建和终止(如创建写字 板进程及终止该进程),加深对操作系板进程及终止该进程),加深对操作系 统进程概念的理解,观察操作系统进程统进程概念的理解,观察操作系统进程 运行的动态性能,获得包含多进程的应运行的动态性能,获得包含多进程的应 用程序编程经验。用程序编程经验。w w Windows Windows
2、 所创建的每个进程都从调用所创建的每个进程都从调用CreateProcessCreateProcess() API() API函数开始,该函数的任函数开始,该函数的任务是在对象管理器子系统内初始化进程对务是在对象管理器子系统内初始化进程对象;象;w w 每一进程都以调用每一进程都以调用ExitProcessExitProcess() () 或或TerminateProcessTerminateProcess() API() API函数终止。函数终止。背景知识背景知识进程创建实例进程创建实例BOOL CreateProcess(LPCTSTR lpApplicationName,LPTSTR l
3、pCommandLine,LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags,LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation );各项参数意义各项参数意义w lpApplicationName:指定
4、要执行的模块,包括可执 行代码的EXE文件的文件名。 w lpCommandLine:指向一个以空结尾的串,该串定 义了要执行的命令行。该命令行是可以在Windows 提示符下执行的命令行。 w lpProcessAttributes:指向一个 SECURITY_ATTRIBUTES结构,该结构决定了返 回的句柄是否可被子进程继承。 w lpThreadAttributes:指向一个 SECURITY_ATTRIBUTES结构,该结构决定了返 回的句柄是否可被子进程继承。w bInheritHandles,:表明新进程是否可继承创建 者进程的句柄。 w dwCreationFlags:定义控制
5、优先类和进程创建 的附加标志。 w lpEnvironment:指向一个新进程的环境块。 w lpCurrentDirectory:指向一个以空结尾的串, 该串定义了子进程的当前驱动器和当前目录。 w lpStartupInfo:指向一个STARTUPINFO结构 ,该结构定义了新进程的主窗口将如何显示。 w lpProcessInformation:指向进程信息描述结构 ,该结构接受关于新进程的描述信息。各项参数意义各项参数意义w w 可执行文件运行时的文件名及其命令行,如可执行文件运行时的文件名及其命令行,如 lpCommandLine=“c:windowssystem32cmd.exe“
6、 w w lpStartupInforlpStartupInfor描述新进程的窗口显示情况。定义描述新进程的窗口显示情况。定义 STARTUPINFOSTARTUPINFO结构,并赋予初始值,结构,并赋予初始值, 如:如: STARTUPINFO si;memset(si.cb=sizeof(si); w w lpProcessInformationlpProcessInformation指向进程信息描述结构,接指向进程信息描述结构,接 受关于新进程的描述信息,如:受关于新进程的描述信息,如: PROCESS_INFORMATION piCreateProcessCreateProcess()
7、 () 调用的核心参数调用的核心参数w w 所有进程都是以调用所有进程都是以调用ExitProcessExitProcess() () 或者或者 TerminateProcessTerminateProcess() () 函数结束的。函数结束的。w w TerminateProcessTerminateProcess() API() API函数只要打开带有函数只要打开带有 PROCESS_TERMINATEPROCESS_TERMINATE访问权的进程对象,就访问权的进程对象,就 可以终止进程,并向系统返回指定的代码。可以终止进程,并向系统返回指定的代码。w w 如果不知道所创建进程中所有线程
8、的状态,最好如果不知道所创建进程中所有线程的状态,最好 使用使用TerminateProcessTerminateProcess() () 终止进程。终止进程。终止进程终止进程w w VOID VOID ExitProcessExitProcess( UINT ( UINT uExitCodeuExitCode ); );w wuExitCodeuExitCode in Exit code for the process and all in Exit code for the process and all threads terminated as a result of this cal
9、l. Use the threads terminated as a result of this call. Use the GetExitCodeProcessGetExitCodeProcess function to retrieve the function to retrieve the processs exit value. Use the processs exit value. Use the GetExitCodeThreadGetExitCodeThread function to retrieve a threads exit value.function to re
10、trieve a threads exit value.ExitProcessExitProcess() ()w w BOOL BOOL TerminateProcessTerminateProcess( HANDLE ( HANDLE hProcesshProcess, UINT , UINT uExitCodeuExitCode ); ); w whProcessinhProcessin Handle to the process to Handle to the process to terminate. The handle must have the terminate. The h
11、andle must have the PROCESS_TERMINATE access right.PROCESS_TERMINATE access right.w wuExitCodeinuExitCodein Exit code to be used by the Exit code to be used by the process and threads terminated as a result of process and threads terminated as a result of this call. Value 0 means current process. th
12、is call. Value 0 means current process. TerminateProcessTerminateProcess() ()typedeftypedef structstruct _PROCESS_INFORMATION _PROCESS_INFORMATION HANDLE HANDLE hProcesshProcess; ; / /Handle to the newly created Handle to the newly created process. process. HANDLE HANDLE hThreadhThread; ; /Handle to
13、 the primary /Handle to the primary thread of the newly created process.thread of the newly created process. DWORD DWORD dwProcessIddwProcessId; ; /Value that can be used to /Value that can be used to identify a process. identify a process. DWORD DWORD dwThreadIddwThreadId; ; /Value that can be used
14、 to /Value that can be used to identify a thread.identify a thread. PROCESS_INFORMATION, PROCESS_INFORMATION, *LPPROCESS_INFORMATION; *LPPROCESS_INFORMATION; PROCESS_INFORMATIONPROCESS_INFORMATIONw w 进程的创建和终止。编写一段程序,可以创建一个进程的创建和终止。编写一段程序,可以创建一个进程,并终止当前创建的进程进程,并终止当前创建的进程。试观察记录程序执试观察记录程序执行的结果,并分析原因。行的
15、结果,并分析原因。w w 利用利用VC+6.0VC+6.0实现上述程序设计和调试操作,对于实现上述程序设计和调试操作,对于进程创建的成功与否、终止进程操作的成功与否提进程创建的成功与否、终止进程操作的成功与否提供一定的提示框。供一定的提示框。w w 通过阅读和分析实验程序,学习创建进程、观察进通过阅读和分析实验程序,学习创建进程、观察进程和终止进程的程序设计方法程和终止进程的程序设计方法实验内容与步骤实验内容与步骤w w 在开始本实验之前,请回顾教科书的相关内容在开始本实验之前,请回顾教科书的相关内容w w 需要做以下准备:需要做以下准备:n n一台运行一台运行Windows 2000 /XP
16、 Windows 2000 /XP 操作系统的计算机操作系统的计算机n n计算机中需安装计算机中需安装Visual C+ 6.0Visual C+ 6.0专业版或企业版专业版或企业版工具工具/ /准备工作准备工作思考思考w 系统是怎样创建进程的? w 可执行文件加载时进行了那些处理? w 当首次调用新创建进程时,其入口在那 里?实验报告w 每人独立一组,需要上交实验报告 w 实验报告包括实验目的、实验内容、实验步骤 、实验中遇到的问题及解决方法等。 w 上交程序源代码。 w 源代码和实验报告一并打包后上交,其命名方 式为:班级_学号_姓名.rar(注:只需上交源代码,不需要上交生成的目标 文件及可执行文件。) w 通过EMAIL地址上交: