Термин: Буферизация потоков данных. Видео не грузится, на экране написано: Буферизация

Знаете, как заставить интернет-браузер Mozilla Firefox провести полную буферизацию видео на YouTube? Наверное не знаете, так как продолжаете читать эту инструкцию!

Зачем нужна буферизация пользователям? В первую очередь для того, чтобы максимально комфортно смотреть видеоматериал при интернет-соединении, просто поставив вначале его на паузу и дождавшись полной загрузки.

Во вторую очередь для того, чтобы можно было просмотреть ролик в выбранном качестве. Не снижая качества в настройках, и даже в автономном режиме при нестабильном интернет-соединении. По-умолчанию, видео-сервис YouTube ограничивает предзагрузку видеоролика в окне своего плеера, разбивая его на сегменты, подгружающиеся по мере просмотра ролика.

Качество видео-потока динамически корректируется на основе сетевых условий, путем изменения уровня при просмотре. Выполните следующие действия, чтобы настроить Firefox на полную буферизацию, без использования различных дополнений и расширений к браузеру.

БУФЕРИЗАЦИЯ ВИДЕО

Откройте интернет-браузер и в строке URL-адреса напишите:

и пообещайте, что будете осторожны.

Измените (просто двойным кликом мышки) значение с “true” на “false”.

Перезагрузите браузер. Наслаждайтесь просмотром буферизированного видеоматериала.

P.S. Ещё больше компьютерных советов можете найти в . Рекомендуйте инструкции своим знакомым и друзьям через кнопки социальных сетей, тем самым поможете развитию этого ресурса. Огромное спасибо!

При разработке программ, работающих с потоками данных АЦП и ЦАП, возникает задача обеспечить обработку данных с достаточной скоростью.

Скорость потока данных определяется частотой дискретизации и не регулируется программой: физический процесс не может ждать. Если потерять часть отсчётов, то сигнал будет испорчен.

При этом компьютер, исполняющий программу, обычно работает не в реальном времени, т.е. если один шаг программы следует "сразу" за другим, то это "сразу" следует понимать как последовательность выполнения операций, а не как реальное время. Некоторые операции (например, запись на диск) могут выполняться относительно долго. Также в многозадачной операционной системе есть много процессов, прерывающих друг друга, так что программа может "застопориваться" в случайные для неё моменты времени (иногда довольно надолго – на десятки, даже сотни миллисекунд).

Кроме того, при программировании бывает необходимо обрабатывать данные блоками (порциями), а не по одному отсчету, иначе накладные расходы сведут на нет быстродействие даже современного компьютера.

Для решения этой задачи применяется буферизация.

Буфер – это массив в памяти с быстрым доступом, в котором накапливаются поступающие данные (если это поток ввода, АЦП) или из которого они отправляются с заданной скоростью (если это поток вывода, ЦАП).

При вводе данных процесс начинается с пустым буфером. При выводе буфер должен быть предварительно заполнен, иначе в начале работы может сразу произойти опустошение буфера.

Производительность обработки данных компьютером должна быть больше скорости потока (с запасом), а вот мгновенная скорость может падать, лишь бы буфер ввода не переполнился, а буфер вывода не опустел. Запас по скорости нужен, чтобы разбирать данные, накопившиеся в буфере из-за паузы (а при выводе – чтобы снова наполнить буфер).

Образно можно представить себе буфер ввода как бак, в который из трубы с постоянной скоростью поступает вода. Мы зачерпываем эту воду ведром, относим потребителю и возвращаемся; чем больше бак, тем больше времени у нас есть на непредвиденные задержки по дороге. В идеале в баке должно быть не больше ведра воды, тогда, уходя, мы оставляем его пустым и имеем максимальный запас времени. Если же случилась задержка и набралось много воды, мы начинаем торопиться, чтобы побыстрее вычерпать её.

С буфером вывода всё то же самое, только вода уходит из бака с постоянной скоростью (и прерывать подачу нельзя, это авария), а мы наливаем вёдрами. Соответственно максимальную защиту от задержек обеспечивает полный бак, а если уровень упал – его надо побыстрее восполнить.

На практике такая схема может быть реализована в виде кольцевого буфера или списка блоков меньшего размера ("вёдер"), которые ставятся в очередь. По мере готовности они обрабатываются, освободившиеся блоки-вёдра ставятся в конец очереди.

Простейший вариант – это схема с двумя буферами (двумя половинами большого буфера): когда готова одна половина, она обрабатывается, в это время данные собираются во второй половине, и за время ее заполнения должна завершиться обработка первой, потом половины "меняются ролями". Если продолжать аналогию с вёдрами, то здесь нет бака, зато есть два ведра: набрав полное ведро, мы сразу подставляем пустое и относим полное на грядку. Это очень простая и эффективная схема, но в ней размер порции обработки данных (и связанная с ним задержка) увязывается с размером буфера, что иногда неудобно.

Для использованной выше бытовой аналогии буфера и ведра сделаем важную оговорку, что под буфером (в системах сбора данных и управления) подразумевается последовательная структура, в которой данные не теряются (ведро не дырявое) и последовательность данных не изменяется. Другими словами, попавший в буфер отсчёт данных не может обогнать ранее пришедший отсчёт.

Также отметим, что реализация буфера может быть не только программная, но и аппаратная, например в 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

что такое буферизация и получил лучший ответ

Ответ от Ђоша Бесфамильный[гуру]
Буферизация (от англ. buffer) - метод организации ввода и вывода данных в компьютерах и других вычислительных устройствах, который подразумевает использование буфера для временного хранения данных. При вводе данных одни устройства или процессы производят запись данных в буфер, а другие - чтение из него, при выводе - наоборот. Процесс, выполнивший запись в буфер, может немедленно продолжать работу, не ожидая, пока данные будут обработаны другим процессом, которому они предназначены. В свою очередь, процесс, обработавший некоторую порцию данных, может немедленно прочитать из буфера следующую порцию. Таким образом, буферизация позволяет процессам, производящим ввод, вывод и обработку данных, выполняться параллельно, не ожидая, пока другой процесс выполнит свою часть работы. Поэтому буферизация данных широко применяется в многозадачных ОС.

Ответ от 2 ответа [гуру]

Привет! Вот подборка тем с ответами на Ваш вопрос: что такое буферизация

Ответ от Sweet [гуру]
загрузка. чаще всего ролика или клипа, если смотришь из инета


Ответ от 3akypu_nanupocky [гуру]
Вставка силиконовых имплантантов.
Шутка. Буферизация (от англ. buffer) - метод организации ввода и вывода данных в компьютерах и других вычислительных устройствах, который подразумевает использование буфера для временного хранения данных Полный ответ см. источник


Ответ от FAVan [гуру]
Копирование данных в предварительный буфер обмена (обычно в оперативной памяти) для увеличения скорости чтения в случае, когда устройство (обычно жесткий диск или CD-ROM) занято другим делом.


Ответ от НиколаиЧ™ [гуру]
Буферизация это процесс построения некоторой окрестности вокруг объекта, которая в свою очередь может являться новым объектом. Дадим более подробное определение буфера. Пусть на плоскости, на которой задана прямоугольная система координат (X,Y) располагается объект (ограниченное и непрерывное множество) А. Буфером О радиуса R называется множество точек для которого выполняется следующее условие:
x, y принадлежит O(R) если p((x,y), (x0, y0)) <= R., где p- расстояние. , а x0, y0 может быть любой точкой принадлежащей А
Буферы для объектов различного характера локализации приведены на рис 5.
Буферы используются в случае, если необходимо построить "зоны влияния" или "зоны досягаемости", определяемые каким либо объектом. Построенные зоны могут использоваться для определения участков территории которых имеется сочетание определенных факторов или для нахождения различных объектов, на которые "воздействует" исходный объект. В качестве таких зон могут выступать: охранные зоны инженерных коммуникаций, зоны повышенной опасности при производстве взрывных работ, зоны транспортной досягаемости и т. д.
В качестве примера применения буферизации рассмотрим задачу определения наилучшего месторасположения горнообогатительной фабрики, принимающей сырьё с нескольких карьеров автомобильным транспортом и отправляющей концентрат потребителю по железной дороге. Пусть далее известно, что транспортировку сырья автомобильным транспортом невыгодно осуществлять при удаленности более 10 км, и комбинат должен располагаться в непосредственной близости от магистральной железной дороги (до 1 км). В качестве исходной информации берется цифровая карта содержащая слои карьеров и железных дорог. Решение задачи будет выглядеть следующим образом. Сначала мы должны построить вокруг карьеров буферы с радиусом 10 км и буферы вокруг железных дорог радиусом 1 км. Далее, мы должны отыскать участок пересечения всех построенных буферов (для этого можно воспользоваться описанным выше оверлеем). Внутри этого участка можно размещать обогатительную фабрику. Если такого участка нет, то возможно частичное решение задачи (обслуживание только нескольких карьеров) , либо решение задачи невозможно вообще.

Каждое периферийное устройство имеет свою специфику характера обмена данными, определяемую природой его внешней (по отношению к компьютеру) стороны. По характеру обмена устройства можно разделить на три основных типа.

блочные устройства, например, дисковые накопители. Обмен с ними воз­можен только блоками фиксированного размера - кластерами. При обмене с физическим диском нельзя останавливаться посреди передачи блока.

поточные устройства, примерами которых являются принтеры и сканеры Принтеру посылают поток данных, которые он по мере своих электромеханических способностей выводит в виде изображения на бумагу. Поток можно приостановить в любой момент, а затем продолжить передачу безо всяких побочных эффектов.

регистро-ориентированные устройства, которые, как правило, не являются источниками или приемниками большого объема данных. Программам обычно требуется знать текущее состояние данных устройств или (и) формировать текущие управляющие воздействия. Регистро-ориентированными, как правило, являются различные устройства сопряжения с технологическим оборудованием, компьютеризированные измерительные комплексы, джойстик (программа в определенные моменты опрашивает текущее состояние кнопок и координатных датчиков) и т. п.

Во многих устройствах присутствует смесь этих основных типов, так, даже принтер имеет и регистро-ориентированную часть - кроме приема потока oн передает сигналы текущего состояния (ошибка, конец бумаги).

Весьма важной является задача буферизации данных . Пропускная способность внут­ренних компонентов современной вычислительной системы - процессора и оперативной памяти - чрезвычайно высока в обоих направлениях (и на прием, и на передачу), а пропускная способность подавляющего большинства внешних устройств на несколько порядков ниже и варьируется в весьма широких преде­лах. Данные, передаваемые из оперативной памяти на внешнее устройство, по­ступают с очень высокой скоростью, как правило, в виде пакета. Эти данные целесообразно сохранить во внутреннем буфере контроллера интерфейса и в дальнейшем соответствующими порциями выдать во внешнее устройство. При передаче в обратном направлении данные от внешнего устройства опять-таки целесообразно накопить в буфере контроллера интерфейса, чтобы не «дергать» опе­ративную память "по мелочам". Когда накоплен значительный объем данных, они все одним пакетом могут быть быстро переданы в оперативную память. Таким образом, для обеспечения минимального времени обладания интерфейсом (а значит и ресурсами оперативной памяти) контроллер соответствующего интерфейса должен работать с использованием буферов.

Буфер представляет собой набор внутренних ячеек оперативной памяти с определенными правилами доступа как со стороны контроллера ПУ, так и со стороны «центра». Размер буфера и дисциплина его обслуживание выбираются, исходя из технических (скорость и объем информации, допустимые задержки) и экономических (цена) соображений.

Для блочных устройств обычно применяют буфер, минимальный размер которого равен размеру блока.

Контроллеры локальных сетей тяготеют к блочным устройствам - они передают данные целыми пакетами, которые должны приниматься и посылаться с опреде­ленной скоростью (100М бит/с, 1000М бит/с, 10Г бит/с - для первых трех поколений Ethernet). Для них объем, и организация буфера зависят от скорости среды передачи и производительности интерфейса, к которому они подключены.

Для потоковых устройств часто применяют буфер с дисциплиной обслужива­ния FIFO (First In - First Out, первым вошел - первым вышел). Размер такого буфера, как правило, невелик (например, 16, 64 байт). Буфер ставится между «цент­ром» и устройством, с одной стороны он наполняется, с другой - опо­рожняется. Опорожняющая сторона может извлекать данные из буфера, лишь, когда наполняющая сторона их туда положит. Попытка извлечения данных из пустого буфера является ошибкой опустошения (underflow), попытка помеще­ния в заполненный буфер - ошибкой переполнения (overflow). Логика буфера следит за степенью наполнения буфера и сообщает «центру» о критических ситуа­циях. Когда «центр» (программа, исполняемая процессором) выводит данные через FIFO, логика следит за снижением наполнения буфера ниже порога опустошения и в случае такового сигнализирует (обычно прерыванием) о необ­ходимости вывода следующей порции данных. Логика также препятствует пере­полнению, отвергая попытки записи лишних данных и немедленно сообщая об ошибке (обычно через соответствующий программно-читаемый бит состояния). При вводе данных через буфер FIFO его логика следит за наличием свободного места в буфере и при превышении порога заполнения также сигнализирует пре­рыванием. Аналогично, она не позволяет считать данные из пустого буфера и сообщает об этом соответствующим битом. Также логика буфера должна позво­лять его очищать по инициативе процессора, сообщать о количестве (или хотя бы о наличии) данных в буфере по запросу процессора. Управляемость порогов позволяет программе в зависимости от внешнего темпа обмена данными, воз­можностей и текущей загруженности компьютера выбрать оптимальный режим обмена, позволяющий и не «суетиться по мелочам», и не допускать переполненный/опустошений буфера. У двунаправленных устройств, как правило, имеется пара FIFO-буферов (для полного дуплекса), для симплексных устройств доста­точно одного.

Буферы современных устройств внешней памяти имеют более сложную организацию, обеспечивающую кэширование данных; однако и они используют вышеописанные принципы организации. Однопортовые буферы большого объема, как уже говорилось, могут вносить заметную задержку. Для потоковых примене­ний (например, для воспроизведения мультимедийных файлов) эта задержка обычно не очень существенна и на производительность не влияет. Однако для приложений «петлеобразного» характера, когда буфер оказывается в цепочке за­прос-ответ, его задержка может приводить к снижению производительности. Так, например, передача данных по сети обычно представляет собой последователь­ность кадров данных, на каждый из которых передающая сторона ожидает кадр подтверждения. Если каждый кадр будет «просиживать» в буфере, естественно, производительность снизится. От этой беды спасает метод «скользящего окна», при котором передающая сторона допускает некоторое отставание приема под­тверждений.

Под буфером обычно понимается некоторая область памяти для запоминания информации при обмене данных между двумя устройствами, двумя процессами или процессом и устройством. Обмен информацией между двумя процессами относится к области кооперации процессов, и мы подробно рассмотрели его организацию в соответствующей главе. Будем рассматривать использование буферов в том случае, когда одним из участников обмена является внешнее устройство.

Существуют три причины, приводящие к использованию буферов в базовой подсистеме ввода-вывода :

1) Первая причина буферизации – это разные скорости приема и передачи информации, которыми обладают участники обмена. Рассмотрим, например, случай передачи потока данных от клавиатуры на модем. Скорость, с которой поставляет информацию клавиатура, определяется скоростью набора текста человеком и обычно существенно меньше скорости передачи данных модемом. Для того чтобы не занимать модем на все время набора текста, делая его недоступным для других процессов и устройств, разумно накапливать введенную информацию в буфере или нескольких буферах достаточного размера и отсылать ее через модем после заполнения буферов.

2) Вторая причина буферизации – это разные объемы данных, которые могут быть приняты или получены участниками обмена единовременно. Возьмем другой пример. Пусть информация поставляется модемом и записывается на жесткий диск. Помимо обладания разными скоростями совершения операций модем и жесткий диск относятся к разным типам устройств. Модем является символьным устройством и выдает данные байт за байтом, в то время как диск является блочным устройством и для проведения операции записи для него требуется накопить необходимый блок данных в буфере. Здесь также можно применять более одного буфера. После заполнения первого буфера модем начинает заполнять второй одновременно с записью первого на жесткий диск. Поскольку скорость работы жесткого диска в тысячи раз больше, чем скорость работы модема, то к моменту заполнения второго буфера операция записи первого будет завершена, и модем снова может заполнять первый буфер одновременно с записью второго на диск.

3) Третья причина буферизации связана с необходимостью копирования информации из приложений, осуществляющих ввод-вывод, в буфера ядра операционной системы и обратно. Допустим, что некоторый пользовательский процесс пожелал вывести информацию из своего адресного пространства на внешнее устройство. Для этого он должен выполнить системный вызов с обобщенным названием write , передав в качестве параметров адрес области памяти, где расположены данные, и их объем. Если внешнее устройство временно занято, то возможна ситуация, когда к моменту его освобождения содержимое требуемой области окажется испорченным (например, при использовании асинхронной формы системного вызова). Чтобы избежать возникновения подобных ситуаций, проще всего в начале работы системного вызова откопировать необходимые данные в буфер ядра операционной системы, постоянно находящийся в оперативной памяти, и выводить их на устройство из этого буфера.


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

Функции буферизации и кэширования не обязательно должны быть локализованы в базовой подсистеме ввода-вывода. Они могут быть частично реализованы в драйверах и даже в контроллерах устройств, скрытно по отношению к базовой подсистеме.

Интернет