36
Gestione della Gestione della memoria memoria A. Ferrari A. Ferrari

Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Embed Size (px)

Citation preview

Page 1: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Gestione della Gestione della memoriamemoria

A. FerrariA. Ferrari

Page 2: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Processi e Processi e memoriamemoria

Tutti i processi in esecuzione Tutti i processi in esecuzione necessitano della memoria centrale per necessitano della memoria centrale per memorizzare: memorizzare:

le istruzioni che fanno parte del codicele istruzioni che fanno parte del codice

i dati su cui operanoi dati su cui operano

Page 3: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

IndirizziIndirizziIndirizzi simboliciIndirizzi simbolici

nel codice sorgente gli indirizzi sono espressi in modo nel codice sorgente gli indirizzi sono espressi in modo simbolicosimbolico

etichette simboliche (label) in assembleretichette simboliche (label) in assembleridentificatori di variabili nei linguaggi ad alto livelloidentificatori di variabili nei linguaggi ad alto livello

Indirizzi logiciIndirizzi logicil'assemblatore (o il compilatore) trasforma gli indirizzi l'assemblatore (o il compilatore) trasforma gli indirizzi simbolici in valori binari che non rappresentano ancora simbolici in valori binari che non rappresentano ancora però un vero indirizzo di memoria. però un vero indirizzo di memoria. In genere gli indirizzi logici sono calcolati a partire da un In genere gli indirizzi logici sono calcolati a partire da un indirizzo iniziale che vale in genere zero (indirizzi binari indirizzo iniziale che vale in genere zero (indirizzi binari logici relativi a zero)logici relativi a zero)

Indirizzi virtualiIndirizzi virtualiil linker completa i riferimenti ai vari moduli e genera il linker completa i riferimenti ai vari moduli e genera indirizzi che non sono ancora però riferimenti fisici alla indirizzi che non sono ancora però riferimenti fisici alla memoriamemoria

Page 4: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

RilocazioneRilocazioneIndirizzi fisiciIndirizzi fisici

Gli indirizzi virtuali possono essere Gli indirizzi virtuali possono essere finalmente tradotti in indirizzi di finalmente tradotti in indirizzi di memoria fisica.memoria fisica.

Questa operazione di traduzione, in Questa operazione di traduzione, in sostanza, costituisce uno dei compiti sostanza, costituisce uno dei compiti fondamentali del gestore della memoria.fondamentali del gestore della memoria.

La traduzione degli indirizzi virtuali in La traduzione degli indirizzi virtuali in indirizzi fisici è definita rilocazioneindirizzi fisici è definita rilocazione

Page 5: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Rilocazione e Rilocazione e protezioneprotezione

Per evitare che un processo faccia Per evitare che un processo faccia riferimento a zone di memoria riferimento a zone di memoria appartenenti ad alti processi molti sistemi appartenenti ad alti processi molti sistemi utilizzano registri speciali di utilizzano registri speciali di protezione(registri limite) per controllare protezione(registri limite) per controllare ed eventualmente inibire riferimenti non ed eventualmente inibire riferimenti non autorizzati. autorizzati.

Questi metodi sono ottenibili con sistemi Questi metodi sono ottenibili con sistemi dotati di MMU e i registri base e limite ad dotati di MMU e i registri base e limite ad esempio possono essere considerati esempio possono essere considerati elementi della MMU del sistema.elementi della MMU del sistema.

Page 6: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Memory Memory Management Unit Management Unit

(MMU)(MMU)E' un componente hardware che gestisce E' un componente hardware che gestisce le richieste di accesso alla memoria le richieste di accesso alla memoria generate dalla CPUgenerate dalla CPU

Una Memory Management Unit (MMU) ha Una Memory Management Unit (MMU) ha vari compiti, tra cui la traduzione degli vari compiti, tra cui la traduzione degli indirizzi virtuali in indirizzi fisici, la indirizzi virtuali in indirizzi fisici, la protezione della memoria, il controllo protezione della memoria, il controllo della cache della CPU ...della cache della CPU ...

La MMU è integrata nei moderni La MMU è integrata nei moderni microprocessorimicroprocessori

Page 7: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Rilocazione Rilocazione staticastatica

La rilocazione statica è quel meccanismo per La rilocazione statica è quel meccanismo per cui il caricatore del SO, dopo aver letto cui il caricatore del SO, dopo aver letto l'intero programma e prima di porlo in l'intero programma e prima di porlo in esecuzione, rialloca in memoria tutto il codice esecuzione, rialloca in memoria tutto il codice adattando gli indirizzi virtuali alle posizioni adattando gli indirizzi virtuali alle posizioni attualmente disponibili nella memoria fisica.attualmente disponibili nella memoria fisica.

Il caricatore in questo caso viene detto Il caricatore in questo caso viene detto rilocante; dopo la rilocazione statica il rilocante; dopo la rilocazione statica il programma in memoria ha assunto riferimenti programma in memoria ha assunto riferimenti di memoria fisica che non potranno più di memoria fisica che non potranno più cambiare per tutta la durata dell'esecuzione.cambiare per tutta la durata dell'esecuzione.

Page 8: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Rilocazione Rilocazione dinamicadinamica

Il SO rialloca il codice durante l'esecuzione del Il SO rialloca il codice durante l'esecuzione del programma, utilizzando elementi di MMU.programma, utilizzando elementi di MMU.

In questo caso il caricatore non riloca gli indirizzi In questo caso il caricatore non riloca gli indirizzi virtuali del linker ma li carica in memoria così come il virtuali del linker ma li carica in memoria così come il linker li ha generati nel file eseguibile: vengono quindi linker li ha generati nel file eseguibile: vengono quindi caricati gli indirizzi virtuali generati dal linker. caricati gli indirizzi virtuali generati dal linker.

Run-time ogni indirizzo viene tradotto nel Run-time ogni indirizzo viene tradotto nel corrispondente indirizzo fisico prima di accedere alla corrispondente indirizzo fisico prima di accedere alla memoria.memoria.

A differenza della rilocazione statica la rilocazione A differenza della rilocazione statica la rilocazione dinamica permette ai programmi di essere caricati in dinamica permette ai programmi di essere caricati in aree di memoria differenti durante l'esecuzione; sarà aree di memoria differenti durante l'esecuzione; sarà sufficiente modificare le informazioni contenute nel sufficiente modificare le informazioni contenute nel meccanismo hardware che realizza la funzione di meccanismo hardware che realizza la funzione di rilocazione (meccanismo di MMU).rilocazione (meccanismo di MMU).

Page 9: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

AllocazioneAllocazioneTecnica con cui il SO concede ed assegna Tecnica con cui il SO concede ed assegna memoria ai programmi.memoria ai programmi.

Allocazione statica Allocazione statica processi caricati in memoria che sono allocati processi caricati in memoria che sono allocati una sola volta e sono revocati dalla memoria una sola volta e sono revocati dalla memoria solo al termine dell'esecuzionesolo al termine dell'esecuzione

Allocazione dinamica Allocazione dinamica processi che in esecuzione possono vedersi processi che in esecuzione possono vedersi revocata e riallocata la memoria più volte, in revocata e riallocata la memoria più volte, in genere con operazioni di swapping da e per genere con operazioni di swapping da e per la memoria secondaria (swap in e swap out)la memoria secondaria (swap in e swap out)

Page 10: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Memoria e Memoria e multiprocessingmultiprocessingPiù processi sono attivi Più processi sono attivi contemporaneamentecontemporaneamente

Ogni processo necessita di memoria per Ogni processo necessita di memoria per le istruzioni e i datile istruzioni e i dati

Il Sistema Operativo deve gestire Il Sistema Operativo deve gestire la protezione dei dati e delle istruzioni la protezione dei dati e delle istruzioni relativi a ogni singolo processorelativi a ogni singolo processo

il riutilizzo delle zone di memoria non più il riutilizzo delle zone di memoria non più utilizzate dai processiutilizzate dai processi

Page 11: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Memoria Memoria suddivisa in suddivisa in

settorisettoriA ogni processo viene A ogni processo viene assegnato un settore assegnato un settore di memoria compreso di memoria compreso fra un indirizzo fra un indirizzo iniziale e uno finaleiniziale e uno finale

Il gestore della Il gestore della memoria gestisce memoria gestisce una tabella di una tabella di indirizzi in cui associa indirizzi in cui associa ad ogni processo il ad ogni processo il suo indirizzo iniziale suo indirizzo iniziale e finalee finale

Page 12: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Settori: indirizziSettori: indirizziIndirizzo logico (generato staticamente)Indirizzo logico (generato staticamente)

Il compilatore assume che l'indirizzo di Il compilatore assume che l'indirizzo di partenza per i dati e le istruzioni sia partenza per i dati e le istruzioni sia l'indirizzo 0 (zero)l'indirizzo 0 (zero)

Indirizzo fisico (generato dinamicamente)Indirizzo fisico (generato dinamicamente)In fase di esecuzione gli indirizzi vengono In fase di esecuzione gli indirizzi vengono traslati sommando l'indirizzo di partenza del traslati sommando l'indirizzo di partenza del settore associato al processo (operazione settore associato al processo (operazione effettuata run time dalla MMU)effettuata run time dalla MMU)Un indirizzo di memoria contiene una parte Un indirizzo di memoria contiene una parte che identifica un settore, e una parte che che identifica un settore, e una parte che specifica l'offset entro il settore.specifica l'offset entro il settore.

Page 13: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Settori: problemiSettori: problemiIl problema principale è la frammentazione Il problema principale è la frammentazione della memoria:della memoria:

quando termina un processo viene rilasciato quando termina un processo viene rilasciato il suo settore di memoria che può essere il suo settore di memoria che può essere associato a un nuovo processo che richiede associato a un nuovo processo che richiede una quantità di memoria minore o uguale a una quantità di memoria minore o uguale a quella rilasciataquella rilasciata

le parti inutilizzate dei settori portano a una le parti inutilizzate dei settori portano a una progressiva frammentazione (potrebbe progressiva frammentazione (potrebbe essere disponibile memoria sufficiente per essere disponibile memoria sufficiente per allocare un processo ma non in un settore allocare un processo ma non in un settore continuo)continuo)

Page 14: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Strategie di Strategie di allocazioneallocazione

Le strategie di allocazione stabiliscono il criterio scelto per Le strategie di allocazione stabiliscono il criterio scelto per creare o scegliere le partizioni per i programmi che le creare o scegliere le partizioni per i programmi che le richiedono.richiedono.

First fitFirst fitIndividua la prima partizione atta a contenere il programma e, Individua la prima partizione atta a contenere il programma e, quindi, tra le partizioni disponibili, viene scelta quella con quindi, tra le partizioni disponibili, viene scelta quella con indirizzi più bassi. Tale tecnica è efficiente per mantenere indirizzi più bassi. Tale tecnica è efficiente per mantenere compattate le zone rilasciate.compattate le zone rilasciate.

Best firstBest firstRicerca nella tabella la partizione più piccola atta a contenere Ricerca nella tabella la partizione più piccola atta a contenere il programma. In questo modo si vengono a creare numerose il programma. In questo modo si vengono a creare numerose partizioni libere molto ristrette e quindi si aumenta la partizioni libere molto ristrette e quindi si aumenta la frammentazione.frammentazione.

Worst fitWorst fitTra le partizioni libere atte a contenere il programma, sceglie Tra le partizioni libere atte a contenere il programma, sceglie quella più ampia, per attenuare l'effetto della quella più ampia, per attenuare l'effetto della frammentazione.frammentazione.

Page 15: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

CompattazioneCompattazioneIn alcuni casi la riduzione della In alcuni casi la riduzione della frammentazione si può ottenere con una frammentazione si può ottenere con una tecnica detta di compattazione della tecnica detta di compattazione della memoria.memoria.

In questo modo il SO predispone un In questo modo il SO predispone un algoritmo che periodicamente controlla lo algoritmo che periodicamente controlla lo stato della memoria e quando necessario stato della memoria e quando necessario interrompe le esecuzioni per compattare in interrompe le esecuzioni per compattare in modo contiguo tutta la memoria allocata modo contiguo tutta la memoria allocata eliminando i buchi e aggiornando la tabella eliminando i buchi e aggiornando la tabella della memoria. della memoria.

Page 16: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

PaginazionePaginazioneLa memoria principale viene «vista» dal La memoria principale viene «vista» dal processore come un array di settori processore come un array di settori aventi tutti la stessa dimensione aventi tutti la stessa dimensione predefinita.predefinita.

Il sistema operativo assegna a ogni Il sistema operativo assegna a ogni processo in esecuzione un numero di processo in esecuzione un numero di pagine sufficiente per contenere il codice pagine sufficiente per contenere il codice e i dati.e i dati.

Le pagine non sono necessariamente Le pagine non sono necessariamente contigue.contigue.

Page 17: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Tabella delle Tabella delle paginepagine

Page 18: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Organizzazione in Organizzazione in paginepagine

Page 19: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Traslazione degli Traslazione degli indirizziindirizzi

Per la traslazione degli indirizzi ogni processo è Per la traslazione degli indirizzi ogni processo è dotato di una tabella di corrispondenza fra dotato di una tabella di corrispondenza fra pagina logica e pagina fisicapagina logica e pagina fisica

Page 20: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

MMU e MMU e paginazionepaginazione

Il compito della MMU è più complessoIl compito della MMU è più complesso

Per la traduzione da indirizzo logico a Per la traduzione da indirizzo logico a indirizzo fisico:indirizzo fisico:

si individua la pagina logicasi individua la pagina logica

poi si individua la corrispondente pagina poi si individua la corrispondente pagina fisicafisica

Page 21: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Dimensione delle Dimensione delle paginepagine

Se la dimensione di una pagina è una potenza di 2 gli Se la dimensione di una pagina è una potenza di 2 gli indirizzi vengono di fatto spezzati in due:indirizzi vengono di fatto spezzati in due:

i primi bit determinano la paginai primi bit determinano la paginai successivi determinano l’indirizzo interno alla i successivi determinano l’indirizzo interno alla pagina (offset)pagina (offset)

La traslazione sostituisce i bit relativi alla pagina La traslazione sostituisce i bit relativi alla pagina fisica q quelli relativi alla pagina logica e lascia fisica q quelli relativi alla pagina logica e lascia inalterati i restanti bitinalterati i restanti bit

Esempio: indirizzo logico (pagine da 8Kb)Esempio: indirizzo logico (pagine da 8Kb)0001 - 0001 0001 0000 (pagina 1, indirizzo 0x1110)0001 - 0001 0001 0000 (pagina 1, indirizzo 0x1110)

Indirizzo fisico:Indirizzo fisico:0100 – 0001 0001 0000 (pagina 4, indirizzo 0x1110)0100 – 0001 0001 0000 (pagina 4, indirizzo 0x1110)

Page 22: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Il compito della Il compito della MMUMMU

Page 23: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

FrammentazioneFrammentazioneIl problema della frammentazione è Il problema della frammentazione è risoltorisolto

Al termine di un processo vengono Al termine di un processo vengono “liberate” tutte le pagine utilizzate da “liberate” tutte le pagine utilizzate da questoquesto

Un nuovo processo ha a disposizione Un nuovo processo ha a disposizione tutte le pagine rimaste “libere”tutte le pagine rimaste “libere”

Page 24: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Processi in Processi in memoriamemoria

Page 25: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Dimensione della Dimensione della tabella delle tabella delle

paginepagineGli attuali processori indirizzano memorie Gli attuali processori indirizzano memorie di grandi dimensioni e la dimensione della di grandi dimensioni e la dimensione della tabella delle pagine risulta troppo grande tabella delle pagine risulta troppo grande per essere contenuta nella MMUper essere contenuta nella MMU

Per esempio con RAM da 4Gb e pagine da Per esempio con RAM da 4Gb e pagine da 4Kb (sia Windows che Linux utilizzano 4Kb (sia Windows che Linux utilizzano pagine da 4Kb) si hanno più di un milione pagine da 4Kb) si hanno più di un milione di paginedi pagine

La tabella viene quindi memorizzata nella La tabella viene quindi memorizzata nella RAM e solo una copia di una piccola parte RAM e solo una copia di una piccola parte di questa risiede nella MMUdi questa risiede nella MMU

Page 26: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Memoria virtualeMemoria virtualeI processi attivi in un sistema operativo multitasking I processi attivi in un sistema operativo multitasking sono molti ed è probabile che il numero complessivo sono molti ed è probabile che il numero complessivo delle pagine richieste da tutti i processi sia superiore al delle pagine richieste da tutti i processi sia superiore al numero di pagine di memoria effettivamente disponibilinumero di pagine di memoria effettivamente disponibili

Praticamente tutti i moderni sistemi operativi Praticamente tutti i moderni sistemi operativi implementano la tecnica della “memoria virtuale”: il implementano la tecnica della “memoria virtuale”: il gestore della memoria mette a disposizione un numero gestore della memoria mette a disposizione un numero di pagine superiore a quelle presenti nella memoria di pagine superiore a quelle presenti nella memoria fisicafisica

Alcune pagine sono salvate temporaneamente nella Alcune pagine sono salvate temporaneamente nella memoria di massa (normalmente hard disk)memoria di massa (normalmente hard disk)

La memoria di massa utilizzata a questo scopo è La memoria di massa utilizzata a questo scopo è comunemente chiamata, in ambiente Unix-Linux, swap o comunemente chiamata, in ambiente Unix-Linux, swap o spazio di swap, mentre, in ambiente Windows, è spazio di swap, mentre, in ambiente Windows, è chiamata file di paging. chiamata file di paging.

Page 27: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Pagine logiche e Pagine logiche e fisichefisiche

Page 28: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

PrestazioniPrestazioniLa memoria di massa ha tempi di accesso La memoria di massa ha tempi di accesso estremamente più lenti della memoria estremamente più lenti della memoria centrale:centrale:

memoria centrale 50-60 nanosecondi (circa memoria centrale 50-60 nanosecondi (circa 1010-8-8 secondi) secondi)

memoria di massa 2-4 microsecondi (circa 10memoria di massa 2-4 microsecondi (circa 10--

33 secondi) secondi)

E’ necessario quindi ridurre al minimo le E’ necessario quindi ridurre al minimo le operazioni di swapping (spostamento delle operazioni di swapping (spostamento delle pagine dallo spazio di swap alla memoria pagine dallo spazio di swap alla memoria fisica)fisica)

Page 29: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Località del Località del codicecodice

Normalmente un processo in ogni fase Normalmente un processo in ogni fase della sua esecuzione fa riferimento a della sua esecuzione fa riferimento a istruzioni e dati contenuti in poche istruzioni e dati contenuti in poche pagine di memoria contigue.pagine di memoria contigue.

Località delle istruzioni: l’esempio Località delle istruzioni: l’esempio classico è un ciclo che ripete più volte classico è un ciclo che ripete più volte istruzioni consecutiveistruzioni consecutive

Località dei dati: la struttura più Località dei dati: la struttura più comunemente utilizzata è l’array in cui i comunemente utilizzata è l’array in cui i dati sono contigui in memoriadati sono contigui in memoria

Page 30: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Tabella delle Tabella delle paginepagine

La MMU trasla gli La MMU trasla gli indirizziindirizzi

Se la pagina non è Se la pagina non è presente in memoria presente in memoria (page-fault) il processo (page-fault) il processo viene posto in stato di viene posto in stato di wait in attesa che la wait in attesa che la pagina venga caricata pagina venga caricata in memoriain memoria

Il gestore della memoria Il gestore della memoria recupera la pagina, recupera la pagina, aggiorna la tabella delle aggiorna la tabella delle pagine e riporta il pagine e riporta il processo in readyprocesso in ready

Page 31: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Page-faultPage-faultOgni page fault rallenta drasticamente Ogni page fault rallenta drasticamente l’esecuzione di un processo che deve l’esecuzione di un processo che deve transitare dallo stato di wait e deve transitare dallo stato di wait e deve attendere il caricamento della pagina attendere il caricamento della pagina dalla memoria di massadalla memoria di massa

Se non sono disponibili pagine libere in Se non sono disponibili pagine libere in memoria centrale è necessario memoria centrale è necessario sostituire una pagina dello stesso sostituire una pagina dello stesso processo (allocazione locale) o di un processo (allocazione locale) o di un altro processo (allocazione globale)altro processo (allocazione globale)

Page 32: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Politiche per la Politiche per la gestione del gestione del page-faultpage-faultFIFO (First In First Out)FIFO (First In First Out)

la pagina da rimuovere è la prima che è stata la pagina da rimuovere è la prima che è stata caricata. L’idea è che le pagine “vecchie” non caricata. L’idea è che le pagine “vecchie” non vengano più utilizzate in futurovengano più utilizzate in futuro

LRU (Least Recently Used) LRU (Least Recently Used) la pagina da rimuovere è quella inutilizzata da la pagina da rimuovere è quella inutilizzata da più tempo. L’idea è che se non è utilizzata da più tempo. L’idea è che se non è utilizzata da molto tempo non verrà più utilizzatamolto tempo non verrà più utilizzata

LFU (Least Frequently Used)LFU (Least Frequently Used)la pagina da rimuovere è quella meno la pagina da rimuovere è quella meno utilizzata. L’idea è che se è stata poco utilizzata. L’idea è che se è stata poco utilizzata sarà poco utilizzata anche in futuroutilizzata sarà poco utilizzata anche in futuro

Page 33: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Strumenti per la Strumenti per la gestione delle gestione delle

politichepoliticheFIFO FIFO è sufficiente memorizzare per ogni pagina il è sufficiente memorizzare per ogni pagina il momento del caricamento in memoriamomento del caricamento in memoria

LRULRUdeve essere memorizzato il tempo ad ogni accesso deve essere memorizzato il tempo ad ogni accesso alla paginaalla pagina

LFULFUdeve essere memorizzato un contatore deve essere memorizzato un contatore incrementato ad ogni accesso alla paginaincrementato ad ogni accesso alla paginaper semplificare la gestione si utilizza un bit che per semplificare la gestione si utilizza un bit che viene settato se di fa accesso a una pagina (i bit viene settato se di fa accesso a una pagina (i bit vengono periodicamente azzerati) la politica vengono periodicamente azzerati) la politica diventa quindi NRU (Not Recently Used)diventa quindi NRU (Not Recently Used)

Page 34: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

SwappingSwappingSe una pagina viene eliminata dalla Se una pagina viene eliminata dalla memoria centrale deve essere copiata memoria centrale deve essere copiata sulla memoria di massasulla memoria di massa

Un “dirty bit” settato se la pagina viene Un “dirty bit” settato se la pagina viene modificata può essere utilizzato per modificata può essere utilizzato per evitare questa fase di riscrittura su evitare questa fase di riscrittura su disco (molto spesso per le pagine di disco (molto spesso per le pagine di codice)codice)

Page 35: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Codice condivisoCodice condiviso• Molti sistemi operativi prevedono l’uso Molti sistemi operativi prevedono l’uso

di funzioni condivise fra vari processidi funzioni condivise fra vari processi– linux – shared objectslinux – shared objects– windows – DLL (Dynamic Link Library)windows – DLL (Dynamic Link Library)

• Queste funzioni vengono caricate solo Queste funzioni vengono caricate solo se utilizzate e in questo caso condivise se utilizzate e in questo caso condivise fra i vari processifra i vari processi

Page 36: Gestione della memoria A. Ferrari. Processi e memoria Tutti i processi in esecuzione necessitano della memoria centrale per memorizzare: le istruzioni

Windows e LinuxWindows e Linux