Saltar al contenido principal
LibreTexts Español

4.1: Fundamentos de E/S: protocolo de enlace y almacenamiento en búfer

  • Page ID
    154363
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Introducción

    Esta sección presenta al alumno las diversas estrategias utilizadas en las interfaces de E/S y otras operaciones posibles en una interfaz

    Detalles de la actividad

    El ordenador es inútil sin algún tipo de interfaz al mundo exterior. Hay muchos dispositivos diferentes que podemos conectar al sistema informático; teclados, VDU y unidades de disco son algunos de los más familiares. Independientemente de los detalles de cómo se conectan dichos dispositivos podemos decir que todas las E/S se rigen por tres estrategias básicas.

    • E/S programadas
    • I/O impulsada por interrupciones
    • Acceso directo a memoria (DMA)

    En E/S programadas todas las transferencias de datos entre el sistema informático y los dispositivos externos están completamente controladas por el programa informático. Parte del programa comprobará si algún dispositivo externo requiere atención y actuará en consecuencia. Este proceso se conoce como sondeo. La E/S programada es probablemente la técnica de E/S más común porque es muy barata y fácil de implementar, y en general no introduce ningún peligro imprevisto.

    E/S programadas

    Es un método de transferencia de datos entre la CPU y un periférico, como un adaptador de red o un dispositivo de almacenamiento ATA. En general, la E/S programada ocurre cuando el software que se ejecuta en la CPU usa instrucciones que acceden al espacio de direcciones de E/S para realizar transferencias de datos hacia o desde un dispositivo de E/S.

    La interfaz PIO se agrupa en diferentes modos que corresponden a diferentes tasas de transferencia. La señalización eléctrica entre los diferentes modos es similar: solo se reduce el tiempo de ciclo entre transacciones para lograr una mayor tasa de transferencia

    Los modos PIO requieren una gran cantidad de sobrecarga de CPU para configurar una transacción de datos y transferir los datos. Debido a esta ineficiencia, se creó la interfaz DMA (y eventualmente UDMA) para aumentar el rendimiento. La lógica digital simple requerida para implementar una transferencia PIO todavía hace que este método de transferencia sea útil hoy en día, especialmente si no se requieren altas tasas de transferencia como en sistemas embebidos, o con chips FPGA donde el modo PIO se puede usar sin pérdida significativa de rendimiento.

    E/S impulsadas por interrupciones

    Es una forma de controlar la actividad de entrada/salida en la que un periférico o terminal que necesita realizar o recibir una transferencia de datos envía una señal que provoca que se establezca una interrupción del programa. En un momento apropiado al nivel de prioridad de la interrupción de E/S, en relación con el sistema de interrupción total, el procesador ingresa a una rutina de servicio de interrupción (ISR). La función de la rutina dependerá del sistema de niveles de interrupción y prioridades que se implemente en el procesador.

    En un sistema de prioridad única de un solo nivel solo hay una única interrupción de E/S, el OR lógico de todos los dispositivos de E/S conectados. La rutina de servicio de interrupción asociada sondea los periféricos para encontrar el que tiene el estado de interrupción establecido.

    Apretón de manos

    El protocolo de enlace es un método de control de E/S para sincronizar dispositivos de E/S con el microprocesador. Como muchos dispositivos de E/S aceptan o liberan información a una velocidad mucho más lenta que el microprocesador, este método se utiliza para controlar el microprocesador para que funcione con un dispositivo de E/S a la velocidad de transferencia de datos de los dispositivos de E/S.

    El apretón de manos es un proceso automatizado de negociación que establece dinámicamente los parámetros de un canal de comunicaciones establecido entre dos entidades antes de que comience la comunicación normal sobre el canal. Sigue el establecimiento físico del canal y precede a la transferencia normal de información. El proceso de apretón de manos generalmente se lleva a cabo con el fin de establecer reglas para la comunicación cuando una computadora se pone sobre la comunicación con un dispositivo extraño. Cuando una computadora se comunica con otro dispositivo como un módem, una impresora o un servidor de red, necesita establecer una conexión con ella para establecer una conexión.

    El protocolo de enlace puede negociar parámetros que son aceptables para los equipos y sistemas
    en ambos extremos del canal de comunicación, incluida la velocidad de transferencia de información, el alfabeto de codificación, la paridad, el procedimiento de interrupción y otras características de protocolo o hardware. El apretón de manos es una técnica de comunicación entre dos entidades. Sin embargo, dentro de los RFC TCP/IP, el término “apretón de manos” se usa más comúnmente para hacer referencia al protocolo de enlace de tres vías TCP. Por ejemplo, el término “apretón de manos” no está presente en los RFC que cubren FTP o SMTP. Una excepción es Transport Layer Security, TLS, setup, FTP RFC 4217. En lugar del término “apretón de manos”, FTP RFC 3659 sustituye el término “conversación” por el paso de comandos.

    Un protocolo simple de apretón de manos solo podría involucrar al receptor enviando un mensaje que significa “Recibí tu último mensaje y estoy listo para que me envíes otro”. Un protocolo de enlace más complejo podría permitir que el remitente le pregunte al receptor si está listo para recibir o que el receptor responda con un acuse de recibo negativo que significa “No recibí su último mensaje correctamente, por favor reenvíelo” (por ejemplo, si los datos se corrompieron en ruta).

    El apretón de manos facilita la conexión de sistemas o equipos relativamente heterogéneos a través de un canal de comunicación sin la necesidad de intervención humana para establecer parámetros.

    Ejemplo: Supongamos que tenemos una impresora conectada a un sistema. La impresora puede imprimir 100 caracteres/segundo, pero el microprocesador puede enviar mucha más información a la impresora al mismo tiempo. Por eso, justo cuando la impresora obtiene datos suficientes para imprimirla coloca una señal lógica
    1 en su pin Ocupado, lo que indica que está ocupado en la impresión. El microprocesador ahora prueba el bit ocupado para decidir si la impresora está ocupada o no. Cuando la impresora quede libre cambiará el bit ocupado y el microprocesador volverá a enviar suficientes cantidades de datos para imprimirse. Este proceso de interrogar a la impresora se llama apretón de manos.

    Almacenamiento en búfer

    Es el proceso de transferencia de datos entre un programa y un dispositivo externo, El proceso de optimización de E/S consiste principalmente en hacer el mejor uso posible de la parte más lenta de la ruta entre el programa y el dispositivo. La parte más lenta suele ser el canal físico, que suele ser más lento que la CPU o una transferencia de datos de memoria a memoria. El tiempo empleado en la sobrecarga de procesamiento de E/S puede reducir la cantidad de tiempo que se puede usar un canal, lo que reduce la tasa de transferencia efectiva. El factor más importante para maximizar esta velocidad de canal suele ser la reducción de la sobrecarga de procesamiento de E/S.

    Un búfer es una ubicación de almacenamiento temporal para los datos mientras se transfieren los datos. Un búfer se utiliza a menudo para los siguientes fines:

    • Las pequeñas solicitudes de E/S se pueden recopilar en un búfer, y la sobrecarga de realizar muchas llamadas al sistema relativamente costosas se puede reducir considerablemente.

    • Un búfer de recolección de este tipo puede dimensionarse y manejarse de manera que las solicitudes de E/S físicas reales realizadas al sistema operativo coincidan con las características físicas del dispositivo que se está utilizando.

    • Muchas estructuras de archivos de datos, como las estructuras de archivos f77 y cos, contienen palabras de control. Durante el proceso de escritura, se puede usar un búfer como área de trabajo donde se pueden insertar palabras de control en el flujo de datos (un proceso llamado bloqueo). Los datos bloqueados se escriben luego en el dispositivo. Durante el proceso de lectura, se puede usar la misma área de trabajo de búfer para examinar y eliminar estas palabras de control antes de pasar los datos al usuario (desbloqueo).

    • Cuando el acceso a los datos es aleatorio, los mismos datos pueden solicitarse muchas veces. Una caché es un búfer que mantiene las solicitudes antiguas en el búfer en caso de que estas solicitudes sean necesarias nuevamente. Una caché suficientemente grande y/o eficiente puede evitar una gran parte de la E/S física al tener los datos listos en un búfer. Cuando los datos a menudo se encuentran en el búfer de caché, se conoce como que tiene una alta tasa de aciertos. Por ejemplo, si todo el archivo encaja en la caché y el archivo está presente en la caché, no se requieren más solicitudes físicas para realizar la E/S, en este caso, la tasa de aciertos es del 100%.

    • Ejecutar los discos y la CPU en paralelo a menudo mejora el rendimiento; por lo tanto, es útil mantener ocupada la CPU mientras se mueven los datos. Para hacer esto al escribir, los datos se pueden transferir al búfer a la velocidad de copia de memoria a memoria y se puede realizar una solicitud de E/S asincrónica. Luego, el control se devuelve inmediatamente al programa, que continúa ejecutándose como si la E/S estuviera completa (un proceso llamado write-behind). Se puede usar un proceso similar mientras se lee; en este proceso, los datos se leen en un búfer antes de que se emita la solicitud real para ello. Cuando es necesario, ya está en el búfer y se puede transferir al usuario a muy alta velocidad. Esta es otra forma o uso de una caché.

    Conclusión

    Esta sección introdujo al alumno a las diversas formas, interfaces de acceso y paso de datos. Incluyen sondeo, interrupción y DMA. En ellos, la velocidad entre los diferentes dispositivos conectados a la CPU se sincronizan para poder comunicarse de manera efectiva

    Evaluación

    1. ¿Cuál es la diferencia entre E/S programadas y E/S impulsadas por interrupciones?

    E/S programadas significa que el programa está sondeando o verificando algún elemento de hardware, por ejemplo, el mouse dentro de un bucle.

    Para E/S impulsada por interrupción, el mismo mouse activará una señal al programa para procesar el evento del mouse.

    2. ¿Cuál es una ventaja y una desventaja de cada uno?

    Ventaja de Programated Driven: fácil de programar y entender

    Desventajas: lento e ineficiente

    Ventaja de la Conducción por Interrupción: rápida y eficiente

    Desventaja: Puede ser complicado escribir si estás usando un lenguaje de bajo nivel.

    Puede ser difícil conseguir que las diversas piezas funcionen bien juntas. Generalmente hecho por el fabricante de hardware o el fabricante del sistema operativo, por ejemplo, Microsoft.


    This page titled 4.1: Fundamentos de E/S: protocolo de enlace y almacenamiento en búfer is shared under a CC BY-SA license and was authored, remixed, and/or curated by Harrison Njoroge (African Virtual University) .