依我的理解,在lab4进程切换的时候,有以下几个步骤:
1)利用proc_struct中的context的eip,跳到forkret
2)在forkret中,利用原先设计好的context.esp,将栈顶指向proc_struct中的trapframe
3)跳到trapret,将trapframe中的寄存器一一还原,将eip指向kernel_thread_entry
我的疑问就是,为什么要先用context还原一遍寄存器,然后到trapframe里再还原一遍?
为什么不能直接将context中的eip就指向kernel_thread_entry?
一直搞不懂proc_struct中trap的作用,求解释!