Existem várias coisas importantes que significam que um disco rígido pode ser a razão por trás de um buffer under-run.
-
O disco rígido usado para usar cabos IDE, o que pode significar que em um cabo você tem dados sendo copiados do disco rígido e gravados na unidade de CD / DVD. Isso reduziria efetivamente a largura de banda disponível para ou de cada dispositivo. Embora isso tenha mudado com o SATA, ainda há contenção no controlador do barramento SATA. Isso leva ao meu segundo ponto
-
Pode haver programas tentando fazer coisas ao mesmo tempo, outro programa lendo ou gravando qualquer quantidade substancial de dados pode limitar novamente a largura de banda para qualquer um dos dispositivos de maneira semelhante ao primeiro ponto. Uma leitura sequencial excessivamente grande poderia bloquear completamente a E / S do disco rígido por segundos ou mais.
-
O sistema operacional com pouca memória significará que ele precisa exibir outros programas de dentro ou de fora para o disco, causando grandes leituras sequenciais ou gravações no arquivo de paginação que podem bloquear a E / S como no ponto 2.
Todas essas coisas significam que qualquer pico teórico de largura de banda que você acha que não está disponível o tempo todo.
O problema surge quando o gravador de CD precisa ter largura de banda garantida entre o disco rígido e o CD-ROM, se essa largura de banda for reduzida a mais de um segundo ou dois (o tamanho padrão do buffer em um gravador de CD) um estouro de buffer ocorrerá. Programas ou o sistema operacional exigindo o uso do disco rígido é suficiente para interromper o fluxo de dados para o gravador de CD por tempo suficiente para causar isso.
O principal motivo pelo qual recomendamos discos rígidos substancialmente mais rápidos para evitar a falta de buffer é porque um drive mais rápido será capaz de passar o bloqueio de E / S muito mais rápido e voltar à tarefa de ler os dados a serem enviados o gravador de CD.
- = EDIT = -
Você está certo de que muitos usuários inexperientes teriam um grande número de aplicativos "auxiliares" (RealPlayer, quickstarters e outros aplicativos variados de malware próximo), o que significava que havia menos memória disponível. Sistemas de usuários domésticos mais antigos geralmente só tinham memória suficiente disponível para o SO e um programa ou dois para serem executados confortavelmente, adicionar todos os inúteis programas de lixo e o software de gravação de CD precisando de um grande buffer de memória própria e "confortável" tornar-se decididamente desconfortável.
Observe também que o software antivírus também pode ter um impacto na largura de banda do disco rígido, já que eles precisam verificar cada bit de dados provenientes do disco rígido. Libertar recursos fechando esses programas e limpando o sistema geralmente permitia ao gravador de CD continuar com seu trabalho.
A principal coisa que faz um underrun, na verdade, uma coisa para evitar a todo custo, porém, foi a maneira como o gravador de CD realmente grava na unidade. O laser, enquanto escreve, é estúpido: "Tenho dados em buffer, escrevo dados".Não é escrito bloco por bloco, mesmo que um CD seja escrito em setores, o processo de gravação é feito como uma trilha longa e o laser simplesmente envia o que está no buffer para os setores no disco. Se o buffer no gravador de CD de repente não estiver sendo atualizado com novos dados (como o sistema está fazendo outra coisa), os mesmos dados no buffer serão gravados várias vezes, sem nenhum sinal do software de controle que deveria ter parado escrevendo dados há muito tempo e você acaba com lixo no disco. Pode ser várias centenas de megabytes de lixo ou pode ser apenas alguns kilobytes, de qualquer forma esse disco agora é inútil, pois é impossível dizer onde os dados bons terminaram e os dados ruins começaram.
Recuperar do lixo que está sendo escrito é difícil, já que você não tem como dizer o quanto dos dados gravados era realmente lixo e quanto dele realmente deveria ser repetido. Seria muito melhor se pudéssemos evitar que o lixo fosse escrito em primeiro lugar e é isso que a proteção sub-executável está fazendo, ele observa o amortecedor e quando chega perto de ficar vazio, ele diz ao laser para parar de escrever e aguarde a exibição de novos dados antes de continuar.