MODELLI DI MEMORIA
Per modello di memoria intendiamo il modo in cui la CPU usa la memoria allo
scopo di rendere più efficiente la esecuzione dei programmi e l'allocazione dei
dati.
Esistono 5 modelli di memoria:
-
Piatto (Flat)
-
Segmentato Real Mode
-
Segmentato Protected Mode
-
Paginato
-
Segmentato-Paginato
Il modello flat
Il modello piatto è stato utilizzato dai processori delle prime generazioni (Z80 Zilog, 8085 Intel,6800 Motorola) e
su di esso si basava il funzionamento dei rudimentali sistemi operativi degli home computer" anni 80.
In questo modello il processore vede la memoria come un unico blocco di locazioni. Un programma viene eseguito secondo le seguenti fasi:
-
Il programma viene caricato a
partire dalla prima locazione disponibile da un componente del SO chiamato
Loader-Linker e occupa un blocco di locazioni contigue
-
IL SO trasmette alla CPU
l'indirizzo fisico della prima istruzione del programma
-
La CPU inizia l'esecuzione del
programma
L'indirizzo fisico della prima istruzione viene scritto in uno speciale registro della CPU chiamato IP (Istruction
Pointer) o PC (Program Counter).
Per eseguire l'istruzione, la CPU:
-
preleva il contenuto dell'IP
(l'indirizzo 28A560C0 in figura)
-
lo trasferisce nel BUS indirizzi
-
esegue un operazione di lettura a
quell'indirizzo prelevando il codice operativo dell'istruzione
-
esegue
l'istruzione
Per eseguire le successive istruzioni, la CPU:
-
incrementa l'IP di una quantità uguale del numero di byte occupati dall'istruzione precedente
-
ripete le operazioni descritte precedentemente.
Per es. (vedi figura sotto) dopo l'esecuzione di istr1
la CPU incrementa IP di 3 ( 00A560C3) ed esegue l'istruzione istr2.
Successivamente incrementa IP di 2 edesegue l'istruzione istr3
Modello segmentato real mode
Il modello segmentato è stato adottato dai microprocessori come l'8088/88
della Intel o il 68000 della Motorola, e su di esso si basa il sistema operativo DOS. Questi processori avevano un bus
indirizzi di 20 bit. per cui su Pentium vengono utilizzati solo i primi 20 bit
del campo indirizzi a 32 bit. Ecco le caratteristiche del modello:
- La memoria viene vista come composta da un insieme di blocchi di locazioni
contigue chiamati segmenti
- Ogni segmento ha una dimensione variabile che comunque non può superare i
64KBytes.
- Ogni segmento è individuato da un numero, chiamato Indirizzo Base (Base
Address) che fornisce l'indirizzo della sua prima locazione
- Ogni locazione all'interno del segmento è individuata da un numero
progressivo di 16 bit chiamato offset
- L'indirizzo base di un segmento deve obbligatoriamente essere divisibile
per 16 (word alligned) e questo comporta che i quattro bit meno
significativi (o la cifra hex meno significativa) devono essere uguali a 0
- L'indirizzo base, tolti gli 0 finali, è un numero di 16 bit
Quindi possiamo concludere che nel modello segmentato real mode una
locazione di memoria viene individuata da due numeri: l'indirizzo base che dà il
segmento a cui appartiene e l'offset che la individua all'interno del segmento.
Questi due numeri costituiscono l'indirizzo logico della locazione.Per accedere ad una locazione di memoria, il processore deve fare
la conversione da indirizzo logico a fisico, perchè può accedere alla
locazione solo attraverso il bus indirizzi (20 bit). La procedura di conversione
consiste in
- Portare il valore dell'indirizzo base da 16 a 20 bit
- impostare a 0 i 4 bit meno significativi
- aggiungere l'offset
- Esempio
- Indirizzo logico: 3AB2:01A5
- indirizzo fisico: 3AB20 + 01A5 = 3ACC5
Programma e dati vengono caricati in due segmenti distinti chiamati segmento codice e segmento dati.