操作系统实验3.docx
- 文档编号:29002384
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:12
- 大小:273.79KB
操作系统实验3.docx
《操作系统实验3.docx》由会员分享,可在线阅读,更多相关《操作系统实验3.docx(12页珍藏版)》请在冰豆网上搜索。
操作系统实验3
操作系统
实验报告
课程名称
操作系统实验
实验项目名称
进程的创建
学号
班级
姓名
专业
学生所在学院
指导教师
实验室名称地点
一、实验概述
1.实验名称
进程的创建
2.实验目的
熟悉操作系统集成实验环境OSLab的基本使用方法。
练习编译、调试EOS操作系统内核以及EOS应用程序。
3.实验类型
验证
二、实验环境
OSLab
三、实验过程
3.2练习使用控制台命令创建EOS应用程序的进程
Hello.exe文件添加到软盘镜像文件中:
执行Hello.exe
3.3练习使用编程的方式让应用程序创建另一个应用程序的进程
3.4调试CreateProcess函数
添加断点
进入EOS内核进行调试
反汇编
调用堆栈中将main函数的调用堆栈桢设置为活动的
3.5调试PsCreateProcess函数
在create.c第163行中添加断点
在create.c第418行添加断点
添加监视
在create.c第437行添加断点
查看Pas的值不再是0
F5继续执行
进程创建过程流程图
3.6练习通过编程的方式创建应用程序的多个进程
代码:
#include"EOSApp.h"
intmain(intargc,char*argv[])
{
//启动调试EOS应用程序前要特别注意下面的问题:
//1、如果要在调试应用程序时能够调试进入内核并显示对应的源码,
//必须使用EOS核心项目编译生成完全版本的SDK文件夹,然
//后使用此文件夹覆盖应用程序项目中的SDK文件夹,并且
//核心项目在磁盘上的位置不能改变。
//2、在启动调试应用程序之前必须首先删除/禁用所有的断点,在断
//点中断(int3)被命中后才能重新添加/启用断点,否则启动
//调试会失败。
STARTUPINFOStartupInfo;
PROCESS_INFORMATIONProcInfo[10];
ULONGulExitCode;
//子进程退出码
INTnResult=0;
//main函数返回值。
0表示成功,0表示失败。
inti,j;
printf("Create10processesandwaitfortheprocessesexit...\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,&StartupInfo,&ProcInfo[i]));
else{
for(j=0;j
WaitForSingleObject(ProcInfo[j].ProcessHandle,INFINITE);
//得到并输出子进程的退出码。
GetExitCodeProcess(ProcInfo[j].ProcessHandle,&ulExitCode);
printf("\nTheprocess%dexitwith%d.\n",j,ulExitCode);
//关闭不再使用的句柄。
CloseHandle(ProcInfo[j].ProcessHandle);
CloseHandle(ProcInfo[j].ThreadHandle);
}
printf("CreateProcessFailed,Errorcode:
0x%X.\n",GetLastError());
nResult=1;
returnnResult;
}
for(i=0;i<10;i++){
//创建子进程成功,等待子进程运行结束。
WaitForSingleObject(ProcInfo[i].ProcessHandle,INFINITE);
//得到并输出子进程的退出码。
GetExitCodeProcess(ProcInfo[i].ProcessHandle,&ulExitCode);
}
for(i=0;i<10;i++){
printf("\nTheprocess%dexitwith%d.\n",i,ulExitCode);
//关闭不再使用的句柄。
CloseHandle(ProcInfo[i].ProcessHandle);
CloseHandle(ProcInfo[i].ThreadHandle);
}
returnnResult;}
四、思考题
五、实验体会
通过本次实验学会了用CreateProcess创建一个进程,掌握了创建进程的方法,并了解了进程的创建过程,理解了程序和进程的关系。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)