Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D La Corte in Rete
 
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

Fatal error: Call to undefined function federicaDebug() in /usr/local/apache/htdocs/html/footer.php on line 93