操作系统实验第二讲操作系统的启动#精选.docx

上传人:b****7 文档编号:8623199 上传时间:2023-02-01 格式:DOCX 页数:14 大小:1.87MB
下载 相关 举报
操作系统实验第二讲操作系统的启动#精选.docx_第1页
第1页 / 共14页
操作系统实验第二讲操作系统的启动#精选.docx_第2页
第2页 / 共14页
操作系统实验第二讲操作系统的启动#精选.docx_第3页
第3页 / 共14页
操作系统实验第二讲操作系统的启动#精选.docx_第4页
第4页 / 共14页
操作系统实验第二讲操作系统的启动#精选.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

操作系统实验第二讲操作系统的启动#精选.docx

《操作系统实验第二讲操作系统的启动#精选.docx》由会员分享,可在线阅读,更多相关《操作系统实验第二讲操作系统的启动#精选.docx(14页珍藏版)》请在冰豆网上搜索。

操作系统实验第二讲操作系统的启动#精选.docx

操作系统实验第二讲操作系统的启动#精选

操作系统

实验报告

课程名称

操作系统实验

课程编号

201406304

实验项目名称

实验环境的使用

学号

2015061423

班级

20150614

姓名

吴雪含

专业

计算机科学与技术

学生所在学院

计算机科学与技术学院

指导教师

王红滨、曹雪

实验室名称地点

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的相关知识还不是很了解。

 

最新文件仅供参考已改成word文本。

方便更改如有侵权请联系网站删除

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1