gpt4 book ai didi

multithreading - 时间片的价格是多少?

转载 作者:行者123 更新时间:2023-12-03 13:16:36 25 4
gpt4 key购买 nike

让我们用一个简单的例子。我有 1芯 1 个线程 在具有两个持续很长时间的 CPU 密集型任务的池中。由于一个线程在 1 个核心上运行,因此它从头到尾都不会中断。然后它运行第二个任务。
但是,让我们把这变得有趣。我在池中添加了另一个线程(大小 = 2),我仍然在那个 1 核心上工作。现在我让线程 1 与任务 1 一起工作,线程 2 与任务 2 一起工作。这很糟糕,因为我会得到著名的时间片。
我为介绍它付出的代价是多少?时间片需要做什么才能从线程 1 切换到线程 2 并相反?
任何有用的资源都会很好。我需要知道当操作系统更改它执行的线程时需要再次加载什么。

最佳答案

Now I make thread 1 work with task 1 and thread 2 work with task 2. This is bad because i would get famous time-slicing.


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

What is the price I am paying for introducing it?


代价是你的操作系统的调度程序必须每隔这么多毫秒进行一次上下文切换——这通常不是什么大问题,因为调度程序的量子(即在从执行一个线程切换到另一个)被调整到足够长,以至于进行上下文切换的开销可以忽略不计。
另一个代价是,当两个任务同时进行时,计算机必须同时将两个任务的数据保存在 RAM 中,这意味着与一次一个任务的情况相比,最大 RAM 使用率更高。这是否重要取决于您的两个任务使用多少 RAM。在两个数据集之间来回切换也可能会在一定程度上降低 CPU 缓存的有效性,如果一个任务的工作集在很大程度上适合可用的缓存空间,但两个任务的工作集都不会。

What does time-slicing need to do to switch from thread 1 to thread 2and opposite?


要进行上下文切换,操作系统的调度程序必须对定时器中断(导致调度程序例程运行)使用react,将所有 CPU 内核寄存器的当前值保存到 RAM 缓冲区中,然后加载其他线程的来自(之前保存它们的 RAM 缓冲区)中的寄存器值返回到 CPU 内核的寄存器中,然后设置一个中断计时器以供下次调度程序需要运行时使用。

关于multithreading - 时间片的价格是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63459568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com