Gestione della Memoria

17
1 Gestione della Memoria Capitolo 4 4.1 Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di sostituzione 4.6 Criteri di progetto per la paginazione 4.7 Case study: Unix 4.8 Case study: Windows 2000

description

Gestione della Memoria. 4.1 Introduzione alla gestione della memoria 4.2 Swapping 4.3 Memoria virtuale 4.4 Implementazione 4.5 Algoritmi di sostituzione 4.6 Criteri di progetto per la paginazione 4.7 Case study: Unix 4.8 Case study: Windows 2000. Capitolo 4. Organizzazione della Memoria. - PowerPoint PPT Presentation

Transcript of Gestione della Memoria

Page 1: Gestione della Memoria

1

Gestione della Memoria

Capitolo 4

4.1 Introduzione alla gestione della memoria4.2 Swapping4.3 Memoria virtuale4.4 Implementazione4.5 Algoritmi di sostituzione4.6 Criteri di progetto per la paginazione4.7 Case study: Unix4.8 Case study: Windows 2000

Page 2: Gestione della Memoria

2

Organizzazione della Memoria

• Spazio logico dei processi A e B e memoria fisica• Condivisione dell’area testo • Unix supporta spazi separati per istruzioni e dati

Process A

Process B

Page 3: Gestione della Memoria

3

Condivisione di File

Two processes can share a mapped file.

Un file mappato simultaneamente in due processi

Page 4: Gestione della Memoria

4

System Call per la Gestione della Memoria

• s è un codice di errore• a e addr sono indirizzi di memoria• len è una lunghezza• prot controlla la protezione• flags bit vari• fd è un descrittore di file• offset è un offset all’interno di un file

Page 5: Gestione della Memoria

5

Esempio di file mappato in memoria#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/mman.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>

int main (void) { int fd; char *mem; int bytes_in_page; bytes_in_page = getpagesize(); /* numero di byte nella pagina */ fd = open(”nomeFile",O_RDWR); mem = mmap (0,bytes_in_page,PROT_READ | PROT_WRITE,MAP_SHARED,fd,0); strcpy(mem,”una stringa"); printf("%s\n", mem); ….. …... return 0;}

Page 6: Gestione della Memoria

6

Paginazione in UNIX

The core map in 4BSD.

• Si usa paginazione su domanda • La tabella principale (core map) ha un elemento per ogni pagina fisica

Page 7: Gestione della Memoria

7

Algoritmo di Sostituzione in UNIX (BSD)

• Eseguito dal page daemon• Cerca di mantenere almeno lotsfree pagine libere• Usa l’algoritmo Two-handed clock

• Una variante dell’algoritmo Clock• Con allocazione globale

• Se non è possibile mantenere lotsfree pagine libere si fa lo swapping di qualche processo

• Si fa lo swap-out di processi idle da più tempo e in alternativa di processi grossi

• Swap-in se ci sono pagine libere a sufficienza• Il processo viene scelto in base a vari parametri

Page 8: Gestione della Memoria

8

Paginazione in Linux (1)

Linux usa tabelle delle pagine a tre livelli

Page 9: Gestione della Memoria

9

Paginazione in Linux (2)

Operation of the buddy algorithm.

Algoritmo Buddy

Page 10: Gestione della Memoria

10

Gestione della Memoria

Capitolo 4

4.1 Introduzione alla gestione della memoria4.2 Swapping4.3 Memoria virtuale4.4 Implementazione4.5 Algoritmi di sostituzione4.6 Criteri di progetto per la paginazione4.7 Case study: Unix4.8 Case study: Windows 2000

Page 11: Gestione della Memoria

11

Concetti Fondamentali (1)

• Layout di spazi di indirizzamento logici per 3 processi• Le aree bianche sono private • Le aree scure sono condivise

Page 12: Gestione della Memoria

12

Concetti Fondamentali(2)

• Aree mappate con le rispettive pagine su disco• Il file lib.dll è mappato in due spazi di indirizzamento

contemporaneamente

Page 13: Gestione della Memoria

13

Concetti Fondamentali(3)Ogni pagina logica può essere :• free : se non è assegnata a nessuna regione

– un accesso a una pagina free da sempre un page fault

• committed : se appartiene alle pagine in uso di una regione già mappata – un accesso a una pagina committed risulta in un page fault solo se la pagina corrispondente non si trova in memoria centrale

• reserved : è una pagina non ancora in uso ma che è stata riservata per espandere una regione– un accesso a una pagina reserved da sempre un page fault– le pagine reserved non possono essere utilizzate per mappare nuove regioni– es: si possono riservare pagine per la crescita dello stack

Page 14: Gestione della Memoria

14

System Calls per la Gestione della Memoria

Le principali funzioni delle API Win32 per la gestione della memoria in Windows 2000

Page 15: Gestione della Memoria

15

Implementazione della Gestione della Memoria

Una entry della tabella delle pagine sul Pentium

Page 16: Gestione della Memoria

16

Diversi tipi di Page FaultI page fault in Windows sono di 5 diversi tipi :

1. Pagina non committed• fatal error

2. Violazione di protezione • fatal error

3. Scrittura di una pagina condivisa• viene creata una copia locale

4. Lo stack ha bisogno di nuovo spazio• alloca una nuova pagina per lo stack

5. Pagina committed ma non in memoria• normale gestione del page fault

Page 17: Gestione della Memoria

17

Algoritmo di Sostituzione• Basato sull’algoritmo working set

• Con parametri min e max dimensione del working set• Allocazione (fondamentalmente) locale

• Se la dimensione del working set corrente è x, in caso di page fault:

• Se x<min una pagina è caricata nel working set• Se x>max si elimina una pagina dal working set (ma

non dalla memoria)• Utilizza il demone balance set manager per

mantenere un certo numero di pagine libere • viene svegliato una volta al secondo