解释 BSOD 期间奇怪的声音效果

biz*_*zzz 3 audio windows bsod

在使用微软操作系统的这些年里,我多次遇到过现在才想明白的情况。当您在听音乐时出现 BSOD 时,会有很短的时间(1-2 秒),当屏幕冻结并且音乐的最后部分重复数次之后,一切都会陷入蓝色深渊。今天我对这种情况背后的机制非常好奇——是什么让音频的某些部分循环?恳求各位先生,满足一下我的好奇心。

Maj*_*nko 6

它只是与缓冲和DMA有关。

操作系统不直接播放声音,而是对其进行解码(解压缩等)并将其发送到声音硬件进行播放。

这很少由处理器直接完成,而是由独立处理它的 DMA 子系统(直接内存访问)完成。处理器基本上告诉 DMA 系统将内存块 A 复制到声音硬件并指示何时完成。

如果操作系统崩溃了,那么它永远不会收到来自 DMA 芯片的表示传输已经完成的信号,因此它永远无法告诉 DMA 芯片传输下一个块。那么DMA芯片有什么作用呢?好吧,除非它被告知做其他事情,否则它很可能会再次传输相同的数据块......一次又一次......一次又一次......直到它被关闭,导致重复的声音。可能发生的另一件事是操作系统收到了表示传输完成的信号,然后发送了开始新传输的信号,但没有将任何新数据放入缓冲区,导致同一块数据被再次传输......一次又一次......等等。这些实际发生的情况完全取决于MS如何决定使用DMA系统进行音频播放,

无论如何,我希望这能给它一些见解。