ucore-project4: interrupt -- 搞定第一个中断:timer

修改了代码中的一个bug,时钟终端终于正常了。

project4是一个很大的工程,包括了6个小工程。今天完成的是第一个工程:添加中断,初始化pic(8259A)和pit(8253)。

第二个工程project4.1主要添加了用户态段和一个TSS段,重新初始化gdt,并加载了一个TSS

第三个工程project4.1.1实现用户态和内核态的切换,主要通过修改int中断,在中断处理函数中修改trapframe的CS、DS等的值实现。同时这个工程中需要注意idt中从user到kernel那一项的dpl是3(改成0试试???)

第四个工程project4.1.2使用lret从kernel跳转到user,通过call callgate从user跳转到kernel

第五个工程project4.2实现了一个kgdb

第六个工程project4.3使用了cpu的调试寄存器db0~db7进行内核调试

project4已经延期了6天了,今天刚刚完成project4,后续需要完成内核和外部跳转的能力,调试部分先不管,毕竟还有printf和qemu提供的gdb调试能力。

争取project4明天全部完成。

2011/12/18: 很遗憾,今天刚刚完成4.1.1,延期12天。不过收获很大,对x86 cpu内核和用户态切换,以及中断的实现、任务处理(TSS)有了比较多的了解,idt中从user到kernel那一项的dpl必须为3,为0时会不断产生通用保护异常(异常13)。

猜你喜欢

转载自spartan1.iteye.com/blog/1292691