Sistemas operativos modernos
8 . Preparar el contexto de la MMU para el proceso que se ejecutará ahora. También po dría ser necesario preparar el TLB. 9. Cargar los registros del nuevo proceso, incluida su PSW. 10. Comenzar a ejecutar el nuevo proceso. Como puede ver, el procesamiento de interrupciones dista mucho de ser trivial. También re quiere un número considerable de instrucciones de CPU, sobre todo en las máquinas en las que hay memoria virtual y es necesario preparar tablas de páginas o almacenar el estado de la MMU (por ejemplo, los bits R y M). En algunas máquinas podría ser necesario ajustar además el TLB y el caché de la CPU, al conmutar entre el modo de usuario y el de kernel, y esto ocu pa más ciclos de máquina. 5.3.2 Controladores de dispositivos En una sección anterior del capítulo examinamos lo que hacen las controladoras de dispositi vos. Vimos que cada controladora tiene algunos registros que sirven para enviarle comandos al dispositivo o para indicar el estado de éste, o ambas cosas. El número de registros de disposi tivo y la naturaleza de los comandos varían en forma radical de un dispositivo a otro. Por ejem plo, un controlador de ratón tiene que aceptar información que le indica la distancia que se ha desplazado y cuáles botones están oprimidos. En contraste, un controlador de disco necesita in formación acerca de sectores, pistas, cilindros, cabezas, movimiento del brazo, motores, tiem pos de estabilización de la cabeza y todos los demás aspectos mecánicos que se requieren para que funcione en forma correcta. Es obvio que estos dos controladores son muy distintos. Por ello, cada dispositivo de E/S conectado a una computadora necesita código específico que sirva para controlar ese dispositivo. Este código, llamado controlador de dispositivo (de- vice driver), por io general es escrito por el fabricante del dispositivo y se proporciona junto con el hardware. Puesto que cada sistema operativo necesita sus propios controladores, los fabrican tes suelen proporcionar controladores para varios de los sistemas operativos más utilizados. Cada controlador de dispositivo normalmente maneja un tipo de dispositivo o, cuando más, una clase de dispositivos muy relacionados entre sí. Por ejemplo, un controlador de disco SCSI por lo regular puede manejar varios discos SCSI de diferente tamaño y diferentes velocidades, y quizá también un CD-ROM SCSI. Por otra parte, un ratón y una palanca de juegos son tan di ferentes que casi siempre se necesitan controladores distintos. Sin embargo, no existe ninguna restricción técnica que impida que un controlador de dispositivo maneje varios dispositivos que no tengan relación entre sí; simplemente no resulta una buena idea. Para acceder al hardware del dispositivo, es decir, a los registros de la controladora, por lo general es necesario que el controlador forme parte del kernel del sistema operativo, al menos en las arquitecturas actuales. De hecho, sería posible construir controladores que se ejecutaran en es pacio de usuario, con llamadas al sistema para leer y escribir en los registros del dispositivo. De hecho, un diseño como éste sería una buena ¡dea, pues aislaría al kernel de los controladores y a éstos entre sí. Eso eliminaría una causa importante de caídas del sistema: controladores con erro
RkJQdWJsaXNoZXIy MjI4NDcx