PDA

View Full Version : [PYTHON] Memoria virtuale e algoritmi di sostituzione delle pagine FIFO/LRU


Zirko88
10-06-2014, 18:50
Ciao a tutti,
scrivo sul forum per cercare una mano d'aiuto per questo progetto universitario che devo realizzare. Purtroppo le lezioni su python sono state poche e sulle cosucce base, siamo stati liquidati dalla prof con "imparate python da soli, su internet si trovano una marea di guide"... soldi spesi bene le tassse universitarie eh? Comunque tornando a noi questo è il progetto:

http://i59.tinypic.com/2nvz29f.jpg
http://i60.tinypic.com/2eyuulw.jpg
http://i62.tinypic.com/2mm5pwp.jpg

Bene conosco le basi del linguaggio ma non ho idea da dove iniziare per fare questo progetto, ho provato a cercare su internet ma non riesco a raccapezzarmi in nulla... qualcuno può aiutarmi? Magari dare dei suggerimenti? Degli input?

ingframin
11-06-2014, 10:49
Non ho capito il tuo problema. Non conosci python? Non capisci come si implementa l'algoritmo?
Se stai facendo questo presumo tu sia almeno al secondo anno e che conosca Java o C o qualcosa del genere.
Puoi provare a farlo in un altro linguaggio e poi tradurlo (pessima cosa ma qui conta il risultato) oppure puoi studiare python e farlo direttamente.
Se non sei abbastanza sveglio da imparare python da solo non credo tu possa mai superare il corso di sistemi operativi...
Anyway, per cominciare:
http://inventwithpython.com/
http://getpython3.com/diveintopython3/
http://www.greenteapress.com/thinkpython/thinkpython.html
https://docs.python.org/3/tutorial/index.html

Enjoy!
EDIT:
Ma perche' devi proprio farlo in python?

Zirko88
13-06-2014, 09:04
Saprei implementare gli algoritmi... ma solo dopo aver capito come creare il numero di processi inserito in input, ripartirlo in pagine, assegnarlo ai frame in cui divedere la memoria...

WarDuck
14-06-2014, 19:05
Saprei implementare gli algoritmi... ma solo dopo aver capito come creare il numero di processi inserito in input, ripartirlo in pagine, assegnarlo ai frame in cui divedere la memoria...

Se ho capito bene devi solo simulare quegli algoritmi, quindi secondo me ti conviene cominciare a pensare in termini di classi e oggetti che hanno i loro attributi e le loro caratteristiche (es. Processo, Memoria...).

Zirko88
16-06-2014, 18:32
Se ho capito bene devi solo simulare quegli algoritmi, quindi secondo me ti conviene cominciare a pensare in termini di classi e oggetti che hanno i loro attributi e le loro caratteristiche (es. Processo, Memoria...).

Grazie in effetti non avevo capito che dovevo simulare, poi la prof mi ha detto esattamente questo che mi hai detto tu, ho fatto una classe per il processo con id e dimensione, quale struttura dati mi consigliate di utilizzare per simulare la memoria?

Zirko88
19-06-2014, 09:58
Una lista?

ingframin
19-06-2014, 11:02
Una lista?

A naso ti direi deque:
https://docs.python.org/3.4/library/collections.html#collections.deque

Con una lista funziona bene uguale ma credo ci perdi un po' in velocita' e soprattutto la lista non ha appendleft(), popleft() e extendleft().
Inoltre la deque (si pronuncia "deck" ma io la pronuncio deque ugualmente :P) e' fatta apposta per queste operazioni (deque = double ended queue).

Se ti vuoi semplificare la vita non dimenticare di implementare il metodo __eq__(self,obj) nelle tue classi che implementano i processi.
__eq__ ti serve per i confronti (puoi usare l'operatore == per esempio) e per le ricerche.

Zirko88
24-06-2014, 10:37
A naso ti direi deque:
https://docs.python.org/3.4/library/collections.html#collections.deque

Con una lista funziona bene uguale ma credo ci perdi un po' in velocita' e soprattutto la lista non ha appendleft(), popleft() e extendleft().
Inoltre la deque (si pronuncia "deck" ma io la pronuncio deque ugualmente :P) e' fatta apposta per queste operazioni (deque = double ended queue).

Se ti vuoi semplificare la vita non dimenticare di implementare il metodo __eq__(self,obj) nelle tue classi che implementano i processi.
__eq__ ti serve per i confronti (puoi usare l'operatore == per esempio) e per le ricerche.

Grazie :D
Comunque nella traccia dice di inserire da linea di comando la lunghezza della successione dei riferimenti... esattamente cosa vuol dire?

van9
24-06-2014, 12:31
Grazie :D
Comunque nella traccia dice di inserire da linea di comando la lunghezza della successione dei riferimenti... esattamente cosa vuol dire?

La stringa dei riferimenti e la sua lunghezza? Meno python/code/classi e più teoria.

ingframin
24-06-2014, 15:42
http://www.federica.unina.it/ingegneria/sistemi-operativi-ctr/memoria-virtuale-sistemi-operativi-ctr/