• Non ci sono risultati.

Gestione della memoria centrale

N/A
N/A
Protected

Academic year: 2021

Condividi "Gestione della memoria centrale"

Copied!
28
0
0

Testo completo

(1)

FONDAMENTI DI INFORMATICA

Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria

Università degli Studi di Udine

Gestione della memoria centrale

(2)

Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (ivi inclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio, musica e testo) sono di proprietà dell’autore prof. Pier Luca Montessoro, Università degli Studi di Udine.

Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero della Pubblica Istruzione e al Ministero dell’Università e Ricerca Scientifica e Tecnologica, per scopi istituzionali, non a fine di lucro. In tal caso non è richiesta alcuna autorizzazione.

Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente, le riproduzioni su supporti magnetici, su reti di calcolatori e stampe) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte degli autori.

L’informazione contenuta in queste slide è ritenuta essere accurata alla data della pubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senza preavviso. L’autore non assume alcuna responsabilità per il contenuto di queste slide (ivi incluse, ma non limitatamente, la correttezza, completezza, applicabilità, aggiornamento dell’informazione).

In ogni caso non può essere dichiarata conformità all’informazione contenuta in queste slide.

In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devono

mai essere rimossi e devono essere riportati anche in utilizzi parziali.

(3)

Gestione della memoria per sistemi multiprogrammati

• Diverse tecniche:

– partizioni fisse

– partizioni variabili – segmentazione – paginazione

– segmentazione + paginazione

memoria

virtuale

(4)

Obiettivi

• Massimizzare il numero di processi che possono utilizzare la memoria

• Minimizzare lo spazio di memoria inutilizzato

– frammentazione interna: spazio inutilizzato all’interno di una partizione

– frammentazione esterna: partizioni non utilizzate perché troppo piccole

• Semplicità ed efficienza

(5)

Partizioni fisse

• La memoria fisica viene suddivisa in partizioni predefinite

• Quando un programma viene caricato in una partizione, gli indirizzi vengono

ricalcolati in funzione dell’indirizzo di inizio della partizione

• Problemi:

– quante partizioni, quanto grandi?

(6)

Partizioni fisse

inizia P1

PX

frammen- tazione interna:

non è possibile caricare il processo P6

P1 P1

P2

P4 P3 P5

PY

frammen- tazione esterna:

non è possibile caricare il processo P7

partizioni vuote

iniziano P2, P3, P4, P5

P1

P3

P5

terminano

P2 e P4

(7)

Partizioni variabili

• Le partizioni vengono create man mano che i processi richiedono memoria

• Gli indirizzi vengono ricalcolati come nel caso delle partizioni fisse

• Problemi:

– scelta della partizione da utilizzare

– frammentazione / ricompattazione

(8)

Partizioni variabili

P1 P1

P2

P1 P2 P3

P1

P3

termina P2

P1

P3 P4

P3 P4

termina P1

P5

la memoria è frammentata,

non è

possibile

caricare il

processo P5

(9)

Memoria virtuale

• 2 aspetti:

– estensione della memoria RAM

utilizzabile dalla CPU oltre la dimensione reale della memoria fisica disponibile

(mediante page file)

– mapping tra gli indirizzi virtuali di ciascun processo in ambiente multitasking: tutti i processi usano lo stesso range di

indirizzi, ma per ciascuno la memoria

realmente indirizzata è diversa

(10)

Memoria virtuale e indirizzi

• Spazio di indirizzamento virtuale:

– determinato dal parallelismo della CPU (es. 32 bit

→ indirizzi da 0 a 4G)

• Spazio di indirizzamento reale (in cui vengono tradotti gli indirizzi virtuali):

– determinato dall’architettura (numero di fili dell’address bus) e dalla quantità di RAM

• Massima quantità di parole di memoria utilizzabili contemporaneamente

– determinata dal numero di processi attivi e dalla

quantità di RAM

(11)

Memory Management Unit (MMU)

Address bus

CPU

CU ALU

PC

IR R0

R1

R15

Memoria Dispositivi di I/O 0000

0001 0002 0003 0004 0005 0006 0007

...

...

Databus SP

flags

INDIRIZZI FISICI

INDIRIZZI VIRTUALI

MMU

(12)

Segmenti e pagine

• Segmento

– raggruppamento logico di informazioni

(subroutine, area dati, ecc.) di lunghezza variabile

• Page frame

– partizione della memoria fisica di dimensione fissa e uguale per tutti i page frame

• Pagina

– partizione della memoria virtuale del processo di

dimensione pari ad un page frame

(13)

indirizzo di base

del segmento lunghezza del segmento

indirizzo relativo

dell'istruzione istruzione

Segmentazione

• Dati e programmi possono essere suddivisi in segmenti, contenenti parti che possono

essere indirizzate relativamente ad un

indirizzo di base.

(14)

• Ogni segmento corrisponde ad una entità logica ben definita (Esempi: codice, dati,

funzioni di libreria, sistema operativo o parte di esso)

• Le istruzioni e/o le variabili contenute nel segmento sono identificate tramite il loro indirizzo relativo all'indirizzo di base

• NOTA: Per l'esecuzione di un programma non è necessario che siano presenti in

memoria centrale tutti i segmenti: possono

essere caricati quando serve

(15)

Vantaggi

• Possibilità di rilocare i segmenti: gli indirizzi sono relativi all'indirizzo di base, e

quest'ultimo viene definito al momento del caricamento del segmento in memoria

• L'hardware che gestisce la memoria virtuale provvede alla traduzione degli indirizzi relativi in indirizzi fisici di memoria

• Ad ogni segmento possono essere associate delle protezioni (es. sola lettura o

esecuzione) in base alla sua funzione

(16)

indirizzo di base della segment table del processo

segment table

segmento offset indirizzo virtuale

+

indirizzo fisico

+

indirizzo del segmento

in memoria fisica

(17)

Segmentazione vs. partizioni variabili

istruzione

segm ento

0000

A022 A136 000 114

segment table

CPU:

indirizzo virtuale

A022 + 114 istruzione

pa rt iz ion e

0000

A022 A136 A136

CPU:

indirizzo

reale

(18)

Paginazione

• Risolve il problema della frammentazione esterna, esistente nella segmentazione al pari del sistema a partizioni variabili,

unificando la dimensione dei blocchi di codice (pagine) che vengono dinamicamente caricati in memoria (page frame)

• Il programma vede ancora lo spazio di

indirizzamento virtuale contiguo all'interno dei segmenti, ma in realtà è immagazzinato in

pagine che non sono contigue

(19)

Paginazione

• Pagine e page frame hanno dimensioni pari a 2 n

– come nella segmentazione, l’indirizzo viene calcolato sommando l’offset

all’indirizzo di base della pagina, ma

questo avrà gli ultimi n bit a zero, quindi sarà sufficiente accostare i bit

101111000000000 +

001001011

---

(20)

indirizzo di base della page table del processo

page table

pagina offset

indirizzo virtuale

+

m - n bit più significativi dell’indirizzo della pagina in memoria fisica

indirizzo fisico

(21)

Paginazione + segmentazione

• La paginazione pura può portare a page table molto grosse

• La segmentazione con paginazione permette di suddividerle in più page table (una page table diversa per ogni segmento)

pagina offset indirizzo virtuale

segmento

determina la page PID

segment

table

(22)

A

C

A

C

memoria fisica

NOTA: n = 4 (pagine da 16 byte)

b (base address)

b + 20 (0010100) segmento

n. 6

offset (4 bit) pagina

(3 bit) 0 1 2

B

0

16 32

48 64

80 96 16

48 64

4

B 4

b + 16

Esempio

page table del segmento

110 001 0100

segm.

(3 bit)

mediante la

segment table ha permesso di

individuare la page

table da usare

(23)

file su disco

memoria RAM

cache memory

capacità

costo, velocità

Gerarchia di memoria

(24)

Page file

• Il meccanismo di traduzione degli indirizzi

permette di far vedere ai programmi uno spazio di indirizzamento virtuale, per esempio da

00000000h a FFFFFFFFh (32 bit)

• La memoria RAM fisicamente presente nel

calcolatore avrà normalmente dimensione molto inferiore a quella massima indirizzabile dalla

CPU

• L'uso del page file permette di sfruttare la

memoria su disco (più lenta, ma più economica)

per espandere la memoria RAM centrale

(25)

Page fault

• Quando si legge nella page table l'indirizzo della pagina, questo può essere marcato invalido (bit aggiuntivi oltra all’indirizzo di pagina in memoria fisica)

• Ciò significa che la pagina non è presente in memoria centrale ed è necessario leggerla dal page file su disco

• Troppi page fault provocano una degradazione

delle prestazioni del sistema, esiste il problema

del bilanciamento tra dimensione del page file e

(26)

solo se la pagina è stata modificata pagina a cui è

stato fatto accesso

pagefile

lista delle pagine in memoria

Algoritmo di gestione dei page fault

• Least Recently Used (LRU), altrimenti

detto FIFO modificato.

(27)

Attributi di pagina

• In corrispondenza di ogni pagina, nella page table sono contenute diverse informazioni:

– bit di presenza (in memoria centrale)

– se è presente, l'indirizzo della pagina di memoria, altrimenti, l'indirizzo all'interno del page file

– informazioni di protezione (ereditate dal segmento di cui attualmente fa parte)

– informazioni relative all'utilizzo e alla modifica del

contenuto

(28)

Swapping

• I primi sistemi UNIX, per liberare memoria centrale, trasferivano su memoria secondaria interi processi, e non soltanto parti di essi (pagine). Questo modo di procedere è detto swapping

• I sistemi con paginazione usano ancora lo

swapping per liberare memoria quando il carico inizia ad essere eccessivo. In queste condizioni il sistema è impegnato quasi al 100% a caricare e scaricare pagine in memoria (thrashing)

• I processi vengono nuovamente caricati in

memoria quando è possibile riattivarli

Riferimenti

Documenti correlati

[r]

Le memorie di massa servono per immagazzinare dati e programmi e si dividono in hard disk (dischi rigidi o fissi), floppy disk (dischi flessibili e rimovibili), CD ROM (compact

O., individua una area della memoria centrale che può contenere in locazioni consecutive la sequenza di istruzioni e dati del programma da caricare e fissa in K il primo indirizzo

• Quando si legge nella page table l'indirizzo della pagina, questo può essere marcato invalido (bit aggiuntivi oltra all’indirizzo di pagina in memoria fisica). • Ciò significa

z Numero di pagina (p) – usato come indice nella tabella delle pagine che contiene l’indirizzo di base di ogni frame nella memoria fisica.. z Spiazzamento nella pagina (d)

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.. • 

Inoltre, quando l’unità centrale richiede l’accesso a una locazione di memoria virtuale non presente in una cella di memoria reale, si rende necessario effettuare