时间片、上下文切换和线程干扰之间的区别

Difference between Time-Slice, Context-Switch and Thread interference

作为 multi-threading 的初学者,我在这些 术语 上遇到了一些困难。有人可以帮我在他们之间画一个边界吗?怕不是一开始就学错了没人要'test'我

如有错误请指正:)

如果两个 线程 运行 在 1 CPU 核心 上,它们将是 context-switched. Context-switching 基于 time-slice algorithm,这有助于 Scheduler 到 'decide' 哪个以及在 core 上保持多长时间。这 2 个 线程 是否与这些术语共享相同的 变量 并不重要,对吗?

但是还有thread interference。这个 term 只有当两个线程共享相同的 variable?

时才基于

我说得对吗?

“上下文”简而言之,是需要加载到程序计数器寄存器、堆栈指针寄存器和 CPU 的其他寄存器中以使其启动的值的集合或恢复线程的执行。

“调度程序”是操作系统的一部分,它决定哪个线程应该 运行 在哪个 CPU 上以及什么时候。

“上下文切换”就是我们所说的当调度程序保存一个线程的上下文,并在同一个 CPU 上安装另一个线程的上下文,并让它 运行。

当 OS 出于某种原因关闭某个线程时,我们称之为“抢占”,这不是对线程刚刚所做的事情的反应。

“时间片”是调度程序在调度程序抢占它之前授予每个新(重新)启动的线程的时间段,以便让其他等待线程 运行.

最后,(我猜)当你读到“干扰”时,它可能指的是一个线程所做的任何事情,由于程序中的某些缺陷,干扰 具有其他线程的功能。 (例如,通过更改某些 共享变量的值 ,而此时另一个线程依赖于该变量而不更改。)