Meccanismi di Gestione della Memoria: Paging e Sostituzione in Linux, Solaris e Windows 2000

Classificato in Informatica

Scritto il in italiano con una dimensione di 3,95 KB

Gestione della Memoria in Linux

Gestione dei Blocchi di Pagine Contigue

Dalla memoria principale, Linux definisce un meccanismo per gestire blocchi contigui di pagine, corrispondenti a frame contigui. A tal fine, utilizza il sistema buddy, dove il kernel mantiene una lista di gruppi di page frame contigui di dimensione fissa.

Algoritmo di Sostituzione delle Pagine

L'algoritmo di sostituzione delle pagine in Linux è basato sul clock (o NUR/NRU - Not Used Recently/Not Referenced Recently), che associa un bit di utilizzo e un bit di modifica a ogni pagina di memoria principale.

Gestione della Memoria in Solaris

Sistema di Paging e Strutture Dati

Per la memoria virtuale paginata, Solaris utilizza una serie di strutture di dati che sono indipendenti dalla macchina:

  • Tabella delle Pagine: è una tabella per ogni processo, con una voce per ogni pagina di memoria virtuale del processo.
  • Descrittore di Blocco del Disco: associato a ogni pagina del processo, c'è una voce nella tabella delle pagine che descrive la copia su disco della pagina virtuale.
  • Tabella della Struttura della Pagina: descrive ogni frame di memoria reale ed è indicizzata tramite il numero di frame.

Sostituzione delle Pagine

L'algoritmo di sostituzione delle pagine utilizzato in Solaris è noto come algoritmo di clock a due aghi (Two-Handed Clock Algorithm), che utilizza un bit di riferimento per ogni pagina di memoria che soddisfi i requisiti (non bloccata) per essere espulsa. Due parametri determinano il funzionamento dell'algoritmo:

  • Velocità di Scorrimento: la velocità (in pagine al secondo) con cui gli aghi si muovono attraverso la lista delle pagine.
  • Intervallo tra gli Aghi: lo spazio tra l'ago anteriore e quello posteriore.

Gestione della Memoria in Windows 2000 (W2K)

Il gestore della memoria virtuale di Windows 2000 (W2K) controlla la quantità di memoria allocata e le modalità di paging.

Mappa degli Indirizzi Virtuali (W2K)

Ogni processo utente W2K dispone di uno spazio di indirizzi separato a 32 bit, che consente 4 Gbyte di memoria per processo. Una parte di questa memoria è riservata al sistema operativo, lasciando a ogni utente 2 Gbyte di spazio di indirizzi virtuali a disposizione.

Paging in W2K

Quando viene creato un processo, in linea di principio è possibile utilizzare l'intero spazio utente di 2 Gbyte. Questo spazio è diviso in pagine di dimensione fissa, e ognuna può essere caricata in memoria principale.

ERA definisce una dimensione massima per la dimensione della RAM.

Quando si verifica un errore di pagina (page fault), viene caricata la pagina richiesta, oltre a un piccolo gruppo di pagine circostanti. Questo meccanismo è chiamato demand paging con clustering (o semplicemente clustering).

Se la memoria è piena, è possibile utilizzare una politica di sostituzione LRU (per lo scaricamento su disco) o FIFO (per la rimozione dal Working Set, ma la pagina rimane in memoria).

Thread e Page Faults

La gestione dei Page Faults dipende dal modello di threading utilizzato dal programma: One-To-One, Molti-A-Uno o Molti-A-Molti.

  • Nel kernel di Solaris, sono gli LWP (Lightweight Processes) a generare i Page Faults (PF) separatamente.
  • In Linux, i thread possono generare PF separatamente.
  • In Windows NT, la situazione è simile a quella di Linux.

Voci correlate: