2022年操作系统实验三进程的创建 .pdf
《2022年操作系统实验三进程的创建 .pdf》由会员分享,可在线阅读,更多相关《2022年操作系统实验三进程的创建 .pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、操作系统实验报告课程名称操作系统实验课程编号0920311 实验项目名称进程的创建学号年级2011级姓名专业软件工程学生所在学院软件学院指导教师王红滨实验室名称地点软件工程实验室21B282 哈尔滨工程大学软件学院名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 15 页 - - - - - - - - - 1 第一讲实验环境的使用一、实验概述1. 实验名称进程的创建2. 实验目的练习使用 EOS API 函数 CreateProcess 创建一个进程,掌握创建进程的方法,
2、理解进程和程序的区别。调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。3. 实验类型(验证、设计)验证4. 实验内容准备实验练习使用控制台命令创建EOS应用程序的进程练习通过编程的方式让应用程序创建另一个应用程序的进程调试CreateProcess 函数调试PsCreateProcess 函数练习通过编程的方式创建应用程序的多个进程名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 15 页 - - - - - - - - -
3、2 二、实验环境操作系统: windows xp 编译环境: OS Lab 语言:汇编语言、 C 语言三、实验过程(每次实验不一定下面6 条都写,根据实际情况定)1.设计思路和流程图失败成功main 函数开始定义调用 CreateProcess函数需要使用的结构体变量(包括STARTUPINFO 和PROCESS_INFORMA TION 结构体)调用三次 GetStdHandle 函数获取父进程的标准输入、输出、错误句柄,赋值给STARTUPINFO 结构体变量的对应成员调用 CreateProcess函数创建软盘中应用程序 Hello.exe 的进程创建成功?调用 WaitForSingl
4、eObject函数等待子进程结束调用 GetExitCodeProcess 函数得到子进的退出码,并将退出码打印输出调用 GetLastError 函数得到错误码,并将错误码打印输出将 main 函数的返回值设置为非 0,表示应用程序执行失败名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 15 页 - - - - - - - - - 3 main 函数流程图2. 需要解决的问题及解答(1)在源代码文件NewTwoProc.c 提供的源代码基础上进行修改,要求使用hello
5、.exe同时创建 10 个进程。提示:可以使用PROCESS_INFORMATION 类型定义一个有 10 个元素的数组,每一个元素对应一个进程。使用一个循环创建10个子进程, 然后再使用一个循环等待10 个子进程结束, 得到退出码后关闭句柄。答:后文中,有此题解决方案。尝试根据之前对 PsCreateProcess 函数和 PspCreateProcessEnvironment 函数执行过程的跟踪调试,绘制一幅进程创建过程的流程图。调用 CloseHandle 函数关闭子进程句柄和子进程的主线程句柄main 函数返回开始创建进程的地址空间创建进程控制块为进程创建了地址空间为进程分配了句柄表P
6、sploadprocessImage 是将进程的可执行映像加载到了进程的地址空间中名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 15 页 - - - - - - - - - 4 (3)在 PsCreateProcess 函数中调用了 PspCreateProcessEnvironment 函数后又先后调用了 PspLoadProcessImage 和 PspCreateThread 函数,学习这些函数的主要功能。能够交换这些函数被调用的顺序吗?思考其中的原因。答:Psp
7、CreateProcessEnvironment 的主要功能是创建进程控制块并且为进程创建了地址空间和分配了句柄表。PspLoadProcessImage是将进程的可执行映像加载到了进程的地址空间中。PspCreateThread创建了进程的主线程。这三个函数被调用的顺序是不能够改变的就向上面描述的加载可执行映像之前必须已经为进程创建了地址空间这样才能够确定可执行映像可以被加载到内存的什么位置在创建主线程之前必须已经加载了可执行映像这样主线程才能够知道自己要从哪里开始执行,执行哪些指令。因此不能交换他们的顺序。3.主要数据结构、实现代码及其说明主要定义一个有10 个元素的数组,每一个元素对应一
8、个进程。使用一个循环创建 10个子进程,然后再使用一个循环等待10 个子进程结束, 得到退出码后关闭句柄4.源程序并附上注释#include EOSApp.h / / main 函数参数的意义:/ argc - argv 数组的长度,大小至少为1,argc - 1 为命令行参数的数量。/ argv - 字符串指针数组,数组长度为命令行参数个数+ 1。其中 argv0 固定指向当前/ 进程所执行的可执行文件的路径字符串,argv1 及其后面的指针指向各个命令行/ 参数。PspCreateThread 创建了进程的主线程结束名师资料总结 - - -精品资料欢迎下载 - - - - - - - -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年操作系统实验三进程的创建 2022 操作系统 实验 进程 创建
限制150内