Introduzione
Il gestore della memoria su un sistema multitasking a partizionamento dinamico della memoria consente di
allocare un certo numero di processi in memoria centrale e nella memoria secondaria (swap area).
L'allocazione dei processi in memoria centrale segue algoritmi ben precisi che sono noti dalla letteratura: first
fit, best fit, next fit, worst fit. Strutture dati necessarie per la gestione dello stato dei processi in memoria
sono la bitmap, il buddy system e le liste concatenate.
[/b]Obiettivo
Si deve realizzare un applicativo PERL che simuli il funzionamento di un gestore della memoria. Il gestore
deve accettare come argomenti passati da linea di comando i seguenti dati:
- numero massimo di processi
– dimensione della memoria centrale dedicata ai processi
– attivazione (o meno) della swap area
– dimensione massima della swap area
– dimensione massima di un processo
– dimensione minima di un processo
– algoritmo di allocazione dei processi
– tempo minimo di permanenza in memoria di un processo
– tempo massimo di permanenza in memoria di un processo
una volta passati tutti questi parametri al gestore (alcuni dati possono essere considerati di default), il
gestore deve generare un numero random da interpretare come numero corrente dei processi, per ognuno
dei quali stabilisce il tempo di permanenza, l'istante di arrivo in memoria e la dimensione. Sulla scorta di
questi dati, il gestore deve provvedere ad allocare i processi, eventualmente impiegare la swap area, deallocare i processi man mano che termina il periodo di permanenza in memoria.
I tempi citati in questo progetto (tempi di permanenza e istante di arrivo) sono da considerarsi di
riferimento, nel senso che non si richiede l'impiego di unità di misura.
Nel corso della sua elaborazione, il gestore deve mostrare a video (e su un apposito file di log) ogni
operazione di allocazione e deallocazione.
La scelta della struttura di gestione dello stato corrente della memoria (bitmap, lista concatenata, buddy
system) è facoltativa. Nel corso dell'elaborazione deve però essere visionabile, e deve anche essere
stampata su file.