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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][отпатрулированная версия]
Содержимое удалено Содержимое добавлено
м откат правок 193.105.65.2 (обс.) к версии Gromolyak
Метка: откат
6 правок возвращено к версии 78096282 Andreww2015: неконсенсусно {{комп.|ru}} ячейка или область памяти для вре́менного хранения информации {{пример|Чтобы пользоваться этим методом, нужно тоже создать специальный язык, описывающий процессы, происходящие при моделировании. В нём есть такие термины, как «очередь», «скорость передачи информации», «объём {{выдел|буфера}}» («предбанника» в парикмахерской, где сидят ожидающие) {{итд}}|Виктор Глушков, Геннадий Максимович|Как ро
Строка 2: Строка 2:
{{другие значения|буфер}}
{{другие значения|буфер}}


В [[Информатика|информатике]] '''буфер''' ({{lang-en|buffer}}) — это область [[Компьютерная память|памяти]], используемая для временного хранения данных при вводе или выводе. Обмен данными (ввод и вывод) может происходить как с внешними устройствами, так и с [[Процесс (информатика)|процессами]] в пределах [[компьютер]]а. Буферы могут быть реализованы в [[Аппаратное обеспечение|аппаратном]] или [[Программное обеспечение|программном обеспечении]], но подавляющее большинство буферов реализуется в программном обеспечении. Буферы используются, когда существует разница между скоростью получения данных и скоростью их обработки, или в случае, когда эти скорости переменны, например, при буферизации печати.
В [[Информатика|информатике]] '''буфер''' ({{lang-en|buffer}} от {{lang-en|buff}} — «амортизировать», [[Множественное число|мн. ч.]] 'буфера́'
<ref>[https://ru.wiktionary.org/wiki/%D0%B1%D1%83%D1%84%D0%B5%D1%80 Слово «буфер» в Викисловаре.]</ref>) — это область [[Компьютерная память|памяти]], используемая для временного хранения данных при вводе или выводе. Обмен данными (ввод и вывод) может происходить как с внешними устройствами, так и с [[Процесс (информатика)|процессами]] в пределах [[компьютер]]а. Буфера могут быть реализованы в [[Аппаратное обеспечение|аппаратном]] или [[Программное обеспечение|программном обеспечении]], но подавляющее большинство буферов реализуется в программном обеспечении. Буфера используются, когда существует разница между скоростью получения данных и скоростью их обработки или в случае, когда эти скорости переменны, например, при буферизации печати.


== Буфер и [[кэш]] ==
== Буфер и [[кэш]] ==
Строка 15: Строка 14:
Метод организации обмена данными между устройствами или процессами с использованием буфера называется '''''[[Буферизация (информатика)|буферизацией]]'''''. Один из наиболее известных для пользователей [[Персональный компьютер|ПК]] примеров такого использования буфера — [[буфер обмена]] в [[Операционная система|ОС]] [[Microsoft Windows]].
Метод организации обмена данными между устройствами или процессами с использованием буфера называется '''''[[Буферизация (информатика)|буферизацией]]'''''. Один из наиболее известных для пользователей [[Персональный компьютер|ПК]] примеров такого использования буфера — [[буфер обмена]] в [[Операционная система|ОС]] [[Microsoft Windows]].


Также буфера используются в [[Программирование|программировании]] для получения данных от [[Функция (программирование)|функций]]. Функции [[Windows API]], результатом работы которых является строковое значение (например, [https://msdn.microsoft.com/en-us/library/windows/desktop/dd319072%28v=vs.85%29.aspx MultiByteToWideChar]), принимают в качестве одного из [[аргумент]]ов [[Указатель (тип данных)|указатель]] на буфер, куда производится вывод. Вот пример фрагмента [[Исходный код|исходного текста]] программы на [[Си (язык программирования)|C]], преобразующего строку «Hello, World!» в [[Unicode]]:
Также буферы используются в [[Программирование|программировании]] для получения данных от [[Функция (программирование)|функций]]. Функции [[Windows API]], результатом работы которых является строковое значение (например, [https://msdn.microsoft.com/en-us/library/windows/desktop/dd319072%28v=vs.85%29.aspx MultiByteToWideChar]), принимают в качестве одного из [[аргумент]]ов [[Указатель (тип данных)|указатель]] на буфер, куда производится вывод. Вот пример фрагмента [[Исходный код|исходного текста]] программы на [[Си (язык программирования)|C]], преобразующего строку «Hello, World!» в [[Unicode]]:
<pre>
<pre>
// исходная строка
// исходная строка

Версия от 21:57, 14 мая 2018

В информатике буфер (англ. 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));

См. также