Буфер - это, как правило, часть памяти, которая содержит данные, которые еще не были полностью переданы на предполагаемое устройство. В случае буферизованного ввода-вывода обычно используется быстрое устройство и медленное устройство. Сами устройства не должны иметь разную скорость, но, возможно, интерфейсы между ними различаются или, возможно, требуется больше или больше времени для производства или потребления данных, чем для другой части.
Идея состоит в том, что вы временно сохраняете сгенерированные данные в буфере, чтобы они не терялись, когда более медленное устройство не готово их обработать. Как только устройство будет готово, другой буфер может занять место текущего буфера, и устройство-потребитель будет обрабатывать данные в первом буфере.
Таким образом, более медленное устройство получает данные в умеренном темпе, а не пожарный шланг, которым может быть исходный источник данных.