进程的创建实验报告_第1页
进程的创建实验报告_第2页
进程的创建实验报告_第3页
进程的创建实验报告_第4页
进程的创建实验报告_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、操作系统实验报告课程名称操作系统实验实验项目名称进程的创建学号班级20100612姓名专业计算机科学与技术学生所在学院计算机科学与技术指导教师实验室名称地点计算机基础第七实验室21B475哈尔滨工程大学计算机科学与技术学院、实验概述实验名称进程的创建实验目的练习使用EOSAPI函数CreateProcess创建一个进程,掌握创建进程的方法,理解进程和程序的区别。(2)调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。实验类型验证性实验实验内容准备实验练习使用控制台命令创建EOS应练习的方式让应用程序创建另一个应用程序的进程调试Create调试Cre

2、atecess函数二、实验环境E0操作系统三、实验过程调试PsCreateProcess函数:调试进程控制块的创建过程调试初始化进程控制块中各个成员变量的过程设计思路和流稈图算法实现需要解决的问题及解答(1)在源代码文件NewTwoProc.c提供的源代码基础上进行修改,要求使用hello.exe同时创建10个进程。提示:可以使用PROCESS_INFORMA类型定义一个有10个元素的数组,每一个元素对应一个进程。使用一个循环创建10个子进程,然后再使用一个循环等待10个子进程结束,得到退出码后关闭句柄。答:后文中,有此题解决方案。尝试根据之前对PsCreateProcess函数和PspCre

3、ateProcessEnvironment函数执行过程的跟踪调试,绘制一幅进程创建过程的流程图。在PsCreateProcess函数中调用了PspCreateProcessEnvironment函数后又先后调用了PspLoadProcessImage和PspCreateThread函数,学习这些函数的主要功能。能够交换这些函数被调用的顺序吗?思考其中的原因。答:PspCreateProcessEnvironment的主要功能是创建进程控制块并且为进程创建了地址空间和分配了句柄表。PspLoadProcessImage是将进程的可执行映像加载到了进程的地址空间中。PspCreateThread创

4、建了进程的主线程。这三个函数被调用的顺序是不能够改变的就向上面描述的加载可执行映像之前必须已经为进程创建了地址空间这样才能够确定可执行映像可以被加载到内存的什么位置在创建主线程之前必须已经加载了可执行映像这样主线程才能够知道自己要从哪里开始执行,执行哪些指令。因此不能交换他们的顺序。主要数据结构、实现代码及其说明主要使用PROCESS_INFORMAT类型定义一个有10个元素的数组,每一个元素对应一个进程。使用一个循环创建10个子进程,然后再使用一个循环等待10个子进程结束,得到退出码后关闭句柄。源程序并附上注释使用hello.exe同时创建10个进程的原代码及注释如下:#includeEOS

5、App.h/main函数参数的意义:/argc-argv数组的长度,大小至少为1,argc-1为命令行参数的数量。/argv-字符串指针数组,数组长度为命令行参数个数+1。其中argv0固定指向当前/进程所执行的可执行文件的路径字符串,argv1及其后面的指针指向各个命令行/参数。/例如通过命令行内容a:hello.exe-a-b启动进程后,hello.exe的main函/数的参数argc的值为3,argv0指向字符串a:hello.exe,argv1指向/参数字符串-a,argv2指向参数字符串-main(intargc,char*argv)/启动调试EOS应用程序前要特别注意下面

6、的问题:/1、如果要在调试应用程序时能够调试进入内核并显示对应的源码,/必须使用EOS核心项目编译生成完全版本的SDK文件夹,然/后使用此文件夹覆盖应用程序项目中的SDK文件夹,并且EOS/核心项目在磁盘上的位置不能改变。/2、在启动调试应用程序之前必须首先删除/禁用所有的断点,在断/点中断(int3)被命中后才能重新添加/启用断点,否则启动/调试会失败。STARTUPINFOStartupInfo;PROCESS_INFORMATIONProcInfo10;ULONGulExitCode;/子进程退出码INTnResult=0;/main函数返回值。0表示成功,非0表示失败。inti,j;#

7、ifdef_DEBUG/_asm(int$3nnop);#endifprintf(Create10processesandwaitfortheprocessesexit.nn);/使子进程和父进程使用相同的标准句柄。StartupInfo.StdInput=GetStdHandle(STD_INPUT_HANDLE);Startuplnfo.StdOutput=GetStdHandle(STD_OUTPUT_HANDLE);StartupInfo.StdError=GetStdHandle(STD_ERROR_HANDLE);/为一个应用程序同时创建10个子进程。for(i=0;i10;i+)

8、if(CreateProcess(A:Hello.exe,NULL,0,&StartupInfo,&ProcInfoi);elsefor(j=0;ji;j+)WaitForSingleObject(Proclnfoj.ProcessHandle,INFINITE);/得到并输出子进程的退出码。GetExitCodeProcess(ProcInfoj.ProcessHandle,&ulExitCode);printf(nTheprocess%dexitwith%d.n,j,ulExitCode);/关闭不再使用的句柄。CloseHandle(Proclnfoj.ProcessHandle);Cl

9、oseHandle(Proclnfoj.ThreadHandle);printf(CreateProcessFailed,Errorcode:0 x%X.n,GetLastError();nResult=1;returnnResult;for(i=0;i10;i+)/创建子进程成功,等待子进程运行结束。WaitForSingleObject(ProcInfoi.ProcessHandle,INFINITE);/得到并输出子进程的退出码。GetExitCodeProcess(Proclnfoi.ProcessHandle,&ulExitCode);for(i=0;iPas=MmCreatePro

10、cessAddressSpace();添加一个断点。按F5继续调试,到此断点处中断。按F1C执行此行代码后中断。在“监视”窗口中查看进程控制块的成员变量Pas的值已经不再是0。说明已经初始化了进程的4G虚拟地址空间。监视4x输出名称PrifiiarvTiu-eadOkO,=lext=30Pre-r=OidOSyslvh=OkO,Priority-OkOPas=OxBO3b6e3,ubftetTabl=Oku,ThgdiLittHoM-I*Kt-0也Irer二00口蓉期sm叠=UxOCmdLin-CkO.=0 x0Imageiiitry-g営电肛珂讥OaeCjiStdDutpul-OiiOjSt

11、dErrorQ疏E;ExjiCude-OxCkll制作轶盘谯像.正在洁功Virtual比.八疔439使用F10一步步调试PspCreateProcessEnvironment函数中后面的代码,在调试的过程中根据执行的源代码,查看“监视”窗口中*NewProcess表达式的值结果如下:李崇壳5:)&第三讲kdoliieReader,P,*easapp一Teva.若称WtwPrctss调诃制作软盘阖正在洁功VirtualK.幵始調试输出tarn=AtOj.Priority=0 x8,Pg0i802be8,Objictltble=0 x603fC2a,TkradListHead=fNext-0 x0

12、,frev=UartJLPrioaryThread-OwDiaitListHeed=hl1気砂结果11氧査找日-OkQ#Cmdline二0 x0,司输出N斷点IQ调月堆栈联绪行483LrnUxUj,Im&.gEnUry=0,Stdlnpu*:=0 x0StOutput二0 x0,Stdlrror-叮idJExi(Code=0 x0fL李翥亮5;缶第三曲了IAdobeReid.-.警epsapp-T,密lab3EJ.1.监视k冥输出LSy-Ei-in-OacO.调试*N*wFrocftiEPriority-OxB,Fas二OKSOSfbeeSjObj*c+T.bl40h303:OxgFu=Ox.

13、i(制企软整礁像正-比启动VirtualPC.开始调试+ThreidLiEtHtai=Next=Dxa33fbT住,Prv=0st803bTLPrimaryThread-Qbtg屮乩让电心詔=Next=OkO,1|甲查蝮聖1冋查找第hImagetfame二DxOCmLine-0 x3-DhOj,V沏出二眇点注训冃理壮就绪a47ImftgEntry=0,Stdlnjiut=血匕St-dOn+pil-t=OhO,StdError-OIkO,ExitCdde=U0亮(D)缶第三讲jf1AdobeKe,.朝“sapp-.尅laV3截医.轄Microsof.axax输出名称*HiwFr0ctiiSystwii=OxOjFricrity=Qx6,Ez=OfiOattS,OhctTdl=Dxffi3Fc2ThratdLiitBiad=Uawt-OwSOSfbTFi:,Prev=0 xStJ3b7cXtl凋区制作软蛊演像正右启动VirtualPC开始调试Fydim册聖Thu氧心=003HutLislHstd=Went-OiSOSftSOB,Prer=XCBfbSM,IntNuiit!-OnClOOfLOaOA:EQSAw.,CndLine=OkO,InChdJ#Inig&Entry=0 x0,StdOutpiit-CbibStdError=DicOElitCode=0 x031AdobeR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论