Буфер (информатика): различия между версиями
[непроверенная версия] | [отпатрулированная версия] |
м r2.7.1) (робот добавил: nl:Buffer (geheugen) |
LarBot (обсуждение | вклад) м подстановка дат в шаблонах с помощью AWB |
||
Строка 1: | Строка 1: | ||
{{Нет ссылок|дата=13 мая 2011}} |
|||
{{нет источников}} |
|||
{{другие значения|буфер}} |
{{другие значения|буфер}} |
||
Строка 14: | Строка 14: | ||
Метод организации обмена данными между устройствами или процессами с использованием буфера называется '''''[[Буферизация (информатика)|буферизацией]]'''''. Один из наиболее известных для пользователей [[Персональный компьютер|ПК]] примеров такого использования буфера — [[буфер обмена]] в [[Операционная система|ОС]] [[Microsoft Windows]]. |
Метод организации обмена данными между устройствами или процессами с использованием буфера называется '''''[[Буферизация (информатика)|буферизацией]]'''''. Один из наиболее известных для пользователей [[Персональный компьютер|ПК]] примеров такого использования буфера — [[буфер обмена]] в [[Операционная система|ОС]] [[Microsoft Windows]]. |
||
Также буферы используются в [[Программирование|программировании]] для получения данных от [[Функция (программирование)|функций]]. Функции [[Windows API]], результатом работы которых является строковое значение (например, [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/unicode_17si.asp MultiByteToWideChar]), принимают в качестве одного из [[ |
Также буферы используются в [[Программирование|программировании]] для получения данных от [[Функция (программирование)|функций]]. Функции [[Windows API]], результатом работы которых является строковое значение (например, [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/unicode_17si.asp MultiByteToWideChar]), принимают в качестве одного из [[аргумент]]ов [[Указатель (тип данных)|указатель]] на буфер, куда производится вывод. Вот пример [[Исходный код|исходного текста]] фрагмента программы на [[Си (язык программирования)|C]], преобразующего строку «Hello, World!» в [[Unicode]]: |
||
<pre> |
<pre> |
||
// исходная строка |
// исходная строка |
Версия от 04:47, 13 мая 2011
В статье не хватает ссылок на источники (см. рекомендации по поиску). |
В информатике буфер (англ. buffer) — это область памяти, используемая для временного хранения данных при вводе или выводе. Обмен данными (ввод и вывод) может происходить как с внешними устройствами, так и с процессами в пределах компьютера. Буферы могут быть реализованы в аппаратном или программном обеспечении, но подавляющее большинство буферов реализуется в программном обеспечении. Буферы используются когда существует разница между скоростью получения данных и скоростью их обработки, или в случае когда эти скорости переменны, например, при буферизации печати.
Буфер и Кэш
Эти термины не являются взаимоисключающими, и их функции часто смешиваются, но существует различие в их предназначении. Буфер — временное хранилище, где большие блоки данных сливаются или разбиваются на части. Это необходимо для взаимодействия с запоминающим устройством, которое работает с большими блоками данных, или когда данные передаются в другом порядке чем тот, в котором они формируются, и лишь желательно — в том случае, когда использование мелких блоков неэффективно. Использование буфера приносит пользу, даже если буферизуемые данные пишутся в буфер и читаются из него однократно.
В свою очередь, использование Кэша предполагает, что данные будут читаться из кэша чаще, чем записываться туда. Его назначение — уменьшить число обращений к запоминающему устройству, а не сделать их более эффективными.
Использование буферов
Метод организации обмена данными между устройствами или процессами с использованием буфера называется буферизацией. Один из наиболее известных для пользователей ПК примеров такого использования буфера — буфер обмена в ОС Microsoft Windows.
Также буферы используются в программировании для получения данных от функций. Функции Windows API, результатом работы которых является строковое значение (например, MultiByteToWideChar), принимают в качестве одного из аргументов указатель на буфер, куда производится вывод. Вот пример исходного текста фрагмента программы на C, преобразующего строку «Hello, World!» в Unicode:
// исходная строка CHAR text[] = "Hello, World!"; // буфер для получения результата WCHAR buffer[256]; // преобразование строки в Unicode MultiByteToWideChar(CP_ACP, 0, text, strlen(text) + 1, buffer, sizeof(buffer)/sizeof(WCHAR));