音乐播放器进程



我读过一本书,书中说一个单核、无超线程的处理器一次只能处理一个进程,所以当我们在PC上做这么多操作时,一些后台进程总是存在,那么音乐播放器为什么不在两者之间停一会儿呢。我知道CPU很快,但静止音乐播放器通常连续播放音乐,没有任何小的中断(这是可以观察到的)。有人能澄清这种行为吗?

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

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

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

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

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

这是由于操作系统执行抢占式多任务。事实上,这个过程被中断的时间很短,不足以引起人类的注意。另一个原因也是声卡有一个播放缓冲区,允许连续播放,同时数据被分块馈送到它因此,当向卡提供数据的过程被中断很短时间时,播放仍然可以发生

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

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

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

最新更新