Gestione della Memoria 1 Introduzione alla gestione della

  • Slides: 21
Download presentation
Gestione della Memoria 1. Introduzione alla gestione della memoria 2. Swapping 3. Memoria virtuale

Gestione della Memoria 1. Introduzione alla gestione della memoria 2. Swapping 3. Memoria virtuale 4. Implementazione 5. Algoritmi di sostituzione 1

Gestione della Memoria • Idealmente la memoria dovrebbe essere – grande – veloce –

Gestione della Memoria • Idealmente la memoria dovrebbe essere – grande – veloce – non volatile • Gerarchia di memorie – Disco: capiente, lento, non volatile ed economico – Memoria principale: volatile, mediamente grande, veloce e costosa – Cache: volatile, veloce, piccola e costosa • La gerarchia di memorie e’ gestita dal “memory manager” (gestore della memoria) 2

Tipica Gerarchia di Memoria • Sia il tempo di accesso che la capacità sono

Tipica Gerarchia di Memoria • Sia il tempo di accesso che la capacità sono approssimazioni abbastanza grossolane 3

Modelli di gestione della memoria • Modelli che non spostano i processi dalla RAM

Modelli di gestione della memoria • Modelli che non spostano i processi dalla RAM una volta iniziata l’esecuzione – monoprogrammazione – multiprogrammazione a partizioni fisse • Modelli che spostano un processo in esecuzione da RAM a disco – swapping – paginazione 4

Introduzione alla Gestione della Memoria Ambiente monoprogrammato senza swapping nè paginazione Tre modi semplici

Introduzione alla Gestione della Memoria Ambiente monoprogrammato senza swapping nè paginazione Tre modi semplici di organizzare la memoria - un sistema operativo con un solo processo utente 5

Ambiente multiprogrammato con partizioni fisse • Partizioni fisse – Con code dei job distinte

Ambiente multiprogrammato con partizioni fisse • Partizioni fisse – Con code dei job distinte per ogni partizione – Con unica coda dei job 6

Rilocazione e Protezione • Non si conosce l’istante nel quale il programma verrà caricato

Rilocazione e Protezione • Non si conosce l’istante nel quale il programma verrà caricato in memoria – Gli indirizzi dei dati e del codice non possono essere assoluti – E’ necessario mantenere separati gli spazi di indirizzamento dei processi • Registri Base e Limite – Indirizzo fisico = indirizzo logico + registro base – Errore se indirizzo logico > registro limite 7

Spazio di indirizzamento • Come è organizzata la memoria accessibile ad un programma in

Spazio di indirizzamento • Come è organizzata la memoria accessibile ad un programma in esecuzione ? 232 - 1 Stack Pila di FRAME, uno per ogni chiamata di funzione da cui non abbiamo ancora fatto ritorno Area vuota Variabili globali Data 0 Text Traduzione in assembler delle funzioni che compongono il programma 8

Condivisione della RAM • Tipicamente la RAM contiene lo spazio di indirizzamento di più

Condivisione della RAM • Tipicamente la RAM contiene lo spazio di indirizzamento di più processi : – es. organizzazione tipica della memoria negli SO degli anni ‘ 70 (es IBM 360) Ampiezza. RAM - 1 Spazio processo 3 Spazio processo 2 Una possibile organizzazione della RAM con più processi attivi contemporaneamente Spazio processo 1 0 Sistema Operativo Area riservata, non accessibile in modalità utente 9

Condivisione della RAM (2) • Problemi legati alla condivisione della RAM : (1) protezione

Condivisione della RAM (2) • Problemi legati alla condivisione della RAM : (1) protezione dello spazio di indirizzamento di processi diversi Spazio processo 3 Spazio processo 2 Il processo 2 non deve poter accedere agli indirizzi di RAM al di fuori della sua area Spazio processo 1 Sistema Operativo 10

Condivisione della RAM (2) • Problemi legati alla condivisione della RAM : (2) problema

Condivisione della RAM (2) • Problemi legati alla condivisione della RAM : (2) problema della rilocazione Il compilatore/linker assume che lo spazio di indirizzamento parta dall’indirizzo 0 Ma, P 2 è caricato ad un indirizzo base 2 != 0 Spazio processo 3 base 2 Stack Spazio processo 2 Area vuota Spazio processo 1 Data Sistema Operativo Text max 0 11

Condivisione della RAM (3) • Problemi legati alla condivisione della RAM : (2) problema

Condivisione della RAM (3) • Problemi legati alla condivisione della RAM : (2) problema della rilocazione (cont. ) Indirizzi di istruzioni e dati devono essere incrementati (rilocazione) di base 2 Spazio processo 3 base 2 Spazio processo 2 Stack base 2 + X max Area vuota X Spazio processo 1 Data Sistema Operativo Text 0 12

Condivisione della RAM (4) Indirizzo iniziale del programma in RAM base PC Ampiezza dello

Condivisione della RAM (4) Indirizzo iniziale del programma in RAM base PC Ampiezza dello spazio di indirizzamento + + Addizionatore Indirizzo (alla memoria) Confrontatore Fault (accesso oltre il limite) limite • È necessario dell’Hw aggiuntivo • Una possibile soluzione (usata nella serie IBM 360) 13

Condivisione della RAM (5) Risolve il problema della rilocazione Indirizzo iniziale del programma in

Condivisione della RAM (5) Risolve il problema della rilocazione Indirizzo iniziale del programma in RAM base PC + + Addizionatore Indirizzo (alla memoria) Confrontatore Fault (accesso oltre il limite) limite Ampiezza dello spazio di indirizzamento 14

Condivisione della RAM (6) Indirizzo iniziale del programma in RAM base PC + +

Condivisione della RAM (6) Indirizzo iniziale del programma in RAM base PC + + Addizionatore Indirizzo (alla memoria) Confrontatore Fault (accesso oltre il limite) limite Ampiezza dello spazio di indirizzamento Risolve il problema della protezione 15

Swapping (1) • Caricamento in partizioni variabili • L’allocazione della memoria cambia quando: –

Swapping (1) • Caricamento in partizioni variabili • L’allocazione della memoria cambia quando: – I processi vengono caricati in memoria – I processi rilasciano la memoria 16

Swapping (2) • Rilocazione e protezione possono usare ancora i registri base e limite

Swapping (2) • Rilocazione e protezione possono usare ancora i registri base e limite • Problema: la frammentazione della memoria – molte aree piccole – compattazione • Problema: stabilire quanto spazio allocare per ogni processo – area dati, stack • Problema: come tenere traccia della memoria libera 17

Swapping (3) a) Allocare dinamicamente memoria nel segmento dati b) Allocare dinamicamente memoria nello

Swapping (3) a) Allocare dinamicamente memoria nel segmento dati b) Allocare dinamicamente memoria nello stack e nel segmento dati 18

Gestione della Memoria con Bit Map a) Porzione di memoria con 5 processi e

Gestione della Memoria con Bit Map a) Porzione di memoria con 5 processi e 3 aree libere • Le suddivisioni indicano l’unità di allocazione b) Bit Map corrispondente c) Lista di Allocazione corrispondente 19

Gestione della Memoria con Liste Quattro possibili combinazioni di allocazione in seguito alla terminazione

Gestione della Memoria con Liste Quattro possibili combinazioni di allocazione in seguito alla terminazione del processo X 20

Allocazione della Memoria Allocazione di un blocco di memoria di dimensione x: • First

Allocazione della Memoria Allocazione di un blocco di memoria di dimensione x: • First Fit – Individua la prima porzione di memoria libera di dimensione x • Best Fit – Individua la più piccola porzione di memoria libera di dimensione x 3 21