stringtranslate.com

Битстрим

Битовый поток (или битовый поток ) , также известный как двоичная последовательность , представляет собой последовательность битов .

Байтовый поток — это последовательность байтов . Обычно каждый байт представляет собой 8-битную величину , поэтому термин « поток октетов» иногда используется как взаимозаменяемый. Октет может быть закодирован как последовательность из 8 бит разными способами (см. нумерацию битов ), поэтому не существует однозначного и прямого перевода между потоками байтов и потоками битов.

Битовые и байтовые потоки широко используются в телекоммуникациях и вычислительной технике . Например, синхронные потоки битов передаются SONET , а протокол управления передачей передает асинхронный поток байтов.

Связь с байтовыми потоками

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

Примеры

Термин «битовый поток» часто используется для описания данных конфигурации, которые должны быть загружены в программируемую вентильную матрицу (FPGA). Хотя большинство FPGA также поддерживают метод параллельной загрузки байтов, такое использование могло возникнуть на основе общего метода настройки FPGA из последовательного потока битов, обычно из последовательного PROM или чипа флэш-памяти . Подробный формат битового потока для конкретной FPGA обычно является собственностью поставщика FPGA.

В математике несколько конкретных бесконечных последовательностей битов были изучены на предмет их математических свойств; к ним относятся последовательность Баума-Свита , последовательность Эренфойхта-Мицельского , слово Фибоначчи , последовательность Колакоски , обычная последовательность складывания бумаги , последовательность Рудина-Шапиро и последовательность Туэ-Морса .

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

Алгоритмы сжатия часто кодируют в битовых потоках, поскольку 8 бит, предлагаемые байтом (наименьшая адресуемая единица памяти), могут быть расточительны. Хотя обычно они реализуются на языках низкого уровня , некоторые языки высокого уровня, такие как Python [1] и Java [2], предлагают собственные интерфейсы для ввода-вывода битового потока.

Одним из хорошо известных примеров протокола связи , который предоставляет своим клиентам услугу потока байтов, является протокол управления передачей (TCP) из набора протоколов Интернета , который обеспечивает двунаправленный поток байтов.

Типом интернет-носителя для произвольного байтового потока является application/octet-stream . Другие типы носителей определены для байтовых потоков в известных форматах.

Управление потоком

Часто содержимое байтового потока создается динамически, например данные с клавиатуры и других периферийных устройств (/dev/tty), данные генератора псевдослучайных чисел ( /dev/urandom ) и т. д.

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

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

Смотрите также

Рекомендации

  1. ^ "Битстрим". Фонд программного обеспечения Python. Архивировано из оригинала 8 сентября 2016 г.
  2. ^ «Класс BitSet». Оракул. Архивировано из оригинала 30 ноября 2016 г.