title: Copia cero
text: # Copia cero
  
  Copia cero (del inglés zero-copy) describe operaciones de computadora en las cuales la CPU no realiza la tarea de copiar los datos desde un área hacia otra de la memoria.
  Las versiones de copia cero de los elementos de sistemas operativos, tales como controladores de dispositivos, sistemas de archivos, y pilas de protocolos de red elevan fuertemente el rendimiento de ciertos programas y utilizan más eficientemente los recursos del sistema. El rendimiento se ve mejorado porque permite a la CPU realizar otras tareas mientras la copia de datos se realiza en paralelo en otra parte de la máquina. Además las operaciones de copia cero reducen el número de cambios de contexto entre el espacio de usuario y el espacio del núcleo. Los recursos del sistema son utilizados con mayor eficiencia ya que al utilizar un CPU sofisticado para realizar operaciones de copia, las cuales son tareas relativamente simples, es un desperdicio si otros componentes de sistema más simples pueden realizar estas operaciones.
  Las técnicas para crear software de copia cero incluyen el uso de copiado basado en acceso directo a memoria y mapeo de memoria a través de una unidad de manejo de memoria. Estas características requieren de apoyo de hardware específico y generalmente incluyen requerimientos de configuración de memoria particulares.
  Los protocolos de copia cero son especialmente importantes para redes de alta velocidad donde la capacidad de un enlace de red se acerca o excede la capacidad de procesamiento de la CPU. En tales casos, la CPU gasta casi todo su tiempo copiando datos transferidos, y esto se convierte en un cuello de botella que limita la velocidad de comunicación por debajo de la capacidad del enlace. Una regla general usada en la industria es que aproximadamente un ciclo de reloj de CPU es necesario para procesar un bit de datos entrante. Por ejemplo, un procesador de 1GHz puede manejar un enlace de red de 1 Gb/s con copiado de datos convencional, pero el mismo procesador será sobrecargado por un enlace de 10 Gb/s, y en esta situación el software de copia cero se vuelve necesario.
  Los enlaces de red por sobre 1 Gb/s, y con ellos el software de copia cero, actualmente tienen aplicaciones limitados en clusters de supercomputación, grandes centros de datos comerciales, etc. Sin embargo, como las tecnologías informáticas avanzan y como las redes de 1 Gb/s, 10 Gb/s, y hasta 100 Gbit/s se vuelven más comunes, las soluciones de copia cero también tienen tendencia a volverse más comunes, ya que la capacidad de las redes se está incrementando más rápido que la capacidad de las CPU.
  Los protocolos de copia cero tienen algo de sobrecarga inicial para evitar la entrada/salida programada cuando ocurre la transmisión de mensajes de considerable peso.
  Los protocolos de acceso directo a memoria remota dependen profundamente de técnicas de copia cero. Varios sistemas operativos, incluyendo Linux, soportan el uso de copia cero para el copiado de archivos a través de las API específicas, tales como sendfile y sendfile64.