Estouro de buffer - Buffer underrun

Em computação , tampão contra o encaixe ou underflow tampão é um estado que ocorre quando um tampão utilizado para a comunicação entre dois dispositivos ou processos é alimentado com dados a uma velocidade menor do que os dados estão a ser lidos a partir dele. (O termo é distinta da sobrecarga da memória intermédia , uma condição em que uma porção da memória que está sendo usado como um tampão tem um tamanho fixo mas é preenchida com mais do que a quantidade de dados.) Isto exige que o programa ou o dispositivo de leitura a partir da memória intermédia para interromper o seu processamento enquanto as recargas tampão. Isto pode causar efeitos colaterais indesejados e, por vezes graves, porque os dados que estão sendo armazenados em buffer geralmente não é adequado para pára-arranca acesso deste tipo.

Em termos de programação simultânea , uma falta de dados na memória intermédia pode ser considerada uma forma de inanição de recursos .

O esvaziamento de buffer termos e buffer underflow também são usados para significar tampão subscrever , uma condição semelhante ao estouro de buffer, mas onde o programa é levado a escrito antes do início do buffer, substituindo dados potenciais lá, como bits de permissão .

causas gerais e soluções

Tampão underruns são frequentemente o resultado de questões transitórias que envolvem a conexão que está sendo tamponada: uma conexão entre dois processos, com os outros concorrentes para CPU tempo, ou uma ligação física, com dispositivos que competem para a largura de banda .

O guarda mais simples para estes problemas é o de aumentar o tamanho do buffer-se uma entrada de fluxo de dados tem de ser lida a um bit por segundo, um tampão de 10 bits iria permitir que a ligação seja bloqueado para até 10 segundos antes de falhar, Considerando que um dos 60 bits iria permitir um bloqueio de até um minuto. No entanto, isso requer mais memória para estar disponível para o processo ou dispositivo, que pode ser caro. Ele assume que o buffer começa full-exigindo uma pausa potencialmente significativo antes do processo de leitura inicia-e que será sempre cheia, a menos que a conexão está atualmente bloqueado. Se os dados não, em média, chegar mais rápido do que é necessário, quaisquer bloqueios na conexão será cumulativo; "cair" um pouco cada minuto em uma conexão hipotético com um tampão de 60 bits iria levar a uma falta de dados na memória intermédia, se a ligação permaneceu activa durante uma hora. Em aplicações em tempo real, um grande tamanho da memória intermédia, também aumenta a latência entre a entrada e saída, o que é indesejável em aplicações de baixa latência, como videoconferência.

problemas de gravação de CD e DVD

Falhas de buffer pode causar sérios problemas durante a gravação de CD / DVD , porque uma vez que a escrita é iniciado, ele não pode parar e retomar a perfeição; assim a pausa necessária para o underrun pode causar os dados no disco para se tornar inválido. Desde o buffer é geralmente a ser preenchido de uma fonte relativamente lento, como um disco rígido ou outro CD / DVD, uma CPU pesado ou carga de memória de outras tarefas simultâneas pode facilmente esgotar a capacidade de um pequeno tampão. Portanto, uma técnica chamada de protecção contra o encaixe tampão foi implementado por vários fornecedores gravador de CD / DVD individuais, sob várias marcas , tais como Plextor Burnproof, Nero UltraBuffer, Yamaha SafeBurn, JustLink e Ligação Linear. Com esta técnica, o laser é realmente capaz de parar de escrever para qualquer quantidade de tempo e retomada quando o buffer está cheio novamente. A diferença entre gravações sucessivas é extremamente pequena.

Outra maneira de proteger contra o problema, quando se utiliza mídia regravável ( CD-RW , DVD-RW , DVD-RAM ), é usar a UDF sistema de arquivos, que organiza os dados em "pequenos pacotes ", referenciado por um único endereço, atualizados tabela, que pode, portanto, ser escrito em rajadas curtas.

reprodução de multimídia

Se o framebuffer do controlador gráfico não é atualizado, a imagem da tela do computador aparecerá para pendurar até que o buffer recebe novos dados. Muitos programas de leitor de vídeo (por exemplo MPlayer ) possuem a capacidade de descartar quadros se o sistema está sobrecarregado, permitindo intencionalmente um esvaziamento de buffer para manter o ritmo.

O tampão em um controlador de áudio é um tampão de anel . Se ocorrer um contra o encaixe e o controlador de áudio não está parado, ele quer continuar a repetir o som contido no buffer, ou o silêncio de saída dependendo da implementação. Tal efeito é comumente referido como "metralhadora" ou Max Headroom efeito gagueira. Isto acontece se o sistema operacional trava durante a reprodução de áudio. Uma rotina de tratamento de erros (por exemplo, tela azul da morte ) pode eventualmente parar o controlador de áudio.

Referências