操作系统
实验报告
哈尔滨工程大学
第一讲实验环境的使用
一、实验概述
1. 实验名称
实验环境的使用
2. 实验目的
熟悉操作系统集成实验环境OS Lab 的基本使用方法。
练习编译、调试EOS 操作系统内核以及EOS 应用程序。
3. 实验类型
验证
4. 实验内容
启动OS Lab ,学习OS Lab 的基本使用方法,新建Windows 控制台应用程序项目,生成项目,执行项目,调试项目,使用断点中断执行,单步调试,查看变量的值,调用堆栈,EOS 内核项目的生成和调试,新建EOS 内核项目,生成项目,查看EOS SDK(Software Development Kit)文件夹,EOS 应用程序项目的生成和调试,新建EOS 应用程序项目,生成项目,调试项目,修改EOS 应用程序项目名称,退出OS Lab,保存EOS 内核项目。
二、实验环境
Windows xp操作系统,tevation os lab,c(c++)语言
三、实验过程
1.启动OS Lab ,学习OS Lab 的基本使用方法,新建Windows 控制台应用程序项目,生成项目,执行项目,调试项目
新建一个EOS 应用程序项目的步骤如下:
1. 在“文件”菜单中选择“新建”,然后单击“项目”。
2. 在“新建项目”对话框中,选择项目模板“EOS 应用程序”。
3. 在“名称”中输入新项目使用的文件夹名称“eosapp”。
4. 在“位置”中输入新项目保存在磁盘上的位置“C:\”。
5.
点击“确定”按钮。
此项目就是一个EOS 应用程序项目。
使用Windows 资源管理器将之前生成的C:\eos\sdk 文件夹拷贝覆盖到C:\eosapp\sdk 位置。
这样EOS
应用程序就可以使用最新版本的EOS SDK 文件夹了。
使用断点中断执行,单步调试,查看变量的值,调用堆栈
EOS 内核项目的生成和调试,新建 EOS 内核项目,生成项目 ,查看 EOS SDK (Software Development Kit )文件夹
使用 FloppyImageEditor 工具打开该项目中的 Floppy.img 文件,查看软盘镜像中的文件。
loader.bin
和 kernel.dll 是从 C:\eosapp\sdk\bin\debug 文件夹写入的,C:\eosapp\sdk\bin\debug\boot.bin 被写
入了软盘镜像文件的引导扇区中。
eosapp.exe 就是本项目生成的 EOS 应用程序。
EOS 操作系统启动后会根
据autorun.txt 文本文件中的内容启动执行eosapp.exe 程序,双击autorun.txt 文件查看其内容。
结合本书第 1 章中关于EOS 应用程序从源代码到可在虚拟机中运行过程的介绍,仔细体会EOS 应用程
序项目生成、调试的过程,以及EOS 应用程序是如何使用EOS SDK 文件夹的。
EOS 应用程序项目的生成和调试,新建EOS 应用程序项目,生成项目,调试项目,修改EOS 应用程序项目名称,退出OS Lab,保存EOS 内核项目。
EOS 应用程序项目所生成的可执行文件的名称默认是由项目名称决定的。
由于当前EOS 应用程序项目
的名称是EOSApp,所以该项目所生成的可执行文件的名称默认为EOSApp.exe。
按照下面的步骤修改EOS
应用程序项目的名称,进而修改可执行文件的名称:
1. 在“项目管理器”窗口中,右键点击项目节点(根节点)。
2. 在弹出的快捷菜单中选择“重命名”,然后可以输入一个新的项目名称,例如“MyApp”,然后按
回车键使修改生效。
3. 按F7 生成项目。
4. 选择“调试”菜单中的“删除所有断点”。
5. 按F5 启动调试。
OS Lab 会弹出一个调试异常对话框,选择“否”忽略异常,EOS 应用程序会自
动执行。
6. 激活虚拟机窗口,可以看到自动执行的可执行文件的名称为MyApp.exe,如图9-9 所示。
也可以
打开C:\eosapp\debug 文件夹,确认生成了可执行文件MyApp.exe。
三、思考题
1. “逐过程”调试与“逐语句”调试
“逐语句”调试与“逐过程”调试的区别主要在调用函数时,逐语句调试可
以进入到函数内部,逐过程则是用在程序执行过程中,当我们不需要查看程序具体实现方法时,把函数调用当成一条语句去执行。
2.思考生成EOS SDK 文件夹的目的和作用。
查看EOS SDK 文件夹中的内容,明白文件夹的组织结构和各个文件的来源和作用。
查看EOS 应用程序包含了SDK 文件夹中的哪些头文件,是如何包含的?
EOS SDK文件夹是提供给开发人员进行应用程序开发的,这样程序员就可以快速建立应用软件,省去了编写硬件代码和基础代码框架的过程。
当我们在IDE环境中将EOS操作系统内核包含的源代码文件生成二进制文件时,会将boot.asm文件生成boot.bin文件,将loader.asm文件生成loader.bin文件,将其他源代码文件生成kernel.dll文件和libkernel.a文件。
EOS SDK文件夹主要包括INC 头文件、LIB文件夹、导入库文件夹和BIN文件夹动态链接库,可执行程序,二进制文件。
eos.h负责导出API函数声明;eosdef.h负责导出函数类型的定义;error.h负责导出错误码,这三个头文件被复制到INC文件夹中,而将生成的四个二进制文件都复制到BIN文件夹中。
EOS应用程序在项目的头文件中只包含了eos.h文件,eos.h文件里又包含了eosdef.h文件和error.h文件。
问题及解决过程:未遇到问题。
实验中产生的错误及原因分析:实验过程未遇到错误。
四、实验体会
通过这次操作系统实验,我学习了很多基础操作,熟悉操作系统集成实验环境OS Lab 的基本使用方法。
练习编译、调试EOS 操作系统内核以及EOS 应用程序。