XV6 中定时器中断是如何发生的?

XV6 中定时器中断是如何发生的?

thread_schedule()我使用、 和等函数实现了线程切换thread_yield(),其目的是保存当前线程的寄存器和状态并加载下一个线程的寄存器和状态。

我现在想在 xv6 中使用计时器中断来实现同样的事情,但我不知道它是如何工作的。

答案1

trap定时器中断由中的函数处理trap.c。计数器ticks在那里更新,并且也yield()被调用。

由于没有多线程,xv6我假设您只是实现它。在这种情况下,请注意,在某种程度上,实现了线程,只是每个线程都有自己的地址空间和资源集。因此,您实际上正在实现的是一种在线程之间共享资源的方法,而不是真正实现线程和上下文切换的概念。

相关内容