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. ^ "Bitstream". Python Software Foundation. Архивировано из оригинала 2016-09-08.
  2. ^ "Class BitSet". Oracle. Архивировано из оригинала 2016-11-30.