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. Dietro questo c'è un processo di sistema chiamato Service Control Manager (SCM). Il funzionamento di SCM è fondamentale per migliorare la velocità di avvio del sistema. Diamo un'occhiata più da vicino a come funziona questo processo.

SCM è uno speciale processo di sistema nei sistemi operativi della serie Windows NT. È responsabile dell'avvio, dell'arresto e della gestione dei processi di servizio di Windows.

Il file eseguibile di SCM si trova in %SystemRoot%\System32\services.exe e il suo compito principale è avviare tutti i servizi configurati per l'avvio automatico. All'avvio del sistema, il processo Wininit avvierà in anticipo l'SCM e inizierà una serie di attività di inizializzazione.

Durante il processo di avvio, l'SCM legge innanzitutto le informazioni sul servizio dal registro. Ciò comporta due voci di registro chiave:

  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ServiceGroupOrder\List - Contiene i nomi e l'ordine di avvio dei gruppi di servizi.
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services - il database effettivo dei servizi e dei driver dei dispositivi.

Queste informazioni aiutano l'SCM a determinare l'ordine di avvio di ciascun servizio e le relative interdipendenze. SCM controlla anche se i driver del dispositivo che devono essere avviati durante il processo di avvio sono stati caricati correttamente e memorizza i driver non riusciti in un elenco denominato ScFailedDrivers.

Durante l'elaborazione di ogni servizio avviato automaticamente, SCM prenderà in considerazione anche le dipendenze dell'ordine di caricamento per evitare il verificarsi di dipendenze circolari.

Dopo l'elaborazione di tutti i servizi di avvio automatico non ritardati, SCM inizierà a caricare i servizi di avvio automatico ritardati, una nuova funzionalità introdotta a partire da Windows Vista per velocizzare l'avvio del sistema. In genere, questi servizi ritardati vengono inizializzati circa 120 secondi dopo l'avvio del sistema.

Verifica e avvio del servizio

Per ogni servizio da avviare, SCM richiama la funzione ScStartService() per verificare che l'account con cui è in esecuzione il processo corrisponda all'account specificato dal servizio. Durante questo processo, se il servizio non è in esecuzione con l'account di sistema, SCM chiamerà la funzione LSASS LogonUserEx() per ottenere le informazioni di accesso utente necessarie. Queste informazioni sono memorizzate nella chiave di registro HKLM\SECURITY\Policy\Secrets\ e solo i servizi con accesso completo possono ottenere queste password "segrete".

Al momento della creazione, il processo del servizio viene messo in stato sospeso e la sua esecuzione non riprenderà finché non verrà stabilita la connessione alla pipeline.

Una volta avviato correttamente il processo di servizio, l'SCM stabilirà un canale di comunicazione con il processo di servizio creando una pipe denominata. Il processo del servizio si unisce a questo canale chiamando la funzione StartServiceCtrlDispatcher() e l'SCM invia quindi un comando "start" al servizio.

Servizio di avvio automatico ritardato unico

L'esistenza di un servizio di avvio automatico ritardato migliora notevolmente l'equilibrio dell'avvio del sistema. Sebbene tecnicamente questi servizi non siano molto diversi dai normali servizi di avvio automatico, sono progettati per essere inizializzati in diverse fasi dell'avvio del sistema, per garantirne il regolare funzionamento.

Processo di avvio del driver del dispositivo

SCM gestisce anche i driver di dispositivo. I tipi di servizio di questi servizi sono contrassegnati come SERVICE_KERNEL_DRIVER o SERVICE_FILE_SYSTEM_DRIVER nel registro. In questi casi, SCM richiama la funzione ScLoadDeviceDriver() per caricare il driver corrispondente nel sistema, operazione che solitamente richiede l'invocazione della chiamata di sistema NtLoadDriver.

SCM può anche inviare messaggi ad applicazioni GUI come Windows Explorer per notificare loro le modifiche alle connessioni delle lettere delle unità di rete.

In breve, il gestore di controllo dei servizi del sistema Windows svolge un ruolo indispensabile nel processo di avvio del sistema. Carica i servizi e i driver di dispositivo necessari in modo efficiente per mantenere la risposta rapida e il funzionamento stabile dell'intero sistema. Quando utilizziamo queste tecnologie, abbiamo considerato i principi operativi e le sfide tecniche che le caratterizzano?

Trending Knowledge

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
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

Responses