进程是分配资源的最小单元。线程是最小的调度单元。
这是否意味着一个进程至少包含一个线程?是线程等于中只有一个线程时的进程过程
当今许多处理器都是多核处理器。Join我有一个进程P。这个进程中有两个线程P,a和B。我希望a和B分别在CPU的核心0和核心1上运行。
但我们知道,这一进程需要分配资源。这个过程有上下文。上下文通常存储在寄存器中吗?如果是这样,不同的物理核心使用不同的物理寄存器。然后,当线程A和线程B分别在Core 0和Core 1上运行时。
那么这两个核心需要分配资源吗?在这种情况下,这两个线程如何保持一致性?每个线程都有自己的资源,所以这不是变成了两个进程吗?这是否意味着运行在不同内核上的进程中的不同线程与运行在不同核心上的不同进程相同?
SMP系统中的绝大多数资源(寄存器和处理能力除外(都在所有核心之间共享。这包括内存。因此,操作系统可以在不同的内核上调度多个线程,但所有线程都指向内存中的一组共享进程资源。
CPU缓存由核心使用缓存一致性协议来处理。只要线程遵循内存模型并正确使用内存屏障/原子指令,那么通过缓存可见的内存对所有内核来说都应该是相同的。