31.05.2013 Views

Il sistema operativo Windows XP - Apogeo

Il sistema operativo Windows XP - Apogeo

Il sistema operativo Windows XP - Apogeo

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!