cerca
Sistemi Operativi - Appunti caotici
modifica cronologia stampa login logout

Wiki

UniCrema


Materie per semestre

Materie per anno

Materie per laurea


Help

Sistemi Operativi - Appunti caotici

Torna alla pagina di Sistemi Operativi


 :: Appunti caotici ::

Lezione 3 Tecniche di allocazione dei frame

Pag 1

Sommario

...

Pag 2

Problema

Il numero di frame allocati ad un processo influenza la frequenza di page fault: maggiore è il numero di frame e minore e l'occorrenza, quindi minore è anche il tempo di accesso medio alla memoria centrale (dato dal tempo fisico di accesso alla RAM più il tempo di gestione di eventuali page fault).

Va ricordato però che non ho mai la garanzia di non avere page fault. Ad esempio se anche avessi dedicato tutta la memoria centrale a un solo processo, potrei averne comunque nel caso in cui lo spazio di indirizzamento del processo fosse maggiore della memoria stessa.

Allora quanti frame dovrei allocare a ciascun processo per avere una situazione ottimale? Uguale al numero di pagine? Variabile a seconda del processo?

Vincoli per l'allocazione dei frame

Nella scelta del numero di frame da allocare ho alcuni vincoli da tenere in considerazione:

  • numero minimo di frame per ogni processo (codice + dati) da assicurare, o rischiamo di non far partire decentemente i processi rallentandoli eccessivamente con page fault. Dipende dall'architettura e dalla tecnica di gestione (paginazione/segmentazione/combo)
  • frame disponibili. Dipendono dalla memoria centrale fisica installata
  • frame allocati, il cui numero permette di calcolare quanto risparmio nel caso in cui condividessi alcuni frame tra diversi processi.
  • insieme dei frame da cui effettuare l'allocazione. Distinguo due casi: allocazione globale che considera tutti i frame liberi come assegnabili a qualsiasi processo, e allocazione locale che prima suddivide i frame tra i vari processi e poi fa la valutazione in base a quelli assegnati

Pag 3

Allocazione omogenea

Nell' allocazione omogenea ognuno degli n processi ha la stessa quantità fi di frame allocati sugli m frame totali. Vale quindi la relazione: fi = m / n

Aumentare troppo il grado di multiprogrammazione rischia di assegnare un numero limitato di frame per ogni processo, aumentando di conseguenza il fenomeno dei page fault con beghe annesse. Dovrei quindi limitare il numero dei processi in memoria centrale, col rischio però di avere pochi processi ready to run e quindi sfruttare poco il processore. Bisogna bilanciare.
Generalmente si cerca di mantenere alto lo stato di multiprogrammazione in maniera oculata, evitando ad esempio di considerare quei processi in attesa che presumo vi rimangano per un tempo abbastanza lungo.

L' allocazione omogenea è una tecnica semplice ma non soddisfacente in alcuni casi, principalmente due:

  • abbiamo una grossa quantità di memoria centrale occupata da un processo che deve accedere spesso a grosse strutture dati. Dargli poche pagine aumenta la frequenza dei page fault
  • abbiamo un processo che non ha bisogno di molti dati, ma che ha numerose porzioni di codice a cui deve accedere spesso

Una soluzione piuttosto semplicistica potrebbe essere l'allocazione proporzionale alla dimensione, che vediamo nella prossima slide.

Allocazione proporzionale alla dimensione

Nell' allocazione proporzionale alla dimensione il numero di frame allocati a un processo è proporzionale alla dimensione del processo. Tiene abbastanza ben conto delle necessità dei processi nella maggior parte dei casi, e presume che processi grandi accedano a un maggior numero di frame nell'intervallo di tempo.

Se ho un processo molto localizzato che accede sempre a una certa zona di memoria centrale in un dato intervallo di tempo, basterebbe assegnargli come dimensione quella della porzione stessa. Se invece ho un processo che si sposta molto (ovvero non accede ai dati in modo continuo, omogeneo, fluente), il numero dei page fault potrebbe aumentare. In questo caso è difficile stabilire a priori quanto il processo è dinamico nel muoversi nello spazio di indirizzamento, quindi è arduo scegliere la dimensione ideale da assegnargli.

Pag 4

Allocazione proporzionale alla priorità

Finora si è sempre supposto che tutti i processi abbiano la stessa importanza, e che quindi si voglia che evolvino con la stessa velocità. Nell' allocazione proporzionale alla priorità il numero di frame allocati a un processo è invece proporzionale alla priorità del processo stesso. Ciò diminuisce il numero di page fault (e quindi il tempo medio di accesso alla memoria centrale) dando ai processi più importanti un maggior numero di frame.

Se chiamiamo m i frame totali, pi le priorità del processo Pi e fi i frame allocati al processo Pi, se siamo in logica positiva (l'opposto di Unix) avremo che: fi = m x pi / (Sommatoria)pi

Questo valore non ha alcun significato dal punto di vista delle priorità, ma è una formula semplice per ottenere una verosimile distribuzione delle priorità.


Torna alla pagina di Sistemi Operativi