如果整个系统冻结,iTunes 如何继续播放音乐?

如果整个系统冻结,iTunes 如何继续播放音乐?

我今天注意到了这一点 - 我的整个系统完全冻结,时钟冻结,点击和按键均无响应,时间机器动画停止运行。在重新分区启动驱动器时。我还打开了 iTunes,它一直在播放音乐。如果整个操作系统完全冻结,iTunes 如何继续播放媒体?我见过的其他 OS X 媒体播放器都无法做到这一点,我很想知道这是如何实现的。

谢谢。

答案1

我相信 iTunes 使用的是real-time threads,这是一种特定类型的线程,无论机器上发生什么,它们都会被赋予恒定的时间分数。请参阅这个苹果文档进行简短讨论。您可以在OS X 内部书。这本书有点过时了(主要讨论 10.4 Tiger),但内核内部并没有发生太大变化。

我认为其他媒体播放器不以实时线程的形式运行;现在的计算机非常强大,即使在标准调度策略下音乐也不会停止,除非你执行极其内核密集的任务。

答案2

我的猜测是,当您选择在 iTunes 中播放一首歌曲时,iTunes 会将歌曲的几乎所有原始数据推送到 DMA。由于 I/O 设备与 CPU 通信的方式,每个设备都有自己的内存地址。一旦 CPU 将数据推送到该地址,I/O 设备就可以使用那里的数据,而无需 CPU 照看它。因此,iTunes 将歌曲的数据移动到声音设备的内存地址,然后声音设备开始播放它。当您播放歌曲时 CPU 锁定时,声音设备还没有意识到 CPU 已停止,只是继续使用其内存地址中的数据播放歌曲。

相关内容