操作系统实验第二讲操作系统的启动Word格式.docx
- 文档编号:17915851
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:14
- 大小:1.87MB
操作系统实验第二讲操作系统的启动Word格式.docx
《操作系统实验第二讲操作系统的启动Word格式.docx》由会员分享,可在线阅读,更多相关《操作系统实验第二讲操作系统的启动Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
姓名
吴雪含
专业
计算机科学与技术
学生所在学院
计算机科学与技术学院
指导教师
王红滨、曹雪
实验室名称地点
21b276
哈尔滨工程大学
第二讲操作系统的启动
一、实验概述
1.实验名称
操作系统的启动
2.实验目的
1)、跟踪调试eos在pc机上从加电复位到成功启动的全过程,了解操作系统的启动过程。
2)、查看eos启动后的状态和行为,理解操作系统启动后的工作方式。
3.实验类型(验证、设计)
验证
4.实验内容
1)、启动OSLab。
2)、新建一个EOSKernel项目。
3)、在“项目管理器”窗口中打开boot文件夹中的boot.asm和loader.asm两个汇编文件。
boot.asm是软盘引导扇区程序的源文件,loader.asm是loader程序的源文件。
简单阅读一下这两个文件中的NASM汇编代码和注释。
4)、按F7生成项目。
5)、生成完成后,使用Windows资源管理器打开项目文件夹中的Debug文件夹。
找到由boot.asm生成的软盘引导扇区程序boot.bin文件,该文件的大小一定为512字节(与软盘引导扇区的大小一致)。
找到由loader.asm生成的loader程序loader.bin文件,记录下此文件的大小1566字节,在下面的实验中会用到。
找到由其它源文件生成的操作系统内核文件kernel.dll。
二、实验环境
进行实验使用的操作系统、编译器、语言及工具等。
操作系统:
WindowsXP
编译器:
TevalatonOSLab
语言:
C++
三、实验过程(每次实验不一定下面6条都写,根据实际情况定)
*需要解决的问题以及解答
(1)、自己设计两个查看内存的调试命令,分别验证这两个用户可用区域的高地址端也是空白的。
答:
命令为:
xp/512b0x7a00和cp/512v0x9fe00。
因为第一个用户区的高位地址截止到0x7c00,第二个用户区高位地址截止到0xA0000,命令表示显示从0x7a00和0x9fe00以后512b空间的所有字节码,即两个用户区的高位地址端,可以看到所有字节全为0,说明高地址端是空白的。
如图一、图二所示。
(2)、自己设计一个查看内存的调试命令,验证上位内存的高地址端已经被系统占用。
xp/512b0xffe00。
因为上位内存的高位地址截止到0x100000,命令表示显示从0xffe00以后的512b空间的所有字节码,即两个用户区的高位地址端。
可以看到所有字节都有值,说明高地址端被占用。
如图三所示。
(3)、根据之前记录的loader.bin文件的大小,自己设计一个查看内存的调试命令,查看内存中loader程序结束位置的字节码,并与loader.lst文件中最后指令的字节码比较,验证loader程序被完全加载到了正确的位置。
命令为xp/8b0x1616.程序的初始位置为0x1000,加上1566的十六进制61E-8b,答案即为1616.如图四、图五、图六、图七所示。
(4)、仔细比较实验指导10-5图和10-6图,尝试说明哪个是应用程序的进程,它和系统进程有什么区别,那个是应用程序的主线程,它和系统线程有什么区别?
答:
进程列表中ID为31的进程是应用程序的进程,其优先级为8,包含1个线程,主线程ID为33,映像名称为a:
\hello.exe。
而ID为1的是系统进程,其优先级为24,包含有10个线程,其中的ID为2的线程是该进程的主线程,系统进程没有映像名称。
主要区别为:
应用程序的进程优先级较低。
线程列表中ID为33的线程是应用程序的线程,其优先级为8,处在阻塞状态,而ID为20~28的是系统进程,其优先级为24,其中ID为22的处于运行状态
图一
图二
图三
(5)、为什么EOS操作系统从软盘启动时要使用boot.bin和loader.bin两个程序?
使用一个可以吗?
它们各自的主要功能是什么?
如果将loader.bin的功能移动到boot.bin文件中,则boot.bin文件的大小是否仍然能保持小于512字节?
在生成项目的时候,boot文件夹中的两个汇编文件boot.asm和loader.asm分别生成了两个二进制文件boot.bin和loader.bin。
这两个文件缺一不可,他们会被写入软盘镜像文件。
在EOS操作系统启动的时候,boot.bin用于引导软盘,而loader.bin用于加载程序。
如果把loader.bin的功能移动到boot.bin程序中,肯定会增加boot.bin的规模文件大小将会大于512字节。
(6)、软盘引导扇区加载完毕后内存中有两个用户可用的区域,为什么软盘引导扇区程序选择将loader.bin加载到第一个可用区域的0x1000处呢?
这样做有什么好处?
这样做会对loader.bin文件的大小有哪些限制?
第一个用户可用区取余位于低地址端,便于检索查找,并且容量相对较小,适合容纳相对较小的文件,所以将loader.bin加载到第一个可用区域,节省资源。
由于第一用户区域的大小限制,loader.bin的大小不能超过29.5KB。
图四
图五
如左图图六所示Loader.bin文件大小为1566B。
图七
*程序运行时的初值以及运行结果:
Bochs在CPU要执行的第一条指令处中断。
Display窗口没有显示内容。
如下图所示:
sreg命令查看当前CPU各个段寄存器的值:
r命令查看当前CPU中各个通用寄存器的值
输入调试命令xp/1024b0x0000
输入调试命令xp/512b0x7c00
输入调试命令vb0x0000:
0x7c00添加断点
输入c继续执行
输入sreg验证CS寄存器的地址
输入调试命令r验证IP寄存器的值
输入调试命令xp/512b0x7c00显示软盘引导扇区程序的所有字节码
输入调试命令xp/512b0x0600
输入调试命令xp/512b0x7e00
输入调试命令xp/512b0xa0000验证上位内存已被系统占用
输入调试命令vb0x0000:
0x7d81添加一个断点
输入调试命令c继续执行,在断点处中断
输入调试命令xp8b0x10000查看内存0x1000处的数据
3.2.4调试加载程序
查看eos版本号:
迅速按Ctrl+F2切换到控制台2,并输入命令“pt”后按回车。
输出的进程和线程信息如图10-6所示
四、实验体会
本次实验主要采用了在EOS操作系统启动过程中设置断点,查看内存空间的占用情况来观察文件的加载情况。
通过本次实验了解了了解操作系统的启动过程。
通过查看eos启动后的状态和行为,理解操作系统启动后的工作方式。
通过一步步的操作,加深了在操作系统上对程序创建、调试程序的掌握,但对OS的相关知识还不是很了解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 第二 启动