di thrantir il 16 gen 2004, 15:14
Ieri ho avuto un po di robe accademike da sistemare e quindi nn ho avuto il tmepo di continuare la nostra discussione... nn so se sia x questo motivo ma imrik h espresso dei dubbi sulla mia sessualità ke mi hanno lasciato perplesso... mah, proseguiamo...
Allora, adesso siamo tutti coscienti ke il processore lavora su indirizzi logici ma a noi serve anke sapere gli indirizzi fisici corrispondenti e questa corrispondenza è realizzata con una tabella ke d'ora in poi kiameremo "tabella di rilocazione". Oni programma ha già pronta la sua tabella di rilocazione ke va riempita ogni volta ke il programma viene caricato mettendo gli indirizzi fisici al giusto posto... come vi ho già detto nn è necessario parlare ora dei meccanismi ke vengono usati per riempire nel modo giusto la tabella, cmq lo fa x noi un pezzo del sistema operativo...
Noto ke a nessuno di voi è venuto un dubbio: abbiamo detto ke ogni "parola" ke compone il programma è identificata da un indirizzo logico al quale poi corrisponde un indirizzo fisico, e entrambi questi indirizzi sono di 32 bit, ma questo porta una conseguenza notevole! Vuol dire infatti ke la nostra tabella di rilocazione per ogni parola del programma deve contenere i 32 bit dell'indirizzo logico e i 32 bit dell'indirizzo fisico per poter realizzare la corrispondenza tra i due! Questo nn è verosimile xkè vorrebbe dire ke per ogni parola ke vi ricordo è di 32 bit noi avremmo altri 64 bit! Quindi il programma diventerebbe 3 volte + grande! Siccome questo nn è pensabile si usa una tecnica + raffinata: la "paginazione". Dobbiamo ora immaginare la nostra memoria come divisa in "pagine" ke contengono al loro interno un numero fisso di parole, come a dire "il quaderno è diviso in un insieme di pagine ke contengono tutte lo stesso numero di quadretti.
Facciamo un esempio realistico, diciamo ke abbiamo 128Mb di RAM e ke vogliamo pagine ke contengano 64 parole. Siccome ogni parola è grande 32 bit 64 parole sono 2Kb e la nostra memoria viene quindi divisa in 128Mb/2Kb = 64000 circa...
Cosa ce ne facciamo di tutto cio? Osservate bene e vi accorgerete ke adesso invece di indirizzare 4000000 di parole indirizzeremo 64000 pagine, cioè abbiamo ridotto il numero di cose da indirizzare di mille volte!
Quindi noi agiremo così: Nella tabella di rilocazione ci sarà nella colonna di sinistra le pagine logike e in quella di destra l'indirizzo delle corrispondenti pagine fisike, il ke riduce abbastanza lo spazio occupato dalla tabella stessa...
Adesso dovreste kiedervi...ok, ora riusciamo a tradurre l'indirizzo logico di una pagina in un indirizzo fisico, ma noi volgiamo accedere ad una parola in particolare, nn alla pagina ke la contiene! Per raggiungere questo scopo utilizziamo un altro indirizzo ke in gergo si kiama "offset", ora vediamo se riesco a farvelo capire con un esempio:
Immagina te di avere un quadernone ad anelli, questo rappresenta la nostra memoria e voi attaccate le pagine quando vi serve ke stiano nel quadernone... siccome + di un certo tot di pagine nn ci stanno a volte sarete costretti a togliere una pagina ke magari nn vi serve + e metterne una ke vi serve immediatamente (x essere coerenti diciamo ke la pagina nuova la mettete al posto di quella vekkia). Alla fine avrete un bel casino di pagine tutte sparse senza un ordine preciso quindi ke fate? Avete una tabella ke vi dice ke la pagina ke magari per voi è la 3 corrisponde a quella ke sul quadernone sta al posto 26 quindi riuscite a reggiungere subito quella pagina... ma voi volete una linea in particolare di quella pagina e quindi una volta trovata la pagina reale andate a cercare quella linea in particolare... il numero della linea è il nostro "offset"... Notate in particolare ke siccome la pagina logica corrisponde perfettamente alla pagina fisica l'offset sulla pagina logica è lo stesso ke sulla pagina fisica
Uhm, per un post mi sembra di aver scritto abbastanza, meglio ke ancora nn vi parli dell'MMU, ditemi se avete tutto ben kiaro e poi procedo!
Fletto i muscoli e sono nel vuoto
Principi di architettura degli eleboratoriX postare immagini-----BEGIN GEEK CODE BLOCK-----
GCS/IT/L/MU d- s: a C++$>+++ UL+>++ P L+++>++++ E--- W++ N++>+++ o+>++ K? w O-- M- VMS? V- PS++ Y+ PGP+ t 5? X+ R++>+++ tv+ b+++>++++ DI+++ D++ G e++ h- r++ y++
------END GEEK CODE BLOCK------
Addio Dani, sono più ricco perchè ti ho conosciuto