操作系统 第一个实验.docx
- 文档编号:7747246
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:14
- 大小:981.15KB
操作系统 第一个实验.docx
《操作系统 第一个实验.docx》由会员分享,可在线阅读,更多相关《操作系统 第一个实验.docx(14页珍藏版)》请在冰豆网上搜索。
操作系统第一个实验
操作系统
实验报告
课程名称
操作系统实验
课程编号
0906553
实验项目名称
实验环境的使用
学号
年级
姓名
专业
学生所在学院
指导教师
实验室名称地点
哈尔滨工程大学
计算机科学与技术学院
第一讲实验环境的使用
一、实验概述
1.实验名称
实验环境的使用
2.实验目的
(1)熟悉操作系统集成实验环境OSLab的基本使用方法。
(2)练习编译、调试EOS操作系统内核以及EOS应用程序。
3.实验类型(验证、设计)
验证型实验
4.实验内容
(1)学习OSLab的基本使用方法;
(2)EOS内核项目的生成和调试;
(3)EOS应用程序项目的生成和调试。
二、实验环境
EOS操作系统和OSLab集成实验环境,主要运用了C语言。
三、实验过程
1.源程序并附上注释
/*定义控制台应用程序的入口点*/
#include"console.h"
intmain(intargc,char*argv[])
{
/*TODO:
在此处添加自己的代码*/
intFunc(intn);//声明Func()函数
intn=0;
n=Func(10);//调用Func()函数
printf("Helloworld!
\n");//输出
return0;
}
intFunc(intn)//定义Func()函数
{
n=n+1;
returnn;
}
2.程序运行时的初值和运行结果
(1)启动OSLab
在安装有OSLab的计算机上,可以使用两种不同的方法来启动OSLab:
在桌面上双击“TevationOSLab”图标;或者点击“开始”菜单,在“程序”中的“TevationOSLab”中选择“TevationOSLab”。
OSLab每次启动后都会首先弹出一个用于注册用户信息的对话框(可以选择对话框标题栏上的“帮助”按钮获得关于此对话框的帮助信息)。
在此对话框中填入学号和姓名后,点击“确定”按钮完成本次注册。
(2)学习OSLab的基本使用方法:
1)新建Windows控制台应用程序项目
新建一个Windows控制台应用程序项目的步骤如下:
1.1)在“文件”菜单中选择“新建”,然后单击“项目”。
1.2)在“新建项目”对话框中,选择项目模板“控制台应用程序(c)”。
1.3)在“名称”中输入新项目使用的文件夹名称“oslab”。
1.4)在“位置”中输入新项目保存在磁盘上的位置“C:
\test”。
1.5)点击“确定”按钮。
2)生成项目:
在“生成”菜单中选择“生成项目”。
在项目生成过程中,“输出”窗口会实时显示生成的进度和结果。
如果源代码中不包含语法错误,会在最后提示生成成功。
如果源代码中存在语法错误,“输出”窗口会输出相应的错误信息(包括错误所在文件的路径,错误在文件中的位置,以及错误原因),并在最后提示生成失败。
此时在“输出”窗口中双击错误信息所在的行,OSLab会使用源代码编辑器打开错误所在的文件,并自动定位到错误对应的代码行。
可以在源代码文件中故意输入一些错误的代码(例如删除一个代码行结尾的分号),然后再次生成项目,然后在“输出”窗口中双击错误信息来定位存在错误的代码行,将代码修改正确后再生成项目。
3)执行项目
在OSLab中选择“调试”菜单中的“开始执行(不调试)”,可以执行刚刚生成的Windows控制台应用程序。
启动执行后会弹出一个Windows控制台窗口,显示控制台应用程序输出的内容。
按任意键即可关闭此Windows控制台窗口。
4)调试项目
在开始练习各种调试功能之前,首先需要对刚刚创建的例子程序进行必要的修改,步骤如下:
4.1)右键点击“项目管理器”窗口中的“源文件”文件夹节点,在弹出的快捷菜单中选择“添加”中的“添加新文件”。
4.2)在弹出的“添加新文件”对话框中选择“C源文件”模板。
4.3)在“名称”中输入文件名称“func”。
4.4)点击“添加”按钮,添加并自动打开文件func.c。
4.5)在func.c文件中添加函数:
Func。
4.6)点击源代码编辑器上方的console.c标签,切换到console.c文件。
修改main函数。
代码修改完毕后按F7(“生成项目”功能的快捷键)。
注意查看“输出”窗口中的内容,如果代码中存在语法错误,就根据错误信息进行修改,直到成功生成项目。
(4.1)使用断点中断执行
1.在main函数中定义变量n的代码行intn=0;上点击鼠标右键,在弹出的快捷菜单中选择“插入/删除断点”,会在此行左侧的空白处显示一个红色圆点,表示已经成功在此行代码添加了一个断点。
2.在“调试”菜单中选择“启动调试”,Windows控制台应用程序开始执行,随后OSLab窗口被自动激活,并且在刚刚添加断点的代码行左侧空白中显示一个黄色箭头,表示程序已经在此行代码处中断执行(也就是说下一个要执行的就是此行代码)。
3.激活Windows控制台应用程序的窗口,可以看到窗口中没有输出任何内容,因为printf函数还没有被执行。
(4.2)单步调试
按照下面的步骤练习使用“逐过程”功能:
1.在OSLab的“调试”菜单中选择“逐过程”,“逐过程”功能会执行黄色箭头当前指向的代码行,并将黄色箭头指向下一个要执行的代码行。
2.按F10(“逐过程”功能的快捷键),黄色箭头就指向了调用printf函数的代码行。
查看控制台应用程序窗口,仍然没有任何输出。
3.再次按F10执行printf函数,查看控制台应用程序窗口,可以看到已经打印出了内容。
4.在“调试”菜单中选择“停止调试”,结束此次调试。
(4.3)查看变量的值
在调试的过程中,OSLab提供了三种查看变量值的方法,按照下面的步骤练习这些方法:
1.按F5启动调试,仍然会在之前设置的断点处中断。
2.将鼠标移动到源代码编辑器中变量n的名称上,此时会弹出一个窗口显示出变量n当前的值(由于此时还没有给变量n赋值,所以是一个随机值)。
3.在源代码编辑器中变量n的名称上点击鼠标右键,在弹出的快捷菜单中选择“快速监视”,可以使用“快速监视”对话框查看变量n的值。
然后,可以点击“关闭”按钮关闭“快速监视”对话框。
4.在源代码编辑器中变量n的名称上点击鼠标右键,在弹出的快捷菜单中选择“添加监视”,变量n就被添加到了“监视”窗口中。
使用“监视”窗口可以随时查看变量的值和类型。
此时按F10进行一次单步调试,可以看到“监视”窗口中变量n的值会变为0。
(4.4)调用堆栈
使用“调用堆栈”窗口可以在调试的过程中查看当前堆栈上的函数,还可以帮助理解函数的调用层次和调用过程。
按照下面的步骤练习使用“调用堆栈”窗口:
1.按F5启动调试,仍然会在之前设置的断点处中断。
2.选择“调试”菜单“窗口”中的“调用堆栈”,激活“调用堆栈”窗口。
可以看到当前“调用堆栈”窗口中只有一个main函数(显示的内容还包括了参数值和函数地址)。
3.按F11(“逐语句”功能的快捷键)调试,直到进入Func函数,查看“调用堆栈”窗口可以发现在堆栈上有两个函数Func和main。
其中当前正在调试的Func函数在栈顶位置,main函数在栈底位置。
说明是在main函数中调用了Func函数。
4.在“调用堆栈”窗口中双击main函数所在的行,会有一个绿色箭头指向main函数所在的行,表示此函数是当前调用堆栈中的活动函数。
同时,会将main函数所在的源代码文件打开,并也使用一个绿色箭头指向Func函数返回后的位置。
5.在“调用堆栈”窗口中双击Func函数所在的行,可以重新激活此堆栈帧,并显示对应的源代码。
6.反复双击“调用堆栈”窗口中Func函数和main函数所在的行,查看“监视”窗口中变量n的值,可以看到在不同的堆栈帧被激活时,OSLab调试器会自动更新“监视”窗口中的数据,显示出对应于当前活动堆栈帧的信息。
7.结束此次调试。
(3)EOS内核项目的生成和调试:
3.1)新建EOS内核项目
新建一个EOS内核项目的步骤如下:
1.在“文件”菜单中选择“新建”,然后单击“项目”。
2.在“新建项目”对话框中,选择项目模板“EOSKernel”。
3.在“名称”中输入新项目使用的文件夹名称“eos”。
4.在“位置”中输入新项目保存在磁盘上的位置“C:
\”。
5.点击“确定”按钮。
此项目就是一个EOS操作系统内核项目,包含了EOS操作系统内核的所有源代码文件。
3.2)生成项目
1.按F7生成项目,同时查看“输出”窗口中的内容,确认生成成功。
2.打开C:
\eos\debug文件夹,查看生成的对象文件和目标文件。
找到boot.bin、loader.bin和kernel.dll三个二进制文件,这三个文件就是EOS操作系统在运行时需要的可执行文件。
OSLab每次启动运行EOS操作系统之前,都会将这三个文件写入一个软盘镜像文件中,然后让虚拟机运行这个软盘镜像中的EOS(相当于将写有这三个二进制文件的软盘放入一个物理机的软盘驱动器中,然后按下开机按钮)。
找到libkernel.a文件,此文件是EOS内核文件kernel.dll对应的导入库文件。
3.3)调试项目
1.在“项目管理器”窗口的ke文件夹中找到start.c文件节点,双击此文件节点使用源代码编辑器打开start.c文件。
2.在start.c文件中KiSystemStartup函数的“KiInitializePic();”语句所在行(第61行)添加一个断点。
EOS启动时执行的第一个内核函数就是KiSystemStartup函数。
3.按F5启动调试,虚拟机开始运行软盘镜像中的EOS。
在虚拟机窗口中可以看到EOS启动的过程。
随后EOS会在刚刚添加的断点处中断执行。
激活虚拟机窗口可以看到EOS也不再继续运行了。
各种调试功能(包括单步调试、查看变量的值和各个调试工具窗口)的使用方法与调试Windows控制台程序完全相同。
4.按F5继续执行。
查看虚拟机窗口,显示EOS操作系统已经启动,并且EOS的控制台程序已经开始运行了。
5.在“调试”菜单中选择“停止调试”,结束此次调试。
3.4)查看软盘镜像文件中的内容
在“项目管理器”窗口中双击软盘镜像文件Floppy.img,就会使用FloppyImageEditor工具打开此文件(在FloppyImageEditor工具中按F1可以查看此工具的帮助文件)。
在FloppyImageEditor工具的文件列表中可以找到loader.bin文件和kernel.dll文件,这两个文件都是在启动调试时被写入软盘镜像文件的(可以查看这两个文件的修改日期)。
boot.bin文件在启动调试时被写入了软盘镜像的引导扇区中,不受软盘文件系统的管理,所以在文件列表中找不到此文件。
关闭FloppyImageEditor工具。
3.5)查看EOSSDK(SoftwareDevelopmentKit)文件夹
1.点击OSLab工具栏上的“项目配置”下拉列表,选择下拉列表中的“Release”项目配置,“Release”项目配置被设置为新的活动项目配置(原来的活动项目配置是“Debug”)。
2.按F7使用Release配置生成项目。
3.生成完毕后,使用Windows资源管理器打开C:
\eos文件夹,可以发现在文件夹中多出了一个SDK文件夹,此文件夹就是在生成EOSKernel项目的同时自动生成的。
4.SDK文件夹中提供了开发EOS应用程序需要的所有文件。
打开SDK文件夹中的bin文件夹,可以看到有两个名称分别为debug和release的文件夹。
debug文件夹是在使用debug配置生成项目时生成的,其中存放了调试版本的EOS二进制文件。
release文件夹是在使用release配置生成项目时生成的,其中存放了发布版本的EOS二进制文件(不包含调试信息)。
分别打开这两个文件夹查看其中包含的文件。
5.打开SDK文件夹中的inc文件夹,可以看到此文件夹中存放了EOS用于导出API函数和重要数据类型定义的头文件,在编写EOS应用程序时必须包含这些头文件。
每次在开发EOS应用程序之前都应该使用EOSKernel项目的debug配置和release配置来生成EOSKernel项目,这样才能够得到完全版本的SDK文件夹供EOS应用程序使用。
(4)EOS应用程序项目的生成和调试
1)新建EOS应用程序项目
新建一个EOS应用程序项目的步骤如下:
1.在“文件”菜单中选择“新建”,然后单击“项目”。
2.在“新建项目”对话框中,选择项目模板“EOS应用程序”。
3.在“名称”中输入新项目使用的文件夹名称“eosapp”。
4.在“位置”中输入新项目保存在磁盘上的位置“C:
\”。
5.点击“确定”按钮。
2)生成项目
1.按F7生成项目,同时查看“输出”窗口中的内容,确认生成成功。
2.打开C:
\eosapp\debug文件夹,查看生成的对象文件和目标文件。
其中的EOSApp.exe就是EOS应用程序的可执行文件。
OSLab每次启动执行EOS应用程序时,都会将EOS应用程序的可执行文件写入软盘镜像,并且会将SDK文件夹中对应配置(Debug或Release)的二进制文件写入软盘镜像,然后让虚拟机运行软盘镜像中的EOS,待EOS启动后再自动执行EOS应用程序。
3)调试项目
调试EOS应用程序项目与之前的两个项目有较大的不同,之前的两个项目在调试时都是先添加断点再启动调试,而EOS应用程序项目必须先启动调试再添加断点,步骤如下:
1.按F5启动调试。
OSLab会弹出一个调试异常对话框,选择“是”调试异常,EOS应用程序会中断执行,黄色箭头指向下一个要执行的代码行。
2.在eosapp.c的printf("Helloworld!
\n");代码行添加一个断点,然后按F5继续调试,在此断点处中断。
3.按F10单步调试,查看虚拟机窗口,打印输出了“Helloworld!
”。
4.按F5继续调试,查看虚拟机窗口,EOS应用程序执行完毕。
5.在“调试”菜单中选择“停止调试”,调试被终止。
6.选择“调试”菜单中的“删除所有断点”。
只有删除所有断点后才能按F5再次启动调试,否则启动调试会失败。
4)查看软盘镜像文件中的内容
使用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文件查看其内容。
5)修改EOS应用程序项目名称
EOS应用程序项目所生成的可执行文件的名称默认是由项目名称决定的。
由于当前EOS应用程序项目的名称是EOSApp,所以该项目所生成的可执行文件的名称默认为EOSApp.exe。
按照下面的步骤修改EOS应用程序项目的名称,进而修改可执行文件的名称:
1.在“项目管理器”窗口中,右键点击项目节点(根节点)。
2.在弹出的快捷菜单中选择“重命名”,然后可以输入一个新的项目名称,例如“MyApp”,然后按回车键使修改生效。
3.按F7生成项目。
4.选择“调试”菜单中的“删除所有断点”。
5.按F5启动调试。
OSLab会弹出一个调试异常对话框,选择“否”忽略异常,EOS应用程序会自动执行。
6.激活虚拟机窗口,可以看到自动执行的可执行文件的名称为MyApp.exe,如图9-9所示。
也可以打开C:
\eosapp\debug文件夹,确认生成了可执行文件MyApp.exe。
5)退出OSLab
1.在“文件”菜单中选择“退出”。
2.在OSLab关闭前会弹出一个保存数据对话框(可以选择对话框标题栏上的“帮助”按钮获得帮助信息),核对学号和姓名无误后点击“保存”按钮,OSLab关闭。
3.在OSLab关闭后默认会自动使用Windows资源管理器打开数据文件所在的文件夹,并且选中刚刚保存的数据文件(OUD文件)。
将数据文件备份(例如拷贝到自己的U盘中或者发送到服务器上),可以做为本次实验的考评依据。
四、实验体会
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 第一个实验 第一 实验