欢迎来到天天文库
浏览记录
ID:46218226
大小:98.64 KB
页数:55页
时间:2019-11-21
《计算机操作系统实验指导书(下)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验一进程的创建于撤销本实验有两题,可选择其中的一题。第一题进程的创建于撤销一、实验目的1.加深对进程概念的理解和进程创建与撤消算法;2.进一步认识并发执行的实质。二、实验内容1•进程管理认识:通过windows“任务管理器”观察进程的状态,进行进程的创建、切换和撤销。2.进程创建与撤销:通过系统调用编程实现进程的创建与撤销功能,并在屏幕上观察进程活动的结果。三、背景知识1•创建进程:CreateProcess()调用的核心参数是可执彳亍文件运彳亍时的文件名及其命令行•表1・1详细地列出了每个参数的类型和名称。表1JCreateProcess()畅数的参数参数名称使用目的LPCTS
2、TRlpApplivationName全部或部分地指明包括可执行代码的EXE文件的文件名I.PCTSTRlpCommandLine向可执行文件发送的参数LPSECURIITYATTRIBUTES返回进程句柄的安全屈性.主要指明这一句柄是否应该由其他IpProcessAttributes子进程所继承LPSECURIITYATTRIBUTESlpThreadAttributes返冋进程的主线程的句柄的安全属性BOOLblnheritHcindle—-种标志,告诉系统允许新进程继承创建者进程的句柄DWORDdwCreationF1age特殊的创建标志(如CREATESUSPENDED)的
3、位标记LPVOIDIpEnv让onment向新进程发送的一套环境变量;如为null值则发送调用者环境LPCTSTRIpCurrentDirectory新进程的启动目录STARTUPINFOlpStartuplnfoSTARTUPINT'O结构,包括新进程的输入和输出配置的详惜LPPROCESSINFORMATIONlpProcesslnformation调用的结果块;发送新应用程序的进程和主线程的句柄和ID可以指定第一个参数,即应用程序的名称,其中包括相对于当而进程的当前廿录的全路径或者利用搜索方法找到的路径;IpCommandLine参数允许调用者向新应用程序发送数据;接下来的三
4、个参数与进程和它的主线程以及返冋的指向该对象的句柄的安全性有关。然后是标志参数,用以在dwCreationFlags参数中指明系统应该给予新进程什么行为.经常'使用的标志是CREATE.SUSPNDED,告诉主线程立刻暂停.当准备好时,应该使用ResumeThread()API来启动进程.另一个常用的标志是CREATE_NEW_CONSOLE,告诉新进程启动自己的控制台窗口,而不是利用父窗口.这一参数还允许设置进程的优先级,用以向系统指明,相对于系统中所有其他的活动进程来说,给此进程多少CPU时间。接着是CreateProcessO函数调用所需要的三个通常使用缺省值的参数.第一个参
5、数是IpEnvironment参数,指明为新进程提供的环境;第二个参数是IpCurrentDirectory,可用于向主创进程发送与缺省目录不同的新进程使用的特殊的当前FI录;第三个参数是STARTUPINFO数据结构所必需的,用于在必耍时指明新应用程序的主窗口的外观。CreateProcessO的最后一个参数是用于新进程对象及其主线程的句柄和ID的返回值缓冲区.以PROCESSJNFORMATION结构屮返凹的句柄调用CloseHandle()API函数是重耍的,因为如果不将这些句柄关闭的话,有可能危及主创进程终止Z前的任何未释放的资源。2.终止进程:所有进程都是以调用ExitP
6、rocess()或者TerminateProcess()函数结束的•但最好使用前者而不要使用后者,因为进程是在完成了它的所有的关闭“职责”之后以正常的终止方式来调用前者的.而外部进程通常调用后者即突然终止进程的进行,由于关闭时的途径不太正常,有可能引起错误的行为。TerminateProcess()API函数只要打开带冇PROCESS.TERMINATE访问权的进程对象,就可以终止进程,并向系统返冋指定的代码.这是一种“野蛮”的终止进程的方式,但是有时却是需要的。如果开发人员确实有机会來设计“谋杀”(终止别的进程的进程)和“受害”进程(被终止的进程)时,应该创建一个进程间通讯的内核
7、对象——如一个互斥程序——这样一来,“受害”进程只在等待或周期性地测试它是否应该终I上。四、程序示例#include#includeusingnamespacestd;HANDLEm_hPro;voidstartprocess()//创建进程{STARTUPINFOsi;〃必备的参数设置intn=l;memset(&si,0,sizeof(STARTUPINFO));si.cb=sizeof(STARTUPINFO);si.d
此文档下载收益归作者所有