Introduzione alla notifica del driver
A partire da Windows Server 2008, il sistema operativo può notificare a un driver di dispositivo quando un processore o un modulo di memoria viene aggiunto dinamicamente a una partizione hardware. Esistono diverse notifiche che si verificano in diverse fasi del processo di aggiunta ad accesso frequente. Ognuna di queste notifiche usa un metodo di notifica diverso per notificare al driver di dispositivo l'evento. È possibile usare uno o più di questi metodi di notifica per fare in modo che il sistema operativo comunicherà al driver quando si verifica un'operazione di aggiunta ad accesso frequente. Il driver può quindi rispondere in base alle esigenze per un funzionamento sicuro e ottimale.
La tabella seguente identifica i diversi metodi di notifica e se si applicano a processori, memoria o processori e memoria.
Metodo di notifica | Per i processori | Per la memoria |
---|---|---|
Notifica del driver sincrona |
X |
|
Notifica asincrona del driver |
X |
X |
Evento di notifica della memoria |
X |
|
Ribilanciamento delle risorse |
X |
Notifica del driver sincrona
Con notifica del driver sincrona, il sistema operativo notifica in modo sincrono i driver di dispositivo che un nuovo processore è stato aggiunto alla partizione hardware. Si tratta della prima notifica che un driver di dispositivo riceve una modifica al numero di processori.
Quando un nuovo processore viene aggiunto alla partizione hardware, il sistema operativo invia questa notifica ai driver di dispositivo dopo che il sistema operativo ha avviato il nuovo processore, ma prima che il sistema operativo inizi la pianificazione dei thread nel processore. Quando un driver di dispositivo riceve questa notifica, può allocare qualsiasi struttura di dati per processore e assegnare qualsiasi altra risorsa per processore al nuovo processore. In questo modo il driver di dispositivo viene preparato per eseguire routine dispatch, interrupt service routine (ISR), chiamate di routine posticipate (DPC) e qualsiasi altro thread driver nel nuovo processore.
Un driver di dispositivo deve registrarsi con il sistema operativo per ricevere la notifica sincrona del driver. Per altre informazioni, vedere Registrazione per la notifica del driver sincrona.
Questo metodo di notifica è applicabile solo ai processori. Non esiste alcun meccanismo di notifica sincrono per la memoria.
Notifica asincrona del driver
Con notifica asincrona del driver, il sistema operativo notifica in modo asincrono i driver di dispositivo che è stato aggiunto un nuovo modulo processore o memoria alla partizione hardware. A partire da Windows Server 2008, i processori e i moduli di memoria sono considerati dispositivi Plug and Play (PnP). Pertanto, il sistema operativo usa il meccanismo di notifica PnP per la notifica asincrona del driver.
Quando un nuovo processore o un nuovo modulo di memoria viene aggiunto alla partizione hardware, il sistema operativo invia questa notifica ai driver di dispositivo dopo l'avvio del nuovo processore o del dispositivo di memoria. Nel caso di un nuovo processore, il sistema operativo non invia questa notifica ai driver di dispositivo fino a quando non ha avviato la pianificazione dei thread nel nuovo processore.
Nota
Tutte le notifiche PnP sono asincrone. Di conseguenza, queste notifiche potrebbero non essere ricevute da un driver di dispositivo fino a quando il sistema operativo non ha avviato il processore o il modulo di memoria.
Quando un driver di dispositivo riceve questa notifica, può modificare alcuni o tutti gli elementi seguenti di conseguenza:
Buffer di memoria e altre allocazioni di risorse
Assegnazione di risorse a processori specifici
Pianificazione di DPC e altri thread in processori specifici
Algoritmi di bilanciamento del carico
Importante
Quando si aggiunge un nuovo processore a una partizione hardware, il sistema operativo non invia la notifica PnP fino all'avvio del nuovo processore e il sistema operativo ha iniziato a pianificare i thread. Se un driver di dispositivo deve eseguire determinate attività prima che il sistema operativo inizi la pianificazione dei thread nel nuovo processore, ad esempio l'allocazione di una struttura di dati per processore, è necessario usare il metodo di notifica sincrono per il driver.
Un driver di dispositivo deve registrarsi con il sistema operativo per ricevere una notifica asincrona del driver. Per altre informazioni, vedere Registrazione per la notifica asincrona del driver.
Evento di notifica della memoria
Con il metodo dell'evento di notifica della memoria, è possibile pianificare un thread che attende che il sistema operativo imposti l'oggetto evento \KernelObjects\HighMemoryCondition . Il sistema operativo imposta questo oggetto evento quando la quantità di memoria fisica libera supera un determinato valore. Questo evento notifica a tutti i thread in attesa sull'oggetto evento che una quantità significativa di memoria fisica è attualmente disponibile nel sistema. Questo evento può essere un'indicazione che è stato aggiunto dinamicamente un nuovo modulo di memoria al sistema. Quando il sistema operativo imposta questo oggetto evento, il driver di dispositivo può rispondere all'evento allocando buffer di memoria aggiuntivi.
Per altre informazioni sull'oggetto evento \KernelObjects\HighMemoryCondition , vedere Oggetti evento standard.
Importante
Se il sistema operativo imposta l'oggetto evento \KernelObjects\HighMemoryCondition , l'evento fornisce solo un'indicazione che potrebbe essere stato aggiunto dinamicamente un nuovo modulo di memoria alla partizione hardware. Esistono altre situazioni che possono causare l'impostazione dell'oggetto evento da parte del sistema operativo. Pertanto, a partire da Windows Server 2008, non è consigliabile che i driver di dispositivo usino questo metodo di notifica. Al contrario, i driver di dispositivo devono usare il metodo di notifica del driver asincrono.
Questo metodo è applicabile solo alla memoria. Non esiste alcun meccanismo di notifica corrispondente per i processori.
Ribilanciamento delle risorse
A partire da Windows Server 2008, quando si aggiunge un nuovo processore a una partizione hardware, il sistema operativo avvia un ribilanciamento delle risorse a livello di sistema. Se un dispositivo parteciperà a tale ribilanciamento delle risorse è determinato dall'impostazione della proprietà del dispositivo DEVPKEY_Device_DHP_Rebalance_Policy per il dispositivo. Il comportamento predefinito per i dispositivi nella classe di configurazione del dispositivo Scheda di rete (Classe = Net) è che non parteciperanno al ribilanciamento delle risorse quando un nuovo processore viene aggiunto dinamicamente al sistema. Il comportamento predefinito per i dispositivi in tutte le altre classi di configurazione del dispositivo è che parteciperanno al ribilanciamento delle risorse quando un nuovo processore viene aggiunto dinamicamente al sistema.
Se un dispositivo è un dispositivo Plug and Play (PnP) e partecipa a tale ribilanciamento delle risorse, il sistema operativo invia IRP_MN_QUERY_STOP_DEVICE, IRP_MN_STOP_DEVICE e IRP_MN_START_DEVICE PnP IRP al driver per il dispositivo durante l'operazione di ribilanciamento della risorsa. Queste richieste PnP notificano al driver che si è verificata una modifica hardware nella partizione hardware. Un driver di dispositivo deve supportare il ribilanciamento delle risorse gestendo correttamente le richieste IRP_MN_QUERY_STOP_DEVICE e IRP_MN_STOP_DEVICE PnP. Un driver di dispositivo non deve mai rifiutare una richiesta PnP IRP_MN_QUERY_STOP_DEVICE .
Queste richieste PnP consentono a un driver di dispositivo di usare completamente il nuovo set di processori attivi nella partizione hardware dopo aver aggiunto un nuovo processore. In particolare, un driver di dispositivo che supporta il ribilanciamento delle risorse usa le richieste PnP ricevute durante il ribilanciamento della risorsa per disconnettere le routine del servizio di interruzione e riconnetterle con il valore di affinità del processore aggiornato. In questo modo il driver di dispositivo può usare tutti i processori attualmente attivi nella partizione hardware, inclusi i nuovi processori, per la gestione delle richieste di interrupt.
I driver di dispositivo devono accodare tutte le richieste di I/O durante il ribilanciamento delle risorse.
Per altre informazioni sul ribilanciamento delle risorse, vedere Arresto di un dispositivo per ribilanciare le risorse.
Questo metodo è applicabile solo ai processori. Il sistema operativo non avvia un ribilanciamento delle risorse a livello di sistema quando si aggiunge un nuovo modulo di memoria a una partizione hardware.