DOMANDA Dubbio indirirzzamento memoria RAM

Linofex

Utente Attivo
182
7
CPU
Intel® Core™ i5-2400 3,1 Ghz + Cooler Master Hyper 212EVO
Scheda Madre
Asus P8Z68-V LX
HDD
500GB
RAM
Corsair 2x4GB XMS3 DDR3
GPU
Zotac Geforce 450gts AMP 1GB
Audio
Integrata
Monitor
Samsung 22"
PSU
OCZ Silencer Mk III 500W
Case
Carbide 300R
OS
Windows7 and Ubuntu 12.04 LTS
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.
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,948
11,581
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
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.png
    mem.png
    20.6 KB · Visualizzazioni: 35

Linofex

Utente Attivo
182
7
CPU
Intel® Core™ i5-2400 3,1 Ghz + Cooler Master Hyper 212EVO
Scheda Madre
Asus P8Z68-V LX
HDD
500GB
RAM
Corsair 2x4GB XMS3 DDR3
GPU
Zotac Geforce 450gts AMP 1GB
Audio
Integrata
Monitor
Samsung 22"
PSU
OCZ Silencer Mk III 500W
Case
Carbide 300R
OS
Windows7 and Ubuntu 12.04 LTS
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.
 
U

Utente 16812

Ospite
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:
 
  • Mi piace
Reazioni: Linofex

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili