4

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

Благодарю.

2 ответа2

4

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

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

2

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .