操作系统实验三.pdf

操作系统实验三.pdf

ID:59079748

大小:1.20 MB

页数:13页

时间:2020-09-15

操作系统实验三.pdf_第1页
操作系统实验三.pdf_第2页
操作系统实验三.pdf_第3页
操作系统实验三.pdf_第4页
操作系统实验三.pdf_第5页
资源描述:

《操作系统实验三.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、操作系统实验报告课程名称操作系统实验课程编号0906553实验项目名称进程的创建学号年级姓名专业学生所在学院指导教师实验室名称地点哈尔滨工程大学计算机科学与技术学院.第三讲进程的创建一、实验概述1.实验名称进程的创建2.实验目的练习使用EOSAPI函数CreateProcess创建一个进程,掌握创建进程的方法,理解进程和程序的区别。调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源分配的单位。3.实验类型设计4.实验内容4.1准备实验按照下面的步骤准备本次实验:1.启动OSLab。2.新建一个EOSKernel项目。3.分别使用

2、Debug配置和Release配置生成此项目,从而在该项目文件夹中生成完全版本的EOSSDK文件夹。4.新建一个EOS应用程序项目。5.使用在第3步生成的SDK文件夹覆盖EOS应用程序项目文件夹中的SDK文件夹。4.2练习使用控制台命令创建EOS应用程序的进程练习使用控制台命令创建EOS应用程序进程的具体步骤如下:1.在EOS应用程序项目的“项目管理器”窗口中双击Floppy.img文件,使用FloppyImageEditor工具打开此软盘镜像文件。2.将本实验文件夹中的Hello.exe文件拖动到FloppyImageEditor工具窗口的文件列表中释放,He

3、llo.exe文件即被添加到软盘镜像文件中。Hello.exe一个EOS应用程序,其源代码可以参见本实验文件夹中的Hello.c源文件。3.在FloppyImageEditor中选择“文件”菜单中的“保存”后关闭FloppyImageEditor。4.按F7生成EOS应用项目。5.按F5启动调试。OSLab会弹出一个调试异常对话框,并中断应用程序的执行。6.在调试异常对话框中选择“否”,忽略异常继续执行应用程序。7.激活虚拟机窗口,待该应用程序执行完毕后,在EOS的控制台中输入命令“A:Hello.exe”后回车。..8.Hello.exe应用程序开始执行,观

4、察其输出。9.待Hello.exe执行完毕后可以重复第7步,或者结束此次调试。4.3练习通过编程的方式让应用程序创建另一个应用程序的进程使用OSLab打开本实验文件夹中的NewProc.c文件(将此文件拖动到OSLab窗口中释放即可),仔细阅读此文件中的源代码和注释。按照下面的步骤查看应用程序创建另一个应用程序的进程的执行结果:1.使用NewProc.c文件中的源代码替换之前创建的EOS应用程序项目中的EOSApp.c文件内的源代码。2.按F7生成修改后的EOS应用程序项目。3.按F5启动调试。OSLab会首先弹出一个调试异常对话框。4.在调试异常对话框中选择“

5、否”,继续执行。5.激活虚拟机窗口查看应用程序输出的内容。可以看到父进程(EOSApp.exe)首先开始执行并输出内容,父进程创建了子进程(Hello.exe)后,子进程开始执行并输出内容,待子进程结束后父进程再继续执行。6.结束此次调试。4.4调试CreateProcess函数按照下面的步骤调试CreateProcess函数创建进程的过程:1.按F5启动调试EOS应用程序,OSLab会首先弹出一个调试异常对话框。2.选择“是”调试异常,调试会中断。3.在main函数中调用CreateProcess函数的代码行(第57行)添加一个断点。4.按F5继续调试,在断点

6、处中断。5.按F11调试进入CreateProcess函数。此时已经开始进入EOS内核进行调试。当EOS应用程序eosapp.exe存储在软盘上的时候,它是静态的,只包含应用程序的指令和数据。而创建进程后,进程不但包含应用程序的指令和数据,也会包含操作系统内核(kernel.dll)的指令和数据(参见图5-1)。同时,图11-4也说明了一个进程可以包含多个程序,该进程包含了eosapp.exe和kernel.dll两个程序。可以按照下面的步骤来分别验证应用程序和操作系统内核在进程的4G虚拟地址空间中所处的位置:1.由于此时在内核的CreateProcess函数内

7、中断执行,所以在“调试”菜单的“窗口”中选择“反汇编”,会在“反汇编”窗口中显示CreateProcess函数的指令对应的反汇编代码。“反汇编”窗口的左侧显示的是指令所在的虚拟地址。可以看到所有指令的虚拟地址都大于0x80000000,说明内核(kernel.dll)处于高2G的虚拟地址空间中。2.在“调用堆栈”窗口中双击main函数项,设置main函数的调用堆栈帧为活动的。在“反汇编”窗口中查看main函数的指令所在的虚拟地址都是小于0x80000000,说明应用程序(eosapp.exe)处于低2G的虚拟地址空间中。3.在“调用堆栈”窗口中双击CreateP

8、rocess函数项,重新

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。