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