• Non ci sono risultati.

Corso di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Corso di Informatica"

Copied!
11
0
0

Testo completo

(1)

11/04/2014

M. Malatesta 3-Gestione della memoria-15 1

Modulo T4

3-Gestione della memoria

Corso di Informatica

2

Prerequisiti

 Rilocazione dinamica

 Spazio degli indirizzi

 Descrittore di processo

 Descrittore della memoria

(2)

11/04/2014

M. Malatesta 3-Gestione della memoria-15 3

Introduzione

Una volta conosciute le tecniche di organizzazione della memoria, possiamo occuparci di come la memoria fisica venga allocata ai vari processi e porci le seguenti domande:

Si può ripartire un programma in varie aree della memoria?

Come si può minimizzare la frammentazione della memoria?

Si può eseguire un programa più grande della memoria disponibile?

A queste domande diamo una risposta in questa Unità.

Allocazione dei programmi

Vediamo ora quali siano le tecniche che, a fronte della memoria fisica, consentono di allocare questa risorsa ai programmi.

In tutte queste tecniche è previsto il meccanismo della rilocazione

dinamica, in quanto, ad ogni istante, si caricano in RAM solo le parti di codice che servono per l’esecuzione corrente.

Le tecniche che esaminiamo sono:

1. paginazione

2. segmentazione

3. memoria virtuale

(3)

11/04/2014

M. Malatesta 3-Gestione della memoria-15 5

1. Paginazione

Questa tecnica, accennata in Unità precedenti, è stata introdotta per eliminare o ridurre il fenomeno negativo della frammentazione e si basa sul fatto che non è necessario caricare l’intero programma in un’unica area di memoria.

La memoria può pensarsi gestita con la tecnica a partizioni fisse vista in precedenza, con le seguenti caratteristiche:

 ogni partizione prende il nome di blocco o pagina fisica ed è ha una prefissata dimensione (generalmente una potenza di 2, solitamente 512b 1kb, 2kb, 4kb),

 tutte le pagine hanno la stessa dimensione.

Lo spreco medio è di mezza pagina e, date le dimensioni contenute delle pagine, risulta contenuta anche la frammentazione

6

1. Paginazione

In questo modo, se anche i programmi sono a loro volta suddivisi in pagine logiche, della stessa dimensione dei blocchi di memoria, al momento del caricamento, ogni pagina logica verrà allocata in una corrispondente pagina fisica.

È così possibile:

 sezionare un processo utilizzando zone di memoria non necessariamente contigue;

 tenere in memoria solo una porzione del programma che si sta

utilizzando

(4)

11/04/2014

M. Malatesta 3-Gestione della memoria-15 7

1. Paginazione

Nell’esempio riportato in figura, un programma P formato da 3 pagine, viene caricato in RAM, allocando le pagine nei blocchi di indirizzo 200, 240 e 248K rispettivamente.

1. Paginazione

In questa tecnica, il gestore della memoria mantiene per ogni processo la tabella di traduzione delle pagine che per l’esempio precedente ha l’aspetto indicato:

124 2

120 1

100 0

n. blocco n. pagina

Spazio indirizzabile del programma

La tabella consente al gestore della memoria di

associare facilmente ogni pagina logica alla

corrispondente pagina fisica.

(5)

11/04/2014

M. Malatesta 3-Gestione della memoria-15 9

1. Paginazione

La MMU deve provvedere alla rilocazione dinamica degli indirizzi svolgendo i seguenti passi:

 scompone l’indirizzo logico in numero di pagina p e indirizzo interno alla pagina d (detto offset).

 sostituisce p con il numero del blocco b, consultando la tabella delle pagine precedente.

10

1. Paginazione

Il descrittore di memoria, per motivi ovvi di efficienza, dovrà mantenere, oltre alle tabelle di traduzione della pagine per ogni processo, anche un’altra tabella che riporta lo stato di ogni blocco (tabella di occupazione di memoria).

Sempre con riferimento all’esempio precedente, in cui il programma occupa i blocchi 100, 120 e 124, supponendo di indicare con NULL un blocco libero e con una freccia il puntatore ad un blocco logico di programma, la tabella di occupazione ha l’aspetto mostrato in

figura. NULL

…. NULL 100

…. NULL 120 124

1 NULL 0 NULL

stato n. blocco

P

0

P

1

P

2

(6)

11/04/2014

M. Malatesta 3-Gestione della memoria-15 11

2. Segmentazione

Una generalizzazione della paginazione consiste nel suddividere il programma in blocchi logici detti segmenti.

Lo spazio logico dei vari programmi è rappresentato mediante una tabella di traduzione dei segmenti come mostrato in figura (in alto) e gli indirizzi sono rilocati dinamicamente secondo lo schema indicato (in basso).

2. Segmentazione

Il descrittore della memoria, per l’esempio in esame, può essere rappresentato con la struttura seguente

l

12

e

l

13

d

d – c NULL c

l

21

f

l

22

b

l

11

a

a NULL 0

OCCUPANTE LUNGHEZZA

ORIGINE

P

x

P

x

P

x

P

y

P

y

(7)

11/04/2014

M. Malatesta 3-Gestione della memoria-15 13

2. Segmentazione

La segmentazione è una delle tecniche più frequentemente utilizzata poichè:

 consente di allocare facilmente la memoria nel caso di programmi modulari (ossia scomposti in sottoprogrammi), in quanto ogni sottoprogramma può essere allocato in un dato segmento;

 è possibile gestire dinamicamente i segmenti, specie in quei sistemi in cui parte della memoria dati deve essere utilizzata sia come area stack (per le funzioni) sia come heap (per l’allocazione dinamica).

 è possibile facilmente condividere segmenti tra vari processi, in quanto è sufficiente che questi ne conoscano l’indirizzo (la condivisione è particolarmente importante per trattare la comunicazione tra processi).

14

3. Memoria virtuale

Già durante i primi anni dello sviluppo delle tecnologie software, ci si rese conto che:

 la dimensione dei programmi (codice, dati, stack) spesso si scontrava con la limitatezza della capacità della memoria centrale;

 la capacità di memoria era un collo di bottiglia specialmente nei sistemi

in multiutenza.

(8)

11/04/2014

M. Malatesta 3-Gestione della memoria-15 15

3. Memoria virtuale

- swapping

Per superare queste difficoltà, venne introdotto il concetto di memoria virtuale, che consisteva nell’utilizzo di parte della memoria di massa, come un’estensione della RAM e nella quale viene caricata l’immagine dei processi in eccesso.

Questa tecnica prevede che, quando, durante l’esecuzione, occorrono altre porzioni di codice, queste vengano caricate in RAM dal disco e vadano a rimpiazzare la porzione precedente.

Lo spostamento dei processi da memoria a disco e viceversa viene detto swapping.

3. Memoria virtuale

- multiprogrammazione

In questo modo potevano essere risolti alcuni problemi come:

 poter eseguire un programma che richiede 3 Mb, a fronte di una memoria di solo 1 Mb;

 gestire la multiprogrammazione, assegnando a ciascun programma una parte della memoria reale, che, nel corso dell’esecuzione, viene caricata con i vari moduli (sottoprogrammi) del codice da eseguire.

 dare ad ogni processo l’impressione di essere l’unico detentore della memoria;

 dare ad ogni processo l’illusione di avere a disposizione una memoria

virtualmente illimitata.

(9)

11/04/2014

M. Malatesta 3-Gestione della memoria-15 17

3. Memoria virtuale

- gestione

Nascevano, però altri due problemi. Il SO deve:

 conoscere la dimensione della parte di programma da tenere in memoria centrale;

 decidere come assegnare la memoria centrale ai vari processi.

18

3. Memoria virtuale

- gestione

Conoscere la dimensione della parte di programma da tenere in memoria centrale è un parametro critico poichè:

 una quantità troppo piccola, richiederebbe molti trasferimenti dalla memoria secondaria alla RAM per procedere con l’esecuzione;

 una quantità troppo grande diminuirebbe il numero dei possibili processi

presenti in memoria.

(10)

11/04/2014

M. Malatesta 3-Gestione della memoria-15 19

3. Memoria virtuale

- segmentazione e paginazione

Per assegnare la RAM ai processi, il SO può procedere in due modi:

 suddividere la RAM in parti uguali alla parte di programma da caricare (segmentazione);

 in parti di dimensione fissa più grandi di ogni singola parte di programma (paginazione).

Ciascuna delle due tecniche presenta pregi e difetti:

 la prima, porta la memoria a mettere a disposizione segmenti sempre più piccoli producendo frammentazione della memoria.

 la seconda tecnica, evita la frammentazione ma, inevitabilmente, spreca memoria visto che assegna sempre al processo più memoria di quella necessaria.

3. Memoria virtuale

- segmentazione e paginazione

Nell’organizzare la memoria virtuale, può di nuovo essere utilizzata la tecnica della segmentazione, come descritta in precedenza. Se, al momento della richiesta di un dato segmento, questo non fosse presente in memoria RAM, viene caricato dal disco.

Anche la tecnica della paginazione, ossia ripartire la memoria in pagine della stessa lunghezza, come descritta in precedenza, viene applicata spesso congiuntamente alla memoria virtuale.

Anche in questo caso, se, al momento della richiesta di una pagine, questa non fosse presente in memoria RAM, essa deve essere caricata dal disco.

In molti casi si fondono i vantaggi derivanti dalle due tecniche e si impiega

una memoria virtuale segmentata e paginata (tecnica usata dai processori

INTEL).

(11)

11/04/2014

M. Malatesta 3-Gestione della memoria-15 21

Argomenti

1. Allocazione dei programmi 2. Paginazione

3. Segmentazione 4. Memoria virtuale

- swapping

- multiprogrammazione - gestione

- segmentazione e paginazione

22

Altre fonti di informazione

 A. Lorenzi, D.Rossi – I fondamenti della programmazione-ATLAS

Riferimenti

Documenti correlati

III) illegittimità della sentenza per errata valutazione dei presupposti in fatto e diritto - illegittimità della sentenza per violazione ed errata applicazione di legge e

- del Decreto Dirigenziale n. del 22.06.2020, limitatamente alla parte in cui è stata disposta l’ammissione dell’offerta di Lavit nella procedura aperta indetta dalla Regione

| Un algoritmo viene valutato facendolo operare su una particolare stringa di riferimenti alla memoria e calcolando il numero di page fault.. | In tutti i nostri esempi la stringa

Processo attraverso il quale l’organismo mantiene il proprio ambiente interno relativamente stabile a fronte di perturbazioni interne o

È prevista una quota di iscrizione pari ad € 150 per giovani laureati che non abbiano compiuto il ventottesimo anno di età alla scadenza del termine per le iscrizioni

La vincolatività del precedente giurisprudenziale nella prospettiva del diritto costituzionale F RANCESCO V IGANÒ - Giudice della Corte Costituzionale. Il ruolo del precedente

Del resto, come ha evidenziato la Corte costituzionale, nella ipotesi di “orientamento stabilmente consolidato della giurisprudenza”, la norma, come interpretata

L’osservanza del precedente, inoltre, assicura la prevedibilità delle decisioni giudiziarie e costituisce la base per il formarsi della giurisprudenza, ovvero del