Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
I corsi di Ingegneria
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Antonino Mazzeo » 23.Memoria Virtuale


Sommario

  • Introduzione
  • Paginazione su richiesta
  • Sostituzione delle pagine
  • Attività di paginazione degenere (thrashing)

Introduzione

  • La memoria virtuale rappresenta la separazione della memoria logica, vista dall’utente, dalla memoria fisica.
    • Solo parte del programma deve essere in memoria per l’esecuzione.
    • Lo spazio degli indirizzi logici può essere maggiore dello spazio degli indirizzi fisici.
    • Consente anche un miglioramento delle prestazioni durante la creazione dei processi.
  • La memoria virtuale generalmente si realizza nella forma di:
    • Paginazione su richiesta
    • Segmentazione su richiesta
Schema esplicativo

Schema esplicativo


Paginazione su richiesta

  • Non si carica mai nella memoria una pagina che non sia necessaria
  • A ciascun elemento della tabella delle pagine è associato un bit di validità (1 => in memoria, 0 => non in memoria)
  • Page Fault
    • Se il processo tenta di accedere a una pagina che non era stata caricata nella memoria, si verifica un’eccezione di pagina mancante
    • L’architettura di paginazione, traducendo l’indirizzo, nota che il bit non è valido e invia un segnale d’eccezione al sistema operativo.
    • Il sistema operativo deve decidere: errore di indirizzo non valido => abort oppure caricamento della pagina in memoria.
    • Nel secondo caso, bisogna gestire il page fault

Gestione di un page Fault

  • Si individua la locazione nel disco della pagina richiesta.
  • Si cerca un blocco di memoria libero:
    • se esiste, lo si usa; altrimenti, si impiega un algoritmo di sostituzione delle pagine per scegliere un blocco di memoria “vittima”
  • Si scrive la pagina richiesta nel blocco di memoria appena liberato; si modificano le tabelle delle pagine e dei blocchi di memoria.
  • Si riavvia il processo utente.
  • Prestazioni della paginazione su richiesta:
    • EAT = (1 – p) x accesso alla memoria+ p (page fault overhead+ [swap page out ]+ swap page in+ restart overhead)
Gestione di un Page Fault

Gestione di un Page Fault


Sostituzione delle pagine

  • Si utilizza un bit di modifica (dirty bit) per ridurre il sovraccarico: solo le pagine modificate vengono scritte su disco
  • Algoritmo FIFO
    • Anomalia di Belady: più blocchi di memoria meno assenze di pagine
  • Sostituzione delle pagine ottimale
    • Si sostituisce la pagina che non si userà per il periodo di tempo più lungo. Non è possibile conoscere in anticipo la successione dei riferimenti, per cui viene usato principalmente per studi comparativi
  • Algoritmo LRU (Least Recently Used)
    • A ogni elemento della tabella delle pagine si associa un campo del momento d’uso, e alla CPU si aggiunge un contatore che si incrementa a ogni riferimento alla memoria. Ogni volta che si fa un riferimento a una pagina, si copia il contenuto del contatore nel campo del momento d’uso relativa a quella specifica pagina
    • Quando occorre sostituire una pagina, si sostituisce quella con il valore associato più piccolo

Sostituzione delle pagine

  • Sostituzione delle pagine per approssimazione a LRU
    • A ciascuna pagina è associato un bit, inizialmente = 0
    • Ogni volta che si fa riferimento a quella pagina, il bit è impostato a 1.
    • Si sostituisce quella che è a 0 (se esiste). Non è però possibile conoscere l’ordine d’uso.
  • Con seconda chance
    • Occorre il bit di riferimento.
    • Un puntatore (vittima) indica qual è la prima pagina da sostituire.
    • Se la pagina da sostituire (in ordine di clock) ha il bit di riferimento = 1, allora:
      • imposta il bit di riferimmento a 0;
      • lascia la pagina in memoria;
      • sostituisce la pagina successiva (in ordine di clock), soggetta alle stesse regole.

Attività di paginazione degenere

  • Se un processo non dispone di un numero sufficiente di blocchi di memoria, si verificano parecchie assenze di pagine. Ciò comporta:
    • Basso utilizzo della CPU (ciò indurrà lo scheduler di lungo termine ad ammettere nuovi processi in memoria)
    • Il processo continua a subire un numero sempre maggiore assenze di pagine, facendo sostituire pagine che saranno subito riprese
  • Thrashing = degenerazione dell’attività di paginazione
  • Perché si verifica attività di paginazione degenere?
    • Σ dimensione della località > dimensione totale della memoria
  • Modello dell’insieme di lavoro
  • Se D (richiesta totale dei blocchi di memoria ) > m (blocchi liberi) la paginazione degenera ed il SO individua un processo da sospendere.
  • Tecnica delle frequenza delle assenze di pagine
  • Stabilisce un tasso “accettabile” di assenza delle pagine

Alcune considerazioni

  • Dimensione delle pagine
    • Frammentazione – Dimensione della tabella delle pagine – Tempo richiesto per leggere o scrivere una pagina – località
  • Portata del TLB: quantità di memoria accessibile dal TLB
    • Portata del TLB = (numero di elementi) X (dimensione delle pagine)
    • Idealmente, il TLB dovrebbe contenere l’insieme di lavoro di un processo; altrimenti vi sarà un elevato grado di assenza delle pagine
  • Aumentare la portata del TLB
    • Aumentare la dimensione delle pagine. Potrebbe portare a una maggiore frammentazione della memoria
    • Impiegare diverse dimensioni delle pagine. Ciò consente alle applicazioni che richiedono dimensioni di pagina maggiori di utilizzarle senza che si verifichi un aumento della frammentazione
  • Vincolo di I/O. Talvolta occorre permettere che alcune pagine si possano vincolare alla memoria

Prossima lezione

I/O e Gestione dei dischi

I materiali di supporto della lezione

Memoria virtuale

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion