关于idleproc和initproc切换时的通用寄存器恢复问题
匿名2023/07/31 19:51:26提问
    lab4student
307

idleproc创建完initproc之后继续运行并等待调度,真正切换是发生在schedule函数里面

switch_to把两个进程的通用寄存器分别进行了保存和恢复,但initproc之后执行的位置是forkret

也就是说我们模拟了一次中断(其实这里应该并没中断),然后iret了,但是在iret之前popal又把所有通用寄存器刷新了一遍。。前面的switch_to意义何在。。

一般来说,如果进程切换是先中断的,那么tf应该存了一份regs,然后你swtich_to换一遍regs,可是iret之前还得刷新一遍,所以context和tf->tf_regs到底有什么区别=_=

回答(0
    推荐问答
      Simple Empty
      暂无数据