Sistemas operativos modernos
Software de E/S en el nivel de usuario Software de sistema operativo independiente del dispositivo Controladores de dispositivos Manejadores de interrupciones Hardware Figura 5-10. Capas del sistema de software de E/S. Cuando se presenta la interrupción, el procedimiento de interrupciones hace lo propio pa ra manejarla. Luego puede desbloquear el controlador que la generó. En algunos casos simple mente ejecutará up con un semáforo. En otros, ejecutará signal con una variable de condición en un monitor. En otros más, enviará un mensaje al controlador bloqueado. En todos los casos, el efecto neto de la interrupción será que un controlador que antes estaba bloqueado ahora ya puede ejecutarse. Este modelo funciona en forma óptima si los controladores se estructuran co mo procesos de kernel, con sus propios estados, pilas y contadores de programa. Claro que la realidad no es tan sencilla. Procesar una interrupción no es tan sólo cuestión de tomarla, ejecutar up con algún semáforo y luego ejecutar una instrucción IRET para volver de la interrupción al proceso anterior. Se requiere mucho más trabajo por parte del sistema ope rativo. A continuación presentaremos un bosquejo de dicho trabajo en una serie de pasos que de ben darse en software, luego de que termina la interrupción de hardware. Cabe señalar que los detalles dependen mucho del sistema, así que algunos de los siguientes pasos podn-an no ser ne cesarios en una máquina dada, y podrían requerirse otros que no están en la lista. Además, los pasos podrían ejecutarse en un orden distinto en algunas máquinas. 1. Guardar los registros (incluida la PSW) que no haya guardado aún el hardware de interrupciones. 2. Preparar un contexto para el procedimiento de servicio de interrupciones. Esto podría implicar preparar el TLB, la MMLf y una tabla de páginas. 3. Preparar una pila para el procedimiento de servicio de interrupciones. 4. Enviar un acuse a la controladora de interrupciones. Si no hay una controladora de in terrupciones centralizado, volver a habilitar las interrupciones. 5. Copiar los registros de donde se guardaron (quizá alguna pila) a la tabla de procesos. 6 . Ejecutar el procedimiento de servicio de interrupciones. Éste extraerá información de los registros de la controladora del dispositivo que interrumpió. 7. Escoger el proceso que se ejecutará a continuación. Si la interrupción hizo que un pro ceso prioritario que estaba bloqueado ahora esté listo, podría escogerse ése.
RkJQdWJsaXNoZXIy MjI4NDcx