Il sistema operativo Windows XP - Apogeo
Il sistema operativo Windows XP - Apogeo
Il sistema operativo Windows XP - Apogeo
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Il</strong> dispatcher di interrupt nel kernel gestisce gli interrupt chiamando o una procedura di servizio<br />
dell’interrupt (ISR), fornita da un driver del dispositivo, o una procedura di gestione della trap del<br />
kernel.<br />
L’interrupt è rappresentato da un oggetto interrupt che contiene tutte le informazioni necessarie<br />
per la gestione. L’uso di un oggetto interrupt rende facile associare procedura di servizio<br />
dell’interrupt con un interrupt senza dovere accedere all’hardware dell’interrupt direttamente.<br />
Le varie architetture di processore, quali Intel o DEC Alpha, hanno differenti tipi e numeri di<br />
interrupt. Ai fini della portabilità, il dispatcher dell’interrupt mappa gli interrupt hardware in un<br />
insieme standard. Gli interrupt sono dotati di priorità e sono serviti in ordine di priorità. In <strong>Windows</strong><br />
<strong>XP</strong>, ci sono 32 livelli di richiesta di interrupt (IRQL): otto sono riservati ad uso del kernel mentre i<br />
rimanenti 24 rappresentano interrupt hardware gestiti tramite HAL, sebbene la maggior parte dei<br />
sistemi IA32 ne usi solo 16. Gli interrupt di <strong>Windows</strong> <strong>XP</strong> sono definiti in Figura 2.<br />
<strong>Il</strong> kernel usa una tabella di dispatch degli interrupt (interrupt-dispatch table) per collegare ogni<br />
livello di interrupt ad una procedura di servizio. In un <strong>sistema</strong> multiprocessore, <strong>Windows</strong> <strong>XP</strong><br />
mantiene una tabella separata per ogni processore, e l’IRQL di ogni processore può essere regolato<br />
indipendentemente per mascherare gli interrupt. Tutti gli interrupt che si presentano ad un livello<br />
uguale o inferiore a quello degli IRQL di un processore vengono bloccati finché l’IRQL non viene<br />
abbassato da un thread a livello kernel o da un ISR di ritorno da un processo di interrupt. <strong>Windows</strong><br />
<strong>XP</strong> trae vantaggio da questa proprietà e usa gli interrupt software per inviare l'APC e il DPC per<br />
eseguire funzioni di <strong>sistema</strong> quali la sincronizzazione di thread con completamento di I/O, per<br />
iniziare spedizioni di thread ed per gestire i timer.<br />
livelli di<br />
interrupt<br />
tipi di interrupt<br />
31 controllo della macchina o errore del bus<br />
30 mancanza di alimentazione<br />
29 notifica interprocessore (richiede un altro processore<br />
per operare; per esempio, spedire un processo o aggiornare la TLB)<br />
28 orologio (utilizzato per tenere traccia del tempo)<br />
27<br />
3-26<br />
profilo<br />
interrupt hardware degli IRQ del PC tradizionale<br />
2<br />
1<br />
chiamata di procedura del dispatch e rinviata (DPC) (kernel)<br />
chiamata asincrona di procedura (APC)<br />
0 passivo<br />
Figura 2. Livelli di richiesta di interrupt di <strong>Windows</strong> <strong>XP</strong>.<br />
3.3 Codice eseguibile<br />
<strong>Il</strong> codice eseguibile di <strong>Windows</strong> <strong>XP</strong> fornisce un insieme dei servizi usati da tutti i sottosistemi di<br />
ambiente; tali servizi sono raggruppati nel modo seguente: gestore dell’oggetto, gestore di memoria<br />
11