DOMANDA Dubbio indirirzzamento memoria RAM

Pubblicità

Linofex

Utente Attivo
Messaggi
182
Reazioni
7
Punteggio
38
Salve a tutti, sono alle prese con lo studio dei sistemi operativi e in particolare sulla gestione della memoria centrale.
Non ho ben capito come ragionare sul concetto di indirizzamento a xx bit e relativa dimensione della memoria, mi spiego meglio:
CPU a 32 bit ---> 2^32 cosa?
Allora tale numero si riferisce allo spazio di indirizzamento logico che é diverso dallo spazio di indirizzamento fisico.

Parlando di 2^32 byte, allora posso dire che posso indirizzare fino a 4GB di dati. Questo é il lavoro della CPU giusto? La memoria RAM come si comporta, ogni elemento di RAM é un Byte? (mi sembra strano)

Il mio dubbio quindi é relativo alla dimensione di una word in ram (piú byte) e relativo 2^32.
Per esempio se parlassi di 2^32 locazioni e ogni locazione fosse diversa da un byte, cadrebbe il discorso dei 4GB.

Spero di essere stato chiaro, in caso risponderó alle varie domande.
 
2^32 è lo spazio di indirizzamento del sitema operativo che quindi può generare indirizzi di memoria compresi tra 0 e 2^32-1
- La memoria RAM è un insieme di locazioni (celle) numerate in ordine crescente da 0 in poi;
- ogni cella è ampia esattamente 1 byte (8 bit)
- il numero binario di ciascuna cella si chiama indirizzo della cella (da non confondere col contenuto della cella)
quando c'è la necessità di immagazzinare un dato più ampio di un byte (per esempio un intero a 32 bit) si usano più byte consecutivi:
nel caso di un intero a 32 bit verranno quindi usati 4 byte (o se preferisci una word/parola da 4 byte);
in tal caso si parla di area di memoria (nell'esempio dell'intero a 32 bit l'area è ampia 4 byte) e l'indirizzo dell'area usata è l'indirizzo del suo primo byte

In sintesi:
una word non è altro che un insieme consecutivo di più byte (eventualmente uno solo), vedi figura
 

Allegati

  • mem.webp
    mem.webp
    17.1 KB · Visualizzazioni: 35
l'indirizzo dell'area usata è l'indirizzo del suo primo byte

Questa é la soluzione alla mia domanda. L'inidirizzamento al byte si riferisce al primo byte di un'area di memoria in caso di parola da piú byte. giusto?

Peró dove sbaglio in questo discorso?

2^32 è lo spazio di indirizzamento del sitema operativo che quindi può generare indirizzi di memoria compresi tra 0 e 2^32-1, ogni indirizzo indirizza una cella da (per esempio 2 byte), quindi direi che non sono 4GB, ma 8GB.
L'errore credo stia nel fatto che la memoria si indirizzi al byte.
 
Salve a tutti, sono alle prese con lo studio dei sistemi operativi e in particolare sulla gestione della memoria centrale.
Non ho ben capito come ragionare sul concetto di indirizzamento a xx bit e relativa dimensione della memoria, mi spiego meglio:
CPU a 32 bit ---> 2^32 cosa?
Allora tale numero si riferisce allo spazio di indirizzamento logico che é diverso dallo spazio di indirizzamento fisico.

Parlando di 2^32 byte, allora posso dire che posso indirizzare fino a 4GB di dati. Questo é il lavoro della CPU giusto? La memoria RAM come si comporta, ogni elemento di RAM é un Byte? (mi sembra strano)

Il mio dubbio quindi é relativo alla dimensione di una word in ram (piú byte) e relativo 2^32.
Per esempio se parlassi di 2^32 locazioni e ogni locazione fosse diversa da un byte, cadrebbe il discorso dei 4GB.

Spero di essere stato chiaro, in caso risponderó alle varie domande.

Un microprocessore a 32-bit ha registri a 32-bit, bus dati a 32/64-bit, bus indirizzi a 32-bit e permette di indirizzare, in modalità protetta (la modalità protetta serve a facilitare il multitasking), 4GB di memoria, in particolare in segmenti di dimensione variabile fino a 4GB, a ciascuno dei quali viene assegnato un diritto di accesso :sisi:
Gli indirizzi di programma, chiamati "indirizzi virtuali", hanno una forma di questo tipo: selettore:offset :sisi:
In pratica i registri selettori vengono utilizzati per individuare la riga della tabella dei descrittori di segmento che contiene l'indirizzo iniziale e la dimensione del segmento :asd:
Ecco, proprio la dimensione dei segmenti può arrivare fino a 4GB.
Poi all'indirizzo iniziale del segmento viene aggiunto l'offset, che ovviamente sarà inferiore alla dimensione del segmento.
Essendo entrambi a 32-bit, sia l'indirizzo iniziale che l'offset, il risultato è un numero a 32-bit, il cui valore, chiamato "indirizzo lineare", può arrivare quindi fino a 4GB ;)
A presto :)

P.S. I registri selettori sono a 16-bit :asd:
 
Pubblicità
Pubblicità
Indietro
Top