Il guardiano segreto di Windows: come funziona silenziosamente dietro le quinte il Service Control Manager?

Quando avvii il sistema Windows, molti servizi vengono eseguiti silenziosamente in background e costituiscono importanti pilastri della stabilità del sistema operativo. L'avvio e la gestione di questi servizi sono in gran parte responsabilità del Service Control Manager (SCM). SCM è uno speciale processo di sistema presente nel sistema operativo della serie Windows NT, responsabile dell'avvio, dell'arresto e dell'interazione con i processi di servizio di Windows.

La funzionalità principale dell'SCM inizia con la sua funzione principale SvcCtrlMain(), che avvia tutti i servizi configurati per l'avvio automatico.

Il file eseguibile SCM services.exe si trova in %SystemRoot%\System32\ e viene avviato dal processo Wininit all'avvio del sistema. Quando l'SCM inizia a funzionare, per prima cosa inizializza il suo database interno dei servizi installati, il che comporta la lettura di specifiche chiavi di registro.

In particolare, inizializza il database interno leggendo le due chiavi di registro seguenti:

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\List, questa chiave contiene i nomi dei gruppi di servizi e il loro ordine.
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services, questa chiave contiene i dati effettivi del servizio e del driver del dispositivo.

SCM determina l'ordine di caricamento dei servizi in base al valore del gruppo e alle dipendenze di ciascun servizio. Durante questo processo, se viene rilevata una dipendenza circolare, l'SCM registrerà un errore e ignorerà il servizio che dipende dal gruppo caricato in ritardo.

Il passaggio successivo nell'SCM consiste nel verificare se i driver del dispositivo che devono essere avviati durante l'avvio del sistema sono stati caricati correttamente e salvare i driver non riusciti in un elenco denominato ScFailedDrivers.

SCM richiama quindi la funzione ScAutoStartServices(), che esegue un ciclo su tutti i servizi contrassegnati per l'avvio automatico e li avvia di conseguenza. Per ogni servizio, l'SCM richiama la funzione ScStartService() per garantire che il processo del servizio venga eseguito con l'account corretto. Se il servizio non è in esecuzione con l'account di sistema, SCM richiama la funzione LSASS LogonUserEx() per ottenere la password "segreta" archiviata in modo sicuro durante la configurazione iniziale del servizio.

Non solo, esiste anche un tipo speciale di servizio: il servizio di avvio automatico ritardato. Questo tipo di servizio è stato introdotto in Windows Vista per risolvere il problema dell'avvio lento del sistema. L'SCM non inizierà l'inizializzazione dei servizi di avvio automatico ritardato finché non saranno stati elaborati tutti i servizi di avvio automatico non ritardato.

Sebbene l'avvio di questi servizi sia ritardato, non sono molto diversi dagli altri servizi, fatta eccezione per l'ordine in cui vengono avviati.

Vale la pena notare che l'SCM gestisce specificamente anche i servizi dei driver dei dispositivi. Il valore di registrazione del tipo di questi servizi è SERVICE_KERNEL_DRIVER o SERVICE_FILE_SYSTEM_DRIVER. Quando l'SCM chiama ScStartService(), richiama anche la funzione ScLoadDeviceDriver() per caricare il driver corrispondente.

Tramite la chiamata di sistema NtLoadDriver, SCM garantisce che il driver venga caricato correttamente. Durante il processo di avvio iniziale, l'SCM è persino responsabile della notifica ad altre applicazioni, come Windows Explorer, quando lo stato di connessione di un'unità di rete cambia, trasmettendo il messaggio di Windows WM_DEVICECHANGE.

Questa progettazione consente agli utenti di gestire meglio le risorse e i servizi del sistema, garantendo il buon funzionamento del sistema operativo.

Tuttavia, nonostante il ruolo fondamentale che SCM svolge nell'avvio di un sistema, molti utenti non ne capiscono realmente il funzionamento. Dietro ogni operazione di SCM, c'è una tecnologia complessa ed efficiente. Infatti, consente agli utenti di utilizzare quelle applicazioni e servizi apparentemente ordinari senza alcun ostacolo.

Nelle future versioni di Windows, come si evolverà SCM per soddisfare le esigenze sempre più diversificate degli utenti?

Trending Knowledge

Il segreto dell'avvio automatico dei servizi: come fa il sistema Windows ad accelerare l'avvio?
Nell'attuale era digitale, l'avvio rapido e il funzionamento efficiente del sistema sono estremamente importanti per gli utenti. Il sistema Windows può avviare molti servizi in un breve lasso di tempo
Mistero della schermata blu: quali cambiamenti sorprendenti accadranno se si termina services.exe?
Nei moderni sistemi operativi Windows, Service Control Manager (SCM) o services.exe è uno dei componenti principali del funzionamento del sistema. Questo processo è responsabile dell'avvi

Responses