每个线程如何拥有CPU寄存器

在我读过的几个地方,

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

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

问候

Solutions Collecting From Web of "每个线程如何拥有CPU寄存器"

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

当OS从1个线程切换到另一个线程时,它将整理线程的状态(包括所有寄存器的当前值)复制到其描述符中,然后将另一个线程的描述符中的值复制到寄存器中。

这些描述符被存储在RAM中,尽管这部分是超线程/超传输(Hyper Threading / Hyper Transport)所要解决的问题,一次只能将2个线程存储在单个CPU内核中,但这是一个完全不同的讨论。

当调度程序执行上下文切换时(另一个线程获取其CPU时间),它将当前上下文保存到内存中。 上下文包含大部分寄存器(如果不是全部的话),当线程再次获得CPU时,它将从内存“加载”回寄存器中。

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