Что означает буферизация. Термин: Буферизация потоков данных
| Наименование параметра | Значение |
| Тема статьи: | Буферизация |
| Рубрика (тематическая категория) | Компьютеры |
Особенности передачи информации с помощью линий связи
Однонаправленные и двунаправленные связи между процессами
При прямой адресации только одно данное средство связи должна быть задействовано для обмена данными между двумя процессами, и только эти два процесса бывают ассоциированы с ним. При непрямой адресации может существовать более двух процессов, использующих один и тот же объект для данных, и более одного объекта должна быть использовано двумя процессами.
Выделяют два вида связи :
Однонаправленную связь;
Двунаправленную связь.
При однонаправленной связью каждый процесс, ассоциированный с ней, может использовать средство связи либо только для приема информации, либо только для ее передачи. При двунаправленной связи каждый процесс, участвующий в общении, может использовать связь и для приема, и для передачи данных. В коммуникационных системах принято называть однонаправленную связь симплексной , двунаправленную связь с поочередной передачей информации в разных направлениях – полудуплексной , а двунаправленную связь с возможностью одновременной передачи информации в разных направлениях – дуплексной . Прямая и непрямая адресация не имеют непосредственного отношения к направленности связи.
Передача информации между процессами посредством линий связи является достаточно безопасной по сравнению с использованием разделяемой памяти и достаточно информативной по сравнению с сигнальными средствами коммуникации. Вместе с тем, разделяемая память не должна быть использована для связи процессов, функционирующих на различных КС. Возможно, именно в связи с этим каналы связи получили наибольшее распространение среди других средств коммуникации процессов. С логической реализацией канальных средств коммуникации связаны буферизация, поток ввода/вывода и сообщения.
Линия связи сохраняет информацию, переданную одним процессом, до ее получения другим процессом в буфере. Выделим три варианта объёмов буфера канала связи :
1. Буфер нулевой емкости или отсутствует. Никакая информация не может сохраняться на линии связи. В этом случае процесс, посылающий информацию, должен ожидать, пока процесс, принимающий информацию, не соблаговолит ее получить, прежде чем заниматься своими дальнейшими делами.
2. Буфер ограниченной емкости. Размер буфера равен n
, то есть линия связи не может хранить до момента получения более чем n
единиц информации. В случае если в момент передачи данных в буфере хватает места͵ то передающий процесс не должен ничего ожидать. Информация просто копируется в буфер.
Размещено на реф.рф
В случае если же в момент передачи данных буфер заполнен или места не достаточно, то крайне важно задержать работу процесса отправителя до появления в буфере свободного пространства.
3. Буфер неограниченной емкости. Теоретически это возможно, но практически вряд ли реализуемо. Процесс, посылающий информацию, никогда не ждет окончания ее передачи и приема другим процессом.
При использовании канального средства связи с непрямой адресацией под емкостью буфера обычно принято понимать количество информации, ĸᴏᴛᴏᴩᴏᴇ должна быть помещено в промежуточный объект для хранения данных.
2) Поток ввода/вывода и сообщения
Существует две модели передачи данных по каналам связи :
Поток ввода-вывода;
Сообщения.
В модели сообщений процессы налагают на передаваемые данные некоторую структуру. Весь поток информации они разделяют на отдельные сообщения, вводя между данными границы сообщений. Вместе с тем, к передаваемой информации должна быть присоединены указания на то, кем конкретное сообщение было послано и для кого оно предназначено. Все сообщения могут иметь одинаковый фиксированный размер или бывают переменной длины. В КС используются разнообразные средства связи для передачи сообщений: очереди сообщений, sockets (сокеты) и т.д.
И потоковые линии связи, и каналы сообщений могут иметь или не иметь буфер.
Размещено на реф.рф
Емкость буфера для потоков данных измеряется ее в байтах, а емкость буфера для сообщений измеряется в сообщениях.
Буферизация - понятие и виды. Классификация и особенности категории "Буферизация" 2017, 2018.
Каждое периферийное устройство имеет свою специфику характера обмена данными, определяемую природой его внешней (по отношению к компьютеру) стороны. По характеру обмена устройства можно разделить на три основных типа.
блочные устройства, например, дисковые накопители. Обмен с ними возможен только блоками фиксированного размера - кластерами. При обмене с физическим диском нельзя останавливаться посреди передачи блока.
поточные устройства, примерами которых являются принтеры и сканеры Принтеру посылают поток данных, которые он по мере своих электромеханических способностей выводит в виде изображения на бумагу. Поток можно приостановить в любой момент, а затем продолжить передачу безо всяких побочных эффектов.
регистро-ориентированные устройства, которые, как правило, не являются источниками или приемниками большого объема данных. Программам обычно требуется знать текущее состояние данных устройств или (и) формировать текущие управляющие воздействия. Регистро-ориентированными, как правило, являются различные устройства сопряжения с технологическим оборудованием, компьютеризированные измерительные комплексы, джойстик (программа в определенные моменты опрашивает текущее состояние кнопок и координатных датчиков) и т. п.
Во многих устройствах присутствует смесь этих основных типов, так, даже принтер имеет и регистро-ориентированную часть - кроме приема потока oн передает сигналы текущего состояния (ошибка, конец бумаги).
Весьма важной является задача буферизации данных . Пропускная способность внутренних компонентов современной вычислительной системы - процессора и оперативной памяти - чрезвычайно высока в обоих направлениях (и на прием, и на передачу), а пропускная способность подавляющего большинства внешних устройств на несколько порядков ниже и варьируется в весьма широких пределах. Данные, передаваемые из оперативной памяти на внешнее устройство, поступают с очень высокой скоростью, как правило, в виде пакета. Эти данные целесообразно сохранить во внутреннем буфере контроллера интерфейса и в дальнейшем соответствующими порциями выдать во внешнее устройство. При передаче в обратном направлении данные от внешнего устройства опять-таки целесообразно накопить в буфере контроллера интерфейса, чтобы не «дергать» оперативную память "по мелочам". Когда накоплен значительный объем данных, они все одним пакетом могут быть быстро переданы в оперативную память. Таким образом, для обеспечения минимального времени обладания интерфейсом (а значит и ресурсами оперативной памяти) контроллер соответствующего интерфейса должен работать с использованием буферов.
Буфер представляет собой набор внутренних ячеек оперативной памяти с определенными правилами доступа как со стороны контроллера ПУ, так и со стороны «центра». Размер буфера и дисциплина его обслуживание выбираются, исходя из технических (скорость и объем информации, допустимые задержки) и экономических (цена) соображений.
Для блочных устройств обычно применяют буфер, минимальный размер которого равен размеру блока.
Контроллеры локальных сетей тяготеют к блочным устройствам - они передают данные целыми пакетами, которые должны приниматься и посылаться с определенной скоростью (100М бит/с, 1000М бит/с, 10Г бит/с - для первых трех поколений Ethernet). Для них объем, и организация буфера зависят от скорости среды передачи и производительности интерфейса, к которому они подключены.
Для потоковых устройств часто применяют буфер с дисциплиной обслуживания FIFO (First In - First Out, первым вошел - первым вышел). Размер такого буфера, как правило, невелик (например, 16, 64 байт). Буфер ставится между «центром» и устройством, с одной стороны он наполняется, с другой - опорожняется. Опорожняющая сторона может извлекать данные из буфера, лишь, когда наполняющая сторона их туда положит. Попытка извлечения данных из пустого буфера является ошибкой опустошения (underflow), попытка помещения в заполненный буфер - ошибкой переполнения (overflow). Логика буфера следит за степенью наполнения буфера и сообщает «центру» о критических ситуациях. Когда «центр» (программа, исполняемая процессором) выводит данные через FIFO, логика следит за снижением наполнения буфера ниже порога опустошения и в случае такового сигнализирует (обычно прерыванием) о необходимости вывода следующей порции данных. Логика также препятствует переполнению, отвергая попытки записи лишних данных и немедленно сообщая об ошибке (обычно через соответствующий программно-читаемый бит состояния). При вводе данных через буфер FIFO его логика следит за наличием свободного места в буфере и при превышении порога заполнения также сигнализирует прерыванием. Аналогично, она не позволяет считать данные из пустого буфера и сообщает об этом соответствующим битом. Также логика буфера должна позволять его очищать по инициативе процессора, сообщать о количестве (или хотя бы о наличии) данных в буфере по запросу процессора. Управляемость порогов позволяет программе в зависимости от внешнего темпа обмена данными, возможностей и текущей загруженности компьютера выбрать оптимальный режим обмена, позволяющий и не «суетиться по мелочам», и не допускать переполненный/опустошений буфера. У двунаправленных устройств, как правило, имеется пара FIFO-буферов (для полного дуплекса), для симплексных устройств достаточно одного.
Буферы современных устройств внешней памяти имеют более сложную организацию, обеспечивающую кэширование данных; однако и они используют вышеописанные принципы организации. Однопортовые буферы большого объема, как уже говорилось, могут вносить заметную задержку. Для потоковых применений (например, для воспроизведения мультимедийных файлов) эта задержка обычно не очень существенна и на производительность не влияет. Однако для приложений «петлеобразного» характера, когда буфер оказывается в цепочке запрос-ответ, его задержка может приводить к снижению производительности. Так, например, передача данных по сети обычно представляет собой последовательность кадров данных, на каждый из которых передающая сторона ожидает кадр подтверждения. Если каждый кадр будет «просиживать» в буфере, естественно, производительность снизится. От этой беды спасает метод «скользящего окна», при котором передающая сторона допускает некоторое отставание приема подтверждений.
Под буфером обычно понимается некоторая область памяти для запоминания информации при обмене данных между двумя устройствами, двумя процессами или процессом и устройством. Обмен информацией между двумя процессами относится к области кооперации процессов, и мы подробно рассмотрели его организацию в соответствующей главе. Будем рассматривать использование буферов в том случае, когда одним из участников обмена является внешнее устройство.
Существуют три причины, приводящие к использованию буферов в базовой подсистеме ввода-вывода :
1) Первая причина буферизации – это разные скорости приема и передачи информации, которыми обладают участники обмена. Рассмотрим, например, случай передачи потока данных от клавиатуры на модем. Скорость, с которой поставляет информацию клавиатура, определяется скоростью набора текста человеком и обычно существенно меньше скорости передачи данных модемом. Для того чтобы не занимать модем на все время набора текста, делая его недоступным для других процессов и устройств, разумно накапливать введенную информацию в буфере или нескольких буферах достаточного размера и отсылать ее через модем после заполнения буферов.
2) Вторая причина буферизации – это разные объемы данных, которые могут быть приняты или получены участниками обмена единовременно. Возьмем другой пример. Пусть информация поставляется модемом и записывается на жесткий диск. Помимо обладания разными скоростями совершения операций модем и жесткий диск относятся к разным типам устройств. Модем является символьным устройством и выдает данные байт за байтом, в то время как диск является блочным устройством и для проведения операции записи для него требуется накопить необходимый блок данных в буфере. Здесь также можно применять более одного буфера. После заполнения первого буфера модем начинает заполнять второй одновременно с записью первого на жесткий диск. Поскольку скорость работы жесткого диска в тысячи раз больше, чем скорость работы модема, то к моменту заполнения второго буфера операция записи первого будет завершена, и модем снова может заполнять первый буфер одновременно с записью второго на диск.
3) Третья причина буферизации связана с необходимостью копирования информации из приложений, осуществляющих ввод-вывод, в буфера ядра операционной системы и обратно. Допустим, что некоторый пользовательский процесс пожелал вывести информацию из своего адресного пространства на внешнее устройство. Для этого он должен выполнить системный вызов с обобщенным названием write , передав в качестве параметров адрес области памяти, где расположены данные, и их объем. Если внешнее устройство временно занято, то возможна ситуация, когда к моменту его освобождения содержимое требуемой области окажется испорченным (например, при использовании асинхронной формы системного вызова). Чтобы избежать возникновения подобных ситуаций, проще всего в начале работы системного вызова откопировать необходимые данные в буфер ядра операционной системы, постоянно находящийся в оперативной памяти, и выводить их на устройство из этого буфера.
Под словом кэш обычно понимают область быстрой памяти, содержащую копию данных, расположенных где-либо в более медленной памяти, предназначенную для ускорения работы КС. В базовой подсистеме ввода-вывода не следует смешивать два понятия: буферизация и кэширование, хотя зачастую для выполнения этих функций отводится одна и та же область памяти. Буфер часто содержит единственный набор данных, существующий в системе, в то время как кэш, по своему определению, содержит копию данных, существующих где-нибудь еще. Например, буфер, используемый базовой подсистемой для копирования данных из пользовательского пространства процесса при выводе на диск, может в свою очередь использоваться как кэш для этих данных, если операции модификации и повторного чтения этого блока выполняются достаточно часто.
Функции буферизации и кэширования не обязательно должны быть локализованы в базовой подсистеме ввода-вывода. Они могут быть частично реализованы в драйверах и даже в контроллерах устройств, скрытно по отношению к базовой подсистеме.
Остановите любые другие активные загрузки на компьютере или устройстве. Фоновые процессы и загрузки могут потреблять свободные ресурсы, тем самым ограничивая возможности потокового воспроизведения. Закройте все игры и приложения, которые могут работать в фоновом режиме во время прямой трансляции.
Приостановите видео на несколько минут, чтобы увеличить доступный буфер. Это позволит компьютеру загрузить больший фрагмент видео, чтобы его можно было просмотреть целиком без перерывов и пауз.
Подумайте о том, чтобы повысить или улучшить скорость интернет-соединения. Обновите свой маршрутизатор или тарифный план у интернет-провайдера (ISP) или регулярно удаляйте кэш и файлы куки браузера , чтобы уменьшить степень буферизации и задержку по времени.
- Используйте двухдиапазонный роутер, который транслирует сеть на частоте 5 ГГц и имеет дополнительную пропускную способность. Такой роутер обычно используется для проведения онлайн-трансляций в интернете и, как известно, уменьшает буферизацию.
Подождите, пока службы поставщика контента будут менее загружены. Серверы поставщиков контента, таких как Netflix, Hulu и YouTube, могут работать медленнее, чем обычно, в зависимости от ресурсов провайдера и часов пиковой нагрузки. Например, исследования, проведенные FCC, показали, что пиковое время загруженности интернет-трафика приходится между 8 и 10 часами вечера. Если видеохостинг продолжает буферизировать видео, подождите, пока службы немного разгрузятся, прежде чем продолжить просмотр.
Ограничьте количество активных устройств в сети. Несколько устройств, работающих в одной и той же сети Интернет, будут занимать полосу пропускания этой сети и вызывать эффект буферизации, особенно если роутер не рассчитан на высокую интенсивность трафика. При просмотре видео убедитесь, что на всех устройствах ограничена скорость загрузки.
Используйте антивирусное ПО для обнаружения и удаления вирусов и вредоносных программ. Вредоносные программы могут запускать один или несколько процессов в фоновом режиме, тем самым замедляя скорость интернет-соединения.
Уменьшите качество видео в настройках. Снижение качества видео поможет уменьшить загрузку сети и случаи буферизации. Если для просмотра вы используете стороннее программное обеспечение или службы, измените качество видео в меню настроек.
Подумайте об использовании проводного подключения к интернету. Проблемы с сигналом, частотные изменения и физические препятствия, такие как стены или мебель, могут приводить к сбоям в беспроводном интернет-соединении. Попробуйте перейти на проводное соединение, чтобы устранить проблему буферизации.
Установите на устройство последнюю версию Adobe Flash Player . Большинство видеохостинговых площадок используют Adobe Flash, из-за чего устаревшая версия Flash может приводить к буферизации во время просмотра видео. Зайдите на официальный сайт Adobe Flash Player, пройдя по адресу.
При разработке программ, работающих с потоками данных АЦП и ЦАП, возникает задача обеспечить обработку данных с достаточной скоростью.
Скорость потока данных определяется частотой дискретизации и не регулируется программой: физический процесс не может ждать. Если потерять часть отсчётов, то сигнал будет испорчен.
При этом компьютер, исполняющий программу, обычно работает не в реальном времени, т.е. если один шаг программы следует "сразу" за другим, то это "сразу" следует понимать как последовательность выполнения операций, а не как реальное время. Некоторые операции (например, запись на диск) могут выполняться относительно долго. Также в многозадачной операционной системе есть много процессов, прерывающих друг друга, так что программа может "застопориваться" в случайные для неё моменты времени (иногда довольно надолго – на десятки, даже сотни миллисекунд).
Кроме того, при программировании бывает необходимо обрабатывать данные блоками (порциями), а не по одному отсчету, иначе накладные расходы сведут на нет быстродействие даже современного компьютера.
Для решения этой задачи применяется буферизация.
Буфер – это массив в памяти с быстрым доступом, в котором накапливаются поступающие данные (если это поток ввода, АЦП) или из которого они отправляются с заданной скоростью (если это поток вывода, ЦАП).
При вводе данных процесс начинается с пустым буфером. При выводе буфер должен быть предварительно заполнен, иначе в начале работы может сразу произойти опустошение буфера.
Производительность обработки данных компьютером должна быть больше скорости потока (с запасом), а вот мгновенная скорость может падать, лишь бы буфер ввода не переполнился, а буфер вывода не опустел. Запас по скорости нужен, чтобы разбирать данные, накопившиеся в буфере из-за паузы (а при выводе – чтобы снова наполнить буфер).
Образно можно представить себе буфер ввода как бак, в который из трубы с постоянной скоростью поступает вода. Мы зачерпываем эту воду ведром, относим потребителю и возвращаемся; чем больше бак, тем больше времени у нас есть на непредвиденные задержки по дороге. В идеале в баке должно быть не больше ведра воды, тогда, уходя, мы оставляем его пустым и имеем максимальный запас времени. Если же случилась задержка и набралось много воды, мы начинаем торопиться, чтобы побыстрее вычерпать её.
С буфером вывода всё то же самое, только вода уходит из бака с постоянной скоростью (и прерывать подачу нельзя, это авария), а мы наливаем вёдрами. Соответственно максимальную защиту от задержек обеспечивает полный бак, а если уровень упал – его надо побыстрее восполнить.
На практике такая схема может быть реализована в виде кольцевого буфера или списка блоков меньшего размера ("вёдер"), которые ставятся в очередь. По мере готовности они обрабатываются, освободившиеся блоки-вёдра ставятся в конец очереди.
Простейший вариант – это схема с двумя буферами (двумя половинами большого буфера): когда готова одна половина, она обрабатывается, в это время данные собираются во второй половине, и за время ее заполнения должна завершиться обработка первой, потом половины "меняются ролями". Если продолжать аналогию с вёдрами, то здесь нет бака, зато есть два ведра: набрав полное ведро, мы сразу подставляем пустое и относим полное на грядку. Это очень простая и эффективная схема, но в ней размер порции обработки данных (и связанная с ним задержка) увязывается с размером буфера, что иногда неудобно.
Для использованной выше бытовой аналогии буфера и ведра сделаем важную оговорку, что под буфером (в системах сбора данных и управления) подразумевается последовательная структура, в которой данные не теряются (ведро не дырявое) и последовательность данных не изменяется. Другими словами, попавший в буфер отсчёт данных не может обогнать ранее пришедший отсчёт.
Также отметим, что реализация буфера может быть не только программная, но и аппаратная, например в FPGA , по типу линейной очереди заданного максимального размера "первым вошёл – первым вышел" (FIFO – First In, First Out).
Если термин "буферизация" рассматривать шире, то буферизация может быть и без сохранения естественного порядка следования данных, например, LIFO "последним вошёл – первым вышел" (LIFO – Last In, First Out). Другое известное название буфера LIFO – это стек (Stack), который широко применяется в программировании.
При сравнении характеристик систем сбора данных важен не просто байтовый объём буфера в системе, а расчётное максимальное время буферизации сигнала при данной скорости ввода данных (для АЦП) или вывода данных (ЦАП). Для расчёта времени буферизации следует учитывать необходимую скорость сбора данных (отсчётов в секунду) и размер слова данных, занимаемый одним отсчётом (типично: 2 или 4 байта). В слове, кроме отсчёта данных, может находиться вспомогательная индексная информация, маркирующая поток данных для разных вспомогательных задач при работе с данными на верхнем программном уровне в ПК.
С данной темой связаны следующие статьи:
- Ввод-вывод данных синхронный и асинхронный
- Можно ли обрабатывать данные от АЦП на ПК в реальном времени, отсчет за отсчетом?
Пример использования термина
Терминология, связанная с буферизацией потоков данных, широко используется в руководствах на различные системы сбора данных (LTR, E-502, L-502, E14-x40 и т.д.) при описании их функциональных схем и программных интерфейсов.
Модуль АЦП/ЦАП
16/32 каналов, 16 бит, 2 МГц, USB, Ethernet
E-502
АЦП: 16 бит; 16/32 каналов;
±0,2 В…10 В; 2 МГц
ЦАП: 16 бит; 2 канала; ±5 В; 1 МГц
Цифровые входы/выходы:
18/16 TTL 5 В
Интерфейс: PCI Express
Популярное
- Универсальная консоль отчетов (8
- Услуга конференц связь мтс отключить
- Музыка (Yandex music downloader)
- Новостной и аналитический портал "время электроники"
- Премиум шаблон Tempera. Супер тема wordpress. Вниманию пользователей Mantra, Nirvana, Parabola, Tempera: плагин Cryout Serious Theme Settings Случайные записи из рубрики
- Мощность: сколько ватт нужно АС
- Россию покроет «умная пыль Умная пыль нанотехнологии
- Обзор тарифов линейки «Просто супер» от МТС-Украина
- LG Spirit - Технические характеристики
- "Неполадки подключения или неверный код MMI "