1. Caricamento del kernel
Dopo che il boot loader ha raccolto le informazioni sull’hardware
presente e sul profilo hardware da utilizzare, avvia Ntoskrnl.exe
passandogli le informazioni ricevute da Ntdetect.com. Quando il
kernel viene avviato vedete una serie di punti sullo schermo. Corrispondono
al caricamento in memoria di Ntoskrnl.exe e dell’hardware
abstraction layer appropriato per il tipo di PC. A questo punto
il boot loader abilita l’API per accedere al registro e crea
una serie di informazioni (control set) necessarie per inizializzare
il computer; in questa fase vengono caricati e attivati i device
driver di basso livello (ad esempio per hard disk). Quindi, durante
l’inizializzazione del kernel, vengono attivati gli altri
driver, vengono eseguiti eventuali programmi (come Chkdsk) che non
potrebbero funzionare quando l’intero OS è in funzione,
vengono avviati i servizi di sistema, viene creato il file di paging
e vengono avviati tutti i sottosistemi. Il Session Manager (Smss.exe)
avvia i principali sottosistemi e servizi dell’OS. Tra i sottosistemi
c’è Win32 (processo Csrss), che controlla tutte le
operazioni di I/O e la visualizzazione sullo schermo; questo avvia
anche il processo WinLogon che a sua volta attiva Lsass, il processo
di Local Security Administration. Una volta inizializzato il kernel,
per accedere al sistema occorre eseguire la procedura di logon,
che può essere automatica o con input manuale dell’utente
(il modo più sicuro per macchine in rete o connesse a Internet).
Anche dopo il logon il sistema può continuare a caricare
servizi e driver. Durante tutta la procedura di avvio, fin dalle
prime fasi, il registro di sistema è utilizzato intensamente
e funge da centro di raccolta e di scambio per tutte le informazioni
necessarie al funzionamento del sistema.
Uno schema riassuntivo
Le fasi della sequenza
di avvio (boot) di Windows XP

1 Power on self test
Il BIOS del computer verifica il funzionamento dell’hardware.
2 Ricerca del disco di sistema
Il BIOS trova nella memoria CMOS qual è il disco per avviare
il caricamento dell’OS e carica in memoria il suo primo settore
(MBR), a cui passa il controllo.
3 Esecuzione del boot loader
Il codice del MBR trova la partizione di sistema nella Partition
Table e ne carica il primo settore, che a sua volta carica in memoria
il boot loader (NTLDR), cioè il programma che caricherà
i moduli centrali del sistema operativo.
4 Selezione del sistema operativo
NTLDR verifica in Boot.ini se ci sono più OS installati e
in tal caso chiede all’utente di scegliere l’OS da avviare.
5 Rilevamento dell’hardware
NTLDR invoca il programma Ntdetect per procurarsi le informazioni
sulla configurazione hardware.
6 Selezione di un profilo Hardware
(nel caso ne siano stati definiti altri oltre a quello di default).
7 Caricamento del kernel
NTLDR carica Ntoskrnl, il nucleo del sistema operativo.
8 Inizializzazione del kernel
Viene abilitato l’accesso al registro e vengono caricati driver
e servizi.
9 Logon dell’utente
L’utente si identifica immettendo nome e password, dopo di
che può inziare a usare il computer. |