单线程处理器上的多任务幻觉?

单线程处理器上的多任务幻觉?

官方对此的解释是什么?我好像总是忘记。

答案1

单处理器上的多任务或多线程也称为感知多线程。显然,使用一个 CPU,不可能同时执行命令。相反,我们交错执行进程,给人一种多线程的错觉。

正如 @Journeyman Geek 所补充的,这使用了抢占。这就是我们有某种结构(想象一个队列)的地方,程序存储在其中,每个进程都有一定数量的周期来执行。然后,当前正在运行的程序被抢占(或与另一个程序交换),然后该程序运行。有许多策略可以确定哪些程序何时执行。我们可以完全公平(例如:循环),每个程序都会收到一定的时间量,或者我们可以按优先级分离程序,并且只有在没有更多高优先级程序要执行时才执行低优先级程序(例如:优先级队列)。

如果您正在编写 GUI 应用程序并运行长时间的后台任务,那么这很有用。如果将其编写为单线程应用程序,GUI 的前端将冻结。但是,使用两个线程,GUI 仍可响应。即使只有一个 CPU,进程的交错也意味着 GUI 可保持响应,而后台进程则继续运行并取得进展。

答案2

超线程最有可能的是,在现代系统中 - 简而言之,部分但不是整个核心被复制,因此每个核心可以运行更多线程

答案3

基本上,操作系统会依次运行每个应用程序(以及每个应用程序中的每个线程),并运行几个 CPU 周期。因此,如果您有 10 个应用程序在运行,那么在 10 秒的时间内,每个应用程序的实际运行时间相当于 1 秒。

这意味着每个应用程序的运行速度都比它是计算机上唯一运行的应用程序时慢 - 但对于绝大多数应用程序来说,它们的大部分时间都花在等待用户输入上。

维基百科了解更多信息。

答案4

基本上,当您在单线程 CPU 上运行多个应用程序时,操作系统会在应用程序之间切换 CPU。切换过程非常快,让人产生多任务处理的错觉。因此,基本上,CPU 将其周期分配给所需的应用程序,然后转到另一个应用程序,然后再返回第一个应用程序。这一切都由操作系统完成。当 CPU 切换到另一个同时运行的应用程序时,会保存前一个应用程序的状态,以便当 CPU 再次转到该应用程序时,它会记住它离开时应用程序的状态。

相关内容