我在读一本书,它说单核处理器和没有超线程的处理器一次只能处理一个进程,所以有人怀疑当我们在PC上做很多操作时,后台进程总是存在,那么为什么音乐播放器在短时间内停止。我知道CPU速度非常快,但音乐播放器通常连续播放音乐,没有任何小的中断(这是可观察的)。任何人都可以澄清这种行为?音乐播放器进程
音乐播放器进程
回答
1)如您所说,没有超线程的单核CPU可以一次只运行一个进程。多个进程通过上下文切换进行处理,即CPU将运行一个进程,然后切换到下一个进程,然后切换到下一个进程,然后返回到第一个进程,依此类推。某个过程的安排频率取决于许多不同的因素,其中过程优先级为1。 (在那些日子里,经常需要以更高的优先级运行WinAmp来避免毛刺等。现在这不需要,因为CPU要快得多)。
2)因此,考虑到这一点,它怎么样仍然听起来很棒,没有毛刺?
处理音频时,CPU通过将声音设备放入声卡的硬件缓冲区或RAM中,为声音设备提供样本。声音处理器不直接从CPU获取数据,而是从这两个缓冲区中的一个读取样本。只要我们在缓冲区中有样本,我们就很好,即使CPU不在做别的事情。
有关硬件缓冲区大小的详细信息在不同的声卡上有所不同。一些(旧的)声卡根本没有声音缓冲区,而在这里RAM代替了。
用完样品称为缓冲区欠载。即使在现代计算机上,也可能发生这种情况,例如,如果在运行音频播放器时开始沉重的过程,CPU可能无法及时切换回来,并且我们可以清楚地听到声音馈送中的故障和间隙。
这是由于操作系统preemptive multi-tasking。这个过程实际上正在中断很短的时间,不足以让人注意到。另一个原因是音频卡有一个播放缓冲区,可以连续播放,而数据则以大块的形式输入。 因此,虽然数据馈送卡片的过程在很短的时间内被中断,但回放仍可能发生在。
这是由操作系统调度程序处理的。
调度程序将为每个进程分配一个时间片(这可能是几毫秒),并允许进程在这段时间内执行所需的内容。分配的长度由OS使用的算法确定(即,短期调度,长期等)。之所以没有注意到这一点,是因为CPU可以在如此高的频率下工作,即1GHz,这使得单个核心/线程的多任务处理对用户透明。
http://en.wikipedia.org/wiki/Scheduling_(computing) http://web.cs.wpi.edu/~cs3013/c07/lectures/Section05-Scheduling.pdf
- 1. 如何在音乐播放器中播放LRC和音乐
- 2. 音乐播放
- 3. 音乐播放器的播放列表
- 4. ReverbNation音乐/播放列表播放器
- 5. 使用JSON播放器播放音乐
- 6. HTML/JavaScript音乐播放器
- 7. 另类音乐播放器
- 8. ios音乐播放器
- 9. wp7音乐播放器
- 10. Facebook inline音乐播放器
- 11. ffmpeg音乐播放器
- 12. Java音乐播放器GUI
- 13. Android音乐播放器
- 14. 音乐播放器活动
- 15. 持久音乐播放器
- 16. jQuery音乐播放器
- 17. 音乐播放器错误
- 18. JMF音乐播放器
- 19. 无法让音乐播放到我的音乐播放器应用程序
- 20. 播放音乐javascript
- 21. 从文件管理器播放音乐文件到我的音乐播放器
- 22. 将我的音乐播放器设置为默认音乐播放器
- 23. 停止音乐应用播放音乐
- 24. 连续播放音乐的音乐
- 25. 将音乐播放器守护进程(MPD)移植到Android
- 26. 从停止播放音乐的时刻继续播放音乐
- 27. 如何从播放音乐播放器录制音频
- 28. 播放HTML5音频时,原生iOS音乐播放器暂停
- 29. 在Android音乐播放器中播放音频文件
- 30. 使用JavaScript音乐播放器播放LastFM播放列表
但通常我们没有听到任何突破。难道我们无法观察任何休息吗? –