进程控制块中的信息,此时所有的成员变量都已经被初始化了(注意观察成员ImageName的值)。
(1)
(2)
(3)
(4)10
f(5)
(6)
(7)
(8)
8)按F5继续执行,EOS内核会为刚刚初始化完毕的进程控制块新建一个进程。激活虚拟机窗口查看
新建进程执行的结果。
9)在OSLab中选择“调试”菜单中的“停止调试”结束此次调试。
10)选择“调试”菜单中的“删除所有断点”。
7练习通过编程的方式创建应用程序的多个进程
1)使用OSLab打开本实验文件夹中的参考源代码文件NewTwoProcc,仔细阅读此文件中的源代码。
使用NewTwoProcc文件中的源代码替换EOS应用程序项目中EOSAppc文件内的源代码,生成后启动调试,查
看多个进程并发执行的结果。
2)在源代码文件NewTwoProcc提供的源代码基础上进行修改,要求使用helloexe同时创建10个进11
f程。提示:可以使用PROCESS_INFORMATION类型定义一个有10个元素的数组,每一个元素对应一个进程。使用一个循环创建10个子进程,然后再使用一个循环等待10个子进程结束,得到退出码后关闭句柄。
修改的代码在步骤5(1),运行截图如下。
3)修改代码,使一个进程创建不成功,验证其他九个进程正常进行。修改的代码在步骤5(2),运行截图如下
四、实验体会
遇到问题用helloexe同时创建10个进程时十个进程不同步,也不独立解决方法:用PROCESS_INFORMATION类型定义一个有10个元素的数组,每一个元素对应一个进程。使用一个循环创建10个子进程,然后再使用一个循环等待10个子进程结束,得到退出码后关闭句柄。对于不能创建成功的进程则直接结束这个进程并且弹出错误信息,之后转到下一个进程,使进程之间不互相影响。
12
f感想:通过这次实验,我对进程的相关知识增加了理解。有了动手实践的机会让我对于课本上进程的相关知识有了新的认识和更深的记忆。学习了如何创建进程和关闭句柄等,丰富了编程的相关知识。
13
fr