操作系统实验 ucore lab1

2020-04-14 18:21

一、通make生成执行文件的过程

a) 操作系统镜像文件ucore.img是如何一步一步生成的 在编译时使用make V=,相当于设置一个标记,使得把make编译执行的过程全部展示出来。

首先,调用了GCC,把一些C的源代码编译成.O的目标文件。

然后,调用了ld,把这些目标文件准换成一个可执行程序,比如下面示例,转换成为了bootloader的一个执行程序bootblock.out。

最后,调用了dd,把bootloader、bootblock和kernel放到虚拟的硬盘uCore.img里面。

b) 硬盘的主引导扇区的特征是什么

在sign.c中,先申请了一个512字节的空间buf,然后将buf初始

化为全0,再将主引导程序写入这个空间,最后,在buf的最后两个字节写入55AA。所以硬盘的主引导扇区的特征是主引导扇区的512个字节的最后两个字节是55AA。

二、使用qemu执行并调试lab1中的软件

a) 从启动开始,单步跟踪BIOS的执行

实验远程调用的方法,启动qemu,并让它进入-S状态。

开启另外一个终端,执行gdb命令,绑定端口1234。

在QEMU窗口中使用 x/10i $pc 查看最近10条指令的反汇编内容。在gdb中使用si命令执行单步,显示位置。可以看到一启动,就处于0xfffffff0的位置,第一条指令是个长跳转指令。

b) 在初始化位置0x7c00设置实地址断点,测试断点正常 输入 b *0x7c00设置断点,输入 c 执行到断点。

输入x/10i $pc 查看最近10条指令的反汇编内容,可以看到qemu执行到断点0x7c00。断点工作正常。

再次输入c执行,qemu继续工作。得到结论,断点工作正常。

c) 从0x7c00开始跟踪代码运行,将单步跟踪反汇编得到的代码与bootasm.S和bootblock.asm进行比较

经过比较发现:gdb得到的反汇编代码与bootasm.S和bootblock.asm中的代码基本相一致。

d) 找一个bootloader或内核中的代码位置,设置断点并进行测试

输入 b *0x7c10设置断点,输入 c 执行到断点。输入x/10i $pc 查看最近10条指令的反汇编内容。

输入stepi,单步执行一条机器指令。再一次输入x/10i $pc 查看最近10条指令的反汇编内容。最后,输入c,qemu继续工作。


操作系统实验 ucore lab1.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:水质检验中计量保证论文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: