Funciones de un Driver
Un driver, también conocido como controlador de dispositivo, es un componente esencial del sistema operativo que actúa como intermediario entre el hardware y el software. Sus funciones principales son:
- Definir las características del periférico al resto del Sistema Operativo (SO).
- Inicializar los registros asociados al periférico durante el arranque del SO (Bootstrap).
- Habilitar y deshabilitar el dispositivo para un proceso específico.
- Procesar todas las operaciones de Entrada/Salida (E/S) solicitadas por los procesos.
- Cancelar operaciones de E/S cuando sea necesario por cualquier causa.
- Procesar todas las interrupciones de hardware (HW) generadas por el periférico.
- Tratar errores y estados del dispositivo, comunicando la información relevante al usuario.
Rutinas de un Driver
Las rutinas principales de un driver incluyen:
- Inicialización: Llamada al núcleo del SO durante el inicio del sistema.
- Atención a peticiones de E/S: Gestión de las solicitudes de entrada y salida.
- Gestión de interrupciones: Manejo de las señales de hardware.
- Cancelación de operaciones de E/S: Terminación de transferencias en curso.
- Otras rutinas:
- Time-out.
- Power-fail.
Misiones del Subsistema de Archivos
En un sistema de cómputo, la capacidad de almacenar datos de manera persistente es fundamental tanto para usuarios como para aplicaciones. El subsistema de archivos del sistema operativo se encarga de gestionar este almacenamiento, proporcionando funcionalidades como:
- Permitir a los usuarios y aplicaciones crear, borrar y modificar datos.
- Garantizar la privacidad de los datos frente a otros usuarios o aplicaciones.
- Establecer el formato físico en el que se almacenarán los datos en medios como discos duros, cintas o discos flexibles.
Tradicionalmente, la información se almacena en medios como discos duros, flexibles y unidades de disco óptico. Estos medios comparten esquemas básicos de formato físico:
- Las superficies de almacenamiento se dividen en círculos concéntricos llamados «pistas».
- Cada pista se subdivide en «sectores».
- La unión lógica de varias pistas a través de superficies «paralelas» de almacenamiento se denomina «cilindros».
- Las unidades físicas que acceden a las pistas son las «cabezas».
- Las superficies de almacenamiento se conocen como «platos» y giran para permitir el acceso de las cabezas.
Los datos se escriben en los sectores de las pistas y cilindros, modificando las superficies mediante las cabezas. El rendimiento del acceso a disco se ve afectado por:
- Tiempo de búsqueda: El tiempo que tarda una cabeza en moverse de una pista a otra.
- Tiempo de latencia: El tiempo que tarda el disco en girar hasta que el sector deseado queda bajo la cabeza.
El impacto general de las operaciones de lectura y escritura está determinado por la tecnología de los platos y cabezas, así como por los algoritmos de planificación de E/S.
Algoritmos de Planificación de Acceso a Disco
Una de las responsabilidades primordiales del sistema operativo es optimizar el uso del hardware, incluyendo las unidades de disco. Esto se logra mediante algoritmos de planificación que buscan minimizar el tiempo de acceso y maximizar el ancho de banda del disco. El tiempo de acceso se compone de:
- Tiempo de búsqueda (seek time): El tiempo que tarda el brazo del disco en posicionar las cabezas sobre el cilindro correcto.
- Latencia rotacional: El tiempo adicional que el disco necesita girar para que el sector deseado se alinee bajo la cabeza.
El ancho de banda del disco se define como el total de bytes transferidos dividido por el tiempo total transcurrido desde la primera solicitud de servicio hasta la finalización de la última transferencia.
Proceso de Solicitud de E/S a Disco
Cuando un proceso requiere una operación de E/S con el disco, emite una llamada al sistema operativo que especifica:
- El tipo de operación: entrada o salida.
- La dirección en disco para la transferencia.
- La dirección en memoria para la transferencia.
- El número de bytes a transferir.
Si la unidad de disco y el controlador están disponibles, la solicitud se atiende de inmediato. De lo contrario, las nuevas solicitudes se añaden a una cola de espera para esa unidad. En sistemas multiprogramados, es común que existan múltiples solicitudes pendientes, lo que permite al sistema operativo seleccionar la siguiente solicitud a atender una vez que la actual ha finalizado.
