Transformación de requests de E/S a operaciones de hardware

Sabemos que existe un protocolo de enlace entre el controlador del dispositivo y el controlador del dispositivo, pero aquí la pregunta es cómo el sistema operativo conecta la solicitud de la aplicación o podemos decir la solicitud de E/S al conjunto de cables de red o al sector de disco específico o podemos decir a las operaciones de hardware.

Para entender el concepto, consideremos un ejemplo que es el siguiente.

Ejemplo:
estamos leyendo un archivo del disco. La solicitud que solicitamos se refiere a los datos por nombre de archivo. Dentro del disco, el sistema de archivos se asigna desde el nombre del archivo hasta los directorios del sistema de archivos para obtener la asignación de espacio para el archivo. En MS-DOS, el nombre del archivo se asigna al número que indica como entrada en la tabla de acceso a archivos, y esa entrada a la tabla nos dice qué bloques de disco se asignan al archivo. En UNIX, el nombre se asigna al número de iNode y el número de iNode contiene información sobre la asignación de espacio. Pero aquí surge la pregunta de cómo se realiza la conexión desde el nombre del archivo al controlador de disco.

El método que utiliza MS-DOS es un sistema operativo relativamente simple. La primera parte del nombre de archivo de MS-DOS, precedida por dos puntos, es una string que identifica que hay un dispositivo de hardware específico.

UNIX utiliza un método diferente al de MS-DOS. Representa nombres de dispositivos en el espacio de nombres del sistema de archivos normal. A diferencia del nombre de archivo de MS-DOS, que tiene un separador de dos puntos, el nombre de la ruta de UNIX no tiene una separación clara de la parte del dispositivo. De hecho, ninguna parte del nombre de la ruta es el nombre del dispositivo. Unix tiene una tabla de montaje que se asocia con prefijos de nombres de ruta con nombres de dispositivos de hardware específicos.

Los sistemas operativos modernos obtienen una flexibilidad significativa de las múltiples etapas de las tablas de búsqueda en la ruta entre la solicitud y el controlador de etapas del dispositivo físico. Hay mecanismos generales que se utilizan para pasar la solicitud entre la aplicación y los controladores. Por lo tanto, sin volver a compilar el kernel, podemos introducir nuevos dispositivos y controladores en la computadora. De hecho, algunos sistemas operativos tienen la capacidad de cargar controladores de dispositivos a pedido. En el momento del arranque, el sistema primero sondea los buses de hardware para determinar qué dispositivos están presentes. Luego se carga en los controladores necesarios, según la solicitud de E/S.

El ciclo de vida típico de bloqueo de solicitud de lectura se muestra en la siguiente figura. De la figura, podemos sugerir que la operación de E/S requiere muchos pasos que juntos consumen una gran cantidad de ciclos de CPU.

Figura: el ciclo de vida de la solicitud de E/S

  1. Llamada al sistema :
    cada vez que llega una solicitud de E/S, los problemas del proceso bloquean la llamada del sistema read() al descriptor de archivo abierto previamente. Básicamente, la función del código de llamada al sistema es verificar la corrección de los parámetros en el kernel. Si los datos que colocamos en forma de entrada ya están disponibles en el caché del búfer, los datos se devolverán al proceso y, en ese caso, se completará la solicitud de E/S.
  2. Enfoque alternativo si la entrada no está disponible:
    si los datos no están disponibles en la memoria caché del búfer, se debe realizar una E/S física. El proceso se elimina de la cola de ejecución y se coloca en la cola de espera para el dispositivo, y se programa la solicitud de E/S. Después de la programación, el subsistema de E/S envía una solicitud al controlador del dispositivo a través de una llamada de subrutina o un mensaje en el kernel, pero depende del sistema operativo mediante el cual se enviará la solicitud de modo.
  3. Función del controlador del dispositivo:
    después de recibir la solicitud, el controlador del dispositivo debe recibir datos y los recibirá mediante la asignación de espacio en el búfer del kernel y, después de recibir los datos, programará la E/S. Después de todo esto, se dará el comando al controlador del dispositivo escribiendo en los registros de control del dispositivo.
  4. Función del controlador de dispositivos:
    ahora, el controlador de dispositivos opera el hardware del dispositivo. En realidad, la transferencia de datos se realiza mediante el hardware del dispositivo.
  5. Rol del controlador DMA:
    después de la transferencia de datos, el controlador puede sondear el estado y los datos, o puede haber configurado la transferencia DMA en la memoria del núcleo. La transferencia es gestionada por el controlador DMA. Por fin, cuando se completen las transferencias, generará una interrupción.
  6. Función del controlador de interrupciones:
    la interrupción se envía al controlador de interrupciones correcto a través de la tabla de vectores de interrupción. Almacena todos los datos necesarios, señala el controlador del dispositivo y regresa de la interrupción.
  7. Finalización de la solicitud de E/S:
    cuando el controlador del dispositivo recibe la señal. Esta señal determina que la solicitud de E/S se ha completado y también determina el estado de la solicitud, señala al subsistema de E/S del núcleo que la solicitud se ha completado. Después de transferir datos o códigos de retorno al espacio de direcciones, el kernel mueve el proceso de la cola de espera a la cola de listos.
  8. Finalización de la llamada al sistema:
    cuando el proceso pasa a la cola de espera, significa que el proceso está desbloqueado. Cuando el proceso se asigna a la CPU, significa que el proceso reanuda la ejecución al finalizar la llamada al sistema.

Publicación traducida automáticamente

Artículo escrito por itskawal2000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *