• Non ci sono risultati.

LA GESTIONE DELLA MEMORIA

N/A
N/A
Protected

Academic year: 2022

Condividi "LA GESTIONE DELLA MEMORIA"

Copied!
15
0
0

Testo completo

(1)

LA GESTIONE DELLA MEMORIA

La memoria centrale (RAM, acronimo di Random Acess Memory) è una risorsa

importante per i calcolatori moderni che deve essere gestita al meglio, anche

se rispetto al passato la sua dimensione oggi è molto aumentata.

(2)

MEMORIA CENTRALE

La memoria centrale è sempre stata una risorsa limitata:

• I izio a i : k

• I izio a i :

• Inizio anni 2000: 125mb

• Attualmente: 8gb

(3)

I TIPI DI MEMORIA

Nel calcolatore sono presenti diversi tipi di memoria,

classificati in base alle loro caratteristiche fondamentali, cioè velocità e capacità.

• Nastro: molto capiente, magnetico, sequenziale(memoria di back-up)

• disco: capiente, lento, non volatile ed economico (memoria secondaria)

• Memoria principale: volatile, mediamente grande, veloce e costosa

• Cache: volatile, veloce, piccola e costosa

• ‘egist i: all i te o del p o esso e, est e a e te velo i e ridotti ad alcuni byte

(4)

COME FUNZIONA

La memoria centrale consiste in un ampio vettore di parole di memoria, ognuna delle quali ha un

proprio indirizzo: la CPU preleva istruzioni

direttamente da essa per caricarli poi nei propri egist i, i pa ti ola e a i a l ist uzio e p ese te nella posizione indicata dal program counter.

Ogni istruzione a sua volta genera nuovi accessi alla e o ia e ui di l evoluzio e di u p og a a è un susseguirsi di caricamenti(load) e

archiviazioni(store) di istruzioni e dati.

(5)

CARICAMENTO DEL PROGRAMMA

Il programma eseguibile, in formato binario, risiede in un file su una memoria permanente, tipicamente un hard disk. (memoria secondaria)

Il problema fondamentale che il gestore della memoria deve risolvere è trasformare il programma eseguibile in un processo in esecuzione.

I programmi che stanno per diventare processi vengono messi in una coda di entrata, dalla quale ne verrà

selezionato uno (o più) da caricare da parte del loader e quindi da collocare nella lista dei processi pronti.

(6)

ASSEGNAZIONE DEGLI INDIRIZZI

Durante la generazione del file eseguibile il compilatore ed il linker ge e a o all i te o del programma dei collegamenti tra istruzioni e indirizzi senza sapere dove il programma o i dati saranno caricati in memoria. Inoltre è

anche molto improbabile che un programma venga caricato a partire dalla stessa cella di memoria in esecuzioni diverse sullo stesso calcolatore o su due macchine differenti.

(7)

Lasseg azio e degli i di izzi è ui di

incompleta: vengono cioè generati degli

i di izzi elativi i di izzo logi o e all atto del caricamento vero e proprio questi vengono

trasformati in indirizzi assoluti(indirizzo fisico).

Un codice con tali caratteristiche si chiama codice rilocabile.

(8)

MEMORY MANAGMENT UNIT

La MMU può avere vari compiti tra cui la traslazione (o traduzione) degli indirizzi logici e simbolici in indirizzi fisici (necessaria per la gestione della memoria virtuale), la protezione della memoria, il controllo della cache della CPU, l'arbitraggio del bus, e, in architetture più semplici (specialmente nei sistemi a 8-bit), la commutazione di banchi di memoria.

Le MMU moderne generalmente suddividono lo spazio degli indirizzi virtuali

(l'intervallo di indirizzi accessibili dal processore) in pagine di memoria dimensione 2N, tipicamente pochi kilobytes.

Gli N it e o sig ifi ativi dell'i di izzo l offset all'interno della pagina) rimangono invariati, mentre i bit restanti rappresentano il numero virtuale della pagina.

La MMU contiene una tabella delle pagine indicizzata (possibilmente associativamente) dal numero della pagina.

Ogni elemento di questa tabella (detto PTE o Page Table Entry) restituisce il numero fisico della pagina corrispondente a quello virtuale, che, combinato con

l'offset della pagina, forma l'indirizzo fisico completo. Un PTE può includere anche informazioni su quando la pagina è stata usata per l'ultima volta (per l'algoritmo di sostituzione LRU), quale tipo di processi (utente o supervisore) può leggerla e

scriverla, e se deve essere inserita nella cache.

(9)

ADDRESS BINDING

l binding è il processo tramite cui viene effettuato il collegamento fra una entità di un software ed il suo corrispettivo valore.

Nei termini della programmazione a oggetti, la decisione circa l'attributo o il metodo da richiamare in un dato momento dell'esecuzione del programma viene

effettuata grazie al binding.

Tale decisione può essere stata stabilita in anticipo in maniera fissa, e in tal caso si parla di binding

statico (o early binding); oppure può essere presa a tempo di esecuzione, in maniera dinamica, e in tal caso si parla di binding dinamico (o late binding).

(10)

ALLOCAZIONE DELLA MEMORIA

Il sistema più semplice per allocare la memoria centrale nei sistemi multiprogrammati è

quello di suddivederla in partizioni e

assegnare una partizione a un processo

indipendentemente dalla sua dimensione,

partendo dalla prima (che viene generalmente riservata al sistema operativo) e cercando di riempire costantemente tutte le partizioni.

(11)

PARTIZIONE FISSA

Nello schema a partizione fissa la dimensione della pa tizio e vie e defi ita all atto

dell i izializzazio e del siste a, ui di

staticamente, e viene creata una tabella dove si memorizza lo stato delle partizioni,

indicando quali sono libere e quali occupate.

(12)

PARTIZIONE VARIABILE

Scherma a partizione variabile: in questo caso è possibile modificare dinamicamente sia il

numero sia la dimensione di ogni singola partizione, per esempio unendo blocchi contigui precedentemente distinti o

suddividendone uno particolarmente

sovradimensionato, a seconda delle richieste di spazio all atto del a i a e to dei p o essi.

(13)

LA PAGINAZIONE

La paginazione è un metodo per risolvere i problemi elencati fin ora.

La paginazione si pone diversi obbiettivi:

• Mantenere in memoria solo le parti necessarie

• Gestire ogni volta solo piccole porzioni di memoria

• Non sprecare spazio evitando la frammentazione

• Poter utilizzare porzioni di memoria non contigue per lo stesso programma

• Non porre vincoli al programmatore (come nella overlay)

Nella paginazione sia il programma sia la memoria centrale vengono suddivisi in pagine di dimensione fissa:

• La memoria fisica in blocchi chiamati frame o pagine fisiche

• Il programma in blocchi di uguale dimensione detti pagine(o pagine logiche)

(14)

PAGE FAULT

Se du a te l ese uzio e di u programam viene fatto ife i e to a u ist uzio e , he o è

presente in alcuna pagina tra quelle caricate in e o ia, la MMU dete i a u e ezio e della CPU al SO detta page fault: il SO quindi deve

provvedere a caricare quella pagina:

• Se sono presenti in memoria frame liberi, la pagina viene caricata immediatamente

• Se tutte le pagine fisiche sono occupate invece bisogna fare spazio, cioè scegliere un frame poco utilizzato.

(15)

LA MESSA E FINITA

• ANDATE IN PACE

• ANDATE IN PACE

• ANDATE IN PACE

• ANDATE IN PACE

• FORZA NAPOLI

Riferimenti

Documenti correlati

 Accesso alla memoria: ad ogni riferimento ad una pagina, il contenuto del registro dell’orologio “viene copiato” nel campo del tempo d’uso della tabella delle pagine per

La prova scritta verte sia sulla parte teorica che sulla parte di laboratorio. domande a risposta aperta

• I dati utilizzati più raramente sono posti in memorie con tempi di accesso più elevato;. i dati utilizzati più frequentemente in memorie con prestazioni

• I dati utilizzati più raramente sono posti in memorie con tempi di accesso più elevato;. i dati utilizzati più frequentemente in memorie con prestazioni

  Registro limite: taglia dello spazio degli indirizzi – ogni indirizzo logico deve essere minore del valore in tale registro!.   MMU traduce indirizzi

Paginazione a più livelli: allocazione non contigua della tabella delle pagine -> si applica ancora la paginazione alla tabella della pagine. Esempio: paginazione a

–  Allocazione della memoria ai singoli job –  Protezione dello spazio di indirizzamento –  Condivisione dello spazio di indirizzamento –  Gestione dello swap.. • 

• Usando la page table (tenuta in memoria) per trasformare un indirizzo virtuale in un indirizzo fisico, c’è il problema che ogni accesso alla memoria ne richiede almeno due:. ●