Sei sulla pagina 1di 15

I Compendi OpenSource

di Giacomo Marciani

Teoria, Formulario e Suggerimenti Pratici

Sistemi Operativi

Gestione della memoria centrale

La memoria centrale consiste in un ampio vettore di word indirizzate al byte. La memoria percepisce solamente un usso di indirizzi : ignora cio come essi siano generati e cosa sia contenuto nelle celle di memoria corrispondenti. Le caratteristiche siche della memoria centrale causano uno scarto di velocit con la CPU 1 risolto dal caching 2 . Durante l'esecuzione, i programmi e i dati a cui essi accedono devono risiedere almeno parzialmente in memoria centrale, in quanto la memoria centrale e i registri interni sono le uniche aree di memoria direttamente accessibili dal processore. Essa deve dunque contenere il sistema operativo e i processi, per questo logicamente divisa in due partizioni3 . La memoria centrale deve dunque essere condivisa e protetta, onde evitarne un utilizzo illegale da parte dei parecchi processi che vi risiedono. Il meccanismo di protezione hardware degli indirizzi il meccanismo di protezione realizzato assegnando a ciascun processo uno spazio di indiriz4 zamento privato a cui possa accedere legalmente, individuato dal registro di base e dal registro limite, i quali contengono rispettivamente il pi piccolo indirizzo legale e la dimensione dell'intervallo ammesso5 . La CPU confronta ciascun indirizzo generato in UM6 con i valori contenuti nei due registri, segnalando un eventuale accesso illegale con un'eccezione interpretata come errore fatale. Solo il sistema operativo pu caricare i due registri, grazie ai privilegi della KM 7 .
Binding degli indirizzi Un programma risiede nei dischi in forma di le binario eseguibile. Per essere eseguito va caricato in memoria centrale e inserito all'interno di un processo. La input queue8 lista i processi nei dischi che attendono di essere trasferiti in memoria centrale per essere eseguiti. Quando il processo termina si dichiara disponibile il suo spazio di memoria. Il binding degli indirizzi realizza la corrispondenza fra spazi di indirizzamento. Gli indirizzi del codice sorgente sono indirizzi simbolici, che il compilatore associa ad indirizzi rilocabili generando codice rilocabile, che a loro volta il linked o il loader associano ad indirizzi assoluti generando codice assoluto. Il binding allo spazio degli indirizzi assoluti si pu compiere
scarto di velocit dovuto alle dierenti tecnologie di realizzazione provocherebbe necessariamente una raca di deadlock della CPU a causa dell'eccessivo numero di clicli di clock richiesti per l'accesso in memoria. 2 la cache buer di memoria multilivello tra CPU e memoria centrale. 3 il sistema operativo viene tipicamente collocato in memoria bassa, in quanto deve essere vicino alla tradizionale posizione del vettore delle interruzioni. 4 anche detto spazio di memoria privato, o spazio privato. 5 sono inclusi gli estremi. 6 ovvero User Mode. 7 la kernel mode (KM) la modalit privilegiata esclusivamente riservata al sistema operativo, il quale accede dunque indiscriminatamente sia allo spazio di memoria riservatagli, che allo spazio di memoria riservato ai processi utente. 8 ovvero coda di ingresso.
1 lo

durante la compilazione 9 , il caricamento 10 o l'esecuzione 11 . La CPU opera su indirizzi logici, i quali vengono tradotti in indirizzi 12 fisici dalla memory management unit (MMU) , per poi essere caricati nel memory address register (MAR).
Caricamento dinamico e collegamento dinamico Il caricamento di13 il meccanismo per cui una procedura, appositamente mantenuta namico in memoria secondaria in forma di codice rilocabile, viene caricata solo quanto viene chiamata. Non richiede un particolare intervento da parte del sistema operativo, il quale pu tuttavia fornire al programmatore librerie di procedure che realizzino il caricamento dinamico. Questo metodo di caricamento utile soprattuto nei casi in cui servano grandi quantit di codice per gestire casi non frequenti14 . Il collegamento statico15 il meccanismo per cui le librerie di sistema vengono trattate come qualsiasi altro modulo oggetto, e dunque combinate dal loader nell'immagine binaria del programma. In caso di collegamento statico parliamo di librerie statiche. Il collegamento dinamico16 il meccanismo per cui le librerie di sistema sono inserite nell'immagine binaria sottoforma di stub. Il sistema operativo si occupa di regolare gli accessi alle regioni di memoria condivise. Cos facendo, ogni processo pu fare riferimento ad una stessa copia della libreria. In caso di collegamento dinamico parliamo di librerie condivise. Swapping Lo swapping17 l'avvicendamento dei processi in memoria centrale, ovvero il trasferimento dei processi18 tra memoria centrale e backing 19 20 store , generalmente situata nella swap area , che permette la multiprogrammazione secondo il criterio di avvicendamento dettato dall'algoritmo di scheduling.
9 il compilatore genera codice assoluto nel caso in cui si conosca a priori lo spazio degli indirizzi assoluti dove il programma risieder. Se, successivamente, la locazione iniziale cambiasse, sarebbe necessario ricompilare il codice. 10 il compilatore genera codice rilocabile, nel caso in cui non si conosca a priori lo spazio degli indirizzi assoluti dove il programma risieder. Se, successivamente, la locazione iniziale cambiasse, sarebbe necessario ricaricare il codice. 11 il codice assoluto viene generato in fase di esecuzione, nel caso in cui il processo possa essere spostato da uno spazio di memoria ad un altro. La maggior parte dei sistemi operativi adotta questo metodo. 12 ovvero unit di gestione della memoria. 13 anche detto dynamic loading. 14 pensiamo alle procedure di gestione degli errori. 15 anche detto static linking. 16 anche detto dynamic linking. 17 anche detto avvicendamento dei processi, o avvicendamento. 18 in caso di swapping, il trasferimento viene talvolta detto roll-in/roll-out. 19 ovvero memoria ausiliaria, nella quale deve garantito l'accesso diretto. 20 la swap area una porzione del disco logicamente separata da quella riservata al le system.

Un processo pu essere swappato solo se non presenta pending I/O dovuto all'I/O asincrono, oppure se l'eventuale pending I/O fa uso di kernel buering 21 .
Allocazione della memoria Il problema dell'allocazione dinamica 22 consiste nel soddisfare una richiesta n-dimensionale, data della memoria una lista di hole23 . Lo schema di allocazione denisce le modalit in cui viene allocato lo spazio privato dei processi, e pu essere:

: ciascun processo contenuto24 in una singola sezione contigua di memoria. La memory management unit (MMU) fa corrispondere dinamicamente lo spazio di indirizzamento logico allo spazio di indirizzamento sico attraverso uno schema di rilocazione e protezione basato su registro di rilocazione e registro limite25 , i quali individuano lo spazio privato del processo. Ad ogni context switch, il dispatcher carica i contenuti dei due registri. Questo tipo di rilocazione permette al sistema operativo di cambiare dinamicamente le proprie dimensioni, supportando cos il codice transiente26 .
allocazione contigua allocazione paginata

: segue il metodo della paginazione. : segue il metodo della segmentazione.

allocazione segmentata

Le soluzioni al problema dell'allocazione dinamica, cio i criteri di selezione di un hole, sono i seguenti:

first-fit best-fit

: si assegna il primo hole abbastanza grande. : si assegna il pi grande hole.

: si assegna il pi piccolo hole abbastanza grande.

worst-fit

Frammentazione La frammentazione il fenomeno per cui in regime di allocazione contigua della memoria, non possibile risolvere il problema dell'allocazione dinamica, nonostante la memoria presenti porzioni libere e/o
21 in caso di pending I/O con kernel buering, i trasferimenti tra lo spazio privato del processo e la memoria riservata al kernel possono avvenire solo quando il processo presente in memoria centrale. Quindi un pending I/O con kernel buering non causa l'incoerenza dei dati in caso di swapping. 22 anche detto problema dell'allocazione dinamica. 23 un hole, anche detto buco libero, una porzione di memoria libera. 24 ciascun processo contenuto in equivale a dire lo spazio privato di ciascun processo individuata da . 25 il registro di rilocazione contiene l'indirizzo sico minore, il registro limite contiene l'intervallo di indirizzi logici, il limite superiore dello spazio di indirizzamento sico privato dato dalla somma dei due. La MMU somma l'indirizzo logico al contenuto del registro di rilocazione, determinando cos il corrispondente indirizzo sico, vericando ogni volta che sia minore uguale al limite superiore. Ad ogni processo sono associati un contenuto del registro di rilocazione e del registro limite, che ne determina lo spazio privato. 26 il codice transiente il codice del sistema operativo che pu essere caricato dinamicamente.

inutilizzate 27 . La quantit di frammentazione dipende dal criterio di selezione dell'hole28 , mentre la sua gravit dipende dalla dimensione totale della memoria e dalla dimensione media dei processi.

frammentazione esterna: lo spazio libero totale sarebbe suciente a soddisfare la richiesta, ma non contiguo, in quanto framentato in tanti piccoli hole. La frammentazione esterna pu essere risolta tramite: compattazione: riunisce tutti i frammenti di hole in un unico grande hole collocato ad un'estremit della memoria.  paginazione o segmentazione: questi due schemi di allocazione permettono la non contiguit degli spazi privati.

frammentazione interna:

ria inutilizzate.

lo spazio privato contiene porzioni di memo-

La regola del 50 percento il risultato di un'analisi statistica dell'algoritmo che realizza il criterio rst-t: per n blocchi assegnati, se ne perdono 0, 5n a causa della frammentazione esterna.
1.1 Paginazione

La paginazione un schema di rilocazione dinamica che permette la non contiguit degli spazi privati, attraverso la suddivisione dello spazio di indirizzamento sico in frame e dello spazio di indirizzamento logico in pagine, entrambe di uguale dimensione ssa29 . Risolve la frammentazione esterna attraverso la non contiguit degli spazi privati, ma sore di frammentazione interna30 . La paginazione separa nettamente lo spazio di indirizzamento logico dallo spazio di indirizzamento sico: la dierenza fra la memoria vista dall'utente come un unico spazio contiguo e l'eettiva memoria sica fatta di frame sparsi, colmata dal processo di traduzione degli indirizzi.
27 c' dierenza tra porzione libera e porzione inutilizzata. Una porzione libera un'area di memoria in cui non sia individuato uno spazio privato di un processo; nel caso della memoria centrale, un'area che non realizza uno spazio privato per un processo. Una porzione inutilizzata pu anche essere una sub-porzione di uno spazio privato di un processo, che per non attualmente occupata dal codice o dai dati del processo. 28 rst-t e best-t sorono di frammentazione esterna; worst-t produce invece hole pi grandi, quindi possiamo dire che non sore di framentazione esterna, ma pi costoso in termini di tempo e memoria 29 la dimensione dei frame e delle pagine tipicamente ssa e denita dall'architettura del calcolatore. Sono in fase di progettazione sistemi di paginazione che supportano la variazione dinamica della dimensione dei frame e delle pagina, di modo da minimizzare la frammentazione interna. Ad ogni modo una dimensione pari ad una potenza di due facilita il processo di traduzione degli spazi. 30 la frammentazione interna in regime di paginazione dovuta al non poter stabilire a priori un'esatta corrispondenza dimensionale tra processi e pagine. Ne risulta infatti la tendenza ad assegnare frame di dimensioni maggiori dell'eettiva dimensione del processo. Per questo motivo consigliato denire pagine e frame di piccole dimensioni.

Traduzione degli indirizzi Il si basa su:

indirizzi logici paginati

processo di traduzione degli indirizzi

: un indirizzo logico viene interpretato come un numero di pagina e un oset di pagina. numero di pagina
mn

oset di pagina
n

il sistema operativo mantiene per ogni processo una tabella indicizzata dai numeri di pagina, i cui elementi sono i corrispondenti numeri di frame. La PT risiede in memoria centrale ed individuata dal page table base register (PTBR), e dal page table lenght 32 register (PTLR) , i cui contenuti sono specici per ogni processo.
page table (PT)

31 :

Il sistema operativo mantiene inoltre una frame table (FT)33 indicizzata dai numeri di frame, i cui elementi indicano se il frame corrispondente libero oppure assegnato, specicando nel qual caso il numero di pagina corrispondente. Ogni context switch comporta l'aggiornamento del PTBR da parte del dispatcher, ed un eventuale aggiornamento della FT: quindi la paginazione fa aumentare la latenza di dispatch.
Struttura della PT La page table pu essere strutturata nei seguenti modi:

:34 la PT viene essa stessa paginata, tipicamente su due livelli, individuando una page table esterna, i cui elementi puntano agli elementi di una page table interna, i cui elementi puntano ai frame. E' inappropriata per la paginazione di spazi di indirizzamento a 64 bit35 .
multilevel page table

: la PT realizzata come una hash table denita dall'hashing sul numero di pagina. Ogni elemento dell'hash table contiene una lista concatenata in cui ogni elemento composto dal numero di pagina, dal corrispondente numero di frame e un puntatore all'elemento successivo. E' particolarmente eciente per la paginazione di indirizzi sparsi.
hash page table

: variante della paginazione hash in cui ciascun elemento della hash table contiene i riferimenti ai frame corrispondenti ad un gruppo di pagine contigue. E' particolarmente eciente per spazi di indirizzamento a 64 bit. Riduce lo spazio richiesto dalla PT e ottimizza la
clustered page table

. 35 inadatto a spazi di indirizzamento a 64 bit, in quanto sarebbero necessari pi livelli di paginazione per ovviare al problema della dimensione, cos tanti da comportare un numero eccessivo di accessi alla memoria.
retta

31 ovvero tabella delle pagine. 32 il PTLR previsto solo da alcuni ambienti paginati come meccanismo di protezione. 33 ovvero tabella dei frame. 34 anche detta forward-mapped page table, ovvero tabella delle pagine ad associazione

di-

paginazione, sfruttando il fatto che lo spazio di indirizzi di un programma non arbitrariamente sparso su pagine isolate, ma distribuito per rache di riferimenti.

inverted page table: la PT indicizzata dal numero di frame, ciascun elemento costituito dal PID del processo che detiene il frame, e dal numero di pagina corrispondente. L'indice della corrispondenza nella PT dunque uguale al numero di frame corrispondente. L'indirizzo logico interptetato come una tripletta: PID, numero di pagina e oset di pagina. Riduce lo spazio richieso dalla PT. Aumenta il tempo medio di ricerca nella tabella, in quanto, essendo indicizzata dai frame mentre le ricerche si fanno per pagine, per trovare una corrispondenza occorre esaminare al pi tutta la PT. Rende molto dicile realizzare la condivisione delle pagine, in quanto tipicamente realizzata da indirizzi logici multipli associati ad un unico indirizzo sico, mentre nella PT invertita ad un numero di frame pu essere associato al pi un numero di pagina.

TLB La translation look-asid buffer (TLB) realizza il caching della PT, per cui necessario consultare la PT solo in caso di TLB miss, evitando cos un necessario rallentamento degli accessi pari ad un fattore 236 . Il principio di localit intrinseco nel caching, impone un criterio di sostituzione TLB, sebbene alcuni elementi possano essere vincolati 37 . Il tempo effettivo di accesso alla memoria in ambiente paginato tiene conto non solo dell hit time e del miss time, ma anche dell'hit ratio e miss ratio, ovvero le rispettive probabilit.
T = hratio Thit + mratio Tmiss

(1)

Protezione La protezione in ambiente paginato si realizza tramite due meccanismi di protezione: uno realizzato all'interno della PT ed uno all'interno della TLB:

: si realizza memorizzando in ciascun elemento della PT il maschera di bit di protezione38 e il bit di validit39 . Inoltre alcuni ambienti paginati prevedono l'impiego del PTLR.
protezione PT protezione TLB

: si realizza in due modi alternativi:

ASID

identifier (ASID)

: ciascun elemento della TLB memorizza un address space , il quale lo associa univocamente al processo di appartenenza.

36 in assenza di TLB, ogni accesso alla memoria comporterebbe un necessario accesso alla PT ed un conseguente accesso diretto alla memoria. 37 anche detti elementi wired down. 38 la maschera di bit di protezione specica la composizione di modalit di accesso consentite (lettura, scrittura, lettura/scrittura). 39 il bit di validit specica la validit o meno del frame corrispondente, ovvero la sua appartenenza allo spazio privato del processo.

TLB flushing

: ad ogni context switch viene eseguito il ush della TLB, di modo che possa contenere via via solo riferimenti inerenti al processo in esecuzione.

Pagine condivise La paginazione consente la condivisione delle pagine. Una pagina condivisa una pagina mappata in un frame dinamicamente annesso allo spazio privato dei processi che intendono condividerlo. Per essere condivisibile, una pagina deve contenere necessariamente ed esclusivamente codice 40 rientrante , ovvero un codice non automodicante, che dunque non cambia in fase di esecuzione.
1.2 Segmentazione

La segmentazione uno schema di rilocazione dinamica che permette la non contiguit degli spazi privati, attraverso la suddivisione dello spazio di indirizzamento logico in segmenti di dimensione variabile. Tipicamente infatti il compilatore stesso a strutturare il codice sorgente in segmenti. Risolve la frammentazione interna attraverso la dimensione esatta dei segmenti, ma risolve solo in parte la frammentazione esterna, in quanto, nonostante la non contiguit degli spazi privati, i segmenti sono di dimensione variabile.
Traduzione degli indirizzi Il si basa su:

processo di traduzione degli indirizzi

: un indirizzo logico viene interpretato come un numero di segmento e un oset di segmento.


indirizzi logici segmentati

numero di segmento
mn
segment table (ST)

oset di segmento
n

il sistema operativo mantiene per ogni processo una tabella indicizzata dal numero di segmento, in cui ciascun elemento una coppia ordinata registro base e registro limite.

41 :

Protezione La protezione in ambiente segmentato si realizza tramite il meccanismo di protezione interno alla ST, il quale si rifa totalmente al modello di rilocazione base/limite. Ogni volta che deve essere tradotto un indirizzo logico segmentato, l'oset di segmento viene confrontato con il valore del registro limite corrispondente allo stesso numero di segmento: qualora l'oset di segmento eccedesse questo valore, verrebbe emesso un segnale di interruzione codicante un errore di indirizzamento.
40 anche detto codice puro. 41 ovvero tabella dei segmenti.

1.3

Memoria virtuale

La memoria virtuale la tecnica di gestione della memoria che in ambiente paginato permette l'esecuzione dei processi anche quando non siano interamente presenti nella memoria sica. Realizzando l'avvicendamento delle pagine, la memoria virtuale simula uno spazio di indirizzamento sico ampio contiguo e condivisibile, detto spazio di indirizzamento virtuale, il quale permette di aumentare il livello di multiprogrammazione e liberare i programmi dal vincolo della dimensione.
Paginazione su richiesta La paginazione su richiesta il meccanismo di avvicendamento della pagine in memoria secondo il criterio di avvicendamento lazy wapping, per cui vengono caricate in memoria solo le pagine realmente necessarie. Questo meccanismo realizzato dalla sostituzione delle pagine eettuata dal pager42 secondo un denito algoritmo di sostituzione delle pagine, e fa uso delle seguenti strutture:

PT capace di contrassegnare la presenza/assenza di una pagina all'interno di un frame, attraverso il bit di validit e la maschera di bit di protezione.
page table per la paginazione su richiesta:

sezione del disco dedicata a conservare le pagine non presenti in memoria. Per migliorare l'ecienza della paginazione su richiesta, l'immagine di un processo viene interamente caricata in questa sezione, di modo cvhe l'avvicendamento delle pagine avvenga tra la memoria sica e la swap area, minimizzando le latenze dovute al le system.
swap area

43 :

Un sistema di paginazione su richiesta dunque analogo ad un sistema paginato con avvicendamento dei processi: con la dierenza che l'avvicendamento orientato alle pagine e non all'intero spazio privato del processo. La paginazione su richiesta pura una paginazione su richiesta per cui una pagina viene caricata in memoria solo se richiesta. Le prestazioni della paginazione su richiesta sono misurate dal tempo d'accesso
effettivo

T = (1 p)Tpage hit + pTpage f ault

(2)

dove p la probabilit che si verichi una page fault, ovvero un'assenza di pagina.
Copy-on-write La copy-on-write44 il meccanismo per cui processi genitori possono condividere con i processi gli le pagine del proprio spazio di indirizzi, ntantoch queste non vengano modicate da uno dei due: solo allora queste vengono duplicate di modo che ognuno ne mantenga una copia privata.
delle pagine

detto paginatore, il modulo del sistema operativo che si occupa della sostituzione . 43 anche detto area di avvicendamento, o area di scambio. 44 ovvero copiatura su scrittura.

42 anche

Sostituzione delle pagine La sostituzione delle pagine il meccanismo di avvicendamento della pagine in memoria che, in corrispondenza di un aumento del livello di multiprogrammazione, permette di evitare la over45 riassegnando i frame, detti frame vittima, secondo un algoallocation 46 ritmo di sostituzione delle pagine :

FIFO: si sostituisce la pagina che risiede in memoria da pi tempo. Non risulta eciente in quanto non facendo alcuna considerazione sul contenuto della pagina, potrebbe sostituire una pagina errata, aumentando conseguentemente la PFF. E' aetto dall'anomalia di Belady.

E' un algoritmo ottimale, in quanto minimizza sempre la PFF e non presenta anomalia di Belady. E' dicile realizzarlo perch richiede la conoscenza apriori della successione dei riferimenti: per questo viene tipicamente utilizzato solo negli studi comparativi.
OPT last recently used (LRU)

47 : si sostituisce la pagina che non si user per il periodo pi lungo.

: si sostituisce la pagina che non stata usata per il periodo pi lungo. La registrazione dell'ordine temporale dei riferimenti pu essere realizzata tramite contatori o stack, e in generale necessita comunque di assistenza da parte dell'architettura del calcolatore. E' un algoritmo ottimale di sostituzione con ricerca all'indietro 48 e non presenta anomalia di Belady. E' l'algoritmo pi diuso. Pu essere approssimato dall'algoritmo con bit di riferimento supplementari e dall'algoritmo con seconda chance.
conteggio: si sostituisce la pagina basandosi sul numero di riferimenti fatti. Distinguiamo:

 

last frequently used (LFU)

numero di riferimenti.

: si sostituisce la pagina con il minor : si sostituisce la pagina con il mag-

most frequently used (MFU)

gior numero di riferimenti.

random

: si sotituisce una pagina scelta casualmente. la lista dei frame liberi.

Il

pool of free frames

sovrallocazione, il fenomeno per cui non pi possibile allocare un frame per un processo a causa della saturazione della memoria sica. In assenza di sostituzione delle pagine, in condizioni di sovrallocazione il sistema operativo dovrebbe terminare il processo, ma ci non sarebbe n eciente n compatibile con la trasparenza della paginazione per l'utente. 46 anche detta algoritmo di page replacement. 47 anche detto MIN, o algoritmo ottimale di sostituzione delle pagine. 48 consideriamo una successione S di riferimenti, e la sua inversa S R , la P F F S,OP T = P F FS R ,LRU .

45 ovvero

10

Tipologia di sostituzione delle pagine Gli algoritmi di sostituzione delle pagine possono essere classicati in:

sostituzione globale: un processo pu sottrarre un frame precedentemente allocato per un altro processo. Genera una maggiore produttivit, sebbene nessun processo possa controllare la propria PFF, in quanto dipendente dal comportamento di tutti gli altri processi. sostituzione locale

: un processo non pu sottrarre un frame precedentemente allocato per un altro processo, ma gestire solo i frame che gli sono stati allocati.

Algoritmi di memoria transitoria delle pagine Gli algoritmi di memoria transitoria delle pagine sono procedure che utilizzano tecniche di memoria transitoria per ottimizzare le prestazioni della paginazione su richiesta.
in caso di page fault si sceglie un frame vittima, ma prima di trasferirlo

nella swap area, si carica la pagina richiesta in un frame del pool of free frames. Quando nel seguito si scrive il frame vittima nella swap area, si aggiunge il suo frame al pool of free frames. Questa procedura permette al processo di ricominciare al pi presto. dichiarato libero, ma il suo contenuto non cambia ntantoch appartiene al poll of free frames. Questa procedura rende dispensabile l'I/O tra memoria centrale e swap area. bit di modica nella PT, e quando il pager inattivo, si sceglie una pagina modicata e la si sovrascrive sul disco. Questa procedura aumenta la probabilit che al momento della sostituzione, il frame non abbia modiche pendenti da sovrascrivere.
dei frame

in caso di sostituzione, il frame vittima viene trasferito nella swap area e

in caso di modica del contenuto di un frame, si imposta il corrispondente

Allocazione dei frame Gli algoritmi di allocazione tinguono per i seguenti metodi di allocazione:

allocazione uniforme

si dis-

di frame.

: a ciascun processo allocato un numero uguale

allocazione proporzionale

: a ciascun processo allocato un numero di frame proporzionale alla sua dimensione.

: a ciascun processo allocato un numero di frame proporzionale alla sua priorit.


allocazione per priorit

Nell'allocazione uniforme e nell'allocazione proporzionale, l'allocazione ad ogni processo dipende dal livello di multiprogrammazione : l'allocazione per priorit o un'allocazione proprozionale alla combinazione di dimensione e priorit, risolve tale dipendenza. 11

Il numero minimo di frame allocabili per ciascun processo denito dall'architettura del calcolatore, mentre il numero massimo denito dalla quantit di memoria sica disponibile. In sistemi non uniform acces memory (NUMA) lo scheduler deve tener traccia dell'ultimo processore sul quale ciascun processo stato eseguito, realizzando cos una processor anity che minimizzi il tempo medio di accesso alla memoria.
Prepaginazione La prepaginazione il meccanismo che intende impedire l'alto livello di paginazione della localit iniziale di un processo, mappando in memoria pi pagine di quelle strettamente necessarie previste dalla paginazione su richiesta pura. La prepaginazione conveniente laddove il costo delle page fault sia maggiore del costo di paginazione di pagine non strettamente necessarie: quindi la prepaginazione viene sicuramente attuata all'avvio/riavvio di un processo. Vale il seguente vincolo di convenienza della prepaginazione
C (s) > C ((1 )s)

(3)

dove s sono le pagine prepaginate e la frazione di pagine prepaginate strettamente necessarie.


Dimensione delle pagine La dimensione delle pagine invariabilmente una potenza di 2, ma non esiste una soluzione ottimale al problema della denizione della dimensione: piccole dimensioni minimizzano la frammentazione interna e massimizzano la risoluzione della localit; grandi dimensioni minimizzano la dimensione della PT e della FT, nonch il tempo medio di I/O. La tendenza storicamente verso l'incremento della dimensione delle pagine. Portata della TLB La portata della TLB49 esprime la quantit di memoria accessibile dalla TLB, ed data dunque dal numero di elementi moltiplicato per la dimensione delle pagine. Essa dunque proporzionale alla dimensione delle pagine. Laddove fosse prevista la dimensione variabile delle pagine, la TLB dovrebbe essere gestita dal sistema operativa, e non direttamente dall'architettura del calcolatore. In un ambiente paginato ideale la portata della TLB dovrebbe essere pari alla dimensione totale degli insiemi di lavoro. Struttura dei programmi Sebbene la paginazione sia trasparente al programma utente, alcuni accorgimenti nella struttura dei programmi possono ottimizzare la paginazione attraverso la massimizzazione della localit:

: gli stack, essendo caratterizzati dall'accesso LIFO, massimizzano la localit; mentre al contrario, le hash table diondono per
strutture dati

49 anche

detta TLB reach.

12

denizione i riferimenti. Nella gestione delle strutture dati vettoriali, occorre sempre tener presente che gli array vengono memorizzati per riga, quindi gli accessi per riga negli array massimizzano la localit.

funzioni

: il codice rientrante e le procedure ricorsive massimizzano l'impaccamento, ovvero il raggruppamento del codice compilato all'interno della stessa pagina. : poich i puntatori tendono alla distribuzione casuale degli accessi alla memoria, diminuendo conseguentemente la localit, i linguaggi OO P massimizzano la localit.
linguaggio di programmazione

In un ambiente paginato dunque, la localit misura l'ecienza di una struttura dati e dei costrutti di programmazione.
Trashing Il trashing50 il fenomeno per cui viene speso pi tempo per la paginazione che per l'eettiva esecuzione dei processi. Si verica quando si eccede il massimo grado di multiprogrammazione sostenibile o si assegnano meno frame rispetto alla dimensione della localit attuale. Le soluzioni al trashing sono:

algoritmo di sostituzione locale algoritmo di sostituzione per priorit

: il modello working-set51 si basa sul principio di localit preggendosi di approssimare l'insieme dei frame di un processo al suo in52 sieme di lavoro , ovvero quell'insieme di pagine interne alla finestra di lavoro . Una pagina viene sostituita solo quando non sia stata pi acceduta dopo unit di tempo dopo il suo ultimo riferimento. Un troppo piccolo provoca esclusione di localit, mentre un troppo grande provoca sovrapposizione di localit. Il modello working-set impone
working-set

D=
i

W SSi

(4)

dove D la richiesta di frame e W SSi la dimensione del working-set dell'i-esimo processo. Il trashing si verica quando D maggiore del numero totale di frame liberi.

: si ssa un limite inferiore e superiore che individuano un range sostenibile per la page fault frequency. Se la frequenza eettiva di un processo maggiore del limite superiore, viene allocato per quel processo un frame in pi. Se invece la frequenza eettiva minore del limite inferiore, gli viene sottratto un frame. I frame deallocati vengono distribuiti ai processi con PFF elevate.
page fault frequency (PFF)

50 anche detto paginazione degenere. 51 ovvero modello dell'insieme di lavoro. 52 anche detto working-set.

13

Recupero della memoria centrale Il page frame reclaiming algo un algoritmo presente in ogni sistema operativo, destinato a liberare frame in uso, selezionati in base a speciche regole euristiche. Il recupero pu essere eseguito ad esaurimento della memoria centrale o ad intervalli temporali regolari. Il PFRA suddivide i frame nelle seguenti categorie, ordinate in base alla priorit di recupero:
rithm (PFRA)

frame scartabili frame mappati frame anonimi frame non recuperabili

Il PFRA dispone di una struttura dati di reverse mapping, per determinare tutti i processi che condividono un determinato frame, in modo tale che ad ogni recupero possa aggiornare le tabelle di paginazione di tutti i processi interessati.
Allocazione della memoria del kernel Il problema dell'allocazione dinamica della memoria riguarda anche i processi del kernel. L'allocazione della memoria per i processi del kernel fa riferimento ad una lista di frame liberi distinta dalla lista di frame liberi destinata all'allocazione della memoria dei processi utente. Questo perch l'elevata dinamicit delle sue strutture dati rende necessaria la minimizzazione della frammentazione, e perch spesso necessita l'allocazione contigua53 . Lo schema di allocazione denisce le modalit in cui viene allocato lo spazio privato dei processi del kernel, e pu essere:

allocazione buddy

: utilizza un segmento di grandezza ssa, contenente frame contigui, ricorsivamente partizionabile in buddy adiacenti secondo lo schema dell'albero binario. L'allocatore-potenza-di-due il modulo che si occupa di allocare la memoria del kernel, e lo fa in unit di dimensioni pari a potenze di due con arrotondamento per eccesso. Soddisfa la contiguit grazie alla tecnica di fusione54 . Sore di frammentazione interna dovuta all'arrotondamento per eccesso.
allocazione a lastre

una lastra composta da uno o pi frame contigui. Una cache consiste di una o pi lastre; vi una sola cache per ciascuna categoria di oggetto, ovvero per ciascun insieme di istanze di una stessa struttura dati; quindi ogni lastra rappresenta un'istanza di un oggetto. L'allocatore delle lastre alloca dunque gli oggetti del kernel per categorie di oggetto, in cache di lastre di dimensione esatta. Al principio, ogni cache presenta solo lastre libere. Quando una struttura

55 :

nel caso di I/O DMA. tecnica di coalescing, consiste nel fondere due buddy adiacenti in un'unica porzione di memoria. Considerato il meccanismo di allocazione realizzato dall'allocatorepotenza-di-2, immediato soddisfare la contiguit attraverso la tecnica di fusione. 55 anche detta allocazione slab.

53 ad esempio, 54 anche detta

14

dati del kernel ha bisogno di un'istanza, l'allocatore delle lastre sceglie una lastra libera e gliela assegna, contrassegnadola come lastra usata. Risolve denitivamente la frammentazione, sia interna che esterna, in quanto ogni struttura dati del kernel ha una cache di lastre associata di dimensione esatta. E' uno schema di allocazione molto eciente in quanto gli oggetti sono creati in anticipo e possono dunque essere allocati rapidamente.

15