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

5

我在几个地方读到过这样的说法:

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

在这里,我可以理解堆栈是一种数据结构。但是线程如何拥有自己的CPU寄存器呢?它们的数量是固定的,而系统中运行的线程数量是无限的。

此致敬礼

3个回答

10

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

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

这些描述符存储在RAM中,尽管这部分是超线程旨在解决的问题之一,允许同时存储2个线程在单个CPU核心中,但这是完全不同的讨论。


4

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


3

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接