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


4

我今天注意到了这一点-我的整个系统死机了,时钟冻结了,没有任何响应单击和按键,我的时间机器动画停止了。在重新分区我的启动驱动器时。我还打开了iTunes,很乐意继续播放音乐。如果整个操作系统冻结,iTunes如何设法继续播放媒体?我见过的其他OS X媒体播放器都无法做到这一点,我很想知道这是怎么可能的。

谢谢。


我认为问一个人如何使自己的程序更具响应能力总是一个好问题!
Yuji

确实如此。我受不了反应迟钝的程序!
Tristan Seifert

Answers:


4

我相信iTunes使用real-time threads,这是某种类型的线程,无论在计算机上发生什么情况,它们都具有固定的时间分数。请参阅此苹果文档进行简短讨论。您可以在OS X内部书中找到更多信息。该书过时了(它主要讨论10.4 Tiger),但是内核内部并没有发生太大变化。

我认为其他媒体播放器不能充当实时线程。如今,计算机非常强大,即使在标准的调度策略下,音乐也不会停止,除非您执行了非常耗费内核的任务。


感谢您提供的链接,我从不知道OS X具有多种类型的线程。我认为这一定是iTunes所使用的。感谢您的回复!
Tristan Seifert

2

我的猜测是,当您选择要在iTunes中播放的歌曲时,iTunes会将歌曲的几乎所有原始数据推送到DMA中。由于I / O设备与CPU通讯的方式,每个设备都有自己的内存地址。一旦CPU完成将数据推送到该地址,I / O设备就可以在该处使用数据,而CPU不必进行托管。因此,iTunes将歌曲的数据移动到声音设备的内存地址,声音设备开始播放它。当您在播放歌曲时CPU锁定时,声音设备并没有意识到CPU处于停止状态,只是继续使用其内存地址中的数据来播放歌曲。


嘿,我认为iTunes一定在做一些低级的娱乐。但是安全的操作系统现在不允许(非超级用户)用户空间应用程序直接访问内存/硬件,对吗?
Tristan Seifert

2
不,这不是iTunes的工作原理-有趣的理论!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.