Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεDora Pulos Τροποποιήθηκε πριν 10 χρόνια
1
Φροντιστήριο Εργ. Λειτουργικών Συστημάτων Αλγόριθμοι ανάθεσης μνήμης
2
4 η εργασία 2012-13 • 1 ο Πρόβλημα • Αναπτύξτε μια νέα κλήση του συστήματος (system call) στα πλαίσια του διαχειριστή διεργασιών (process manager) που να επιστρέφει τα εξής στοιχεία: – Το πλήθος των οπών μνήμης. – Το μέσο μέγεθος οπής. • Υλοποιείστε ένα απλό πρόγραμμα που χρησιμοποιεί την νέα κλήση του συστήματος που αναπτύξατε και να εμφανίζει τα ακόλουθα στοιχεία ανά 1 δευτερόλεπτο: – Πλήθος οπών Μέσο μέγεθος σε mb
3
θέματα • Από το 3.1.5 και πέρα, χρησιμοποιείται virtual memory (pages κτλ.), η οποία περιπλέκει τα πράγματα. • Στο παράδειγμα θα χρησιμοποιηθεί μια παλαιότερη έκδοση όπου φαίνεται ξεκάθαρα η λειτουργία του hole list.
4
Ορισμός system call • Ορίζουμε τον αριθμό του νέου system call • Ορίζουμε το όνομα της συνάρτησης που υλοποιεί το system call • Και τέλος το prototype
5
Υλοποίηση της do_gethinfo
8
Υλοποίηση μιας συνάρτησης που καλεί το system call
9
Τροποποίηση makefiles
10
Δοκιμαστικό πρόγραμμα
11
Αποτέλεσμα
12
• 2 ο Πρόβλημα • Στην έκδοση 3.1.x του MINIX ο μηχανισμός ανάθεσης μνήμης που χρησιμοποιεί ο διαχειριστής διεργασιών (process manager) ακολουθεί την πολιτική first fit: ανατρέχει την λίστα των οπών, κάθε φορά από την αρχή της λίστας, προσπαθώντας να εντοπίσει την πρώτη οπή που είναι αρκετά μεγάλη για να χωρέσει το μέγεθος της μνήμης που πρέπει να ανατεθεί. – Τροποποιήστε τον μηχανισμό ανάθεσης μνήμης έτσι ώστε σε κάθε ανάθεση μνήμης να εμφανίζεται στην οθόνη το μέγεθος της οπής που εντοπίστηκε και ο υπόλοιπος διαθέσιμος χώρος στην οπή, μετά την ανάθεση – Τροποποιήστε τον μηχανισμό ανάθεσης μνήμης έτσι ώστε να ακολουθεί την πολιτική best fit: ανατρέχει την λίστα των οπών και εντοπίζει την οπή που αφήνει το μικρότερο κενό χώρο όταν δεσμευθεί το μέγεθος της μνήμης που έχει ζητηθεί. Σε κάθε ανάθεση μνήμης θα πρέπει να εμφανίζεται στην οθόνη το μέγεθος της οπής που εντοπίστηκε και ο υπόλοιπος διαθέσιμος χώρος στην οπή, μετά την ανάθεση. – Τροποποιήστε τον μηχανισμό ανάθεσης μνήμης ξανά έτσι ώστε να ακολουθεί την πολιτική worst fit: ανατρέχει την λίστα των οπών και εντοπίζει την οπή που αφήνει τον περισσότερο κενό χώρο όταν δεσμευθεί το μέγεθος της μνήμης που έχει ζητηθεί. Σε κάθε ανάθεση μνήμης θα πρέπει να εμφανίζεται στην οθόνη το μέγεθος της οπής που εντοπίστηκε και ο υπόλοιπος διαθέσιμος χώρος στην οπή, μετά την ανάθεση.
13
Τροποποίηση 1
14
Best – Worst Fit • Βασική πολιτική – Ας υπολογίσουμε για κάθε οπή, πόσος χώρος θα έμενε αν βάζαμε εκεί τη διεργασία. – Αποθηκεύουμε κάπου την καταλληλότερη οπή – Κάνουμε την ανάθεση σε αυτή την οπή
15
Best-fit Alloc.c
16
Alloc.c
18
Worst-fit Alloc.c
21
• 3 ο Πρόβλημα • Με χρήση της κλήσης του συστήματος και του προγράμματος που αναπτύξατε στο 1 ο πρόβλημα μελετήστε την συμπεριφορά του συστήματος όταν χρησιμοποιείται η κάθε μια πολιτική εντοπισμού οπών. Πιο συγκεκριμένα, θα πρέπει να δείξετε ότι ο αλγόριθμός σας επιλέγει οπές οι οποίες δεν θα επιλέγονταν με τον αλγόριθμο first-fit
22
Σύγκριση Κατόπιν εκκινήστε διεργασίες με την κατώθι σειρά: #programB & #programA & #programB & Τερματίστε το programA και μετά τη 2η programB. Θα μείνει μείνει μια λίστα οπών με • 1 η οπή μεγέθους programB και • 2η οπή μεγέθους programA Εκκινήστε ξανά μια διεργασία programA
23
First fit • Αναμένουμε ότι η programA θα εισχωρήσει στην 1 η οπή
24
• Εκτελώντας τα προγράμματα με την σειρά που δίνεται (Β-Β-Β-Α-Β), παρατηρούμε • με κόκκινο χρώμα, την οπή στην οποία τοποθετήθηκε η 2η εκτέλεση του programB, και • τον χώρο που κατέλαβε (394496-373504=20992byte) • με κίτρινο χρώμα την οπή στην οποία τοποθετήθηκε η εκτέλεση του programA και • τον χώρο που κατέλαβε (352512-343808=8704byte).
25
• Τερματίζουμε την εκτέλεση του programA και του 2 ου programB
26
First fit • Εκτελούμε μία φορά ακόμα το programA.
27
First fit
28
• Παρατηρούμε, με κίτρινο χρώμα, ότι η διεργασία Α τοποθετείται στην οπή που δημιουργήθηκε μετά τον τερματισμό της 2ης εκτέλεσης του ProgramB • Η οπή βρέθηκε πιο νωρίς από την οπή που δημιουργήθηκε τερματίζοντας την εκτέλεση του ProgramA.
29
Best fit • Αναμένουμε ότι η programA θα εισχωρήσει στην 2 η οπή • Εκτελούμε μία φορά ακόμα το programA.
30
Best Fit
31
Best fit • Παρατηρούμε, ότι με τον αλγόριθμο First-Fit, η διεργασία Α, τοποθετείται στην οπή που δημιουργήθηκε μετά τον τερματισμό της εκτέλεσης του ProgramA • η οπή αυτή αφήνει τον ελάχιστο δυνατό χώρο (0 bytes).
32
Worst fit • Αναμένουμε ότι η programA θα εισχωρήσει σε κάποια άσχετη οπή, άλλη από αυτές που απελευθερώθηκαν
33
Worst-fit • Εκτελώντας τα προγράμματα με την σειρά που δίνεται (Β-Β-Β-Α-Β), παρατηρούμε • με κόκκινο χρώμα, την οπή στην οποία τοποθετήθηκε η 2η εκτέλεση του programB, και • τον χώρο που κατέλαβε (659373056-659352064=20992byte) • με κίτρινο χρώμα την οπή στην οποία τοποθετήθηκε η εκτέλεση του programA και • τον χώρο που κατέλαβε (659316224-659307520=8704byte).
34
kill
35
Worst fit • Εκτελούμε μία φορά ακόμα το programA.
36
Worst-fit
37
Worst fit • Παρατηρούμε, με κίτρινο χρώμα, ότι με τον αλγόριθμο First-Fit, η διεργασία Α, τοποθετείται σε άσχετη οπή • η οπή αυτή αφήνει τον μέγιστο δυνατό χώρο.
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.