Φροντιστήριο: 28/11/2014
Παράδοση: 12/12/2014
Implementation of the Least
Slack Time scheduling algorithm for Linux
Σε αυτή την άσκηση του θα εξοικειωθείτε με τον scheduler του λειτουργικού συστήματος Linux
Συγκεκριμένα θα τροποποιήσετε τον scheduler αυτόν έτσι ώστε να επιλέγει διεργασίες
για εκτέλεση σύμφωνα με το Least Slack Time
αλγόριθμο. Για να δηλώνετε ένα όριο (deadline) στον χρόνο εκτέλεσης καθώς και τον υπολειπόμενο
χρόνο υπολογισμών (remaining_computation_time μίας διεργασίας θα χρησιμοποιήσετε το system call set_lst_parameters που δημιουργήσατε στην προηγούμενη
άσκηση. Τέλος θα χρειαστεί να δοκιμάσετε τις αλλαγές σας στον scheduler με ένα demo πρόγραμμα.
1. Τροποποιήσεις στον Linux scheduler
Όπως και στην προηγούμενη άσκηση, θα χρησιμοποιήσετε τον emulator qemu με το ίδιο disk image που σας
δόθηκε για να ξεκινήσετε το λειτουργικό σύστημα. Δείτε ξανά τις οδηγίες εδώ για τον emulator qemu, το compilation του Linux kernel με τις
δικές σας αλλαγές, και πως να κάνετε boot με το image του καινούργιου kernel image που
δημιουργήσατε. Επίσης, θα ξεκινήσετε την υλοποίηση αυτής της άσκησης από τον
αλλαγμένο κώδικα του Linux kernel που έχετε από την 3η άσκηση (π.χ., από ένα αντίγραφο του κώδικα της 3ης
άσκησης).
Ο κώδικας του Linux scheduler βρίσκεται στο αρχείο linux-source-2.6.38.1/kernel/sched.c. Μπορείτε να διαβάσετε περισσότερα για
τον Linux scheduler εδώ. Η
βασική συνάρτηση του Linux scheduler είναι η συνάρτηση schedule(). Αυτήν την συνάρτηση θα πρέπει να την τροποποιήσετε ως
εξής:
2. Δοκιμή του νέου scheduler
Θα πρέπει να φτιάξετε ένα demo πρόγραμμα που να δείχνει ότι οι αλλαγές που κάνατε στον Linux scheduler δουλεύουν σωστά. Συγκεκριμένα, το πρόγραμμα θα έχει την δυνατότητα να
δέχεται ένα όρισμα κ από command line το οποίο κ θα πρέπει να είναι ακέραιος αριθμός με τιμές από 2
μέχρι 10. Σε περίπτωση που δεν δοθεί όρισμα, η default τιμή για το κ θα είναι το 2.
Έπειτα, Θα θα δημιουργεί κ θυγατρικές διεργασίες και για κάθε μία i από
αυτές, η πατρική διεργασία θα θέτει με το system call set_lst_parameters το το υπολειπόμενο
χρόνο (remaining computation time) ίσο με
i sec και το deadline του ίσο
με gettimeofday+100 sec. Επιπρόσθετα κάθε θυγατρική διεργασία θα κοιμάται για i seconds και έπειτα
θα τυπώνει το νούμερο i. Δικαιολογήστε στο README σας την έξοδο του προγράμματος.
Εκτός από αυτό το demo πρόγραμμα, μπορείτε να φτιάξετε και να παραδώσετε όσα περισσότερα
θέλετε ώστε να βεβαιωθείτε ότι oι αλλαγές στον Linux scheduler δουλεύουν σωστά.
Τι πρέπει να παραδώσετε
θα πρέπει να παραδώσετε τα παρακάτω αρχεία:
Προσοχή: δεν χρειάζεται να παραδώσετε το disk image (hy345-linux.img) ακόμα και αν αυτό έχει τροποποιηθεί