




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
操作系统操作系统 实实 验验 报报 告告 课程名称课程名称操作系统实验操作系统实验 实验项目名称实验项目名称进程的创建 学号学号班级班级20100612 姓名姓名专业专业 计算机科学计算机科学 与技术与技术 学生所在学院学生所在学院 计算机科学与技计算机科学与技 术术 指导教师指导教师 实验室名称地点实验室名称地点计算机基础第七实验室计算机基础第七实验室 21B475 哈尔滨工程大学哈尔滨工程大学 计算机科学与技术学院计算机科学与技术学院 1 一 实验概述 1 实验名称 进程的创建 2 实验目的 1 练习使用 EOS API 函数 CreateProcess 创建一个进程 掌握创建进程的方 法 理解进程和程序的区别 2 调试跟踪 CreateProcess 函数的执行过程 了解进程的创建过程 理解进 程是资源分配的单位 3 实验类型 验证性实验 4 实验内容 2 实验环境 EOS操作系统 准备实验 调试 PsCreateProcess 函数 调试进程控制块的创建过程 调试初始化进程控制块中各个成员变量的过程 调试CreateProcess函数 练习使用控制台命令创建 EOS 应 用程序的进程 练习通过编程的方式让应用程序 创建另一个应用程序的进程 2 三 实验过程 1 设计思路和流程图 2 算法实现 3 需要解决的问题及解答 1 在源代码文件NewTwoProc c提供的源代码基础上进行修改 要求使用 hello exe同时创建10个进程 提示 可以使用PROCESS INFORMATION类型定义 一个有10个元素的数组 每一个元素对应一个进程 使用一个循环创建10个子 进程 然后再使用一个循环等待10个子进程结束 得到退出码后关闭句柄 答 后文中 有此题解决方案 2 尝试根据之前对PsCreateProcess函数和PspCreateProcessEnvironment函数 执行过程的跟踪调试 绘制一幅进程创建过程的流程图 3 3 在PsCreateProcess函数中调用了PspCreateProcessEnvironment函数后又先 后调用了PspLoadProcessImage和PspCreateThread函数 学习这些函数的主要 功能 能够交换这些函数被调用的顺序吗 思考其中的原因 答 PspCreateProcessEnvironment的主要功能是创建进程控制块 并且为进程 创建了地址空间和分配了句柄表 PspLoadProcessImage是将进程的可执行映像 加载到了进程的地址空间中 PspCreateThread创建了进程的主线程 这三个函 数被调用的顺序是不能够改变的 就向上面描述的 加载可执行映像之前必须 4 已经为进程创建了地址空间 这样才能够确定可执行映像可以被加载到内存的 什么位置 在创建主线程之前必须已经加载了可执行映像 这样主线程才能够 知道自己要从哪里开始执行 执行哪些指令 因此不能交换他们的顺序 4 主要数据结构 实现代码及其说明 主要使用PROCESS INFORMATION类型定义一个有10个元素的数组 每一个元素对 应一个进程 使用一个循环创建10个子进程 然后再使用一个循环等待10个子 进程结束 得到退出码后关闭句柄 5 源程序并附上注释 使用 hello exe 同时创建 10 个进程的原代码及注释如下 include EOSApp h main 函数参数的意义 argc argv 数组的长度 大小至少为 1 argc 1 为命令行参数的数量 argv 字符串指针数组 数组长度为命令行参数个数 1 其中 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 启动调试 EOS 应用程序前要特别注意下面的问题 1 如果要在调试应用程序时能够调试进入内核并显示对应的源码 必须使用 EOS 核心项目编译生成完全版本的 SDK 文件夹 然 后使用此文件夹覆盖应用程序项目中的 SDK 文件夹 并且 EOS 核心项目在磁盘上的位置不能改变 2 在启动调试应用程序之前必须首先删除 禁用所有的断点 在断 点中断 int 3 被命中后才能重新添加 启用断点 否则启动 调试会失败 5 STARTUPINFO StartupInfo PROCESS INFORMATION ProcInfo 10 ULONG ulExitCode 子进程退出码 INT nResult 0 main 函数返回值 0 表示成功 非 0 表示失败 int i j ifdef DEBUG asm int 3 n nop endif printf Create 10 processes and wait for the processes exit n n 使子进程和父进程使用相同的标准句柄 StartupInfo StdInput GetStdHandle STD INPUT HANDLE StartupInfo StdOutput GetStdHandle STD OUTPUT HANDLE StartupInfo StdError GetStdHandle STD ERROR HANDLE 为一个应用程序同时创建 10 个子进程 for i 0 i 10 i if CreateProcess A Hello exe NULL 0 else for j 0 j i j WaitForSingleObject ProcInfo j ProcessHandle INFINITE 得到并输出子进程的退出码 GetExitCodeProcess ProcInfo j ProcessHandle printf nThe process d exit with d n j ulExitCode 关闭不再使用的句柄 CloseHandle ProcInfo j ProcessHandle CloseHandle ProcInfo j ThreadHandle printf CreateProcess Failed Error code 0 x X n GetLastError nResult 1 6 return nResult for i 0 i 10 i 创建子进程成功 等待子进程运行结束 WaitForSingleObject ProcInfo i ProcessHandle INFINITE 得到并输出子进程的退出码 GetExitCodeProcess ProcInfo i ProcessHandle for i 0 i Pas MmCreateProcessAddressSpace 添加一个断点 2 按F5继续调试 到此断点处中断 3 按F10执行此行代码后中断 4 在 监视 窗口中查看进程控制块的成员变量Pas的值已经不再是0 说明已 经初始化了进程的4G虚拟地址空间 9 使用F10一步步调试PspCreateProcessEnvironment函数中后面的代码 在调试 的过程中根据执行的源代码 查看 监视 窗口中 NewProcess表达式的值结果 如下 10 11 12 e 要求使用hello exe同时创建10个进程 四 实验体会
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 冷拉丝工内部技能考核试卷及答案
- 节目审查流程执行监控工艺考核试卷及答案
- 陶瓷制品釉面涂层耐酸碱度工艺考核试卷及答案
- 豆制品酶法改性工艺效果分析工艺考核试卷及答案
- 饲草种子繁育工异常处理考核试卷及答案
- 石质文物修复师培训考核试卷及答案
- 职业教育质量评价指标构建:理念、问题与启示
- 新能源汽车电驱总成系统及设备管理测试卷附答案
- 专业证书试题模板及答案
- 建筑专业理论试题及答案
- 第8课《网络新世界》第一课时-统编版《道德与法治》四年级上册教学课件
- 2025年审计部招聘考试模拟题及答案详解
- Bowtie安全分析培训课件
- 退役军人优抚政策课件
- 财务遴选笔试题及答案
- (2025秋新版)人教版二年级数学上册全册教案(教学设计)
- 六年级上册音乐课教案
- 肿瘤病人疼痛评估与干预策略
- 计算机视觉技术课件
- 初中道德与法治新课标理念解读
- GB/T 5783-2016六角头螺栓全螺纹
评论
0/150
提交评论