Λειτουργικά Συστήματα (Λ/Σ) Διαχείριση Κεντρικής Μονάδας Επεξεργασίας (CPU) Βασίλης Σακκάς 4/12/2013 1
Xρονοδρομολόγηση Διεργασιών 1 Η χρονοδρομολόγηση σε ένα Λ/Σ αποφασίζει ποια διεργασία θα χρησιμοποιεί ανά πάσα στιγμή την ΚΜΕ. (Επιλογή από το ζαχαροπλάστη του γλυκού που παρασκευάζει κάθε φορά) Χρονοδρομολογητής ή χρονοπρογραμματιστής (scheduler) είναι το τμήμα του Λ/Σ το οποίο είναι επιφορτισμένο με την ευθύνη της απόφασης ποια εκτελέσιμη διεργασία θα εκτελεστεί πρώτη. Ο αλγόριθμος που χρησιμοποιείται από το χρονοδρομολογητή λέγεται αλγόριθμος χρονοδρομολόγησης (scheduling algorithm). Η συνήθης ακολουθητέα στρατηγική, είναι η στρατηγική αναστολής εκτέλεσης εκτελέσιμων διεργασιών και καλείται χρονοδρομολόγηση προεκχώρησης (preemptive scheduling). 2
Xρονοδρομολόγηση Διεργασιών 1β Σειρά άφιξης (first come first served) Μικρότερης/Συντομότερης διεργασίας (shortest job next) Κυκλική/εκ περιτροπής επιλογή (round robin) 3
Xρονοδρομολόγηση Διεργασιών 2 Μεγάλο χρονικό διάστημα ενεργοποίησης της CPU Σύντομο διάστημα ενεργοποίησης της CPU Αναμονή για I/O Χρόνος 4
Xρονοδρομολόγηση Διεργασιών 3 Τα κριτήρια επιλογής αλγορίθμων χρονοδρομολόγησης είναι: δικαιοσύνη (fairness) μεταξύ των διεργασιών αποδοτικότητα (efficiency) στην αξιοποίηση της CPU χρόνος απόκρισης (response time) για διαλογικούς χρήστες κύκλος διεκπεραίωσης (turn around) για χρήστες συστήματος δέσμης ρυθμός απόδοσης (throughput) εργασιών που επεξεργάζεται ένα σύστημα. Η επιλογή δεν είναι απλοϊκή, αφού ορισμένα από αυτά τα κριτήρια είναι αντικρουόμενα. 5
Xρονοδρομολόγηση Διεργασιών 4 Χρονοδρομολόγηση Εξυπηρέτησης εκ Περιτροπής Σύμφωνα με τον αλγόριθμο εξυπηρέτησης εκ περιτροπής (round robin scheduling), σε κάθε διεργασία εκχωρείται χρονικό διάστημα - κβάντο (quantum) στα όρια του οποίου επιτρέπεται η εκτέλεσή της. Αν η διεργασία δεν ολοκληρωθεί μέχρι το τέλος του χρονικού αυτού διαστήματος, τότε η CPU εκχωρείται σε άλλη διεργασία, δηλαδή λαμβάνει χώρα εναλλαγή διεργασιών (process switch) ή μεταγωγή περιβάλλοντος (context switch). Τρέχουσα Διεργασία Επόμενη Διεργασία Τρέχουσα Διεργασία 6
Xρονοδρομολόγηση Διεργασιών 5 Αν η διεργασία ολοκληρωθεί πριν το τέλος του χρονικού διαστήματος που της είχε ανατεθεί η CPU, τότε ο αλγόριθμος χρονοδρομολόγησης αναθέτει την CPU στην επόμενη στην ουρά διεργασία. Σημαντική παράμετρο αποτελεί η επιλογή του μεγέθους του κβάντου χρόνου (τυπική τιμή κβάντου 100msec). 7
Xρονοδρομολόγηση Διεργασιών 6 Χρονοδρομολόγηση Προτεραιοτήτων Ηαπαίτησηναληφθείυπόψηότιόλεςοιδιεργασίες δεν είναι εξίσου σημαντικές και η ανάγκη να ληφθούν υπόψη και εξωτερικοί παράγοντες, οδηγούν στη σχεδίαση χρονοδρομολόγησης προτεραιοτήτων (priority scheduling). Σε κάθε διεργασία ανατίθεται μία προτεραιότητα και εκτελείται η διεργασία με την υψηλότερη προτεραιότητα. Για την αποτροπή επ άπειρο εκτέλεσης διεργασιών υψηλής προτεραιότητας, ο χρονοδρομολογητής μειώνει την προτεραιότητα της τρέχουσας διεργασίας σε κάθε διακοπή ρολογιού. 8
Xρονοδρομολόγηση Διεργασιών 7 Οι προτεραιότητες μπορούν να ανατεθούν είτε στατικά είτε δυναμικά. Για παράδειγμα, οι διεργασίες που είναι ισχυρά εξαρτώμενες από είσοδο/έξοδο (I/O bound) πρέπει να έχουν υψηλή προτεραιότητα, ώστε να αποτρέπεται μακρά αναμονή ολοκλήρωσης εισόδου/εξόδου, η οποία θα οδηγούσε σε μακρά κατάληψη μνήμης. Ένας τυπικός αλγόριθμος καλής εξυπηρέτησης, αναθέτει προτεραιότητα: 1/f, όπου f είναι το μέρος του κβάντου χρόνου που χρησιμοποιήθηκε από τη διεργασία την τελευταία φορά. 9
Xρονοδρομολόγηση Διεργασιών 8 Υβριδικό σχήμα περιλαμβάνει την ομαδοποίηση διεργασιών σε κλάσεις προτεραιοτήτων (priority classes). Χρησιμοποιείται ταυτόχρονα: χρονοδρομολόγηση προτεραιοτήτων μεταξύ των κλάσεων χρονοδρομολόγηση εξυπηρέτησης εκ περιτροπής μεταξύ των διεργασιών της ίδιας κλάσης. Με τον αλγόριθμο αυτό, μπορεί να εμφανισθεί το πρόβλημα της παρατεταμένης στέρησης πόρων (starvation) της CPU για κάποιες διεργασίες. 10
Xρονοδρομολόγηση Διεργασιών 9 Πολλαπλές Ουρές Σε όλους τους αλγορίθμους εναλλαγής διεργασιών, σημαντική σχεδιαστική παράμετρο αποτελεί η επιλογή του μεγέθους του κβάντου χρόνου Επιλογή μεταξύ πλήθους εναλλαγών έναντι υψηλών χρόνων απόκρισης. 11
Xρονοδρομολόγηση Διεργασιών 10 Μία αποτελεσματική επιλογή είναι η λύση των πολλαπλών ουρών (multiple queues) - κλάσεων προτεραιοτήτων: οι διεργασίες της ουράς υψηλότερης κλάσης εκτελούνται για ένα κβάντο χρόνου οι διεργασίες της ουράς της επόμενης κλάσης εκτελούνται για δύο κβάντα χρόνου όταν μια διεργασία χρησιμοποιεί όλο το κβάντο χρόνου που της ανατίθεται, υποβιβάζεται κατά μία κλάση. 12
Xρονοδρομολόγηση Διεργασιών 11 Τα πλεονεκτήματα της μεθόδου αυτής είναι: απαιτείται μικρότερος αριθμός εναλλαγών, σε σχέση με τον αλγόριθμο εξυπηρέτησης εκ περιτροπής όσο μια μεγάλη διεργασία βυθίζεται βαθύτερα στις ουρές προτεραιοτήτων, τόσο ευνοείται η ολοκλήρωση μικρών διαλογικών διεργασιών. 13
Xρονοδρομολόγηση Διεργασιών 12 Η Συντομότερη Εργασία Πρώτη Για συστήματα εργασιών δέσμης (batch jobs), ο συνηθέστερος αλγόριθμος είναι ο αλγόριθμος χρονοδρομολόγησης πρώτα-η- συντομότερη-εργασία (shortest-job-first scheduling). Στα συστήματα αυτά, ελαχιστοποιείται ο μέσος χρόνος διεκπεραίωσης (turnaround time). Αν θεωρήσουμε την εκτέλεση κάθε εντολής ως ξεχωριστή εργασία, τότε ο αλγόριθμος αυτός θα μπορούσε να χρησιμοποιηθεί και για διαλογικές εργασίες. Το πρόβλημα, όμως, που παραμένει είναι ποια από τις εκτελέσιμες εργασίες είναι η συντομότερη. 14
Xρονοδρομολόγηση Διεργασιών 13 Η τεχνική που ακολουθείται είναι γνωστή ως ωρίμανση (aging). Σύμφωνα με την τεχνική της ωρίμανσης, η εκτίμηση της διάρκειας ζωής μιας διεργασίας βασίζεται στην παρελθούσα συμπεριφορά των εργασιών. Έστω ότι ο εκτιμώμενος, για κάποιο τερματικό, χρόνος ανά εντολή είναι T0 και ο επόμενος χρόνος εκτέλεσης μετράται σε T1. Μπορούμε να ανανεώσουμε την εκτίμησή μας, θεωρώνταςωςνέα εκτίμηση το σταθμισμένο άθροισμα (weighted sum) των προηγούμενων τιμών, δηλαδή: at0 + (1-a)T1 Ητιμήτουa μπορεί να καθορίσει την ταχύτητα προσαρμογής στα νέα δεδομένα, ξεχνώντας παλαιές εκτιμήσεις και εκτελέσεις. 15
Xρονοδρομολόγηση Διεργασιών 14 Εγγυημένος Χρονοπρογραμματισμός Η τεθείσα απαίτηση είναι η συνολική υπολογιστική ισχύς να ισοκατανέμεται στους χρήστες (policy-driven scheduling). Συνεπώς απαιτείται γνώση: τουχρόνουπουηcpu διατέθηκε για τις διεργασίες κάθε χρήστη του χρόνου που ο κάθε χρήστης είναι συνδεδεμένος στο σύστημα. Ο αλγόριθμος αυτός μπορεί να χρησιμοποιηθεί σε συστήματα πραγματικού χρόνου (real-time systems), όπου τίθενται περιορισμοί, οι οποίοι πρέπει να επιτευχθούν. 16
Xρονοδρομολόγηση Διεργασιών 15 Πολιτικές έναντι μηχανισμών Συχνά, είναι επιθυμητό να επηρεάζεται από το χρήστη η απόφαση χρονοδρομολόγησης. Για παράδειγμα, υπάρχουν περιπτώσεις που μια γονική διεργασίαεπιθυμείνααποφασίσειποιααπότιςθυγατρικές διεργασίες είναι χρονικά κρίσιμη. Η λύση στο πρόβλημα αυτό, περιλαμβάνει το διαχωρισμό: του μηχανισμού χρονοδρομολόγησης (scheduling mechanism) από την πολιτική χρονοδρομολόγησης (scheduling policy). Με την ύπαρξη σχετικής κλήσης συστήματος, θα μπορούσε η διεργασία του χρήστη να χαράσσει την πολιτική, αλλά ο ακολουθούμενος μηχανισμός ορίζεται από τον πυρήνα. 17
Xρονοδρομολόγηση Διεργασιών 16 Χρονοπρογραμματισμός δύο επιπέδων Επειδή ο διατιθέμενος χώρος μνήμης είναι πεπερασμένος, υπάρχει περίπτωση κάποιες από τις διεργασίες να φυλάσσονται στο δίσκο. Το γεγονός αυτό έχει ως αποτέλεσμα να εμφανίζονται προβλήματα από τον απαιτούμενο υψηλό χρόνο εναλλαγής των διεργασιών που βρίσκονται στο δίσκο. Η λύση στο πρόβλημα είναι η σχεδίαση και αξιοποίηση χρονοδρομολογητή δύο επιπέδων (two-level scheduler): ο χρονοδρομολογητής χαμηλού επιπέδου (low level scheduler) ασχολείται με την επιλογή εκτελέσιμων διεργασιών που βρίσκονται εκείνη τη στιγμή στην κύρια μνήμη ο χρονοδρομολογητής υψηλού επιπέδου (high level scheduler) ασχολείται με τη μετακίνηση εκτελέσιμων διεργασιών από το δίσκο στη μνήμη και αντιστρόφως. 18
Xρονοδρομολόγηση Διεργασιών 17 Τα κριτήρια που λαμβάνει υπόψη του ο χρονοδρομολογητής μπορεί να περιλαμβάνουν τα εξής: πόσος χρόνος πέρασε από την εκτόπιση ή την επαναφορά της διεργασίας πόσο χρόνο της CPU χρησιμοποίησε τελευταία η διεργασία πόσο μεγάλης διάρκειας είναι η διεργασία πόσο υψηλή προτεραιότητα έχει η διεργασία. 19