|
 |
Il Processore e il Debugger |
LA GRANDE LIBRERIA 5/9
[56 di 60] |
 |
|
Perchè serve la Tabella dei Vettori? |
|
 | Rimane da capire perchè
i progettisti dell'80x86 hanno voluto ricorrere a questo
complicato meccanismo,
per poter rendere disponibili le risorse di
sistema. |
 | La prima risposta è funzionale: al programmatore
non serve ricordare l'improbabile, grosso
(4 bytes...), numero esadecimale associato all'indirizzo logico
della procedura di cui ha bisogno, e non gli importa
neppure sapere in quale tipo di memoria (rom
se legata al bios o
ram se proveniente da SysOp
o da drivers) sarà pescata.. |
 | Per esempio se abbiamo bisogno delle
procedure che controllano il
video chiameremo INT 10H, e
il servizio sarà garantito indipendentemente
dal punto della memoria in cui il processore si troverà a lavorare; questo
esempio è particolarmente significativo perchè sottolinea un'altra
potente caratteristica della
Tabella dei Vettori: la
rilocabilità del servizio. |
 | In pratica la
procedura di Boot è a conoscenza della zona BIOS
in cui il servizio è garantito
d'ufficio (è impensabile che il costruttore non abbia previsto gli
strumenti necessari per scrivere messaggi a video..) e, non appena l'ha localizzata, ne trasferisce l'effettivo
indirizzo in Tabella; ma quando il Sistema Operativo
(che le subentra) si accorge della presenza di una moderna scheda video, sul
bus AGP o PCI, provvederà ad installarne il driver
in memoria e a metterlo in esecuzione. |
 | La presenza attiva del
nuovo driver video renderà disponibile
una propria procedura,
ovviamente alternativa a quella di default e allocata in indirizzi propri della scheda video; per renderla
disponibile a chiunque ne abbia bisogno, il driver stesso andrà a
sostituire il vettore originale di default
con quello nuovo di zecca, relativo alla
memoria rom presente sulla scheda SVGA. |
 |
Dunque: l'uso di numeri a 8 bit (da 00H
a FFH) virtualizza l'accesso
alle possibili
procedure di sistema
(i libri della grande libreria), cioè ne consente l'uso anche
senza la necessità di conoscerne l'effettivo indirizzo. |
 | Ma il vero problema è un altro! Come è facile pensare,
la quantità di codice
macchina necessario per sviluppare un determinato servizio può subire, con il
passare del tempo, una prevedibile dilatazione dovuta per esempio all’evoluzione
tecnologica; si pensi emblematicamente alle modifiche subite dalla procedura che si occupa degli Hard
Disk, chiamata molti anni fa a gestire memorie di massa da 20-40 MBytes e
ora orientata al servizio di HD con capacità superiore ai 100 GBytes!! |
 | Dopo ogni modifica, se possiamo ritenere che il puntatore (Vettore)
a questa procedura sia rimasto
inalterato, dobbiamo renderci conto che l'aumento del suo
numero di istruzioni ha spostato inevitabilmente
verso il basso gli indirizzi iniziali di ciascun'altra procedura di servizio
successiva. |
 | Tutti si
incrementano di un numero pari a quello dei bytes
aggiunti alla prima; tutti i Vettori
di queste procedure dovranno essere cambiati! |
 | Poichè gli aggiornamenti del BIOS (ma anche quelli di un
Sistema
Operativo) sono imprevedibili e molto frequenti, l'indirizzo fisico (puntatore, Vettore)
effettivo di ciascun libro può subire
variazioni in ogni momento; per non parlare dei possibili diversi produttori
di BIOS e di schede madri, ciascuno dei quali sarà chiamato a garantire il
servizio a partire dagli oggetti da lui prodotti, inevitabilmente diversi da
quelli della concorrenza... |
 |
L'accesso alle
procedure di sistema
(i libri della grande libreria), non può assolutamente essere
eseguito saltando direttamente al rispettivo
indirizzo: esso non è per nulla stabile nel tempo e la sua
precarietà renderebbe inaccessibile la risorsa. |
 | L'uso della
Tabella dei Vettori
risolve per sempre questo problema: la risorsa desiderata
si ottiene (tramite
INT
xyH)
specificandone il numero , assolutamente
stabile e riconosciuto
da tutto l'ambiente (produttori e programmatori). |
 | Sarà compito del produttore del BIOS
(o del sistema operativo, o del
driver) scrivere in
tabella i giusti indirizzi delle
procedure di sistema, probabilmente
diversi da quelli
della versione precedente, ma sicuramente
associati agli stessi numeri esadecimali
xyH. |
 | Per la descrizione dettagliata del contenuto e dei segreti della
Tabella dei Vettori si rimanda all'apposita
scheda; uno dei primi programmi che realizzeremo, non appena avremo sufficiente
autonomia, sarà proprio Tabella.ASM, con il quale cercheremo di
visualizzare il contenuto di questa preziosa area di
memoria di sistema. |
 | Se lo desideri puoi comunque levarti fin d'ora questa curiosità
scaricando qui e
provando la versione offerta dell'Autore,
Tabvett.COM. |
©
2001-2010 - Studio Tecnico
ing. Giorgio OBER
Tutti i diritti sono riservati
|