操作系统实验三进程的创建_第1页
操作系统实验三进程的创建_第2页
操作系统实验三进程的创建_第3页
操作系统实验三进程的创建_第4页
操作系统实验三进程的创建_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、操作系统实验报告课程名称操作系统实验课程编号0920311实验项目名称进程的创建学号年级2011级姓名专业软件工程学生所在学院软件学院指导教师王红滨实验室名称地点软件工程实验室21B282哈尔滨工程大学软件学院第一讲实验环境的使用一、实验概述1 .实验名称进程的创建2 .实验目的练习使用EOSAPI函数CreateProcess创建一个进程,掌握创建进程的方法,理解进程和程序的区别。调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。3 .实验类型(验证、设计)验证4 .实验内容练习使用控制台命令创练习通过编程的方式让应用练习通过编程的方式创建应二、

2、实验环境操作系统:windowsxp编译环境:OSLab语言:汇编语言、C语言三、实验过程(每次实验不一定下面6条都写,根据实际情况定)1 .设计思路和流程图定义调用CreateProcess函数调用三次GetStdHandle函数调用CreateProcess函数创建创建失败成功调用 WaitForSingleObject 函调用 GetLastError 函调用 GetExitCodeProcess 函将main函数的返回值调用CloseHandle函数关闭子main函数返main函数流程图2 .需要解决的问题及解答(1)在源代码文件提供的源代码基础上进行修改,要求使用同时创建10个进程。

3、提示:可以使用PROCESS_INFORMATION定义一个有10个元素的数组,每一个元素对应一个进程。使用一个循环创建10个子进程,然后再使用一个循环等待10个子进程结束,得到退出码后关闭句柄。答:后文中,有此题解决方案。尝试根据之前对PsCreateProcess函数和PspCreateProcessEnvironment函数执行过程的跟踪调试,绘制一幅进程创建过程的流程图。为进程创建了地PsploadprocessImage是将进程的PspCreateThrea(3) 在PsCreateProcess函数中调用了PspCreateProcessEnvironment函数后又先后调用了Ps

4、pLoadProcessImage和PspCreateThread函数,学习这些函数的主要功能。能够交换这些函数被调用的顺序吗思考其中的原因。答:PspCreateProcessEnvironment的主要功能是创建进程控制块并且为进程创建了地址空间和分配了句柄表。PspLoadProcessImage是将进程的可执行映像加载到了进程的地址空间中。PspCreateThread创建了进程的主线程。这三个函数被调用的顺序是不能够改变的就向上面描述的加载可执行映像之前必须已经为进程创建了地址空间这样才能够确定可执行映像可以被加载到内存的什么位置在创建主线程之前必须已经加载了可执行映像这样主线程才能

5、够知道自己要从哪里开始执行,执行哪些指令。因此不能交换他们的顺序3. 主要数据结构、实现代码及其说明主要定义一个有10个元素的数组,每一个元素对应一个进程。使用一个循环创建10个子进程,然后再使用一个循环等待10个子进程结束,得到退出码后关闭句柄4. 源程序并附上注释#include.nn);rocessHandle,INFINITE);for(i=0;i10;i+)if(numi)rocessHandle,&ulExitCode);printf(nTheprocess%dexitwith%d.n,ulExitCode);for(i=0;i10;i+)if(numi)rocessHandle)

6、;CloseHandle(Pi.ThreadHandle);for(i=0;iA:xHello.exeHelLu.iiorld11helio,worldt,el1。,world?IdelIn,ucmld.,tlellaPUDrld*ffiye-byel鞫 He 1 lo . exeexit with QxOOOQOQQQb.查看应用程序创建另一个应用程序的进程的执行结果ctionEdit印iflcppy2elpfcONSOLE-l(FreesCtr1*F1F8tosuitchconsoleuindou.)肘心口岫toEOSshell,科uluiiiiiA;EO3App.txeCreateapr

7、ocessanduaitfortheprocessexit.HeJlaPuorld!1HeJlOjUorld!2HelojuorLdf3Helojbiorldf4HeJlo.uorldT5Bqe-bgTheprocessexituitJi0,h:、EO於ppqxcexituiUiOxOOGOOOOO.c.调试进程控制块的创建过程将鼠标移动到“监视”窗口中此表达式的“值”属性上,会弹出一个临时窗口,在临时窗口中会按照进程控制块的结构显示各个成员变量的值(可以参考PROCESS构体的定义)。由于只是新建了进程控制块,还没有初始化其中成员变量,所以值都为0。d.接下来调试初始化进程控制块中各个成员变

8、量的过程:1 .创建进程的地址空间,即4G虚拟地址空间。在代码行(文件的第437行)NewProcess-Pas=MmCreateProcessAddressSpace();添加一个断点。2 .按F5继续调试,到此断点处中断。3 .按F10执行此行代码后中断。4 .在“监视”窗口中查看进程控制块的成员变量Pas的值已经不再是0。说明已经初始化了进程的4G虚拟地址空间。使用F10一步步调试PspCreateProcessEnvironment函数中后面的代码,在调试的过程中根据执行的源代码,查看“监视”窗口中*NewProcess表达式的值结果如下:监视学N输出名称Ssten-0x0Priflr

9、ity=0H8fFu=口x803668,ObjectTatle-OxBUSTkreadLir+Head=-OxDjhtv=DwO,PtriimaryTluroal=OkOtfELitlistJleai=Haxt-DxOjPrev=0x0,InajtUie=DkO#CmdLixi0x0ZnageBase-。乂0量=0,Stdlr.put-OzO,StdDiztpiit=0x0,StdEitar-CteOjUKitCode=Uxtl类5U调泣制作软盘镜像.正在启动VirtualPC.开始调忒一:输出口断点I曲撕下板监视输出输出二峪上二邈堆电(System=0x0.Priority=0x8,Pas=

10、0x803fb6e8,ObjectTable=0x803fc2a8,ThretdLislHead=Next=0x803fbTfc,Prev=0x803fbTfcjPrimryThread=0x0,WaitListHead=N,xt=OxO,Prev=0x0.ImageName=0x0,CftdLine=0x0,InageB&se=0x0,ImageEntry=0,Stdluput=0x0,StdUixtput=0x0,StdError=0x0,ExitCode=0x0)调试制作轨筮错像正在启动VirtualPC.开婶试.名称NewProcess值=OxO,Priority=0x8,Pas=0x

11、803fb6e8,Object!able=0椀3c2a8ThreadListHead=Next=0x803fb7fC/Prev=0x803fbTfcL.Primarylhread=0x0,WaitListHead=Next=0x803308,Frv=0x003fb300ImageNane=0x0,CmdLine=0x0/ImageBase=0x0/Tmg*Entry=0,Stdlnput=0x0,StdOutpiat=0x0,StdError=0x0,ExitCode=0x0类调试x,也制作软盘镜像It在启动VirtualPC.开始调试.国输出10断点I调用堆核行4sa+i山丘utm(按F5继

12、续执行,EOS内核会为刚刚初始化完毕的进程控制块新建一个进程。激活虚拟机窗口查看新建进程执行的结果。CONSOLE-1 (Press Ctrl+F1F0 to switch console hiindou.) Ucleone to EOS shell Autorun A:EOSApp.exeCreate a process and wait for tlic process exitx . fuarId ucr IdidIdId fuor .war worTheuruccssexituiLliQ.:SEOSApp.exeexituith0x00000000.e.练习通过编程的方式创建应用程序的

13、多个进程使用OSLab打开本实验文件夹中的参考源代码文件,仔细阅读此文件中的源代码。使用文件中的源代码替换EOS应用程序项目中文件内的源代码,生成后启动调试,查看多个进程并发执行的结果。&OSLabPC-VirtualPC2007-XA.ctionEditCDFlpyHelpCOhSOLE-l(TressCtr1+F1F8tosultchconsoleu1ndou.,)lUelearnstoEOSshe11AutorumA:SEOSApp.exeCreatetwoprocessesandunitfortlicprocessesexit.*.Helofuorldf1helloorld!1kielluurldT2helloorld!2faellofuorld!3Ihelio.uiorId.!3faeliojUiorld*4tlellojUioipld!4kiellojUiorldfSHeilauiurId?5Bye-bye?Bye-byefTheprocessoneexitwit

温馨提示

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

评论

0/150

提交评论