Actualizado a: 19 de enero de 2024
El sistema de Entrada/Salida (E/S) de un ordenador juega un papel crucial en su funcionamiento, ya que permite la comunicación entre los periféricos y el usuario. Desde los periféricos más simples, como teclados y ratones, hasta dispositivos de almacenamiento masivo y redes, el sistema de E/S es responsable de gestionar la transferencia de datos de manera eficiente y confiable. En este artículo, exploraremos la importancia del sistema de E/S y cómo influye en el rendimiento global de un ordenador.
¿Qué es el sistema E/S?
El sistema de Entrada/Salida (E/S), o Input/Output (I/O) en inglés, de un ordenador se refiere a la infraestructura y los componentes que permiten la comunicación entre el hardware de entrada/salida y el procesador central. El sistema de E/S es responsable de transferir datos entre el ordenador y los dispositivos periféricos, como teclados, ratones, monitores, impresoras, dispositivos de almacenamiento externo, redes, entre otros.
El sistema de E/S comprende controladores, buses de datos, puertos y protocolos de comunicación que facilitan la interacción del usuario con el ordenador. Los controladores actúan como intermediarios entre el hardware de E/S y el sistema operativo, permitiendo que los datos sean transmitidos de manera eficiente y en el formato adecuado.
La importancia del sistema de E/S radica en su capacidad para facilitar la interacción entre el usuario y el ordenador, así como en garantizar la transferencia de datos de manera confiable y segura. Un buen sistema de E/S es crucial para lograr un rendimiento óptimo del sistema, ya que una comunicación eficiente entre el hardware y el software permite una respuesta rápida a las entradas del usuario y una transferencia eficiente de datos hacia y desde los dispositivos periféricos.
Un poco de historia
El desarrollo de los sistemas de entrada/salida (E/S) en los ordenadores ha sido una parte fundamental de la evolución de la informática a lo largo de la historia. Aquí se presenta un breve repaso de su evolución:
- En los primeros días de la computación, las operaciones de E/S se realizaban manualmente mediante tarjetas perforadas o cintas magnéticas. Estos sistemas eran muy lentos y requerían una gran cantidad de tiempo y esfuerzo humano.
- Con el avance de la tecnología, surgieron los primeros dispositivos de E/S automatizados, como impresoras y unidades de cinta magnética. Estos dispositivos se conectaban a los ordenadores a través de interfaces específicas y se utilizaban para la entrada y salida de datos.
- En la década de 1950, se introdujeron los sistemas de controladores de E/S, que eran dispositivos dedicados para gestionar la comunicación entre los dispositivos de E/S y la CPU. Estos controladores actuaban como intermediarios, traduciendo las operaciones de E/S en comandos y señales comprensibles para los dispositivos.
- En la década de 1960, se introdujo la técnica de interrupciones, que permitía a los dispositivos de E/S notificar a la CPU cuando requerían atención. Esto permitió un mejor manejo de las operaciones de E/S y evitó que la CPU tuviera que esperar constantemente a los dispositivos.
- En la década de 1970, se desarrollaron los controladores de acceso directo a memoria (DMA), que permitían a los dispositivos de E/S transferir datos directamente a la memoria principal sin la intervención de la CPU. Esto mejoró significativamente la velocidad de transferencia de datos y liberó a la CPU para realizar otras tareas.
- Con el tiempo, se desarrollaron interfaces estándar y mejoras significativas en el rendimiento, la eficiencia y las capacidades de estos sistemas…
Partes del sistema de E/S
El sistema de Entrada/Salida (E/S) de un ordenador está compuesto por varias partes clave, y son:
- Controlador de E/S: es un componente esencial que actúa como intermediario entre el hardware de E/S y el sistema operativo. El controlador de E/S se encarga de gestionar las operaciones de lectura y escritura, traduciendo las solicitudes del software en señales y comandos comprensibles para el dispositivo periférico.
- Adaptador host: también conocido como adaptador de bus o controlador de bus, es responsable de establecer la conexión física entre el dispositivo periférico y el bus de datos del ordenador. El adaptador host se encarga de controlar la transferencia de datos, direccionamiento y protocolos de comunicación específicos del dispositivo.
- Bus de datos: es un conjunto de cables y líneas de comunicación que conectan el procesador central, la memoria y los dispositivos periféricos. El bus de datos facilita la transferencia de datos entre estas diferentes partes del sistema informático.
- Dispositivos periféricos: son los componentes externos conectados al ordenador. A su vez, estos componentes pueden ser:
- De entrada: permiten al usuario enviar información o comandos al ordenador. Algunos ejemplos comunes de periféricos de entrada son: el teclado, el ratón, el escáner, el micrófono, etc.
- De salida: son dispositivos que muestran o reproducen la información generada por el ordenador. Algunos ejemplos de periféricos de salida son: el monitor, la impresora, los altavoces, el poryector, etc.
- De entrada y salida: permiten tanto la entrada como la salida de datos. Algunos ejemplos de periféricos de entrada y salida son: la pantalla táctil, un mando con feedback, impresora multifunción, sistemas de realidad virtual, etc.
Pueden existir otros, u otras formas de catalogar a los dispositivos periféricos, como los de almacenamiento, los de control, los de comunicación de red, etc., aunque esto no nos interesa aquí…
Métodos de gestión
En cuanto a los métodos de gestión que existe para el sistema de E/S, tenemos:
Polling
La técnica de sondeo (Polling) es un método utilizado en el software para verificar el estado de los dispositivos. Estos dispositivos pueden incluir unidades de disco y otros periféricos conectados a la computadora. Mediante el sondeo, un programa realiza consultas al dispositivo para obtener información sobre su disponibilidad de datos. Sin embargo, es importante tener en cuenta que el sondeo puede ser un proceso lento, ya que debe esperar a que ocurra otra función antes de obtener detalles sobre el estado del dispositivo.
En ciertos casos, el polling puede resultar beneficioso. Por ejemplo, cuando múltiples elementos son sondeados simultáneamente y solo uno de ellos actualiza su estado en un momento dado, los demás deben esperar hasta recibir una confirmación de aquel elemento que haya finalizado su actualización (lo cual puede llevar algunos segundos). Además, el sondeo puede emplearse para verificar si un dispositivo está conectado en línea o no. Si el dispositivo se encuentra fuera de línea, esta información puede ser utilizada para tomar acciones apropiadas, como pausar o suspender tareas que dependan de dicho dispositivo (por ejemplo, detener una copia de seguridad en progreso).
Interrupciones
Usando interrupciones, o IRQs, La CPU se ve interrumpida por diversos dispositivos, como periféricos y hardware de E/S, quienes utilizan estas interrupciones para notificar a la CPU cuando necesitan atención. Aunque varios dispositivos pueden interrumpir la CPU simultáneamente, solo se le entrega una interrupción a la vez. Estas interrupciones pueden ocurrir debido a errores en el hardware o software, como un fallo en un bus de E/S, lo que detendría todas las transferencias de datos hasta su reparación. También puede suceder cuando otro dispositivo intenta acceder a la memoria o viceversa. En cualquier caso, es fundamental que los programas de aplicación estén específicamente escritos para esta máquina en particular.
Además, el sistema operativo puede ser interrumpido por otros procesos que requieren tiempo de CPU. Por ejemplo, si un programa de usuario escribe en un archivo y luego finaliza, el sistema operativo se encargará de escribir ese archivo en el disco antes de devolver el control al usuario. Este concepto se conoce como multitarea, que permite la ejecución simultánea de múltiples programas diferentes. El sistema operativo es responsable de programar el tiempo de la CPU entre estos programas mediante el uso de un controlador de interrupciones o rutina de servicio de interrupciones (ISR). Un ISR es simplemente un fragmento de código que se ejecuta cuando se produce una interrupción y, por lo general, devuelve el control al programa original al finalizar.
Más información, ver nuestro artículo sobre las syscalls
DMA (Direct Memory Access)
El sistema DMA (Direct Memory Access) es una tecnología utilizada en los ordenadores para permitir que ciertos dispositivos de E/S accedan directamente a la memoria principal sin la intervención constante de la CPU. Esto mejora significativamente la eficiencia del sistema al transferir datos de manera más rápida y liberar a la CPU para que pueda realizar otras tareas.
El DMA funciona mediante un controlador de DMA, que es un componente especializado que coordina las transferencias de datos entre los dispositivos de E/S y la memoria. Cuando un dispositivo de E/S necesita transferir datos, envía una solicitud de DMA al controlador de DMA. El controlador de DMA, a su vez, se comunica con la CPU para obtener acceso temporal a la memoria principal.
Una vez que el controlador de DMA obtiene acceso a la memoria, puede transferir los datos directamente. Esto se logra mediante la configuración de los registros de dirección de origen y destino, así como la cantidad de datos a transferir.
El sistema DMA es especialmente útil en situaciones donde se requieren transferencias rápidas y continuas de datos, como la reproducción de audio o video en tiempo real, la transferencia de grandes archivos o la comunicación en redes de alta velocidad. Al permitir que los dispositivos de E/S accedan directamente a la memoria, el DMA optimiza el rendimiento del sistema y mejora la eficiencia general.
Ventajas y desventajas de DMA
Ventajas | Permite que los periféricos puedan leer y escribir sin la necesidad de que la CPU intervenga, lo que alivia la carga de trabajo de ésta. La carga estará sobre el controlador DMA. |
Permite el procesamiento más rápido de otros procesos de carga para la CPU. | |
Desventajas | Necesita de un sistema algo más complejo, con controlador DMA. |
Puede implicar problemas de coherencia de caché, y hay que implementar métodos para subsanarlo. |
Implementaciones de la arquitectura del sistema E/S
En cuanto a las implementaciones de la arquitectura del sistema E/S, tenemos:
Channel I/O
En un sistema E/S, la arquitectura Channel I/O es una arquitectura de entrada/salida de alto rendimiento utilizada en computadoras centrales. En esta arquitectura, los canales se encargan de tareas complejas de E/S sin la intervención directa de la CPU. Esto se logra mediante el uso de lógica dedicada que procesa los datos y realiza conversiones de formatos.
Los canales son autónomos y tienen suficiente capacidad de almacenamiento y lógica para manejar las tareas de E/S. En algunos casos, los canales pueden ser lo suficientemente poderosos como para funcionar como computadoras independientes. Utilizan interfaces estándar para conectarse a dispositivos periféricos y pueden operar simultáneamente.
Memory-mapped I/O y Port-mapped I/O
Port-mapped I/O y memory-mapped I/O son dos métodos utilizados en sistemas informáticos para interactuar con dispositivos de E/S. A continuación, se describen cada uno de ellos y se presentan sus diferencias, ventajas y desventajas:
Port-mapped I/O (E/S mapeada por puertos)
- En este enfoque, los dispositivos de E/S se asignan a puertos específicos en el espacio de direcciones del sistema.
- Los puertos se utilizan para enviar señales de control y transferir datos entre la CPU y los dispositivos.
- Se accede a los dispositivos de E/S utilizando instrucciones de E/S especiales que leen y escriben en puertos específicos.
- Ventajas:
- Proporciona un acceso rápido a los dispositivos de E/S, ya que las instrucciones se pueden ejecutar rápidamente.
- Permite un control preciso sobre los dispositivos, ya que se utilizan instrucciones dedicadas para interactuar con puertos específicos.
- Desventajas:
- Requiere instrucciones de E/S especiales, lo que puede complicar la programación y aumentar la complejidad del software.
- El número de puertos disponibles es limitado, lo que puede ser un problema en sistemas con muchos dispositivos de E/S.
Memory-mapped I/O (E/S mapeada por memoria)
- En este enfoque, los dispositivos de E/S se asignan a direcciones de memoria específicas.
- Los datos se transfieren entre la CPU y los dispositivos de E/S utilizando operaciones de lectura y escritura en las direcciones de memoria correspondientes.
- Los dispositivos se comportan como «ubicaciones de memoria especiales» y se accede a ellos de la misma manera que a la memoria principal.
- Ventajas:
- Simplifica la programación, ya que los dispositivos de E/S se tratan como ubicaciones de memoria normales.
- Permite utilizar las mismas instrucciones de lectura/escritura de memoria para acceder a los dispositivos de E/S.
- Permite compartir la misma interfaz de memoria para dispositivos de E/S y memoria principal.
- Desventajas:
- Puede tener un impacto en el rendimiento, ya que las operaciones de lectura/escritura deben competir con el acceso a la memoria principal.
- Requiere un control cuidadoso para evitar conflictos de acceso y garantizar la integridad de los datos.
Es decir, como he mostrado en estos puntos, la principal diferencia entre port-mapped I/O y memory-mapped I/O radica en la forma en que se accede a los dispositivos de E/S. Port-mapped I/O utiliza instrucciones de E/S dedicadas y puertos específicos, lo que proporciona un acceso rápido y un control preciso, pero puede ser más complejo. Memory-mapped I/O trata los dispositivos de E/S como ubicaciones de memoria especiales, lo que simplifica la programación, pero puede afectar el rendimiento y requerir una gestión cuidadosa para evitar conflictos. La elección entre estos enfoques depende de las necesidades y restricciones del sistema en particular.
Otros
Isolated I/O y Programmed I/O, es decir, el sistema de E/S aislado y el sistema programado, son dos métodos utilizados en sistemas informáticos para realizar operaciones de entrada/salida (E/S). A continuación se describe cada uno de ellos:
- Isolated I/O (E/S aislada): también conocido como E/S dedicada, se utilizan instrucciones de E/S especiales para interactuar con dispositivos periféricos. Cada dispositivo periférico tiene su propio conjunto de instrucciones dedicadas que se utilizan exclusivamente para su control y comunicación. En este enfoque, la CPU se comunica directamente con el dispositivo periférico utilizando instrucciones de E/S específicas. Estas instrucciones permiten leer y escribir datos en los registros de control y datos del dispositivo. La E/S aislada requiere que se conozcan y utilicen instrucciones específicas para cada dispositivo periférico. Cada dispositivo tiene su propio conjunto de instrucciones y registros de control, lo que hace que la programación sea más compleja y específica para cada dispositivo.
- Programmed I/O (E/S programada): también conocido como E/S controlada por programa, se utilizan instrucciones de lectura y escritura normales de la CPU para interactuar con los dispositivos periféricos. En este enfoque, los dispositivos periféricos se mapean en la memoria del sistema y se accede a ellos utilizando instrucciones de lectura y escritura en direcciones de memoria específicas. Estos dispositivos periféricos se comportan como ubicaciones de memoria especiales. La E/S programada permite utilizar las mismas instrucciones de lectura y escritura que se utilizan para acceder a la memoria principal. No se requieren instrucciones de E/S especiales, lo que simplifica la programación. Sin embargo, en la E/S programada, la CPU debe realizar todas las operaciones de transferencia de datos entre la memoria y los dispositivos periféricos. Esto puede llevar a una carga adicional en la CPU y afectar el rendimiento general del sistema, especialmente en operaciones de E/S intensivas.
Como puedes comprobar por estos puntos descritos, la diferencia principal entre Isolated I/O y Programmed I/O radica en cómo se realizan las operaciones de E/S. La E/S aislada utiliza instrucciones de E/S especiales para interactuar con dispositivos periféricos específicos, mientras que la E/S programada utiliza instrucciones normales de lectura y escritura en direcciones de memoria especiales asignadas a los dispositivos periféricos. Cada enfoque tiene sus propias ventajas y desventajas, y la elección entre ellos depende de las necesidades y restricciones del sistema en particular.
Ahora ya conoces un poco más sobre el sistema de E/S, espero que te haya servido de ayuda…