30天自制os的学习也告一段落,因为有其它更重要的事情要集中精力去处理,书本从15天开始就是多任务了,但是不得不停下一阵子。
下面总结下学习中遇到的一些问题。
1:学习这前14天中,问题最大的是关于GDT,IDT的理解,还有段的访问长段,属性的理解。
2:这其中遇到的一个现象就是从qemu可以正常启动,但是写到u盘后,从u盘启动时,会不停的重启,可以猜测到是因为产生了一些异常导致电脑重启,但是由于水平有限一直不知道为什么, 后来放下30天这本书,去看了一下,关于GDT的访问属性的问题,发现出现问题的原因如下:
- 段的分页位没有开,导致从段基址开始,能访问的空间只有1MB的范围,而博主写的代码与日本作者的有些不同,跳转到c语言写的代码指令已经超过了2MB,
- 日本作者的代码在初始化GDT,IDT的函数中,对代码段的长度进行了控制
3:在10几天的代码中,最难理解理解的还是关于图层刷新