La gestione della memoria



Documenti analoghi
Gestione della memoria centrale

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistemi Operativi. 5 Gestione della memoria

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Il memory manager. Gestione della memoria centrale

La Gestione delle risorse Renato Agati

Gestione della Memoria

Sistema operativo: Gestione della memoria

Sistemi Operativi Kernel

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

SISTEMI OPERATIVI. Gestione della memoria Domande di verifica. Luca Orrù Centro Multimediale Montiferru 18/06/2007

Varie tipologie di memoria

Il Sistema Operativo. C. Marrocco. Università degli Studi di Cassino

9. Memoria Virtuale. 9. Memoria Virtuale. 9. Memoria Virtuale

Il software. la parte contro cui si può solo imprecare. Funzioni principali del sistema operativo. (continua) Gestione della memoria principale

Il Sistema Operativo

La Memoria Virtuale Ottimizzazione della memoria centrale

Strutturazione logica dei dati: i file

GESTIONE DELLA MEMORIA CENTRALE

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Software relazione. Software di base Software applicativo. Hardware. Bios. Sistema operativo. Programmi applicativi

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

Gestione del processore e dei processi

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Gestione della memoria centrale

ESERCIZIO 1 (b) Dove è memorizzato il numero del primo blocco del file? Insieme agli altri attributi del file, nella cartella che contiene il file.

Gestione della memoria

Capitolo Silberschatz

Appunti sulla Macchina di Turing. Macchina di Turing

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Il sistema operativo. Sistema operativo. Multiprogrammazione. Il sistema operativo. Gestione della CPU

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Corso di Sistemi di Elaborazione delle informazioni

Secondo biennio Articolazione Informatica TPSIT Prova Quarta

Memoria Virtuale. Lezione 29 Sistemi Operativi

FPf per Windows 3.1. Guida all uso

Esercitazione E2 Memoria virtuale

Esercitazione E6 Esercizi d esame

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Il Sistema Operativo (1)

Coordinazione Distribuita

Sistemi Operativi 1. Mattia Monga. a.a. 2008/09. Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Algoritmi e strutture dati. Codici di Huffman

SCHEDULATORI DI PROCESSO

La memoria - generalità

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Tesina per l esame di Sistemi Operativi a cura di Giuseppe Montano. Prof. Aldo Franco Dragoni

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

Architettura dei computer

Corso di Informatica

Calcolatori Elettronici A a.a. 2008/2009

Soluzione dell esercizio del 2 Febbraio 2004

Pronto Esecuzione Attesa Terminazione

12. Implementazione di un File System Struttura a livelli Allocazione contigua

Dispositivi di rete. Ripetitori. Hub

LE CARATTERISTICHE DEI PRODOTTI MULTIVARIANTE

Memoria virtuale. Riassumendo Meccanismo di traduzione indirizzi con tabella TLB Ogni processo ha la sua PMT Politiche della memoria virtuale E

CALCOLO COMBINATORIO

Sistemi operativi. Esempi di sistemi operativi

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Organizzazione degli archivi

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore.

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Concetto di Funzione e Procedura METODI in Java

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

Approccio stratificato

Il Software. Il software del PC. Il BIOS

Il File System. Il file system

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Uso dei modelli/template

Il controllo della visualizzazione

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

Logout... A utorizzazioni Eserc itazioni cambia. password... Esercitazione. Rispondere alle seguenti domande reltive ai Processi Software:

Il Sistema Operativo: il File System

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

Funzioni in C. Violetta Lonati

Quinto Homework. Indicare il tempo necessario all'esecuzione del programma in caso di avvio e ritiro fuori ordine.

AXO Architettura dei Calcolatori e Sistema Operativo. processo di assemblaggio

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Guida rapida per i docenti all'uso della piattaforma di e-learning dell'istituto Giua

Premessa Le indicazioni seguenti sono parzialmente tratte da Wikipedia ( e da un tutorial di Pierlauro Sciarelli su comefare.

Corso di Sistemi Operativi Ingegneria Elettronica e Informatica prof. Rocco Aversa. Raccolta prove scritte. Prova scritta

Guida all uso di Java Diagrammi ER

Le Partizioni. Corsi di Formazione "Open Source & Scuola" Provincia di Pescara gennaio 2005 aprile WinFAT32 24,00% WinNTFS 22,00% Swap 11,00%


Laboratorio di Informatica

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Transcript:

La gestione della memoria Nella gestione della memoria il sistema operativo deve perseguire l'obiettivo di allocare il maggior numero di processi in memoria centrale per aumentare la probabilità che ci sia sempre un processo pronto per essere eseguito dalla CPU. Nei moderni sistemi operativi la gestione della memoria avviene con tecniche di memoria virtuale attuate con la paginazione e la segmentazione. Può essere utile conoscere le diverse tecniche di gestione della memoria, usate in passato e non più in uso nei moderni sistemi operativi, non tanto per ragioni storiche, quanto per semplificare la comprensione dei principi di funzionamento della memoria virtuale. Normalmente la memoria è parzialmente occupata dal sistema operativo e lo spazio restante è disponibile per i processi utente. I processi devono essere in memoria al momento dell'esecuzione ma, mentre sono sospesi o bloccati in attesa dei dati (operazioni di I/O), possono essere spostati in un supporto di memoria esterna. Un processo può essere spostato temporaneamente dalla memoria centrale sul disco e il suo posto in memoria centrale può essere occupato da un altro processo in attesa di esecuzione: si parla di swapping dei processi e si usano i termini di swap out e swap in per specificare le due operazioni di rimozione dalla memoria e spostamento sull hard disk e, rispettivamente, di ritorno dal disco in memoria. Tuttavia dover ricorre a troppi swapping non è molto efficiente a causa dell'overhead (sovraccarico di sistema) per i tempi di swapping che sono dell'ordine di diversi centesimi di secondo. Per ridurre la penalizzazione dovuta al sovraccarico di sistema si può pensare di usare quanti di tempo lunghi, in un contesto di multiprogrammazione time sharing, e nel contempo limitare il numero degli utenti a poche unità per non avere tempi di riposta troppo lunghi. Per usare la multiprogrammazione in modo efficiente occorre che in memoria ci siano più processi, in modo che il cambiamento di processo avvenga senza la necessità di trasferire il processo dal disco. Vediamo le principali tecniche di gestione della memoria partendo da quelle usate nel passato: memoria suddivisa in partizioni fisse, memoria suddivisa in partizioni variabili (o dinamiche), allocazione della memoria mediante paginazione, allocazione della memoria mediante segmentazione, memoria virtuale a pagine o a segmenti. Memoria a partizioni fisse La tecnica di suddivisione della memoria in partizioni fisse consiste, in pratica, nel suddividere lo spazio di memoria a disposizione dei processi utente in un insieme di sottomemorie non necessariamente della stessa dimensione, allocabili a differenti processi. In una memoria con n partizioni possono essere quindi caricati n processi. Ad esempio supponiamo che la memoria sia formata da 200 locazioni, una parte di tali allocazioni verranno riservate al sistema operativo (es. 50), mentre la restante parte viene destinata ai programmi utenti. La dimensione delle singole partizioni e il loro numero sono definiti al momento dell installazione del Sistema Operativo, quindi all accensione del sistema, in base alle caratteristiche dei lavori che devono essere eseguiti. La memoria può essere suddivisa in partizioni della stessa dimensione oppure di dimensione differente. Un processo può essere collocato in una partizione solo se questa è sufficientemente grande per contenerlo completamente. Per la gestione serve una tabella di descrittori di partizione che riporti per ogni partizione: - 20 -

l indirizzo di partenza della partizione, la dimensione e lo stato di assegnazione della partizione (libera o occupata). La figura mostra il caso di una memoria con cinque partizioni e sei processi da collocare in memoria e specifica le dimensioni in MB delle diverse partizioni e dei processi. I processi in attesa della memoria possono essere assegnati a un'unica coda, come nell'esempio, oppure possono essere inseriti in code differenti, una per ogni partizione. Entrambe le scelte presentano vantaggi e svantaggi: si osservi che le caratteristiche della catena di programmazione possono determinare il tipo di strategia da adottare. Per esempio, se i processi usano indirizzi di memoria assoluti, essi possono essere collocati nella sola partizione decisa al momento dell'esecuzione. In caso di indirizzamento rilocabile, invece, un processo può essere assegnato a qualsiasi partizione. Si supponga che il sistema operativo allochi il processo P 1, alla partizione 1, il processo P 2 alla partizione 2 e così via sino al processo P 5 collocato nella partizione 5. Il processo P 6 non può essere messo in memoria perché non ci sono altre partizioni libere. La figura a lato presenta la situazione della memoria dopo queste operazioni; la tabella sintetizza le informazioni sulle dimensioni delle partizioni e dei processi in memoria e riporta anche lo spazio di memoria che rimane inutilizzato in ogni partizione. L'ultima riga della tabella, che fornisce i dati dell'intera memoria utente, mostra che, pur disponendo di una memoria utente di 52 MB, è possibile collocare in memoria solo cinque processi per un totale di 22 MB. Il processo P 6 di 5 MB non può essere collocato in memoria anche se ci sono 30 MB di memoria liberi, inoltre in un sistema con una memoria come quella in figura non è possibile eseguire un processo di 21 MB perché la partizione di dimensione massima è di 20 MB. Gli esempi precedenti evidenziano i maggiori limiti che si incontrano con le partizioni di dimensione fissa: uso inefficiente della memoria a causa della frammentazione interna; i processi devono essere di dimensione minore delle partizioni e lo spazio inutilizzato in ogni partizione forma un insieme di frammenti di memoria non utilizzabili; notevoli limitazioni alla dimensione dei processi eseguibili che sono vincolati a non superare la dimensione della partizione più grande; necessità di limitare anche il numero massimo di processi caricati in memoria (al max n cioè quante sono le partizioni stabilite all accensione del sistema) - 21 -

Memoria a partizioni variabili Per eliminare il problema della frammentazione interna occorre avere la possibilità di utilizzare la memoria utente come un unico spazio di memoria che può essere allocato dinamicamente ai processi: un processo è inserito in memoria in una qualsiasi zona libera, a condizione che sia abbastanza grande per contenerlo, creando così una partizione di dimensione pari a quella del processo. La figura mostra lo stato di una memoria che ospita il processo P 1 ; altri 5 nuovi processi attendono di essere collocati in memoria. La memoria libera è un'unica partizione che può essere allocata agli altri processi. La creazione di partizioni ad hoc, grandi quanto i processi, evita la frammentazione interna ed è possibile ospitare processi di dimensioni pari all'intera memoria utente. Per individuare lo spazio libero da assegnare ai processi il sistema operativo può usare criteri diversi; due di questi algoritmi sono i seguenti: FIRST-FIT (il primo dove ci sta). In questo caso il processo viene inserito nella prima zona libera abbastanza grande per contenerlo. Questo metodo è molto veloce in quanto parte a scandire la memoria dall inizio e si ferma appena trova uno spazio libero sufficiente. BEST-FIT (il migliore). Il sistema operativo individua la partizione più piccola sufficiente a contenere il processo in modo che le partizioni più grandi non vengano suddivise inutilmente. In questo caso il sistema operativo scorre tutta la memoria e individua lo spazio più piccolo sufficiente. WORST-FIT (il maggiore). Il sistema operativo individua la partizione più grande sufficiente a contenere il processo. È l opposto del best-fit ed è basato sul presupposto che se lo spazio libero di memoria è grande, lo spazio che rimane libero dopo aver allocato un processo rimane abbastanza grande per potervi allocare altri processi e per non essere sprecato. Con la gestione della memoria a partizioni variabili risultano superate le limitazioni caratteristiche della gestione della memoria con le partizioni fisse. La gestione della memoria è però più complicata perché è necessario tenere conto dello stato di un numero variabile di partizioni di dimensione arbitraria, invece di un numero ben definito di partizioni di dimensione prefissata. Ma, oltre alla maggior complessità nell'allocazione della memoria ai processi, le partizioni variabili evidenziano altre inefficienze nella gestione della memoria. Per comprendere i problemi che si presentano con le partizioni dinamiche, consideriamo il caso della figura a lato e osserviamo come può evolvere lo stato della memoria per effetto delle successive allocazioni di spazio di memoria ai processi. a) I processi P 1 P 2, P 3 in memoria sono collocati uno dopo l altro lasciando una parte di memoria libera in coda ai tre processi. b) II processo P 1 termina e il suo posto è occupato da P 4. Tra P 4 e P 2 si crea un piccolo spazio di memoria perché il processo P 4 occupa meno spazio di P 1 c) P 2 termina e il suo posto viene occupato da P 5. Essendo P 5 più piccolo di P 2, la nuova partizione genera uno spazio di memoria libera tra i processi P 5 e P 3. Si noti però che il processo P 5 è posizionato dopo lo spazio vuoto che segue P 4. Lo spazio libero dopo P 4 non è stato unito allo spazio lasciato da P 2 creando un unico spazio più grande. L'operazione di riconoscere che ci sono due spazi liberi adiacenti ed aggregarli creando un unico spazio vuoto più grande si chiama coalescenza. Per ragioni di semplicità, e quindi di velocità, il sistema operativo esegue solo periodicamente le routine di coalescenza degli spazi liberi. d) P 5 termina e parte dello spazio liberato dal processo è allocato a P 6. Di seguito a P 6 si formano due spazi liberi adiacenti che non sono riconosciuti come tali. - 22 -

Quindi anche con la gestione della memoria con partizioni dinamiche si formano tra i processi spazi di memoria liberi che nel tempo diventano, per effetto delle successive allocazioni, sempre più frammentati e impossibili da utilizzare per assegnare memoria ai processi, il tipo di frammentazione che si osserva con le partizioni variabili è chiamata frammentazione esterna, per indicare che è esterna alle partizioni. La frammentazione esterna può essere eliminata con il compattamento della memoria che consiste nello spostare i programmi in memoria in modo da creare un unico spazio libero in coda a tutti i processi. Si osservi che il compattamente della memoria è un'operazione onerosa e può essere eseguita raramente per evitare eccessivi sovraccarichi di lavoro per il sistema. La gestione della memoria con le partizioni variabili richiede inoltre: Apposite strutture dati per la gestione dello spazio libero e occupato. I diversi spazi vuoti di memoria possono essere descritti con un elenco (lista di descrittori) che riporta: l'indirizzo di partenza di ciascuna partizione libera e la dimensione di ciascuna. Analogamente lo spazio occupato dai processi può essere memorizzato in un elenco (altra lista di descrittori) con l'indirizzo di partenza di ciascuna partizione occupata e la dimensione del processo che vi è allocato. I processi devono poter essere rilocati. Tenendo conto del fatto che è necessario operare periodicamente il compattamente della memoria, è indispensabile poter operare la rilocazione dinamica del codice, per non appesantire gli overhead causati dal compattamento. La memoria virtuale È il modo standard di gestire la memoria negli attuali sistemi. Finora abbiamo implicitamente supposto che, quando carichiamo un programma in memoria, venga caricato tutto il suo codice. Possiamo ora far cadere questa ipotesi. Se infatti un programma superasse le dimensioni della memoria centrale, sarebbe impossibile caricarlo. Ricorrendo alla tecnica di funzionamento, detta in overlay (sovrapposizione), si divide il programma in porzioni, si carica in memoria centrale una porzione per volta e si lascia il resto delle porzioni in memoria di massa. Quando servirà un'ulteriore porzione del programma, si provvederà a recuperarla dalla memoria di massa e a caricarla in memoria centrale, rimuovendo temporaneamente da essa una porzione del programma stesso non necessaria, per far spazio nella partizione destinata a quel processo. Si parla in questo caso di memoria virtuale, in quanto un programma si comporta come se avesse a disposizione una memoria molto più grande della memoria centrale effettivamente disponibile. Il meccanismo della memoria virtuale (che sfrutta i dischi per la memorizzazione delle porzioni di programma) provoca un rallentamento nell'esecuzione del programma a causa dei continui trasferimenti di dati tra le due memorie. Nel progetto di un sistema operativo è dunque fondamentale minimizzare tali trasferimenti di dati. La memoria virtuale si basa sulla differenza tra indirizzo logico, contenuto all'interno di un programma come riferimento a un qualsiasi oggetto, e indirizzo fisico di memoria, in cui è effettivamente allocato tale oggetto. L'indirizzo logico deve essere tradotto in indirizzo fisico per accedere alla memoria centrale; tale operazione prende il nome di mapping. Esistono due differenti tecniche di suddivisione del programma in porzioni (o blocchi) che permettono di mettere in corrispondenza l'indirizzo logico con quello fisico: tecnica della paginazione; tecnica della segmentazione. - 23 -

Memoria virtuale paginata Con la paginazione la memoria centrale è suddivisa in blocchi aventi tutti la stessa dimensione e lo spazio degli indirizzi di un programma è suddiviso logicamente in parti chiamate pagine. I blocchi hanno la stessa dimensione delle pagine (in genere multipli di 2k) e l'allocazione del programma avviene quando in memoria centrale esiste un numero di blocchi liberi pari o superiori al numero di pagine da allocare. Mentre le pagine sono logicamente contigue, i blocchi di memoria centrale in cui verranno caricate possono non esserlo. Se un programma è costituito da 4 pagine, al momento della sua allocazione il gestore della memoria dovrà trovare 4 blocchi (anche sparsi) liberi. Per fare questo il sistema operativo deve gestire alcune tabelle di abbinamento: la tabelle delle pagine e la tabella dei blocchi. La figura sotto illustra un esempio di memoria centrale organizzata a blocchi con le relative tabelle. Nella tabella dei blocchi comparirà per ciascun blocco l'indirizzo di partenza e lo stato (libero/occupato). Analogamente nella tabella delle pagine compariranno, per ogni programma, i numeri di pagina in cui è stato suddiviso e il numero del blocco in cui ogni pagina è caricata. La gestione della memoria virtuale a richiesta di pagine (paginazione dinamica) utilizza le stesse tecniche della paginazione suddividendo il programma in pagine e la memoria centrale in blocchi della stessa dimensione, solo che in ogni istante non tutte le pagine hanno associato un reale blocco fisico in memoria, cioè non tutte le pagine sono fisicamente caricate in memoria centrale. Opportuni algoritmi del sistema operativo scelgono quali pagine caricare in memoria fin dall'inizio. Se durante l'esecuzione l'istruzione da eseguire si trova in una pagina non presente in memoria centrale, viene generata un'interruzione per mancanza di pagina (page fault) e viene richiesto al sistema operativo di provvedere al suo caricamento dalla memoria di massa. Quando il sistema operativo deve caricare una pagina nella memoria centrale si possono verificare due casi. Caso 1: nella memoria centrale ci sono blocchi liberi. In questo caso il sistema operativo può caricare immediatamente la pagina dalla memoria di massa alla memoria centrale (questa operazione si chiama swap in). Caso 2: nella memoria centrale non ci sono blocchi liberi. In questo caso, prima di caricare la pagina, il sistema operativo deve scegliere, fra tutte le pagine presenti nella memoria centrale quale trasferire nella memoria di massa per liberare un blocco (questa operazione si chiama swap out). Per scegliere quale sarà la pagina "vittima", il sistema operativo deve seguire una politica di gestione definita attraverso gli algoritmi di rimpiazzamento che hanno notevole importanza per l'efficienza del sistema. Dato che le operazioni di swap comportano dei trasferimenti di pagine da memoria di massa a memoria centrale e viceversa, sono molto costose in termini di tempo perché interessano le periferiche che operano in tempi ben più lunghi rispetto all'unità centrale. È quindi opportuno scegliere come pagina "vittima" una che, presumibilmente, non servirà per lungo tempo. - 24 -

Le tecniche più usate sono: FIFO: viene rimpiazzata la pagina che da più tempo risiede in memoria centrale, cioè la più vecchia. La prima pagina a entrare sarà la prima a uscire in caso di necessità. Algoritmo LRU (Last Recently Used): viene rimpiazzata la pagina che da più tempo non è usata (la più vecchia d'uso). Quella che da più tempo non è usata, presumibilmente non sarà richiesta entro breve tempo. Memoria virtuale segmentata In un sistema a memoria virtuale basato sulla segmentazione il programma viene diviso in porzioni, dette segmenti, che corrispondono a unità logiche definite dal programmatore come ad esempio un array, una tabella, un sottoprogramma. Lo spazio degli indirizzi di un programma si può allora pensare composto da diversi segmenti che vengono caricati in memoria centrale solo quando se ne presenta la necessità. Ad esempio nella figura sotto possono essere definiti 5 segmenti (Tabi, Tab2. Main, Proc1 e Proc2) che saranno caricati in memoria centrale solo se richiesti dall'esecuzione. Suddivisione di un programma in segmenti Quando è richiesta l'esecuzione di un programma inizialmente viene caricato nella memoria centrale solo il segmento che contiene il programma principale (main). Ogni volta che durante l'esecuzione viene fatto riferimento a un sottoprogramma o a una struttura dati contenuti in un altro segmento, questo viene caricato dalla memoria di massa alla memoria centrale (dynamic loading) e in questo momento avviene il collegamento con il segmento che lo ha richiamato (dynamic linking). Se un processo fa riferimento a un segmento che non è presente nella memoria centrale viene generato un interrupt (segment fault) e il sistema operativo deve provvedere al suo caricamento. Nel caso della paginazione la suddivisione del programma in blocchi avviene secondo criteri geometrici, la singola pagina non ha alcun significato per il programmatore e non c'è nessun collegamento logico tra il contenuto di un blocco e quello del blocco successivo. Quindi la paginazione è invisibile al programmatore. Nel caso della paginazione un processo è formato da un unico spazio di memoria che è suddiviso artificialmente in un certo numero di blocchi. Con la segmentazione un processo è suddiviso in segmenti, ognuno dei quali possiede una precisa identità logica e funzionale e ha un proprio spazio di indirizzamento. - 25 -

I vantaggi della segmentazione rispetto alla paginazione sono: È semplificata la gestione di spazi memoria condivisi: i dati (o il codice) da condividere possono essere inseriti in un unico segmento che viene condiviso tra i processi. La protezione della memoria può essere effettuata in modo puntuale in base alle esigenze e alle caratteristiche funzionali del singolo segmento. È più semplice gestire strutture dati dinamiche allocandole in un segmento. Se nell'esecuzione del processo lo spazio occupato dai dati aumenta, basta aumentare la dimensione di quello specifico segmento. Nei caso della paginazione è invece impossibile aumentare la dimensione delle pagine ed è più complicato inserire nuove pagine tra quelle assegnate al processo per allocare i dati che possono crescere sino a superare lo spazio inizialmente previsto. - 26 -