En informática , la entrada/salida ( E/S , i/o o informalmente io o IO ) es la comunicación entre un sistema de procesamiento de información, como una computadora , y el mundo exterior, como otro sistema informático, periféricos o un operador humano. Las entradas son las señales o datos que recibe el sistema y las salidas son las señales o datos que envía. El término también se puede utilizar como parte de una acción; "realizar E/S" es realizar una operación de entrada o salida .
Los dispositivos de E/S son las piezas dehardwareque utiliza un ser humano (u otro sistema) para comunicarse con una computadora. Por ejemplo, untecladooun ratón de computadorasondispositivos de entradapara una computadora, mientras quelos monitoresylas impresorassondispositivos de salida. Los dispositivos para la comunicación entre computadoras, comolos módemsylas tarjetas de red, suelen realizar operaciones de entrada y salida. Cualquier interacción con el sistema por parte de un interactor es unaentraday la reacción a la que responde el sistema se denomina salida.
La designación de un dispositivo como entrada o salida depende de la perspectiva. Los ratones y los teclados toman los movimientos físicos que el usuario humano emite y los convierten en señales de entrada que una computadora puede entender; la salida de estos dispositivos es la entrada de la computadora. De manera similar, las impresoras y los monitores toman las señales que las computadoras emiten como entrada y las convierten en una representación que los usuarios humanos pueden entender. Desde la perspectiva del usuario humano, el proceso de leer o ver estas representaciones es recibir una salida; este tipo de interacción entre computadoras y humanos se estudia en el campo de la interacción humano-computadora . Una complicación adicional es que un dispositivo tradicionalmente considerado un dispositivo de entrada, por ejemplo, un lector de tarjetas o un teclado, puede aceptar comandos de control para, por ejemplo, seleccionar un apilador o mostrar las luces del teclado, mientras que un dispositivo tradicionalmente considerado como un dispositivo de salida puede proporcionar datos de estado (por ejemplo, tóner bajo, sin papel, atasco de papel).
En la arquitectura informática, la combinación de la CPU y la memoria principal , en la que la CPU puede leer o escribir directamente mediante instrucciones individuales , se considera el cerebro de una computadora. Cualquier transferencia de información hacia o desde la combinación CPU/memoria, por ejemplo mediante la lectura de datos de una unidad de disco , se considera E/S. [1] La CPU y sus circuitos de soporte pueden proporcionar E/S mapeadas en memoria que se utilizan en la programación informática de bajo nivel , como en la implementación de controladores de dispositivos , o pueden proporcionar acceso a canales de E/S . Un algoritmo de E/S es uno diseñado para explotar la localidad y funcionar de manera eficiente al intercambiar datos con un dispositivo de almacenamiento secundario, como una unidad de disco.
Se requiere una interfaz de E/S siempre que el dispositivo de E/S esté controlado por un procesador. Normalmente, una CPU se comunica con los dispositivos a través de un bus . La interfaz debe tener la lógica necesaria para interpretar la dirección del dispositivo generada por el procesador. La interfaz debe implementar el protocolo de enlace mediante comandos apropiados (como BUSY, READY y WAIT), y el procesador puede comunicarse con un dispositivo de E/S a través de la interfaz. Si se intercambian diferentes formatos de datos, la interfaz debe poder convertir datos en serie a formato paralelo y viceversa. Debido a que sería un desperdicio que un procesador estuviera inactivo mientras espera datos de un dispositivo de entrada, debe haber una disposición para generar interrupciones [2] y los números de tipo correspondientes para un procesamiento posterior por parte del procesador si es necesario. [ aclaración necesaria ]
Una computadora que utiliza E/S mapeada en memoria accede al hardware leyendo y escribiendo en ubicaciones de memoria específicas, utilizando las mismas instrucciones en lenguaje ensamblador que la computadora utilizaría normalmente para acceder a la memoria. Un método alternativo es mediante E/S basada en instrucciones, que requiere que una CPU tenga instrucciones especializadas para E/S. [1] Tanto los dispositivos de entrada como de salida tienen una tasa de procesamiento de datos que puede variar en gran medida. [2] Con algunos dispositivos capaces de intercambiar datos a velocidades muy altas, se requiere acceso directo a la memoria (DMA) sin la ayuda continua de una CPU. [2]
Los sistemas operativos y las funciones de programación de nivel superior emplean conceptos y primitivos de E/S independientes y más abstractos . Por ejemplo, la mayoría de los sistemas operativos proporcionan a los programas de aplicación el concepto de archivos . La mayoría de los lenguajes de programación proporcionan funciones de E/S como instrucciones en el lenguaje o como funciones en una biblioteca estándar para el lenguaje.
Una alternativa a las funciones primitivas especiales es la mónada E/S , que permite a los programas simplemente describir la E/S y las acciones se llevan a cabo fuera del programa. Esto es importante porque las funciones E/S introducirían efectos secundarios en cualquier lenguaje de programación, pero esto permite que la programación puramente funcional sea práctica.
Las facilidades de E/S proporcionadas por los sistemas operativos pueden estar orientadas a registros , con archivos que contienen registros , o orientadas a flujos, con el archivo que contiene un flujo de bytes.
La E/S de canal requiere el uso de instrucciones diseñadas específicamente para realizar operaciones de E/S. Las instrucciones de E/S direccionan el canal o el canal y el dispositivo; el canal accede de forma asincrónica a toda la información de control y direccionamiento necesaria. Esto es similar al DMA, pero más flexible.
La E/S asignada a puertos también requiere el uso de instrucciones de E/S especiales. Normalmente, se asignan uno o más puertos al dispositivo, cada uno con un propósito especial. Los números de puerto se encuentran en un espacio de direcciones independiente del que utilizan las instrucciones normales.
El acceso directo a memoria (DMA) es un medio para que los dispositivos transfieran grandes cantidades de datos hacia y desde la memoria independientemente de la CPU.