哈工程操作系统第二个.docx_第1页
哈工程操作系统第二个.docx_第2页
哈工程操作系统第二个.docx_第3页
哈工程操作系统第二个.docx_第4页
哈工程操作系统第二个.docx_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统实 验 报 告课程名称操作系统实验课程编号0906553实验项目名称操作系统的启动学号年级三姓名专业计算机科学与技术学生所在学院计算机科学与技术实验指导教师初妍实验室名称地点 哈尔滨工程大学计算机科学与技术学院第二讲 操作系统的启动一、实验概述1. 实验名称操作系统的启动2. 实验目的(1)跟踪调试EOS在PC机上从加电复位到成功启动的全过程,了解操作系统的启动过程。 (2)查看EOS启动后的状态和行为,理解操作系统启动后的工作方式。3. 实验类型(验证、设计)验证4. 实验内容 (1)准备实验 (2) 调试EOS操作系统的启动过程二、实验环境EOS操作系统、Bochs模拟器、Virtual PC虚拟机软件、NASM汇编、BIOS(Basic Input/Output System)三、实验过程1.准备实验(1)启动OS Lab (2)新建一个EOS Kernel项目 (3) 在“项目管理器”窗口中打开boot文件夹中的boot.asm和loader.asm两个汇编文件。(4)生成项目(5)生成完成后,使用Windows资源管理器打开项目文件夹中的Debug文件夹。找到boot.asm生成的软盘引导扇区程序boot.bin文件,该文件的大小是512字节。找到由loader.asm生成的loader.bin文件,记录下此文件的大小1566字节,在下面的实验中会用到。找到由其它源文件生成的操作系统内核文件kernel.dll2.调试EOS操作系统的启动过程(1)使用Bochs做为远程目标机(2)调试BIOS程序 在Console窗口中输入调试命令sreg后按回车,CS寄存器的值为0xf000。输入调试命令r后按回车,显示当前CPU中各个通用寄存器的值 输入调试命令xp/1024b 0x0000,查看开始的1024个字节的物理内存。输入xp/512b0x7c00,查看软盘引导扇区应该被加载到的内村位置,输出的内存之都是0(3)调试软盘引导扇区程序 软盘引导扇区程序的主要任务就是将软盘中的loader.bin文件加载到物理内存的0x1000处,然后跳转到loader程序的第一条指令(物理地址0x1000处的指令)继续执行loader程序。验证loader程序被完全加载到了正确的位置(4) 调试加载程序a.在loader.lst文件中查找到准备进入EOS操作系统内核执行的指令(第755行) b.计算出进入内核执行的指令所在的物理地址为0x1513(0x1000+0x03c1+0x3+0x14f)c.使用添加物理地址断点的调试命令pb 0x1513添加一个断点d.输入调试命令c继续执行,到断点处中断e.使用查看虚拟内存的调试命令x /1wx 0x80001117查看内存中保存的32位函数入口地址(5)调试内核a.在OS Lab的“项目管理器”窗口中打开ke文件夹中的start.c文件,找到操作系统内核的入口点函数KiSystemStartupb.在KiSystemStartup函数中的代码行(第61行) KiInitializePic(); 添加一个断点 c.在Console窗口中输入调试命令c继续调试,在刚刚添加的断点处中断d. KiSystemStartup函数就被添加到了“监视”窗口中e.按F5继续执行EOS操作系统内核(6) EOS启动后的状态和行为查看EOS版本号:在控制台中输入命令“ver”后按回车。查看EOS启动后的进程和线程的信息:在控制台中输入命令“pt”后按回车。 使用pt命令查看进程和线程的信息查看有应用程序运行时进程和线程的信息:1.在OS Lab中选择“调试”菜单中的“停止调试”2.在OS Lab“项目管理器”窗口中双击Floppy.img文件3.打开配套资源“学生包”,在其中找到本实验对应的文件夹4.将本实验文件夹中的Hello.exe文件拖动到FloppyImageEditor工具窗口的文件列表中释放,Hello.exe文件即被添加到软盘镜像文件中5.在FloppyImageEditor中选择“文件”菜单中的“保存”后关闭FloppyImageEditor6.按F5启动调试7.待EOS启动完毕,在EOS控制台中输入命令“hello”后按回车8.迅速按Ctrl+F2切换到控制台2,并输入命令“pt”后按回车 使用pt命令查看有应用程序运行时进程和线程的信息四、实验心得体会回答问题:仔细比较图10-5和10-6后,ID 31是应用程序的进程。与系统进程相比,应用程序的进程优先级低。系统进程没有映像名称,应用程序进程又影响名称。线程ID 33是应用程序的主线程。与系统程序线程相比,系统线程优先级为0,并处于运行状态(Running),而应用程序处于阻塞状态(Waiting)。体会:进一步熟悉了OS lab的使用,对操作系统启动的全过程都有了更加深入的了解。实验指令中数字1与小写字母l多次看错,对实验造成了困扰,应该对指令的意义做更深入的了解。电脑上安装的压缩软件将一些实验用到的文件当作压缩文件打开,影响实验顺利进行。问题:1. 根据之前记录的loader.bin文件的大小,自己设计一个查看内存的调试命令,查看内存中loader程序结束位置的字节码,并与loader.lst文件中的最后指令的字节码比较,验证loader程序被完全加载到了正确的位置。答:将软盘中的loader.bin文件加载到物理内存的0x1000处,然后跳转到loader程序的第一条指令(物理地址0x1000处的指令)继续执行loader程序。找出由loader.asm生成的loader程序loader.bin文件,记录下此文件的大小1566字节。1566转换成十六进制是61E,加上跳到的物理内存地址0x0000得161E,而我们要访问一条指令占八个字节,故地址应修改为1608。图如第一张图。2. 实验指导中的P127最下面:仔细比较图10-6和图10-5,尝试说明哪个是应用程序的进程,它和系统进程有什么区别,哪个是应用程序的主线程,它和系统线程有什么区别。 答:进程列表中得ID为31的进程是应用程序的进程,其优先级为8,包含一个线程,主线程ID为33,映像名称为a:hello.ese。而ID为1的是系统进程,其优先级为24,包含10个线程,其中得ID为2的线程是其主线程,系统进程没有映像名称。主要区别:应用程序的优先级较低3. 为什么EOS操作系统从软盘启动时要使用boot.bin和loader.bin两个程序?使用一个可以吗?它们各自的主要功能是什么?如果将loader.bin的功能移动到boot.bin文件中,则boot.bin文件的大小是否仍然能保持小于512字节?答:在生成项目时boot.bin文件夹中的两个汇编文件boot.asm和loader.asm分别生成了两个二进制文件boot.bin和loader.bin。这两个文件缺一不可,它们会被写入软盘镜像文件。在EOS操作系统启动时,boot.bin用于引导软盘,而loader.bin用于加载程序。如果把loader.bin的功能移动到boot.bin程序中,肯定会增加boot.bin的规模,文件大小也将超过512字节。 4. 软盘引导扇区加载完毕后内存中有两个用户可用的区域,为什么软盘引导扇区程序选择将loader.bin加载到第一个可用区域的0x100

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论