2006-2007:Ασκήσεις:3η Άσκηση

Από OSLab

1o Πρόβλημα
Αναπτύξτε μια νέα κλήση του συστήματος (system call) στα πλαίσια του διαχειριστή διεργασιών (process manager) που να επιστρέφει την δομή sigaction που περιγράφει την συμπεριφορά της διεργασίας για ένα συγκεκριμένο σήμα του συστήματος. Υλοποιείστε μια βοηθητική συνάρτηση που επιτρέπει την χρήση της νέας κλήσης του συστήματος και ορίζεται ως εξής:
 
_PROTOTYPE( struct sigaction sigquery, (int _sig) );
Η παράμετρος _sig ορίζει τον τύπο του σήματος. Η δομή sigaction που επιστρέφει η συνάρτηση είναι αυτή που έχει οριστεί στον διαχειριστή διεργασιών για την διεργασία που κάνει χρήση αυτής της κλήσης του συστήματος. Υλοποιείστε ένα απλό πρόγραμμα που χρησιμοποιεί την νέα κλήση του συστήματος (μέσω της βοηθητικής συνάρτησης που αναπτύξατε). Τα αρχεία που θα παραδώσετε θα πρέπει να είναι καλά δομημένα (με την χρήση tab, κλπ.) και καλά σχολιασμένα.
2o Πρόβλημα
Αναπτύξτε μια νέα κλήση του συστήματος (system call) στα πλαίσια του διαχειριστή διεργασιών (process manager) που να επαναφέρει την συμπεριφορά μιας διεργασίας, για όλα τα σήματα, στην προκαθορισμένη συμπεριφορά. Υλοποιείστε μια βοηθητική συνάρτηση που επιτρέπει την χρήση της νέας κλήσης του συστήματος και ορίζεται ως εξής:
 
_PROTOTYPE( void sigreset, (void) );
Υλοποιείστε ένα απλό πρόγραμμα που χρησιμοποιεί την νέα κλήση του συστήματος (μέσω της βοηθητικής συνάρτησης που αναπτύξατε). Τα αρχεία που θα παραδώσετε θα πρέπει να είναι καλά δομημένα (με την χρήση tab, κλπ.) και καλά σχολιασμένα.
3o Πρόβλημα
Υλοποιείστε έναν απλό μηχανισμό τήρησης στατιστικών στοιχείων για τον διαχειριστή διεργασιών (process manager) που να καταγράφει:
  1. το πλήθος των σημάτων που έχει λάβει μια διεργασία και
  2. το πλήθος των σημάτων που έχει λάβει μια διεργασία για κάθε τύπο σήματος.
Αναπτύξτε μια νέα κλήση του συστήματος που να εκτυπώνει τα στατιστικά στοιχεία που διατηρεί ο μηχανισμός για μια συγκεκριμένη διεργασία. Η νέα κλήση χρησιμοποιεί δύο παραμέτρους:
  1. η πρώτη παράμετρος ορίζει την ταυτότητα της διεργασίας (pid) και
  2. η δεύτερη ορίζει αν θα πρέπει να εκτυπώσει:
    • το πλήθος των σημάτων ή
    • το πλήθος των σημάτων για ένα συγκεκριμένο τύπο σήματος.
Υλοποιείστε ένα απλό πρόγραμμα που χρησιμοποιεί την νέα κλήση του συστήματος που αναπτύξατε. Τα αρχεία που θα παραδώσετε θα πρέπει να είναι καλά δομημένα (με την χρήση tab, κλπ.) και καλά σχολιασμένα.
4o Πρόβλημα
Αναπτύξτε μια νέα κλήση του συστήματος (system call) στα πλαίσια του διαχειριστή διεργασιών (process manager) που να επιστρέφει τα εξής στοιχεία:
  • το πλήθος των οπών μνήμης
  • το μέγιστο μέγεθος οπής
  • το ελάχιστο μέγεθος οπής
  • το μέσο μέγεθος οπής
  • την απόκλιση των μεγεθών (standard deviation)
Υλοποιείστε ένα απλό πρόγραμμα που χρησιμοποιεί την νέα κλήση του συστήματος που αναπτύξατε και να εμφανίζει τα ακόλουθα στοιχεία ανά 1 δευτερόλεπτο:
 
"%d\t%d\t%d\t%.2f\t%.2f\n", nholes, max_size_in_mb, min_size_in_mb, 
                            avg_size_in_mb, std_dev_size_in_mb
Τα αρχεία που θα παραδώσετε θα πρέπει να είναι καλά δομημένα (με την χρήση tab, κλπ.) και καλά σχολιασμένα.
5o Πρόβλημα
Στην έκδοση 3.1.2a του MINIX ο μηχανισμός ανάθεσης μνήμης που χρησιμοποιεί ο διαχειριστής διεργασιών (process manager) ακολουθεί την πολιτική first fit: ανατρέχει την λίστα των οπών, κάθε φορά από την αρχή της λίστας, προσπαθώντας να εντοπίσει την πρώτη οπή που είναι αρκετά μεγάλη για να χωρέσει το μέγεθος της μνήμης που πρέπει να ανατεθεί.
Τροποποιήστε τον μηχανισμό ανάθεσης μνήμης έτσι ώστε να ακολουθεί την πολιτική next fit: ανατρέχει την λίστα των οπών από το σημείο (της λίστας οπών) που σταμάτησε την τελευταία φορά έως ότου εντοπίσει την πρώτη οπή που είναι αρκετά μεγάλη. Αν φτάσει στο τέλος της λίστας και δεν έχει βρει μια οπή αρκετά μεγάλη τότε συνεχίζει με το πρώτο στοιχείο της λίστας έως ότου βρει μια οπή αρκετά μεγάλη ή φτάσει πάλι στο σημείο που ξεκίνησε (οπότε και ολοκληρώνετε η αναζήτηση χωρίς να βρεθεί οπή). Τα αρχεία που θα παραδώσετε θα πρέπει να είναι καλά δομημένα (με την χρήση tab, κλπ.) και καλά σχολιασμένα.
Με την χρήση της κλήσης του συστήματος και του προγράμματος που αναπτήξατε στο 4o πρόβλημα μελετήστε την συμπεριφορά του συστήματος όταν χρησιμοποιείτε η κάθε μια πολιτική εντοπισμού οπών. Για να μπορέσετε να πειραματιστείτε με τους μηχανισμούς (και να μελετήσετε καλύτερα την συμπεριφορά τους) δίνονται 3 απλά εργαλεία που δημιουργούν νέες διεργασίες διαφορετικών μεγεθών. Μπορείτε να εκτελέσετε τα βοηθητικά προγράμματα με όποιο τρόπο θέλετε προκειμένου να πειραματιστείτε με τις δυο πολιτικές και να αποκτήσετε καλύτερη εικόνα της συμπεριφοράς τους. Περιγράψτε τα συμπεράσματα σας σε μια συνοπτική αναφορά που δεν θα ξεπερνά τις 500 λέξεις.



Παράδοση:

  • Η άσκηση είναι ομαδική (αυστηρά 4 ατόμων)
    • Οι ομάδες δηλώθηκαν κατά την παράδοση της προηγούμενης άσκησης και δεν θα γίνουν δεκτές αλλαγές στην σύνθεση των ομάδων.
  • Η προθεσμία υποβολής είναι η Κυριακή 2 Σεπτεμβρίου, ώρα 23:59.
    • Σε περίπτωση που η άσκηση παραδοθεί με καθυστέρηση, δεν θα γίνει διόρθωση.
    • Σε περίπτωση που εντοπιστεί αντιγραφή, η άσκηση θα μηδενιστεί.
  • Η παράδοση γίνεται με την χρήση του εργαλείου submit μόνο από τον εκπρόσωπο της ομάδας
  • Το αρχείο που θα παραδώσετε πρέπει να έχει το όνομα 3.tar.gz και να περιέχει:
    1. Το αρχείο με όνομα readme που περιέχει ΜΟΝΟ 4 γραμμές, μια γραμμή ανά μέλος της ομάδας με το ΑΜ, Ονοματεπώνυμο, e-mail -- με αυτή την σειρά και με το ονοματεπώνυμο να είναι γραμμένο με την χρήση ελληνικών χαρακτήρων.
    2. Τα αρχεία που υλοποιούν τις νέες λειτουργίες θα πρέπει να τοποθετηθούν σε φακέλους αντίστοιχους με αυτούς που χρησιμοποιεί ο κώδικας minix 3. π.χ. για το 1o πρόβλημα, το αρχείο signal.h θα πρέπει να βρίσκεται στον υποφάκελο src/include, τα αρχεία που αφορούν τον process manager θα πρέπει να είναι τοποθετημένα στον υποφάκελο src/servers/pm, το αρχείο που υλοποιεί το παράδειγμα θα πρέπει να βρίσκεται στον υποφάκελο src/commands/simple, κοκ.
    3. Για το 5o πρόβλημα, πρέπει να παραδώσετε μια συνοπτική αναφορά με τα συμπεράσματα σας από την μελέτη των δύο πολιτικών εντοπισμού οπών. Το αρχείο της αναφοράς θα πρέπει να ονομάζετε 5.txt και δεν θα πρέπει να ξεπερνά τις 500 λέξεις.


Σχετικό υλικό: