操作系统(第二个实验).doc

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统(第二个实验)

操作系统 实 验 报 告 课程名称 操作系统实验 课程编号 0906553 实验项目名称 操作系统的启动 学号 年级 姓名 专业 学生所在学院 指导教师 实验室名称地点 哈尔滨工程大学 计算机科学与技术学院 第二讲 操作系统的启动 一、实验概述 1. 实验名称 操作系统的启动 2. 实验目的 跟踪调试EOS在PC机上从加电复位到成功启动的全过程,了解操作系统的启动过程。 查看EOS启动后的状态和行为,理解操作系统启动后的工作方式。 3. 实验类型 验证 4. 实验内容 准备实验 调试EOS操作系统的启动过程 二、实验环境 EOS操作系统和OS Lab集成实验环境,主要运用了C语言。 三、实验过程 1. 源程序并附上注释 /* 提供该示例代码是为了阐释一个概念,或者进行一个测试,并不代表着 最安全的编码实践,因此不应在应用程序或网站中使用该示例代码。对 于超出本示例代码的预期用途以外的使用所造成的偶然或继发性损失, 北京英真时代科技有限公司不承担任何责任。 */ #include EOSApp.h int main(int argc, char* argv[]) { int i; for (i = 1; i = 5; i++) { printf(Hello,world! %d\n, i); Sleep(1000); } printf(Bye-bye!\n); return 0; } 2. 程序运行时的初值和运行结果 2.1 准备实验 1. 启动OS Lab。 2. 新建一个EOS Kernel项目。 3. 在“项目管理器”窗口中打开boot文件夹中的boot.asm和loader.asm两个汇编文件。boot.asm是软盘引导扇区程序的源文件,loader.asm是loader程序的源文件。 4. 按F7生成项目。 5. 生成完成后,使用Windows资源管理器打开项目文件夹中的Debug文件夹。找到由 boot.asm生成的软盘引导扇区程序boot.bin文件,该文件的大小一定为512字节(与软盘引导扇区的大小一致)。找到由loader.asm生成的loader程序loader.bin文件,记录下此文件的大小1566字节。找到由其它源文件生成的操作系统内核kernel.dll。 2.2 调试EOS操作系统的启动过程 2.2.1 使用Bochs做为远程目标机 按照下面的步骤将调试时使用的远程目标机修改为Bochs: 1. 在“项目管理器”窗口中,右键点击项目节点,在弹出的快捷菜单中选择“属性”。 2. 在弹出的“属性页”对话框右侧的属性列表中找到“远程目标机”属性,将此属性值修改为“Bochs Debug”(此时按F1可以获得关于此属性的帮助)。 3. 点击“确定”按钮关闭“属性页”对话框。接下来就可以使用Bochs模拟器调试BIOS程序和软盘引导扇区程序了。 2.2.2 调试BIOS程序 按F5启动调试,此时会弹出两个Bochs窗口。标题为“Bochs for windows - Display”的窗口相当于计算机的显示器,显示操作系统的输出。标题为“Bochs for windows - Console”的窗口是Bochs的控制台,用来输入调试命令,输出各种调试信息。 启动调试后,Bochs在CPU要执行的第一条指令(即BIOS的第一条指令)处中断。 此时,Display窗口没有显示任何内容,Console窗口显示要执行的BIOS第一条指令的相关信息,并等待用户输入调试命令。 从Console窗口显示的内容中,我们可以获得关于BIOS第一条指令的如下信息: (1)行首的[0xfffffff0]表示此条指令所在的物理地址。 (2)f000:fff0表示此条指令所在的逻辑地址(段地址:偏移地址)。 (3)jmp far f000:e05b是此条指令的反汇编代码。 (4)行尾的ea5be000f0是此条指令的十六进制字节码,可以看出此条指令有5个字节。 查看CPU在没有执行任何指令之前主要寄存器中的数据,以及内存中的数据: 1. 在Console窗口中输入调试命令sreg后按回车,显示当前CPU中各个段寄存器的值,其中CS寄存器信息行中的“s=0xf000”表示CS寄存器的值为0xf000。 2. 输入调试命令r后按回车,显示当前CPU中各个通用寄存器的数。其中“rip: 00000fff0”表示IP寄存器的值为0xfff0。 3. 输入调试命令xp /1024b

文档评论(0)

dashewan + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档