版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度离婚协议书详述财产分配与子女抚养细节及责任2篇
- 《大学生职业生涯规划预就业指导》课件-第16章 职业岗位定位-
- 2025年福建货运从业资格证模拟试题题库及答案大全
- 2024年标准股权转让与回购协议版B版
- 2025年南昌b2从业资格证模拟考试题目
- 2025年百色货运从业资格证模拟考试题
- 第2日:《海底两万里》阅读解析版
- 暑期作业03:字音字形+词语运用+名句默写(解析版)
- 2024年甲乙双方关于多功能智能净水设备维护及技术支持服务合同
- 2024全新医疗设备搬运工安全搬运合同下载3篇
- 部编版语文八年级上学期《期末检测试卷》及答案解析
- 女性学:女性精神在现代社会中的挑战学习通超星期末考试答案章节答案2024年
- 《孟子》精读学习通超星期末考试答案章节答案2024年
- 2024年度人教版七年级数学上册第三章一元一次方程专题测评试卷(详解版)
- 幼儿园物品采购合同模板
- 药店换证自查报告
- 自贡市重点中学2025届高二数学第一学期期末统考试题含解析
- 数学论文往哪投稿
- 中班晚安大猩猩文档
- 口腔科护士进修
- 2024年低压电工证理论考试题库及答案
评论
0/150
提交评论