14

我正在读一本书,上面说单核且没有超线程的处理器一次只能处理一个进程,所以当我们在 PC 上执行如此多的操作并且一些后台进程总是在那里时,就会产生疑问为什么不让音乐播放器在两者之​​间短暂停留。我知道 CPU 速度非常快,但音乐播放器通常会连续播放音乐,没有任何小中断(这是可以观察到的)。谁能澄清这种行为?

4

3 回答 3

14

1)如您所说,没有超线程的单核CPU一次只能运行一个进程。多个进程通过上下文切换来处理,即 CPU 将运行一个进程,然后切换到下一个进程,然后再切换到下一个进程,以此类推。某个进程的调度频率取决于许多不同的因素,其中进程优先级是一个。(过去常常需要以更高的优先级运行 WinAmp 以避免故障等。现在不需要这样做,因为 CPU 速度要快得多)。

2)那么,考虑到这一点,为什么它仍然听起来很棒并且没有故障?

在处理音频时,CPU 通过将样本放在声卡上的硬件缓冲区或 RAM 中来为声音设备提供样本。声音处理器不直接从 CPU 获取数据,而是从这两个缓冲区之一读取样本。只要我们在缓冲区中有样本,我们就很好,即使 CPU 正在做其他事情。

关于硬件缓冲区大小的细节在不同的声卡上是不同的。一些(较旧的)声卡根本没有声音缓冲区,而在这里 RAM 开始发挥作用。

用完样本称为缓冲区欠载。即使在现代计算机上也可能发生这种情况,例如,如果您在运行音频播放器时启动繁重的进程,CPU 可能无法及时切换回来,我们可以清楚地听到声音馈送中的故障和间隙。

于 2012-09-07T14:12:32.793 回答
0

这是由于执行抢先式多任务的操作系统。该过程实际上被中断了很短的时间,不足以引起人类的注意。另一个原因也是声卡有一个播放缓冲区,它允许连续播放,同时数据以块的形式提供给它。因此,虽然向卡提供数据的过程被中断了很短的时间,但仍然可以进行播放

于 2012-09-07T14:10:22.343 回答
-1

这由操作系统调度程序处理。

调度程序将为每个进程分配一个时间片(这可能是几毫秒),并允许进程在该时间长度内执行它需要执行的操作。分配的长度由操作系统使用的算法确定(即短期调度、长期等)。您没有注意到这一点的原因是因为 CPU 可以在如此高的频率下运行,即 1GHz,这使得单核/线程上的多任务对用户透明。

http://en.wikipedia.org/wiki/Scheduling_ (计算) http://web.cs.wpi.edu/~cs3013/c07/lectures/Section05-Scheduling.pdf

于 2012-09-07T14:23:22.470 回答