清华大学操作系统实验lab1实验报告.docx
《清华大学操作系统实验lab1实验报告.docx》由会员分享,可在线阅读,更多相关《清华大学操作系统实验lab1实验报告.docx(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、练习1、理解通过make生成执行文件的过程。练习1.1 操作系统镜像文件ucore.img 是如何一步一步生成的?在 proj1 执行命令 make V=可以得到 make 指令执行的过程make V=+ cc boot/bootasm.Sgcc -Iboot/ -fno-builtin -Wall -ggdb -m32 -nostdinc -fno-stack-protector - Ilibs/ -Os -nostdinc -c boot/bootasm.S -o obj/boot/bootasm.o+ cc boot/bootmain.cgcc -Iboot/ -fno-builtin
2、-Wall -ggdb -m32 -nostdinc -fno-stack-protector - Ilibs/ -Os -nostdinc -c boot/bootmain.c -o obj/boot/bootmain.o+ cc tools/sign.cgcc -Itools/ -g -Wall -O2 -c tools/sign.c -o obj/sign/tools/sign.o gcc -g -Wall -O2 obj/sign/tools/sign.o -o bin/sign+ ld bin/bootblockld -melf_i386 -N -e start -Ttext 0x7
3、C00 obj/boot/bootasm.o obj/boot/bootmain.o -o obj/bootblock.o”obj/bootblock.out” size: 440 bytesbuild 512 bytes boot sector: ”bin/bootblock” success! dd if=/dev/zero of=bin/ucore.img count=10000记录了 10000+0 的读入记录了 10000+0 的写出5120230 字节(5.1 MB)已复制,0.0227439 秒,225 MB/秒dd if=bin/bootblock of=bin/ucore.i
4、mg conv=notrunc记录了 1+0 的读入记录了 1+0 的写出512 字节(512 B)已复制,0.000214966 秒,2.4 MB/秒从这几条指令中可以看出需要生成 ucore.img 首先需要生成 bootblock,而生成 bootblock 需要先生成 bootmain.o 和 bootasm.o 还有 sign,这三个文件又分别由 bootmain.c、bootasm.S、sigh.c 来生成。ld -melf_i386 -N -e start -Ttext 0x7C00 obj/boot/bootasm.o obj/boot/bootmain.o o obj/boo
5、tblock.o这句话用于生成 bootblock,elf_i386 表示生成 elf 头,0x7C00 为程序的入口。”obj/bootblock.out” size: 440 bytes这句话表示生成的bootblock的文件大小,由于大小不到512字节,所以需要给blootblock填充,填充的功能在sign.c中有所表达,最终两字节设置为了0x55,0xAAbuf510 = 0x55;buf511 = 0xAA;FILE *ofp = fopen(argv2, “wb+“); size = fwrite(buf, 1, 512, ofp);练习1.2 一个被系统认为是符合标准的硬盘主引
6、导扇区的特征是什?么前面已经提到过:引导扇区的大小为512字节,最终两个字节为标志性完毕字节0x55,0xAA,做完这样的检查才能认为是符合标准的磁盘主引导扇 区。Sign.c文件中有作检查:if (size != 512) fprintf(stderr, “write ”%s” error, size is %d.n“ , argv2, size);return -1;练习2:使用qemu执行并调试lab1中的软件。练习2.1 从 CPU 加电后执行的第一条指令开头,单步跟踪 BIOS 的执行。练习2.2 在初始化位置0x7c00 设置实地址断点,测试断点正常。练习2.3 在调用qemu 时
7、增加-d in_asm -D q.log 参数,便可以将运行的汇编指令保存在q.log 中。将执行的汇编代码与bootasm.S 和 bootblock.asm 进展比较,看看二者是否全都。试验是基于老 lab1/proj1 做的,练习开头时是打算用命令行一句一句执行得到结果的,后来觉察直接修改makefile 和 gdbinit 可以大大提高调试效率。于是在makefile 中增加以下代码lab1-mon: $(UCOREIMG)$(V)$(TERMINAL) -e “$(QEMU) -S -s -d in_asm -D $(BINDIR)/q.log -monitor stdio -hda
8、 $ Data Segment # - Extra Segment在开启A20之前,BIOS还做了很多事:关中断、去除方向标志,给各个数据段清零。1、为何开启A20,以及如何开启A20?seta20.1:inb $0x64, %altestb $0x2, %aljnz seta20.1# 等待8042键盘掌握器不忙movb $0xd1, %aloutb %al, $0x64# 发送写8042输出端口的指令seta20.2:inb $0x64, %altestb $0x2, %aljnz seta20.2# 等待8042键盘掌握器不忙movb $0xdf, %aloutb %al, $0x60#
9、 翻开A20当 A20 地址线掌握制止时,则程序就像在 8086 中运行,1MB 以上的地是不行访问的。 在保护模式下 A20 地址线掌握是要翻开的。为了使能全部地址位的寻址力量,必需向键盘控 制器 8042 发送一个命令。键盘掌握器8042 将会将它的的某个输出引脚的输出置高电平,作 为 A20 地址线掌握的输入。一旦设置成功之后,内存将不会再被绕回(memory wrapping),这 样我们就可以寻址 intel 80286 CPU 支持的 16M 内存空间,或者是寻址 intel 80386 以上级别 CPU 支持的全部 4G 内存空间了。2、如何初始化GDT表?lgdt gdtdes
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 清华大学 操作系统 实验 lab1 报告
限制150内