Vai alla Home Page About me Courseware Federica Virtual Campus 3D Gli eBook di Federica
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Marco Lapegna » 11.Allocazione contigua dei processi in memoria centrale


Sistemi operativi

Allocazione contigua dei processi in memoria centrale

La memoria centrale

  • La memoria centrale è costituita da locazioni di memoria ad accesso casuale (RAM) individuate da indirizzi
  • La CPU può accedere alla memoria centrale in un ordine qualunque

La memoria centrale

  • La memoria centrale è il più basso livello di memoria accessibille direttamente dalla CPU
  • Volatile: perde il contenuto in mancanza di tensione eletterica
  • Il Bandwidth è la quantità di dati che possono essere trasferiti alla CPU per unità di tempo

Allocazione della memoria

  • Nei primi calcolatori (anni ‘50), ma anche nei primi personal computer (anni ‘70), il calcolatore era in grado di eseguire un solo programma alla volta
  • La memoria veniva condivisa tra Sistema Operativo e un programma utente -> Allocazione contigua per sistemi monoutente
Schema di allocazione della memoria (primi calcolatori)

Schema di allocazione della memoria (primi calcolatori)


Protezione del sistema operativo

La protezione del sistema operativo viene realizzata con un registro di limitazione (Boundary register)

Schema esplicativo (boundary register)

Schema esplicativo (boundary register)


Protezione del sistema operativo

  • Contiene l’indirizzo di inizio del programma utente
  • Ogni riferimento oltre tale indirizzo è negato
  • Può essere definito solo in system mode
  • Si può accedere all’area del S.O. solo attraverso chiamate di sistema che pongono il sistema in system mode

Osservazione

  • La memoria è un insieme sequenziale di locazioni con un proprio indirizzo.
  • Ogni programma risiede in una porzione ben definita della memoria -> Ogni variabile del programma sarà individuata da un indirizzo

Generazione degli indirizzi: esempio 1

L’associazione (binding) di istruzioni e dati a indirizzi di memoria può avvenire durante la fase di…

  • Compilazione e linking: se la posizione in memoria del processo è nota a priori, può essere generato un codice assoluto; se si volesse cambiare la locazione iniziale, è necessario ricompilare il codice

Generazione degli indirizzi

In figura lo schema relativo all’esempio 1: Indirizzamento assoluto.

Schema dell’esempio 1

Schema dell'esempio 1


Generazione degli indirizzi: esempio 2

L’associazione (binding) di istruzioni e dati a indirizzi di memoria può avvenire durante la fase di…

Esecuzione: se il processo può essere spostato a run–time da un segmento di memoria all’altro, il binding viene rimandato fino al momento dell’esecuzione. È necessario un opportuno supporto hardware per mappare gli indirizzi (registri di rilocazione).

Generazione degli indirizzi: esempio 2

In figura lo schema relativo all’esempio 2: Indirizzamento rilocabile.

Schema dell’esempio 2

Schema dell'esempio 2


Spazio di indirizzi logici e fisici

Il concetto di uno spazio di indirizzi logici nettamente distinto dallo spazio degli indirizzi fisici è centrale per la gestione della memoria.

  • Indirizzi logici — generati dalla CPU; chiamati anche indirizzi virtuali.
  • Indirizzi fisici — indirizzi utilizzati per accedere alla memoria.

Gli indirizzi logici corrispondono agli indirizzi fisici negli schemi di binding in fase di compilazione, mentre differiscono per il binding in fase di esecuzione.

Memory–Management Unit (MMU)

  • L’operazione di far corrispondere indirizzi logici e fisici nel caso di indirizzamento rilocabile, e’ un’operazione frequentissima e viene affidata, per efficienza, ad uno specifico dispositivo hardware (MMU).
  • Nello schema MMU, il valore contenuto nel registro di rilocazione viene sommato ad ogni indirizzo generato dai processi utente nel momento stesso in cui l’indirizzo viene inviato alla memoria.
  • Il programma utente lavora in termini di indirizzi virtuali, e non è conscio della loro mappatura fisica.

Memory–Management Unit (MMU)

Rilocazione ottenuta tramite registro di rilocazione della MMU.

Schema della rilocazione

Schema della rilocazione


La multiprogrammazione

  • A causa delle continue interruzioni dovute all I/O, un uso efficiente della CPU impone che non solo i programmi in esecuzione, ma anche quelli che stanno per essere eseguiti, devono risiedere in memoria centrale.
  • Lo scheduler di medio livello (swapper) decide quale programma deve competere per l’uso della CPU, e quindi deve risiedere in memoria centrale.

La multiprogrammazione

In figura uno schema esplicativo dei rapporti tra CPU, memoria centrale e di massa in fase di multiprogrammazione.

Interazione tra CPU e memorie

Interazione tra CPU e memorie


Multiprogrammazione a partizioni fisse

  • Ogni processo dispone di un blocco di memoria di dimensione fissata
  • Differenti code di job per differenti tipi di programmi
  • Piu’ registri di limitazione garantiscono la protezione del s.o. e degli altri programmi
  • Facilmente realizzabile con l’indirizzamento assoluto

Multiprogrammazione a partizioni fisse

In figura uno schema esplicativo realtivo alle code delle diverse partizioni fisse in fase di multiprogrammazione.

Job queue e partizioni fisse

Job queue e partizioni fisse


Problema

Spreco di risorse: molte partizioni inutilizzate mentre molti processi aspettano in coda

Es. 3 partizioni di cui 2 inutilizzate

Schema dell’esempio

Schema dell'esempio


Soluzione

  • Multiprogrammazione con partizioni fisse e indirizzamento rilocabile
  • Un job puo’ essere sistemato in una qualunque partizione libera di dimensione sufficiente
Schema della soluzione

Schema della soluzione


Protezione

  • Si può impiegare uno schema basato su registri (es. registri base e limite).
  • Il registro di rilocazione (base) contiene il valore del più piccolo indirizzo fisico di memoria allocata al processo.
  • Il registro limite contiene l’intervallo degli indirizzi logici: ciascun indirizzo logico deve essere inferiore al valore del registro limite.

Protezione

Schema relativo al problema della protezione: a carico della Memory Management Unit.

Schema esplicativo

Schema esplicativo


Problema

Frammentazione interna

  • I processi non fanno uso interamente della partizione a loro assegnata
Schema del problema (frammentazione interna)

Schema del problema (frammentazione interna)


Soluzione

Schema esplicativo e processi da seguire per la soluzione.

Schema della soluzione

Schema della soluzione


Multiprogrammazione a partizioni variabili

Frammentazione esterna

  • Con la multiprogrammazione a partizioni variabili si alloca ad un processo uno spazio della dimensione del processo stesso
  • Non c’è il problema della frammentazione interna, ma … quando i processi finiscono si creano dei buchi (holes) in memoria

Problema

In figura lo schema esplicativo del funzionamento della frammentazione esterna.

Schema del problema (frammentazione interna)

Schema del problema (frammentazione interna)


Riallocazione della memoria

First–fit: ai nuovi processi viene allocato il primo buco grande abbastanza

  • Facile da implementare e con basso overhead
Schema esplicativo (riallocazione first-fit)

Schema esplicativo (riallocazione first-fit)


Riallocazione della memoria

Best–fit: ai nuovi processi viene allocato il buco più piccolo capace di contenere il processo

  • È necessario ordinare tutta la lista dei buchi (maggiore overhead)
  • Si produce il più piccolo buco residuo
Schema esplicativo (riallocazione best-fit)

Schema esplicativo (riallocazione best-fit)


Riallocazione della memoria

Worst–fit: ai nuovi processi viene allocato il buco più grande

  • È ancora necessario ordinare tutta la lista.
  • Si produce il più grande buco residuo (utile per successive allocazioni)
Schema esplicativo (riallocazione worst-fit)

Schema esplicativo (riallocazione worst-fit)


Problema

I meccanismi di riallocazione

  • First fit
  • Best fit
  • Worst fit

Non risolvono il problema della frammentazione esterna

Con l’andare del tempo producono buchi inutilizzati di dimensione sempre piu’ piccola -> Approcci alternativi

Prossima lezione

Allocazione non contigua dei processi in memoria centrale

  • Paginazione
  • Segmentazione
  • 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