2017201212李博浩第三讲进程的创建.docxVIP

  • 4
  • 0
  • 约6.03千字
  • 约 14页
  • 2021-07-24 发布于天津
  • 举报
操作系统 实验报告 课程名称 操作系统实验 课程编号 201406412 实验项目名称 进程的创建 学号 2017201212 班级姓名 李博浩 专业 软件工程 学生所在学院 计算机科学与技 术学院 指导教师 关键 实验室名称地点 21B476 哈尔滨工程大学 PAGE PAGE # 第一讲实验环境的使用 一、实验概述 .实验名称 进程的创建 .实验目的 练习使用EOS API函数CreateProces创建一个进程,掌握创建进程的方法, 理解进程和程序的区别。 调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程 是资源分配的单位。 .实验类型(验证、设计) 验证 .实验内容 准备实验 练习使用控制台命令创建 EOS应 用程序的进程 练习通过编程的方式让应用程序 创建另一个应用程序的进程 0 调试 CreateProcess 函数 二、实验环境 操作系统:windows xp 编译环境:OS Lab 语百:7匚编语百、 C语百 三、实验过程(每次实验不一定下面 6条都写,根据实际情况定) .设计思路和流程图 .需要解决的问题及解答 (1)在源代码文件 NewTwoProc.c提供的源代码基础上进行修改,要求使用 hello.exe同时创建10个进程。提示:可以使用 PROCESS_INFORMATION类型 定义一个有10个元素的数组,每一个元素对应一个进程。使用一个循环创建 10 个子进程,然后再使用一个循环等待10个子进程结束,得到退出码后关闭句柄。 答:尝试根据之前对 PsCreateProcess?数和 PspCreateProcessEnvironment 函数执行过程的跟踪调试,绘制一幅进程创建过程的流程图。 开始 为进程创建了地址空 间 为进程分配了句 柄表 PsploadprocessImage 是 将进程的可执行映像加 载到了进程的地址空间 中 PspCreateThread 创建 了进程的主线程 结束 (3)在 PsCreateProces函数中调用了 PspCreateProcessEnvironment!数后又先 后调用了 PspLoadProcessImag等口 PspCreateThreacE数,学习这些函数的主要功 能。能够交换这些函数被调用的顺序吗?思考其中的原因。 答:PspCreateProcessEnvironment勺I二.咬功能姑建进力校制块.井H为力 程创建了地址空间和分配了句柄表。PspLoadProcessImage是将进程的可执行映 像加载到了进程的地址空间中。PspCreateThread创建了进程的主线程。这三个 函数被调用的顺序姑不能够改变的就向k面描述的加栽可执行映像之前必 须ri经为进秆创建了地址空间这样才能够确定可执行映像可以被加栽到内存 的什么位置在创建主线程之前必须己经加栽了可执行映像这样主线程才能 够知道自己要从哪里开始执行,执行哪些指令。因此不能交换他们的顺序。 .主要数据结构、实现代码及其说明 主要定义一个有10个元素的数组,每一个元素对应一个进程。使用一个循 环创建10个子进程,然后再使用一个循环等待10个子进程结束,得到退出码后 关闭句柄 .源程序并附上注释 #include EOSApp.h // // main函数参数的意义: // argc - argv数组的长度,大小至少为 1, argc - 1为命令行参数的数量。 // argv -字符串指针数组,数组长度为命令行参数个数 + 1 o其中argv[0]固定 指向当前 // 进程所执行的可执行文件的路径字符串,argv[1]及其后面的指针指向 各个命令行 // 参数。 // 例如通过命令行内容 a:\hello.exe -a -b启动进程后,hello.exe的 main 函 // 数的参数 argc 的值为 3, argv[0]指向字符串a:\hello.exe, argv[1] 指向 // 参数字符串-a, argv[2]指向参数字符串-b。 // int main(int argc, char* argv口) { int i; // // 启动调试 EOS 应用程序前要特别注意下面的问题: // // 1、如果要在调试应用程序时能够调试进入内核并显示对应的源码, // 必须使用 EOS 核心项目编译生成完全版本的 SDK 文件夹,然 // 后使用此文件夹覆盖应用程序项目中的 SDK 文件夹,并且 EOS // 核心项目在磁盘上的位置不能改变。 // // 2、在启动调试应用程序之前必须首先删除 /禁用所有的断点,在断 // 点中断 (int 3) 被命中后才能重新添加 /启用断点,否则启动 // 调试会失败。 // START

文档评论(0)

1亿VIP精品文档

相关文档