即使只是上下文切换并同时完成所有进程,多任务处理如何可能?
How is multitasking possible even if it's just context switching and finish all processes simultaneously?
据我所知,多任务处理只是以非常快的速度发生的上下文切换,因此给人一种并行的错觉。
但是我很困惑。即使上下文切换必须处理整个数据,那么 CPU 如何同时实现呢?
例如。我正在 VLC 中听 5 分钟长的歌曲,并在 KMP 中听另一首 5 分钟的歌曲。所以 CPU 必须处理 10 分钟长的数据。但是两首歌同时结束。这怎么可能?如果我误解了一些概念,请更正。
您能提供单核处理器和多核处理器的答案吗?
您说得对,在单个 CPU 核心上进行多任务处理只是快速上下文切换。当您考虑多核 CPU 时,这会变得有点复杂,但想法大致相同。
音频设备是一个特别有趣的例子。他们有用于播放的缓冲区,他们从中 自己 生成声音,而无需 CPU 干预。多任务处理的工作原理是,当播放缓冲区变低时,声音设备将通知 OS(或驱动程序或应用程序),并且将花费一些 CPU 时间来填充缓冲区备份。幸运的是,将数据传输到缓冲区比回放快得多,所以这让 CPU 可以自由地处理他们必须做的所有其他事情。
您的示例中还涉及一个系统:在您系统的某处,实施了 'mixer'。有时它在声卡上,有时它在 OS 中。混音器负责获取所有应用程序想要播放的声音,并将它们组合成一个可以馈送到声卡缓冲区的播放流。幸运的是,混合也不是太复杂,所以混合 10 秒的音频所花费的时间仍然不会像播放它所花费的时间那么多。
据我所知,多任务处理只是以非常快的速度发生的上下文切换,因此给人一种并行的错觉。
但是我很困惑。即使上下文切换必须处理整个数据,那么 CPU 如何同时实现呢?
例如。我正在 VLC 中听 5 分钟长的歌曲,并在 KMP 中听另一首 5 分钟的歌曲。所以 CPU 必须处理 10 分钟长的数据。但是两首歌同时结束。这怎么可能?如果我误解了一些概念,请更正。
您能提供单核处理器和多核处理器的答案吗?
您说得对,在单个 CPU 核心上进行多任务处理只是快速上下文切换。当您考虑多核 CPU 时,这会变得有点复杂,但想法大致相同。
音频设备是一个特别有趣的例子。他们有用于播放的缓冲区,他们从中 自己 生成声音,而无需 CPU 干预。多任务处理的工作原理是,当播放缓冲区变低时,声音设备将通知 OS(或驱动程序或应用程序),并且将花费一些 CPU 时间来填充缓冲区备份。幸运的是,将数据传输到缓冲区比回放快得多,所以这让 CPU 可以自由地处理他们必须做的所有其他事情。
您的示例中还涉及一个系统:在您系统的某处,实施了 'mixer'。有时它在声卡上,有时它在 OS 中。混音器负责获取所有应用程序想要播放的声音,并将它们组合成一个可以馈送到声卡缓冲区的播放流。幸运的是,混合也不是太复杂,所以混合 10 秒的音频所花费的时间仍然不会像播放它所花费的时间那么多。