首页 操作系统的启动实验报告

操作系统的启动实验报告

举报
开通vip

操作系统的启动实验报告操作系统实验报告课程名称操作系统课程编号0906553实验项目名称操作系统的启动学号年级姓名专业计算机科学与技术学生所在院计算机科学与技术学院指导老师实验室名称哈尔滨工程大学计算机科学与技术学院一.实验概述实验名称:操作系统的启动实验目的:跟踪调试EOS在PC机上从加电复位到成功后启动的全过程,了解操作系统的启动过程;查看EOS启动后的状态和行为,理解操作系统启动后的工作方式。实验类型:验证,设计实验内容:准备实验,启动OSLab,新建一个EOSKernel项...

操作系统的启动实验报告
操作系统实验报告课程名称操作系统课程编号0906553实验项目名称操作系统的启动学号年级姓名专业计算机科学与技术学生所在院计算机科学与技术学院指导老师 实验室 17025实验室iso17025实验室认可实验室检查项目微生物实验室标识重点实验室计划 名称哈尔滨工程大学计算机科学与技术学院一.实验概述实验名称:操作系统的启动实验目的:跟踪调试EOS在PC机上从加电复位到成功后启动的全过程,了解操作系统的启动过程;查看EOS启动后的状态和行为,理解操作系统启动后的工作方式。实验类型:验证, 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 实验内容:准备实验,启动OSLab,新建一个EOSKernel项目;调试EOS操作系统的启动过程使用Bochs作为远程目标机调试BIOS程序调试软盘引导扇区程序调试加载程序调试内核查看EOS启动后的状态和行为二.实验环境操作系统:windowsXP编译器:TevalatonOSLab语言:C++三.实验过程1.设计思路和流程图:CPU从默认位置执行BIOS的开机自检和初始化程序之后,BIOS将软盘引导扇区加载到0x7C00并执行软盘引导扇区中的Boot程序开始执行,将软盘根目录中的Loader程序文件Loader.bin加载到0x1000并执行Kernel.dll开始执行,初始化EOS内核,EOS启动完毕Loader程序开始执行,先加载Kernel.dll,然后启动保护模式和分页机制,最后调到Kernel.dll的入口点执行2.实验过程:1)在Console窗口中输入调试指令sreg,查看当前CPU中各个段寄存器的值,其中CS寄存器信息行中的“s=0xf000”表示CS寄存器的值为0xf000。2)输入调试命令r,显示当前CPU中各个通用寄存器的值,“rip:0x00000000:0000fff0”表示IP寄存器的值为0xfff0。3)输入调试命令xp/1024b0x0000,查看开始的1024个字节的物理内存。在Console中输出的这1K物理内存的值都为0,说明BIOS中断向量表还没有被加载到此处。4)输入调试命令xp/512b0x7c00,查看软盘引导扇区应该被加载到的内存位置。输出的内存值都为0,说明软盘引导扇区还没有被加载到此处。可以验证BIOS第一条指令所在逻辑地址中的段地址CS寄存器值是一致的,偏移地址和IP寄存器的值是一致的。由于内存还没有被使用,所以其中的值都为0。5)输入调试命令vb0x0000:0x7c00,这样就在逻辑地址0x0000:0x7c00(相当于物理地址0x7c00)处添加了一个断点。输入调试命令c继续执行,在0x7c00处的断点中断。中断后会在Console窗口中输出下一个要执行的指令,即软盘引导扇区程序的第一条指令。6)输入调试命令sreg验证CS寄存器(0x0000)的值。7)输入调试命令r验证IP寄存器(0x7c00)的值。8)输入调试命令xp/512b0x0600可验证第一个用户可用区域是空白的。9)设计两个查看内存的调试命令,分别验证这两个用户可用区域的高地址端也是空白的。10)软盘引导扇区程序的主要任务就是将软盘中的loader.bin文件加载到物理内存的0x1000处,然后跳转到loader程序的第一条指令(物理地址0x1000处的指令)继续执行loader程序。输入调试命令xp/8b0x1000查看内存0x1000处的数据,验证此块内存的前三个字节和loader.lst文件中的第一条指令的字节码是相同的。11)根据之前 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 的loader.bin文件的大小,自己设计一个查看内存的调试命令,查看内存中loader程序结束位置的字节码,并与loader.lst文件中最后指令的字节码比较,验证loader程序被完全加载到了正确的位置。12)调试内核,在项目管理器中打开start.c文件,对其中的操作系统内核入口点函数KiSystemStartup添加断点及监视,在监视窗口中可以看到此函数的地址,与在虚拟内存x80001117处保存的函数入口地址相同,说明的确是由loader程序进入了操作系统内核。13)在控制台中输入命令“ver”,可得EOS的的版本,在控制台中输入命令“pt”,课查看输出的进程和线程信息。在进程列表中只有一个ID为1的系统进程,其优先级为24,包含有10个线程,其中的ID为2的线程是该进程的主线程,系统进程没有映像名称。在线程列表中有10个线程,它们都是系统线程。其中优先级为0的是空闲线程,当没有优先级大于0的线程占用处理器时,空闲线程就会在处理器上运行并处于运行状态(Running),否则就处于就绪状态(Ready)。ID为20的线程是控制台派遣线程,用于将键盘事件派遣到活动的控制台线程,所以在没有键盘事件发生的时间里,该线程都处于阻塞状态(Waiting)。余下的八个线程都是控制台线程,分别对应于八个控制台,由于它们执行的是同一个控制台线程函数(ke/sysproc.c文件中的KiShellThread函数),所以它们开始执行的地址都是相同的。控制台线程只有在处理控制台命令的时候才会处于运行状态,其它时间它们都在等待控制台命令的输入,会处于阻塞状态。由于本次是在控制台1中执行的pt命令,所以控制台1对应的线程处于运行状态,而其它的七个控制台线程都处于阻塞状态。14)将实验文件夹中的hello.exe文件添加到软盘镜像文件中,并在EOS启动完毕后,在EOS控制台中输入命令“hello”,迅速切换到控制台2,输入命令“pt”,可查看输出的进程和线程信息。四.实验体会本次实验了解了操作系统启动后的行为和状态,通过一步步具体的操作,理解了操作系统启动后运行的每个方面。在实验的过程中,对于自己设计的命令,可以在给定的范围内进行尝试,并不仅仅是将步骤中的例子略微改动,对于验证loader.lst文件最后的字节码命令,需要经过一定的计算,由于其文件大小为1.56KB,因此需要将最后的位置减去8b,得到最后一个字节码的位置,因此是0x1616。通过比较hello程序添加之前之后的进程状态比较,可以看出ID为33的线程是应用程序的主线程,数量只有一个,hello程序和系统进程区别是SYSTEM栏是N,且优先级比系统低,系统是24,应用程序是8。
本文档为【操作系统的启动实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
张ge
暂无简介~
格式:doc
大小:24KB
软件:Word
页数:5
分类:
上传时间:2023-03-03
浏览量:0