stringtranslate.com

flujo de bits

Un flujo de bits (o flujo de bits ), también conocido como secuencia binaria , es una secuencia de bits .

Un flujo de bytes es una secuencia de bytes . Normalmente, cada byte es una cantidad de 8 bits , por lo que el término flujo de octetos a veces se utiliza indistintamente. Un octeto se puede codificar como una secuencia de 8 bits de múltiples maneras diferentes (consulte numeración de bits ), por lo que no existe una traducción única y directa entre flujos de bytes y flujos de bits.

Los flujos de bits y de bytes se utilizan ampliamente en telecomunicaciones e informática . Por ejemplo, SONET transporta flujos de bits sincrónicos y el Protocolo de control de transmisión transporta un flujo de bytes asíncrono .

Relación con los flujos de bytes

En la práctica, los flujos de bits no se utilizan directamente para codificar flujos de bytes; un canal de comunicación puede utilizar un método de señalización que no se traduce directamente a bits (por ejemplo, transmitiendo señales de múltiples frecuencias) y normalmente también codifica otra información, como el encuadre y la corrección de errores, junto con sus datos. [ cita necesaria ]

Ejemplos

El término flujo de bits se utiliza con frecuencia para describir los datos de configuración que se cargarán en una matriz de puertas programables en campo (FPGA). Aunque la mayoría de los FPGA también admiten un método de carga de bytes paralelos, este uso puede haberse originado en función del método común de configurar el FPGA a partir de un flujo de bits en serie, generalmente desde una PROM en serie o un chip de memoria flash . El formato detallado del flujo de bits para una FPGA en particular suele ser propiedad del proveedor de la FPGA.

En matemáticas, se han estudiado varias secuencias infinitas específicas de bits por sus propiedades matemáticas; éstas incluyen la secuencia Baum-Sweet , la secuencia Ehrenfeucht-Mycielski , la palabra Fibonacci , la secuencia Kolakoski , la secuencia regular del plegado de papel , la secuencia Rudin-Shapiro y la secuencia Thue-Morse .

En la mayoría de los sistemas operativos , incluidos los tipo Unix y Windows , las bibliotecas de E/S estándar convierten el acceso a archivos paginados o almacenados en buffer de nivel inferior a un paradigma de flujo de bytes. En particular, en los sistemas operativos tipo Unix, cada proceso tiene tres flujos estándar , que son ejemplos de flujos de bytes unidireccionales. El mecanismo de canalización de Unix proporciona comunicaciones de flujo de bytes entre diferentes procesos.

Los algoritmos de compresión a menudo codifican en flujos de bits, ya que los 8 bits que ofrece un byte (la unidad de memoria direccionable más pequeña) pueden ser un desperdicio. Aunque normalmente se implementan en lenguajes de bajo nivel , algunos lenguajes de alto nivel como Python [1] y Java [2] ofrecen interfaces nativas para E/S de flujo de bits.

Un ejemplo bien conocido de un protocolo de comunicación que proporciona un servicio de flujo de bytes a sus clientes es el Protocolo de control de transmisión (TCP) del conjunto de protocolos de Internet , que proporciona un flujo de bytes bidireccional.

El tipo de medio de Internet para un flujo de bytes arbitrario es application/octet-stream . Se definen otros tipos de medios para flujos de bytes en formatos conocidos.

Control de flujo

A menudo, el contenido de un flujo de bytes se crea dinámicamente, como los datos del teclado y otros periféricos (/dev/tty), datos del generador de números pseudoaleatorios ( /dev/urandom ), etc.

En esos casos, cuando el destino de un flujo de bytes (el consumidor) utiliza bytes más rápido de lo que pueden generarse, el sistema utiliza la sincronización de procesos para hacer que el destino espere hasta que el siguiente byte esté disponible.

Cuando los bytes se generan más rápido de lo que el destino puede usarlos y el productor es un algoritmo de software, el sistema lo pausa con las mismas técnicas de sincronización de procesos. Cuando el productor admite el control de flujo , el sistema solo envía la señal de listo cuando el consumidor está listo para el siguiente byte. Cuando no se puede pausar al productor (un teclado o algún hardware que no admita el control de flujo), el sistema generalmente intenta almacenar temporalmente los datos hasta que el consumidor esté listo para ello, generalmente usando una cola . A menudo, el receptor puede vaciar el buffer antes de que se llene por completo. Un productor que continúa produciendo datos más rápido de lo que se puede consumir, incluso después de que el búfer esté lleno, provoca un desbordamiento no deseado del búfer , pérdida de paquetes , congestión de la red y denegación de servicio .

Ver también

Referencias

  1. ^ "Corriente de bits". Fundación de software Python. Archivado desde el original el 8 de septiembre de 2016.
  2. ^ "Clase BitSet". Oráculo. Archivado desde el original el 30 de noviembre de 2016.