在我读过的几个地方,
每个线程都有自己的一组CPU寄存器和自己的堆栈
在这里,我可以理解堆栈,它是一个数据结构。但是线程如何拥有自己的CPU寄存器。它们已修复数量,并且系统中正在运行无限数量的线程。
此致
答案 0 :(得分:8)
是的,有固定数量的寄存器。
当操作系统从1个线程切换到另一个线程时,它会将完成线程的状态(包括所有寄存器的当前值)复制到其描述符中,然后将另一个线程的描述符中的值复制到寄存器中。 / p>
这些描述符存储在RAM中,尽管这部分是Hyper Threading / Hyper Transport要修复的部分,允许一次将2个线程存储在单个CPU核心中,但这是一个完全不同的讨论。 / p>
答案 1 :(得分:2)
当调度程序执行上下文切换(另一个线程获得其CPU时间)时,它会将当前上下文保存到内存中。上下文包含大多数寄存器(如果不是全部),当线程再次获得CPU时,它将从存储器“加载”回寄存器。
答案 2 :(得分:2)
执行从/向线程切换时保存/恢复寄存器。