NOTA BENE: Il Bloggatore ha rilevato dei problemi di collegamento con il blog indicato come fonte originale dell'articolo. Pertanto, al fine di consentire agli utenti di leggere questo articolo, se possibile, viene reso temporaneamente disponibile il post completo.
In informatica, la memoria virtuale è una architettura di sistema capace di simulare uno spazio di memoria centrale maggiore di quello fisicamente presente; questo risultato si raggiunge utilizzando spazio di memoria secondaria su altri dispositivi, di solito le unità a disco.
La memoria centrale fisicamente presente diventa quindi la parte effettivamente utilizzata di quella virtuale, più grande: questo stratagemma è utile in virtù del principio di località e riuso dell’esecuzione dei programmi.
La memoria secondaria utilizzata a questo scopo è comunemente chiamata, in ambiente Posix, swap o spazio di swap, mentre, in ambiente Windows, è chiamata file di paging.
Le operazioni di spostamento delle pagine dallo spazio di swap alla memoria fisica sono chiamate swapping.
MEMORIA PAGINATA
Con questo schema la memoria viene divisa in pagine tutte della stessa grandezza (4-8 kilobyte): i programmi non hanno bisogno di sapere nulla su come è organizzata la memoria e non devono avere nessuna struttura interna particolare; la esatta ubicazione e disposizione fisica della memoria che occupano non li riguarda e tutto il sistema di memoria virtuale è completamente gestito dalla MMU attraverso un complesso sistema di registri associativi.
Proprio questo sistema di registri è il punto debole di questo tipo di meccanismo: se il numero delle pagine è molto grande (pagine di piccole dimensioni, oppure grandi quantità di memoria virtuale da emulare) il meccanismo associativo può diventare troppo complesso, rallentando sensibilmente l’accesso alla memoria (e quindi tutto il sistema).
MEMORIA SEGMENTATA
In questo caso il meccanismo di memoria virtuale è in parte software: i programmi che girano su sistemi con memoria segmentata sono strutturati in segmenti funzionalmente omogenei: la MMU tiene traccia di quali e quanti segmenti sono presenti in memoria e dove.
Il vantaggio principale di questo sistema è che sfrutta al massimo il già citato principio di località , riducendo al minimo il ricorso allo spazio di swap: una volta che un programma ha in memoria centrale i segmenti di cui necessita, solo raramente ne chiederà di nuovi.
Il grosso svantaggio di questo sistema, invece, è il grande spreco di memoria dovuto alla frammentazione esterna: con l’andare del tempo e il susseguirsi dei processi in esecuzione, la memoria viene allocata e deallocata in blocchi di varie dimensioni che lasciano un sempre maggior numero di “buchi” vuoti, troppo piccoli per poter essere utilmente allocati: questo rende necessario eseguire una dispendiosa compattazione periodica della memoria fisica allocata, e/o l’uso di algoritmi di allocazione molto sofisticati.
- Articolo precedente: Introduzione all’Algebra di Boole
- Articolo successivo: Elecont Quick Desktop per dispositivi Windows Mobile
SEGNALA / INVIA QUESTO POST:
Hai trovato questo articolo interessante? Iscriviti GRATIS ai nostri feeds!


