音乐播放器流程

时间:2012-09-07 14:03:03

标签: operating-system processor

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

3 个答案:

答案 0 :(得分:7)

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

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

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

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

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

答案 1 :(得分:0)

这是由于preemptive multi-tasking的操作系统造成的。事实上,这个过程在很短的时间内被中断,不足以让人注意到。另一个原因还在于音频卡具有播放缓冲器,该缓冲器允许连续播放,同时数据以块的形式馈送到它。 因此,虽然用数据馈送卡片的过程在很短的时间内被中断,但仍然可以进行播放

答案 2 :(得分:-1)

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

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

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