Буфер (информатика): различия между версиями

м
отмена правки 72747884 участника Oleg3280 (обс)
(Обсуждение участника:Gromolyak (создал тему обсуждения Буферы обмена и ввода/вывода))
м (отмена правки 72747884 участника Oleg3280 (обс))
{{другие значения|буфер}}
 
В [[Информатика|информатике]] '''буфер''' ({{lang-en|buffer}})  — это область [[Компьютерная память|памяти]], используемая для временного хранения данных при вводе или выводе. Обмен данными (ввод и вывод) может происходить как с внешними устройствами, так и с [[Процесс (информатика)|процессами]] в пределах [[компьютер]]а. БуферыБуфера могут быть реализованы в [[Аппаратное обеспечение|аппаратном]] или [[Программное обеспечение|программном обеспечении]], но подавляющее большинство буферов реализуется в программном обеспечении. БуферыБуфера используются, когда существует разница между скоростью получения данных и скоростью их обработки, или в случае, когда эти скорости переменны, например, при буферизации печати.
 
== Буфер и [[кэш]] ==
 
Эти термины не являются взаимоисключающими, и их функции часто смешиваются, но существует различие в их предназначении. Буфер  — временное хранилище, где большие блоки данных сливаются или разбиваются на части. Это необходимо для взаимодействия с [[Запоминающее устройство|запоминающим устройством]], которое работает с большими блоками данных, или когда данные передаются в другом порядке чемпо тотсравнению с тем, в котором они формируются, и лишь желательно  — в том случае, когда использование мелких блоков неэффективно. Использование буфера приносит пользу, даже если буферизуемые данные пишутся в буфер и читаются из него однократно.
 
В свою очередь, использование [[кэш]]а предполагает, что данные будут читаться из кэша чаще, чем записываться туда. Его назначение  — уменьшить число обращений к запоминающему устройству, а не сделать их более эффективными.
 
== Использование буферов ==
 
Метод организации обмена данными между устройствами или процессами с использованием буфера называется '''''[[Буферизация (информатика)|буферизацией]]'''''. Один из наиболее известных для пользователей [[Персональный компьютер|ПК]] примеров такого использования буфера  — [[буфер обмена]] в [[Операционная система|ОС]] [[Microsoft Windows]].
 
Также буферыбуфера используются в [[Программирование|программировании]] для получения данных от [[Функция (программирование)|функций]]. Функции [[Windows API]], результатом работы которых является строковое значение (например, [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/unicode_17si.asp MultiByteToWideChar]), принимают в качестве одного из [[аргумент]]ов [[Указатель (тип данных)|указатель]] на буфер, куда производится вывод. Вот пример фрагмента [[Исходный код|исходного текста]] программы на [[Си (язык программирования)|C]], преобразующего строку «Hello, World!» в [[Unicode]]:
<pre>
// исходная строка