idleproc创建完initproc之后继续运行并等待调度,真正切换是发生在schedule函数里面
switch_to把两个进程的通用寄存器分别进行了保存和恢复,但initproc之后执行的位置是forkret
也就是说我们模拟了一次中断(其实这里应该并没中断),然后iret了,但是在iret之前popal又把所有通用寄存器刷新了一遍。。前面的switch_to意义何在。。
一般来说,如果进程切换是先中断的,那么tf应该存了一份regs,然后你swtich_to换一遍regs,可是iret之前还得刷新一遍,所以context和tf->tf_regs到底有什么区别=_=