Explicação de efeitos sonoros estranhos durante BSOD

3

ao longo dos anos de uso dos sistemas operacionais da Microsoft, muitas vezes encontrei a situação que só agora quero entender. Quando você recebe BSOD enquanto ouve música, há um curto período de tempo (1-2 s), quando a tela congela e a última parte da música é repetida várias vezes, antes que tudo caia em abismo azul . Hoje, fiquei muito curioso sobre a mecânica por trás dessa situação - o que faz com que determinada parte do áudio seja ativada? Eu te imploro, senhores bondosos, para satisfazer minha curiosidade.

    
por bizzz 15.03.2011 / 16:10

3 respostas

6

É simplesmente fazer com buffering e DMA.

O sistema operacional não reproduz o som diretamente, mas o decodifica (descompacta, etc) e o envia para o hardware de som para reprodução.

Isso raramente é feito pelo processador diretamente, mas pelo subsistema DMA (Direct Memory Access), que o manipula de forma independente. O processador basicamente diz ao sistema DMA para copiar o fragmento A da memória para o hardware de som e indicar quando isso é feito.

Se o sistema operacional tiver falhado, ele nunca receberá o sinal do chip DMA para informar que a transferência foi concluída, por isso nunca será capaz de dizer ao chip DMA para transferir o próximo bloco. Então, o que o chip DMA faz? Bem, a menos que tenha sido dito para fazer outra coisa, ele pode transferir a mesma quantidade de dados novamente ... e novamente ... e novamente ... até que seja desligado, resultando em um som repetido. A outra coisa que pode acontecer é que o sistema operacional recebeu o sinal para dizer que terminou a transferência e, em seguida, enviar o sinal para iniciar uma nova transferência, mas não colocou nenhum novo dado no buffer, resultando na mesma os dados sendo transferidos novamente ... e novamente ... etc. Qual deles está realmente acontecendo depende de como a MS decidiu usar o sistema DMA para reprodução de áudio, e sem ver o código-fonte para o Windows eu realmente não consegui diga qual é.

Espero que isso forneça algumas informações sobre isso.

    
por 15.03.2011 / 16:17
2

A pequena seção de RAM, ou buffer , que a placa de som usa para tocar é circular . O DAC dentro da placa de som, uma vez que chega ao fim desse buffer, volta ao início. Antes disso, supõe-se que o sistema operacional tenha sobrescrito os dados antigos no buffer com novos dados sonoros. No entanto, se o sistema operacional não chegar a isso por causa da alta CPU ou de um travamento, o DAC na placa de som continuará funcionando.

A maioria dos hardwares é "estúpida" assim, por design. Simplicidade é confiabilidade, no que diz respeito ao design de hardware e de rede. Aplica-se também ao design do sistema operacional, mas você sabe ...

É assim que funciona muito áudio digital. Os CD players baseiam-se no mesmo princípio, e é por isso que você os ouve pular do jeito que eles fazem quando se encontram setores defeituosos.

    
por 15.03.2011 / 17:53
1

AFAIK, o som acontece em tempo real e é bastante complexo - codex / buffers / cache etc acontecem dentro do chip.

para tentar colocá-lo de forma simples, o computador basicamente coloca o cache / buffer no áudio para ouvir e diz para ele começar a tocar. Ele precisa ser avisado para parar, e se ele não receber o comando stop, ele continuará a ser executado no cache / buffer até ser forçado a parar.

O Serviço de Áudio do Windows, que vincula a placa de som ao sistema operacional de uma maneira utilizável. Durante um BSOD, este serviço falha e nos poucos segundos entre a placa de som / chip perder energia / tempo limite, ele repete o buffer / seu último comando uma e outra vez.

    
por 15.03.2011 / 16:21