Показать статистику
0 голосов
от (4.6тыс. баллов)
В чем отличие "буфера" от "кеша" в линуксе? Насколько я понимаю, и тот и другой используется как прослойка между физическим устройством (жестким диском) и устройством чтения-обработки данных (процессором).

Буфер - память, используемая во время активных операций ввода-вывода (чтения-записи), то есть данные, которые ожидают своей очереди что бы попасть на диске

Кеш - те данные, которые мы получаем когда операция чтения-записи завершается.
Может кто то объяснить на пальцах в чем же все таки разница? Потому что получается что это вроде как одно и тоже.
2тыс. просмотров 1 ответов

1 Ответ

0 голосов
от (17.4тыс. баллов)

Кешированная память включает в себя еще кое-какие вещи, которые буферная память не имеет. Например, данные с tmpfs. Вот наглядный пример что бы показать отличие между buffers и cache:

mkdir t
mount -t tmpfs none t
dd if=/dev/zero of=t/zero.file bs=10240 count=10240
sync; echo 3 > /proc/sys/vm/drop_caches; free -m
umount t
sync; echo 3 > /proc/sys/vm/drop_caches; free -m

 После выполения этого кода, вы увидите что "cache" уменьшился на 100 мегабайт, потому что именно такой объем данных был записан в tmpfs (которая хранит все в оперативной памяти). При этом, конечно, сам компьютер должен иметь эти самые 100 мегабайт свободной памяти что бы наш эксперимент удался. 

Перед каждой попыткой сбросить данные буферной памяти на диске вызывается вот эта процедура:

sync; echo 3 > /proc/sys/vm/drop_caches

Параллельно с очисткой буферной памяти, происходит очистка дискового кеша. 

Вообщем, все немножко более сложно чем вы объяснили задавая свой вопрос. 

  • Buffers - это страницы памяти, которые еще не записаны на диск.
  • Cache - это данные, которые уже были прочитаны с диске и сохранены в оперативной памяти копьютера.
...