2012-04-29 40 views
4

在几个地方我已阅读,如何每个线程都可以有CPU寄存器

每个线程都有自己的一套CPU寄存器和自己的栈

在这里,我能理解关于栈,这是一个数据结构。但是线程可以拥有自己的CPU寄存器。它们的数量是固定的,系统中正在运行的线程数量是无限的。

问候

回答

8

是的,有一个固定数量的寄存器。

当操作系统从1个线程切换到另一个线程时,它将包含所有寄存器的当前值的结束线程的状态复制到其描述符中,然后将另一个线程的描述符中的值复制到寄存器中。

这些描述符存储在RAM中,尽管这部分是超线程/超传输设置要修复的部分内容,允许一次将2个线程存储在单个CPU内核中,但这是一个完全不同的讨论。

2

当调度程序的上下文切换(另一个线程获取其片的CPU时间),这样可以节省当前上下文到内存中。上下文包含大部分寄存器(如果不是全部),并且当线程再次获取CPU时,它将从内存“加载回”寄存器中。

2

当执行从/切换到线程时,寄存器被保存/恢复。

相关问题