首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >音乐播放器进程

音乐播放器进程
EN

Stack Overflow用户
提问于 2012-09-07 22:03:03
回答 3查看 1.1K关注 0票数 11

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-07 22:12:33

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

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

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

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

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

票数 13
EN

Stack Overflow用户

发布于 2012-09-07 22:10:22

这是由执行preemptive multi-tasking的操作系统造成的。事实上,这个过程被中断的时间很短,不足以让人类注意到这一点。另一个原因也是音频卡有一个回放缓冲器,它允许连续回放,而数据是以块的形式提供给它的。因此,虽然向卡提供数据的过程被中断了很短的时间,但仍然可以进行回放。

票数 0
EN

Stack Overflow用户

发布于 2012-09-07 22:23:22

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

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

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12319686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档