操作系统Ucore:Lab1QA(五)

来回答一下Lab1的问题
Ucore lab1 系列
操作系统实验Ucore:Bootasm启动(一)
操作系统实验Ucore:bootmain(二)
操作系统实验Ucore:kernel_init(三)
操作系统实验Ucore:Kernel_init(四)
操作系统Ucore:Lab1QA(五)

练习1:理解通过make生成执行文件的过程。

1.1操作系统镜像文件ucore.img是如何一步一步生成的?

ucore.img由kernel的bootblock组成,bootblock由bootasm和bootmain编译生成,最后由sign.c填充。kernel则由kern目录下的文件编译而成。

最后使用dd命令构造ucore.img

1.2一个被系统认为是符合规范的硬盘主引导扇区的特征是什么?

最后两个字节是0x55AA

练习2:使用qemu执行并调试lab1中的软件。

跳过

练习3:分析bootloader进入保护模式的过程。

3.1为何开启A20,以及如何开启A20

在8086中,虽然只有20位的总线,但是实际最大的CS:IP是FFFF:FFFF = 10 FFEF 已经超出了1MB的限制,所以如果地址超出了20位,就会发生回滚。也就是 FFFFF + 1 = 00000,在8086下,第20位地址线总是为0的,如果不使能A20,就只能访问奇数MB的内存。

如何开启A20?和特定的端口交互

3.2如何初始化GDT表

使用ldgt指令把内存里的GDT表装上,然后手动设置段寄存器,最后ljmp刷新CS寄存器

3.3如何使能和进入保护模式

使能CR0的PE位

练习4:分析bootloader加载ELF格式的OS的过程。

bootloader把ELF文件加载到内存的0x1_0000位置然后再将ELF的数据段和代码段加载到0x10_0000位置,最后跳转到此处,开始执行内核代码

练习5,6

在前面的文章里已经分析过了,略

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值