1 / 37

Φροντιστ ήριο Εργ. Λειτουργικών Συστημάτων

Φροντιστ ήριο Εργ. Λειτουργικών Συστημάτων. Αλγ όριθμοι ανάθεσης μνήμης. 4 η εργασία 2012-13. 1 ο Πρόβλημα Αναπτύξτε μια νέα κλήση του συστήματος (system call) στα πλαίσια του διαχειριστή διεργασιών (process manager) που να επιστρέφει τα εξής στοιχεία: Το πλήθος των οπών μνήμης.

bessie
Télécharger la présentation

Φροντιστ ήριο Εργ. Λειτουργικών Συστημάτων

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Φροντιστήριο Εργ. Λειτουργικών Συστημάτων Αλγόριθμοι ανάθεσης μνήμης

  2. 4η εργασία 2012-13 • 1ο Πρόβλημα • Αναπτύξτε μια νέα κλήση του συστήματος (system call) στα πλαίσια του διαχειριστή διεργασιών (process manager) που να επιστρέφει τα εξής στοιχεία: • Το πλήθος των οπών μνήμης. • Το μέσο μέγεθος οπής. • Υλοποιείστε ένα απλό πρόγραμμα που χρησιμοποιεί την νέα κλήση του συστήματος που αναπτύξατε και να εμφανίζει τα ακόλουθα στοιχεία ανά 1 δευτερόλεπτο:   • Πλήθος οπών <tab> Μέσο μέγεθος σε mb

  3. θέματα • Από το 3.1.5 και πέρα, χρησιμοποιείται virtual memory (pages κτλ.), η οποία περιπλέκει τα πράγματα. • Στο παράδειγμα θα χρησιμοποιηθεί μια παλαιότερη έκδοση όπου φαίνεται ξεκάθαρα η λειτουργία του hole list.

  4. Ορισμός system call • Ορίζουμε τον αριθμό του νέου system call • Ορίζουμε το όνομα της συνάρτησης που υλοποιεί το system call • Και τέλος το prototype

  5. Υλοποίηση της do_gethinfo

  6. Υλοποίηση της do_gethinfo

  7. Υλοποίηση της 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

  17. Alloc.c

  18. Worst-fit Alloc.c

  19. Worst-fit Alloc.c

  20. Worst-fit Alloc.c

  21. 3οΠρόβλημα • Με χρήση της κλήσης του συστήματος και του προγράμματος που αναπτύξατε στο 1ο πρόβλημα μελετήστε την συμπεριφορά του συστήματος όταν χρησιμοποιείται η κάθε μια πολιτική εντοπισμού οπών. Πιο συγκεκριμένα, θα πρέπει να δείξετε ότι ο αλγόριθμός σας επιλέγει οπές οι οποίες δεν θα επιλέγονταν με τον αλγόριθμο first-fit

  22. Σύγκριση • Κατόπιν εκκινήστε διεργασίες με την κατώθι σειρά: • #programB & • #programB & • #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. First fit • Παρατηρούμε, με κίτρινο χρώμα, ότι η διεργασία Α τοποθετείται στην οπή που δημιουργήθηκε μετά τον τερματισμό της 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, η διεργασία Α, τοποθετείται σε άσχετη οπή • η οπή αυτή αφήνει τον μέγιστο δυνατό χώρο.

More Related