Bitstream - Bitstream

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

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

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

Связь между битовыми потоками и байтовыми потоками

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

Примеры

Термин битовый поток часто используется для описания данных конфигурации, загружаемых в программируемая вентильная матрица (ПЛИС). Хотя большинство ПЛИС также поддерживают метод загрузки с параллельным байтом, это использование могло возникнуть на основе обычного метода настройки ПЛИС из последовательного потока битов, обычно из последовательного ВЫПУСКНОЙ ВЕЧЕР или флэш-память чип. Подробный формат битового потока для конкретной FPGA обычно является собственностью производителя FPGA.

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

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

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

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

В Тип интернет-СМИ для произвольного байтового потока приложение / октет-поток. Другие типы мультимедиа определены для байтовых потоков в хорошо известных форматах.

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

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

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

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

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

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

использованная литература

  1. ^ "Bitstream". Фонд программного обеспечения Python. В архиве из оригинала от 08.09.2016.
  2. ^ «Класс BitSet». Oracle. В архиве из оригинала от 30.11.2016.