Как iTunes продолжает проигрывать музыку, если вся система заморожена?

546
Tristan Seifert

Я заметил это сегодня - вся моя система замерзла, часы зависли, ничто не реагирует на щелчки и нажатия клавиш, и моя анимация машины времени перестала работать. Пока переделал мой загрузочный диск. У меня также был открыт iTunes, который продолжал играть музыку. Как iTunes поддерживает воспроизведение мультимедиа, если вся операционная система замерзла? Никакой другой медиаплеер OS X, который я видел, не может сделать это, и я хотел бы знать, как это возможно.

Благодарю.

4
Я думаю, это всегда хороший вопрос, чтобы спросить, как сделать свою программу более отзывчивой! Yuji 13 лет назад 0
Это правда. Терпеть не могу не отвечающие программы! Tristan Seifert 13 лет назад 0

2 ответа на вопрос

4
Yuji

Я полагаю, что iTunes использует real-time threadsопределенный тип потоков, которым дается постоянная доля времени, что бы ни происходило на машине. Смотрите этот документ Apple для краткого обсуждения. Вы можете найти больше информации во внутренней книге OS X. Книга немного устарела (в основном обсуждается 10.4 Tiger), но внутренняя часть ядра не претерпела существенных изменений.

Я думаю, что другие медиаплееры не работают в режиме реального времени; в наши дни компьютеры достаточно мощные, и музыка не останавливается даже при стандартной политике планирования, если только вы не выполняете чрезвычайно интенсивную задачу ядра.

Спасибо за ссылки, я никогда не знал, что в OS X было несколько потоков. Я полагаю, это должно быть то, что использует iTunes. Спасибо за ответ! Tristan Seifert 13 лет назад 0
2

Я предполагаю, что когда вы выбираете песню для воспроизведения в iTunes, iTunes помещает почти все необработанные данные песни в DMA. Из-за того, как устройства ввода-вывода взаимодействуют с процессором, каждое устройство имеет свой собственный адрес памяти. Как только процессор завершил передачу данных по этому адресу, устройство ввода-вывода может использовать данные, находящиеся там, без необходимости присматривать за ним. Таким образом, iTunes перемещает данные для песни в адрес памяти звукового устройства, и звуковое устройство начинает его воспроизведение. Когда процессор блокируется во время воспроизведения песни, звуковое устройство не осознает, что процессор остановлен, и просто продолжает использовать данные из своего адреса памяти, воспроизводя песню.

Хех, я подумал, что iTunes, должно быть, развлекается на низком уровне. Но защищенная ОС НЕ позволила бы (некорневым) приложениям пользовательского пространства получать прямой доступ к памяти / оборудованию, не так ли? Tristan Seifert 13 лет назад 0
Нет, это не так, как работает iTunes - хотя интересная теория! 13 лет назад 2

Похожие вопросы