Con questo capitolo inizia la parte tecnica del corso dedicata alla gestione della memoria da parte del sistema operativo. Gran parte di questi contenuti si sovrappone a quanto già studiato nel corso di Architetture dei sistemi di elaborazione, ma è utile riprendere e rivedere alcuni concetti chiave per inquadrarli correttamente dal punto di vista del sistema operativo.
Le puntualizzazioni che saranno fatte mirano a mettere in luce aspetti spesso trascurati in architettura, ma fondamentali per comprendere come OS e hardware interagiscano nella gestione degli spazi di indirizzamento, dei livelli di memoria (cache, RAM, virtual memory) e dei meccanismi di protezione.
Questa riconsiderazione permetterà di affrontare con maggiore consapevolezza i successivi argomenti sul funzionamento del gestore della memoria principale, sui metodi di allocazione e sugli strumenti di supporto che il sistema operativo mette a disposizione per garantire efficienza, isolamento e correttezza d’accesso.
In questo Capitolo 9 del testo di Silberschatz, Galvin e Gagne (”Memory Management”), verranno affrontati i principali meccanismi con cui il sistema operativo gestisce la memoria:
Memoria logica vs. memoria fisica
Verranno introdotti i concetti di indirizzo logico (quello visto dal programma) e indirizzo fisico (quello effettivamente presente sui banchi di RAM), e illustrato come il sistema operativo realizzi la loro traduzione.
Allocazione contigua
Verranno analizzate le tecniche di allocazione continua di blocchi di memoria, con le strategie di first fit, best fit e worst fit, e il fenomeno della frammentazione interna ed esterna.
Paginazione
Verrà presentato il modello di paging a pagine fisse, che spezza lo spazio logico in “pagine” di dimensione costante e quello fisico in “frame”, eliminando la frammentazione esterna.
Struttura della tabella delle pagine
Verrà osservato come organizzare la page table (tradizionali, multilevel, inverted) per rendere efficiente la traduzione degli indirizzi e ridurre l’overhead di spazio.
Swapping
Verrà illustrato il processo di swapping - lo spostamento di interi processi tra RAM e disco - e il suo ruolo nel gestire dinamicamente la memoria principale.
Esempi su architetture reali
Infine, verranno esaminate due implementazioni pratiche:
Questa panoramica fornisce il background necessario per comprendere come un moderno sistema operativo controlli l’allocazione e la protezione della memoria, garantendo efficienza, isolamento tra processi e corretta gestione delle risorse.
In questo capitolo si propone innanzitutto di analizzare il ruolo del sistema operativo nella gestione della memoria, ossia di come il kernel mette in atto un vero e proprio memory management per offrire a ciascun processo una porzione di memoria logica mappata sulla memoria fisica.
Il primo obiettivo è quello di fornire una descrizione dettagliata delle diverse modalità di organizzazione dell’hardware di memoria, dalla memoria contigua fino ai meccanismi più evoluti di segmentazione e paginazione.
In secondo luogo, verranno discusse le principali tecniche di gestione della memoria:
Infine, verrà presentato un caso concreto: l’Intel Pentium, che supporta sia la pure segmentation sia la segmentazione con paginazione, mostrando come queste due tecniche convivano in un processore reale.