Sistemas operativos modernos

esto sea pertinente. Por ejemplo, si el sistema decide que es el momento de cambiar a modo de hibernación con bajo consumo eléctrico, todos los dispositivos capaces de efectuar el cambio deberán hacerlo para ahorrar energía. También deben despertar cuando se les ordene. Los controladores deben ser configurables, lo que implica no incorporar supuestos acerca de cuáles líneas de interrupción o puertos de E/S usan ciertos dispositivos. Por ejemplo, el puerto de la impresora en la PC de IBM y sus sucesoras ha estado en 1a dirección 0x378 des­ de hace más de 20 años y es poco probable que cambie ahora, pero un controlador de impre­ sora que tenga esta dirección incorporada en código fijo no se ajusta al modelo. Otro requisito es poder trabajar de forma segura en multiprocesadores, porque Windows 2000 '■e diseñó para usarse en ellos. En términos concretos, este requisito implica que mientras un controlador está funcionando de manera activa y procesando una solicitud a nombre de una CPU, podría llegar una segunda solicitud a nombre de una CPU distinta. La segunda CPU podría comen­ zar a ejecutar el código del controlador al mismo tiempo que la primera. El controlador debe fun­ cionar en forma correcta aunque esté siendo ejecutado al mismo tiempo por dos o más CPUs, lo que implica que el acceso a todas las estructuras de datos delicadas sólo puede efectuarse dentro de re­ giones críticas. No se permite suponer que no habrá otras llamadas antes de que termine la actual. Por último, los controladores que se ajusten al modelo no sólo deberán funcionar en Win­ dows 2000, sino también en Windows 98. No obstante, podría ser necesario recompilar el controlador en cada sistema, y se permite usar comandos del preprocesador de C para aislar de­ pendencias de la plataforma. En UNIX, los controladores se localizan empleando su número de dispositivo principal. Windows 2000 utiliza un esquema distinto. Durante el arranque, o cuando se conecta a la compu­ tadora un nuevo dispositivo Plug-and-Play enchufable sobre la marcha, Windows 2000 detec­ ta de manera automática los disposifivos e invoca al administrador de Plug-and-Play. Éste sondea el dispositivo para averiguar el fabricante y el número de modelo. Con estos datos, el administrador explora cierto directorio del disco duro para ver si tiene el controlador. Si no lo encuentra, en un cuadro de diálogo pide al usuario insertar un disquete o CD-ROM que tenga el controlador. Una vez localizado éste, se carga en la memoria. Cada controlador debe suministrar un conjunto de procedimientos que puedan invocarse para obtener sus servicios. El primero, llamado DriverEntry, asigna valores iniciales al contro­ lador, y se invoca inmediatamente después de que éste se carga. El procedimiento podría crear tablas y estructuras de datos, pero no debe comunicarse aún con el disposifivo. También llena algunos de los campos del objeto de controlador que creó el administrador de E/S cuando se cargó el controlador. Los campos de ese objeto incluyen apuntadores a todos los demás proce­ dimientos que debe proporcionar e! controlador. Además, para cada disposifivo administrado por el controlador correspondiente (por ejemplo, cada disco IDE, se crea un objeto de dispo­ sitivo y se hace que al principio apunte al objeto de controlador. Estos objetos de controlador se colocan en un directorio especial llamado \.^.^. Dado un objeto de dispositivo, es fácil loca­ lizar el objeto de controlador y entonces invocar sus métodos. Un segundo procedimiento obligatorio es AddDevice, que se invoca una vez (lo hace el administrador de Plug-and-Play) por cada dispositivo que va a añadirse. Una vez hecho esto, se invoca el controlador con el primer IRP, que establece el vector de interrupción y asigna valores iniciales al hardware. Otros procedimientos que deben incluir los controladores son el proce

RkJQdWJsaXNoZXIy MjI4NDcx