Multithreading 时间切片的价格是多少?

Multithreading 时间切片的价格是多少?,multithreading,context-switch,Multithreading,Context Switch,让我们用一个简单的例子。我在池中有一个核心和一个线程,其中有两个CPU限制的任务,持续时间很长。因为一个线程在一个内核上运行,所以从开始到结束都是不间断的。然后它运行第二个任务 但让我们把它搞笑。我在pool size=2中添加了另一个线程,我仍然在处理这个1核。现在我让线程1与任务1一起工作,线程2与任务2一起工作。这是不好的,因为我会得到著名的时间切片 我引进它的代价是什么?时间切片需要做什么才能从线程1切换到线程2和相反的线程? 任何有用的资源都是好的。我需要知道当操作系统改变它执行的线程

让我们用一个简单的例子。我在池中有一个核心和一个线程,其中有两个CPU限制的任务,持续时间很长。因为一个线程在一个内核上运行,所以从开始到结束都是不间断的。然后它运行第二个任务

但让我们把它搞笑。我在pool size=2中添加了另一个线程,我仍然在处理这个1核。现在我让线程1与任务1一起工作,线程2与任务2一起工作。这是不好的,因为我会得到著名的时间切片

我引进它的代价是什么?时间切片需要做什么才能从线程1切换到线程2和相反的线程? 任何有用的资源都是好的。我需要知道当操作系统改变它执行的线程时,需要再次加载什么

现在我让线程1与任务1一起工作,线程2与任务2一起工作。这是不好的,因为我会得到著名的时间切片

它不一定有什么不好的地方;它允许计算机同时在两项任务上取得进展,这通常是您想要的

我引进它的代价是什么

代价是,你的操作系统的调度程序必须每隔这么多毫秒进行一次上下文切换——这通常不是什么大问题,因为调度程序的时间量,即它在从一个线程切换到另一个线程之前允许经过的时间量,被调整为足够长,这样做上下文切换的开销可以忽略不计

另一个代价是,当两个任务同时进行时,计算机必须同时将两个任务的数据保存在RAM中,这意味着与一次一个任务的情况相比,RAM的最大使用量更高。这是否重要取决于两个任务使用了多少RAM。如果一个任务的工作集在很大程度上适合可用的缓存空间,但两个任务的工作集都不适合,那么在两个数据集之间来回切换也可能会在某种程度上降低CPU缓存的效率

时间切片需要做什么才能从线程1切换到线程2 对面呢

要进行上下文切换,操作系统的调度程序必须对导致调度程序例程运行的计时器中断做出反应,将所有CPU核心寄存器的当前值保存到RAM缓冲区,然后从RAM缓冲区加载另一个线程的寄存器值,在RAM缓冲区中,这些值以前保存到CPU核心的寄存器中,然后为计划程序下次需要运行的时间设置一个中断计时器

现在我让线程1与任务1一起工作,线程2与任务2一起工作。这是不好的,因为我会得到著名的时间切片

它不一定有什么不好的地方;它允许计算机同时在两项任务上取得进展,这通常是您想要的

我引进它的代价是什么

代价是,你的操作系统的调度程序必须每隔这么多毫秒进行一次上下文切换——这通常不是什么大问题,因为调度程序的时间量,即它在从一个线程切换到另一个线程之前允许经过的时间量,被调整为足够长,这样做上下文切换的开销可以忽略不计

另一个代价是,当两个任务同时进行时,计算机必须同时将两个任务的数据保存在RAM中,这意味着与一次一个任务的情况相比,RAM的最大使用量更高。这是否重要取决于两个任务使用了多少RAM。如果一个任务的工作集在很大程度上适合可用的缓存空间,但两个任务的工作集都不适合,那么在两个数据集之间来回切换也可能会在某种程度上降低CPU缓存的效率

时间切片需要做什么才能从线程1切换到线程2 对面呢


要进行上下文切换,操作系统的调度程序必须对导致调度程序例程运行的计时器中断做出反应,将所有CPU核心寄存器的当前值保存到RAM缓冲区,然后从RAM缓冲区加载另一个线程的寄存器值,在RAM缓冲区中,这些值以前保存到CPU核心的寄存器中,然后为计划程序下次需要运行时设置一个中断计时器。

这个术语就是。哦,谢谢你终于找到了它。我一直在用不同的术语搜索..这个术语是.哦,谢谢你终于找到了。我一直在用不同的术语搜索。。