370 likes | 510 Views
Φροντιστ ήριο Εργ. Λειτουργικών Συστημάτων. Αλγ όριθμοι ανάθεσης μνήμης. 4 η εργασία 2012-13. 1 ο Πρόβλημα Αναπτύξτε μια νέα κλήση του συστήματος (system call) στα πλαίσια του διαχειριστή διεργασιών (process manager) που να επιστρέφει τα εξής στοιχεία: Το πλήθος των οπών μνήμης.
E N D
Φροντιστήριο Εργ. Λειτουργικών Συστημάτων Αλγόριθμοι ανάθεσης μνήμης
4η εργασία 2012-13 • 1ο Πρόβλημα • Αναπτύξτε μια νέα κλήση του συστήματος (system call) στα πλαίσια του διαχειριστή διεργασιών (process manager) που να επιστρέφει τα εξής στοιχεία: • Το πλήθος των οπών μνήμης. • Το μέσο μέγεθος οπής. • Υλοποιείστε ένα απλό πρόγραμμα που χρησιμοποιεί την νέα κλήση του συστήματος που αναπτύξατε και να εμφανίζει τα ακόλουθα στοιχεία ανά 1 δευτερόλεπτο: • Πλήθος οπών <tab> Μέσο μέγεθος σε mb
θέματα • Από το 3.1.5 και πέρα, χρησιμοποιείται virtual memory (pages κτλ.), η οποία περιπλέκει τα πράγματα. • Στο παράδειγμα θα χρησιμοποιηθεί μια παλαιότερη έκδοση όπου φαίνεται ξεκάθαρα η λειτουργία του hole list.
Ορισμός system call • Ορίζουμε τον αριθμό του νέου system call • Ορίζουμε το όνομα της συνάρτησης που υλοποιεί το system call • Και τέλος το prototype
Υλοποίηση μιας συνάρτησης που καλεί το system call
2ο Πρόβλημα • Στην έκδοση 3.1.x του MINIX ο μηχανισμός ανάθεσης μνήμης που χρησιμοποιεί ο διαχειριστής διεργασιών (process manager) ακολουθεί την πολιτική first fit: ανατρέχει την λίστα των οπών, κάθε φορά από την αρχή της λίστας, προσπαθώντας να εντοπίσει την πρώτη οπή που είναι αρκετά μεγάλη για να χωρέσει το μέγεθος της μνήμης που πρέπει να ανατεθεί. • Τροποποιήστε τον μηχανισμό ανάθεσης μνήμης έτσι ώστε σε κάθε ανάθεση μνήμης να εμφανίζεται στην οθόνη το μέγεθος της οπής που εντοπίστηκε και ο υπόλοιπος διαθέσιμος χώρος στην οπή, μετά την ανάθεση • Τροποποιήστε τον μηχανισμό ανάθεσης μνήμης έτσι ώστε να ακολουθεί την πολιτική best fit: ανατρέχει την λίστα των οπών και εντοπίζει την οπή που αφήνει το μικρότερο κενό χώρο όταν δεσμευθεί το μέγεθος της μνήμης που έχει ζητηθεί. Σε κάθε ανάθεση μνήμης θα πρέπει να εμφανίζεται στην οθόνη το μέγεθος της οπής που εντοπίστηκε και ο υπόλοιπος διαθέσιμος χώρος στην οπή, μετά την ανάθεση. • Τροποποιήστε τον μηχανισμό ανάθεσης μνήμης ξανά έτσι ώστε να ακολουθεί την πολιτική worst fit: ανατρέχει την λίστα των οπών και εντοπίζει την οπή που αφήνει τον περισσότερο κενό χώρο όταν δεσμευθεί το μέγεθος της μνήμης που έχει ζητηθεί. Σε κάθε ανάθεση μνήμης θα πρέπει να εμφανίζεται στην οθόνη το μέγεθος της οπής που εντοπίστηκε και ο υπόλοιπος διαθέσιμος χώρος στην οπή, μετά την ανάθεση.
Best – Worst Fit • Βασική πολιτική • Ας υπολογίσουμε για κάθε οπή, πόσος χώρος θα έμενε αν βάζαμε εκεί τη διεργασία. • Αποθηκεύουμε κάπου την καταλληλότερη οπή • Κάνουμε την ανάθεση σε αυτή την οπή
3οΠρόβλημα • Με χρήση της κλήσης του συστήματος και του προγράμματος που αναπτύξατε στο 1ο πρόβλημα μελετήστε την συμπεριφορά του συστήματος όταν χρησιμοποιείται η κάθε μια πολιτική εντοπισμού οπών. Πιο συγκεκριμένα, θα πρέπει να δείξετε ότι ο αλγόριθμός σας επιλέγει οπές οι οποίες δεν θα επιλέγονταν με τον αλγόριθμο first-fit
Σύγκριση • Κατόπιν εκκινήστε διεργασίες με την κατώθι σειρά: • #programB & • #programB & • #programB & • #programA & • #programB & • Τερματίστε το programAκαι μετά τη 2η programB. Θα μείνει μείνει μια λίστα οπών με • 1η οπή μεγέθους programBκαι • 2η οπή μεγέθους programA • Εκκινήστε ξανά μια διεργασία programA
First fit • Αναμένουμε ότι η programAθα εισχωρήσει στην 1η οπή
Εκτελώντας τα προγράμματα με την σειρά που δίνεται (Β-Β-Β-Α-Β), παρατηρούμε • με κόκκινο χρώμα, την οπή στην οποία τοποθετήθηκε η 2η εκτέλεση του programB, και • τον χώρο που κατέλαβε (394496-373504=20992byte) • με κίτρινο χρώμα την οπή στην οποία τοποθετήθηκε η εκτέλεση του programA και • τον χώρο που κατέλαβε (352512-343808=8704byte).
Τερματίζουμε την εκτέλεση του programAκαι του 2ουprogramB
First fit • Εκτελούμε μία φορά ακόμα το programA.
First fit • Παρατηρούμε, με κίτρινο χρώμα, ότι η διεργασία Α τοποθετείται στην οπή που δημιουργήθηκε μετά τον τερματισμό της 2ης εκτέλεσης του ProgramB • Η οπή βρέθηκε πιο νωρίς από την οπή που δημιουργήθηκε τερματίζοντας την εκτέλεση του ProgramA.
Best fit • Αναμένουμε ότι η programAθα εισχωρήσει στην 2η οπή • Εκτελούμε μία φορά ακόμα το programA.
Best fit • Παρατηρούμε, ότι με τον αλγόριθμο First-Fit, η διεργασία Α, τοποθετείται στην οπή που δημιουργήθηκε μετά τον τερματισμό της εκτέλεσης του ProgramA • η οπή αυτή αφήνει τον ελάχιστο δυνατό χώρο (0 bytes).
Worst fit • Αναμένουμε ότι η programAθα εισχωρήσει σε κάποια άσχετη οπή, άλλη από αυτές που απελευθερώθηκαν
Worst-fit • Εκτελώντας τα προγράμματα με την σειρά που δίνεται (Β-Β-Β-Α-Β), παρατηρούμε • με κόκκινο χρώμα, την οπή στην οποία τοποθετήθηκε η 2η εκτέλεση του programB, και • τον χώρο που κατέλαβε (659373056-659352064=20992byte) • με κίτρινο χρώμα την οπή στην οποία τοποθετήθηκε η εκτέλεση του programA και • τον χώρο που κατέλαβε (659316224-659307520=8704byte).
Worst fit • Εκτελούμε μία φορά ακόμα το programA.
Worst fit • Παρατηρούμε, με κίτρινο χρώμα, ότι με τον αλγόριθμο First-Fit, η διεργασία Α, τοποθετείται σε άσχετη οπή • η οπή αυτή αφήνει τον μέγιστο δυνατό χώρο.