清华大学操作系统lab1-实验报告.docx
《清华大学操作系统lab1-实验报告.docx》由会员分享,可在线阅读,更多相关《清华大学操作系统lab1-实验报告.docx(5页珍藏版)》请在课桌文档上搜索。
1、实验1:系统软件启动过程练习1:(1)操作系统镜像文件ucore.img是如何一步-一步生成的?在命令行中输入makeV=1、首先把C的源代码进行编译成为.o文件,也就是目标文件(红色方框内)2、Id命令将这些目标文件转变成可执行文件,比方此处的bootblock.out(绿色方框内)3、dd命令把bootloder放到ucore.imgcount的虚拟硬盘之中4、还生成了两个软件,一个是Bootloader,另一个是kernelo(2)一个被系统认为是符合标准的硬盘主引导扇区的特征:labltoolssign.c中我们可以了解到标准的硬盘引导扇区的大小为512字节,硬盘结束标志位55AA练习
2、2:(1) 从CPU加电后执行的第一条指令开始,单步跟踪BIOS的执行改写Makefile文件labl-mon:$(UCOREIMG)$(V)$(TERMINAL)-eS(QEMU)-S-s-din_asm-D$(BINDIR)/q.log-monitorstdio-hda$ DS: Data Segment# - ES: Extra Segment#- FS#- GS# - SS: Stack Segment#栈顶为0x7Coospin:jmpspin练习4:分析bootloader加载ELF格式的OS的过程读一个扇区的流程可参看bootmain.c中的readsect函数实现。大致如下:1
3、 .读I/O地址0xlf7,等待磁盘准备好;2 .写I/O地址OXlf20xlf5,0xlf7,发出读取第OffSeet个扇区处的磁盘数据的命令;3 .读I/O地址0xlf7,等待磁盘准备好;4 .连续读I/O地址OXlfo,把磁盘扇区数据读到指定内存。staticvoidreadsect(void*dstzuint32_tsecno)/waitfordisktobereadywaitdisk();outb(0lF2z1);/count=1outb(0xlF3zsecno&OxFF);outb(0lF4,(secno8)&OxFF);outb(0xlF5z(secno16)&OxFF);out
4、b(0lF6z(secno24)&OxF)OxEO);outb(0lF7z0x20);/cmd0x20-readsectors/waitfordisktobereadywaitdisk();/readasectorinsl(0xlF0zdst,SECTSIZE/4);该函数封装在readseg函数中,该函数完成读取任意的长度。Notice:uint32_tsecno=(offset/SECTSIZE)+1;#0号扇区已被引导占用。最后在bootmain函数中完成加载ELF格式os的操作:1:读取ELF的头部2:判断ELF文件是否是合法3:将描述表的头地址存在ph4:按照描述表将ELF文件中数据
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 清华大学 操作系统 lab1 实验 报告
链接地址:https://www.desk33.com/p-1305362.html