2012-09-07 230 views
5

我在读一本书,它说单核处理器和没有超线程的处理器一次只能处理一个进程,所以有人怀疑当我们在PC上做很多操作时,后台进程总是存在,那么为什么音乐播放器在短时间内停止。我知道CPU速度非常快,但音乐播放器通常连续播放音乐,没有任何小的中断(这是可观察的)。任何人都可以澄清这种行为?音乐播放器进程

回答

4

1)如您所说,没有超线程的单核CPU可以一次只运行一个进程。多个进程通过上下文切换进行处理,即CPU将运行一个进程,然后切换到下一个进程,然后切换到下一个进程,然后返回到第一个进程,依此类推。某个过程的安排频率取决于许多不同的因素,其中过程优先级为1。 (在那些日子里,经常需要以更高的优先级运行WinAmp来避免毛刺等。现在这不需要,因为CPU要快得多)。

2)因此,考虑到这一点,它怎么样仍然听起来很棒,没有毛刺?

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

有关硬件缓冲区大小的详细信息在不同的声卡上有所不同。一些(旧的)声卡根本没有声音缓冲区,而在这里RAM代替了。

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

0

这是由于操作系统preemptive multi-tasking。这个过程实际上正在中断很短的时间,不足以让人注意到。另一个原因是音频卡有一个播放缓冲区,可以连续播放,而数据则以大块的形式输入。 因此,虽然数据馈送卡片的过程在很短的时间内被中断,但回放仍可能发生在

+0

但通常我们没有听到任何突破。难道我们无法观察任何休息吗? –

-1

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

调度程序将为每个进程分配一个时间片(这可能是几毫秒),并允许进程在这段时间内执行所需的内容。分配的长度由OS使用的算法确定(即,短期调度,长期等)。之所以没有注意到这一点,是因为CPU可以在如此高的频率下工作,即1GHz,这使得单个核心/线程的多任务处理对用户透明。

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