Qual é a diferença entre buffer e cache?

1

Eu sei que um cache é usado para melhorar a velocidade de leitura de dados do disco rígido porque a velocidade de leitura de dados do disco rígido e a velocidade de leitura de dados da RAM são muito diferentes. Então, o índice de falta de cache é muito importante.

Além disso, sei que temos o buffer (por exemplo, há BufferedWriter e BufferedReader em Java) durante a leitura e gravação no disco rígido ou em outros dispositivos, como o teclado. Mas eu não sei porque precisamos de um buffer. E se não tivermos buffer? O buffer também melhora a velocidade de leitura? Em caso afirmativo, qual é a diferença entre o buffer e o cache?

Além disso, eu sei que o cache é para melhorar a velocidade de leitura, mas o cache pode melhorar a velocidade de gravação de dados da RAM para o disco rígido?

    
por Yves 13.03.2018 / 04:13

1 resposta

3

Um buffer, pelo que entendi, é mais útil quando as taxas em que um produtor e um consumidor produzem ou consomem dados de forma otimizada são diferentes.

Por exemplo, um programa pode gravar 8 bytes de dados em um arquivo por vez. Para o disco que está sendo gravado, pode ser ideal gravar 4 KiB de dados de cada vez. Para pedaços significativamente menores, a sobrecarga envolvida na gravação no disco pode se tornar maior do que o tempo gasto pelo disco para realmente gravar os dados (de modo que 512 * T_8b > T_4KiB). Assim, ter um buffer entre reunir 4 KiB blocos de dados e escrevê-los de uma só vez aumentaria muito o desempenho. Veja, por exemplo: Por que dd leva muito tempo? , onde a solução mais simples é usar um tamanho de buffer maior. (Claro, meus números aqui são puramente por exemplo. Números reais adequados para discos modernos podem ser muito diferentes.)

Um cache é ortogonal ao buffer. Tanto o cache quanto o buffer são feitos para evitar acessos extras desnecessários de uma fonte lenta (disco, rede, etc.). Mas um cache funciona eliminando leituras e gravações duplicadas salvando os resultados para reutilização, enquanto um buffer funciona eliminando leituras e gravações repetidas e seqüenciais agrupando-as. Uma visão simplista:

  • quando você lê o mesmo local n vezes, apenas o primeiro chega ao disco, o restante vem do cache
  • quando você escreve no mesmo local n vezes, apenas o último é realmente gravado
por 13.03.2018 / 05:58

Tags