En la era digital actual, el inicio rápido y el funcionamiento eficiente del sistema son cruciales para los usuarios. Los sistemas Windows pueden iniciar muchos servicios en poco tiempo y detrás de esto se encuentra un proceso del sistema llamado Administrador de control de servicios (SCM). El funcionamiento de SCM es crucial para mejorar la velocidad de inicio del sistema. Exploremos en profundidad cómo funciona este proceso.
SCM es un proceso de sistema especial en los sistemas operativos de la serie Windows NT. Es responsable de iniciar, detener y administrar los procesos de servicio de Windows.
El archivo ejecutable SCM se encuentra en %SystemRoot%\System32\services.exe
. Su tarea principal es iniciar todos los servicios configurados para iniciarse automáticamente. Cuando se inicia el sistema, el proceso Wininit iniciará SCM temprano y comenzará una serie de trabajos de inicialización.
Durante el proceso de inicio, SCM primero leerá información sobre el servicio del registro. Esto implica dos claves de registro clave:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\List
: contiene el nombre y el orden de inicio del grupo de servicios. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
: la base de datos real de servicios y controladores de dispositivos. Esta información ayuda a SCM a determinar la secuencia de inicio y la interdependencia de cada servicio. SCM también verifica si los controladores de dispositivos que deben iniciarse durante el proceso de arranque se cargan correctamente y almacena los controladores fallidos en una lista llamada ScFailedDrivers
.
Al procesar cada servicio iniciado automáticamente, SCM también considerará las dependencias de la secuencia de carga para evitar la aparición de dependencias cíclicas.
Después de que se complete todo el procesamiento del servicio de inicio automático no retrasado, SCM comenzará a cargar los servicios de inicio automático retrasado, que es una nueva característica introducida desde Windows Vista para acelerar el inicio del sistema. Normalmente, estos servicios diferidos se inicializan aproximadamente 120 segundos después del inicio del sistema.
Para que se inicie cada servicio, SCM llama a la función ScStartService()
para verificar que la cuenta bajo la cual se ejecuta el proceso coincida con la cuenta especificada por el servicio. Durante este proceso, si el servicio no se está ejecutando en la cuenta del sistema, SCM llamará a la función LSASS LogonUserEx()
para obtener la información de inicio de sesión del usuario necesaria. Esta información se almacena en la clave de registro HKLM\SECURITY\Policy\Secrets\
y solo los servicios con acceso completo pueden obtener estas contraseñas "secretas".
El proceso de servicio se coloca en un estado de pausa cuando se crea y su ejecución no se reanudará hasta que se establezca la conexión de la tubería.
Una vez que el proceso de servicio se haya iniciado exitosamente, SCM establecerá un canal de comunicación con el proceso de servicio mediante la creación de una canalización con nombre. El proceso de servicio se une a esta canalización llamando a la función StartServiceCtrlDispatcher()
y luego SCM enviará un comando de "inicio" al servicio.
La existencia de un servicio de inicio automático retrasado mejora enormemente el equilibrio del inicio del sistema. Aunque estos servicios técnicamente no son muy diferentes de los servicios de inicio automático normales, están diseñados para inicializarse en diferentes etapas del inicio del sistema para garantizar el buen funcionamiento del sistema.
SCM también administra controladores de dispositivos. Los tipos de dichos servicios están marcados en el registro como SERVICE_KERNEL_DRIVER
o SERVICE_FILE_SYSTEM_DRIVER
. En estos casos, SCM llamará a la función ScLoadDeviceDriver()
para cargar el controlador correspondiente en el sistema, lo que normalmente requiere activar la llamada al sistema NtLoadDriver
.
SCM también puede enviar mensajes a aplicaciones GUI como Windows Explorer para notificarles sobre cambios en las conexiones de letras del controlador de red.
En resumen, el administrador de control de servicios del sistema Windows desempeña un papel indispensable en el proceso de inicio del sistema. Carga los servicios y controladores de dispositivos necesarios de manera eficiente para mantener la respuesta rápida y el funcionamiento estable de todo el sistema. Cuando utilizamos estas tecnologías, ¿hemos considerado los principios operativos subyacentes y los desafíos técnicos?