ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι Μάθημα: Λειτουργικά Συστήματα Ι ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Διδάσκων: Επ. Καθ. Κ. Λαμπρινουδάκης clam@unipi.gr 1 Χρονοδρομολογητής ή χρονοπρογραμματιστής (scheduler) είναι το τμήμα του Λ.Σ. το οποίο είναι επιφορτισμένο με την ευθύνη της απόφασης ποια εκτελέσιμη διεργασία θα εκτελεστεί πρώτη. Ο αλγόριθμος που χρησιμοποιείται από το χρονοδρομολογητή λέγεται αλγόριθμος χρονοδρομολόγησης (scheduling algorithm). 2 1
Μεγάλο χρονικό διάστημα ενεργοποίησης της CPU Σύντομο διάστημα ενεργοποίησης της CPU Αναμονή για I/O Χρόνος 3 Η επιλογή του κατάλληλου χρόνου για τον χρονοπρογραμματισμό μπορεί να είναι όταν: Δημιουργείται μια νέα διεργασία και πρέπει να αποφασίσουμε αν θα εκτελεστείαυτήήημητρικήτης Όταν μια διεργασία τερματίζεται και υπάρχουν άλλες διεργασίες σε ετοιμότητα Όταν μια διεργασία μπλοκάρεται... Πολλές φορές η αιτία του μπλοκαρίσματος μπορεί να παίζει ρόλο (π.χ. Περιμένουμε κάποια άλλη διεργασία να βγεί από τη κρίσιμη περιοχή της...)...όμως ο χρονοπρογραμματιστής δεν έχει πάντα διαθέσιμη αυτή την πληροφορία. Όταν γίνεται κάποια διακοπή Ε/Ε 4 2
Ο χρονισμός του χρονοδρομολογητής γίνεται μέσω κάποιων διακοπών του ρολογιού. Ανάλογα με τον τρόπο που αξιοποιούν το ρολόι, οι αλγόριθμοι μπορούν να χωριστούν σε: Μη προεκτοπιστικούς (non-preemptive), οι οποίοι επιτρέπουν σε μια διεργασία να εκτελείται μέχρι την ολοκλήρωση της ή μέχρι εθελοντικά να επιστρέψει τον έλεγχο της CPU Προεκτοπιστικούς (preemptive), οι οποίοι αναστέλλουν την εκτέλεση τωνδιεργασιώνμετάαπόσυγκεκριμένοχρονικόδιάστημα. Επίσης, ανάλογα με το περιβάλλον μπορεί να διαφοροποιούνται τα απαιτούμενα χαρακτηριστικά του αλγορίθμου: Περιβάλλον Δέσμης Αλληλεπιδραστικά Περιβάλλοντα Περιβάλλοντα Πραγματικού Χρόνου 5 Ο βασικότεροι στόχοι των αλγορίθμων χρονοπρογραμματισμού ανάλογα και με το περιβάλλον είναι : Για όλα τα συστήματα: Δικαιοσύνη Να εκχωρείται σε κάθε CPU ένα δίκαιο μερίδιο της CPU Επιβολή της Πολιτικής Τήρηση προτεραιοτήτων κ.λ.π. Ισορροπία να διατηρούνται ενεργά όλα τα τμήματα του συστήματος. Συστήματα Δέσμης Διεκπεραιωτική Ικανότητα μεγιστοποίηση του αριθμού εργασιών που ολοκληρώνονται ανά ώρα Χρόνος Διεκπεραίωσης να ελαχιστοποιηθεί ο χρόνος ολοκλήρωσης μια διεργασίας Χρήση CPU --- να διατηρείται η CPU ενεργός 6 3
Αλληλεπιδραστικά Συστήματα: Χρόνος Απόκρισης Να εκχωρείται σε κάθε CPU ένα δίκαιο μερίδιο της CPU Τήρηση Αναλογιών Ναικανοποιούνταιοιπροσδοκίες των χρηστών Συστήματα Πραγματικού Χρόνου Τήρηση προθεσμιών να αποφεύγεται απώλεια δεδομένων Προβλεψιμότητα να αποφεύγεται ο υποβιβασμός της ποιότητας, π.χ. Πολυμέσα. 7 ΣΥΣΤΗΜΑΤΑ ΔΕΣΜΗΣ Εξυπηρέτηση με βάση τη σειρά άφιξης First-Come First-Served Διεργασίες που μπλοκάρονται όταν πάλι γίνουν έτοιμες για εκτέλεση μπαίνουν στο τέλος της ουράς. Εξυπηρέτηση με βάση τη μικρότερη διάρκεια Προϋποθέτει ότι γνωρίζουμε τη διάρκεια εκτέλεσης των Βελτιώνεται ο μέσος χρόνος διεκπεραίωσης Εξυπηρέτηση με βάση τη μικρότερη διάρκεια που απομένει Προεκτοπιστική έκδοση του προηγούμενου αλγορίθμου Προϋποθέτει ότι γνωρίζουμε τη διάρκεια εκτέλεσης των Ο χρονοπρογραμματιστής επιλέγει πάντα την εργασία που απαιτεί το λιγότερο χρόνο για να εκτελεστεί 8 4
ΣΥΣΤΗΜΑΤΑ ΔΕΣΜΗΣ Χρονοπρογραμματιστής Τριών Επιπέδων Χρονοπρογραμματιστής Αποδοχής: Αποφασίζει ποιες εργασίες θα γίνουν αποδεκτές από το σύστημα (π.χ. Ορθή αναλογία υπολογιστικά φραγμένων και Ε/Ε φραγμένων) Χρονοπρογραμματιστής Μνήμης (αποφασίζει ποιες θα μείνουν στη μνήμη και ποιες θα αποθηκευθούν στο δίσκο) Οι διεργασίες που βρίσκονται ταυτόχρονα στη μνήμη καθορίζουν το βαθμό πολυπρογραμματισμού 9 ΣΥΣΤΗΜΑΤΑ ΔΕΣΜΗΣ Χρονοπρογραμματιστής Τριών Επιπέδων Για να πάρει τις αποφάσεις του ο χρονοπρογραμματιστής Μνήμης, χρησιμοποιεί τα παρακάτω κριτήρια:» Πόσοςχρόνοςπέρασεαπότηστιγμήπου η διεργασία μεταφέρθηκε στο δίσκο/μνήμη ;» Πόσο χρόνο CPU είχε στη διάθεση της η διεργασία ;» Ποιο είναι το μέγεθος της διεργασίας ;» Πόσο σημαντική είναι η διεργασία ; Χρονοπρογραμματιστής CPU Αξιοποιείται οποιοσδήποτε προεκτοπιστικός ή μή αλγόριθμος, συμπεριλαμβανομένων αυτών που είδαμε 10 5
Χρονοδρομολόγηση Εξυπηρέτησης εκ Περιτροπής Σύμφωνα με τον αλγόριθμο εξυπηρέτησης εκ περιτροπής (round robin scheduling), σε κάθε διεργασία εκχωρείται χρονικό διάστημα - κβάντο (quantum) στα όρια του οποίου επιτρέπεται η εκτέλεσή της. Αν η διεργασία δεν ολοκληρωθεί μέχρι το τέλος του χρονικού αυτού διαστήματος, τότε η CPU προεκχωρείται σε άλλη διεργασία, δηλαδή λαμβάνει χώρα εναλλαγή διεργασιών (process switch) ήμεταγωγή περιβάλλοντος (context switch). Τρέχουσα διεργασία Επόμενη διεργασία Τρέχουσα διεργασία 11 Αν η διεργασία ολοκληρωθεί πριν το τέλος του χρονικού διαστήματος που της είχε ανατεθεί, τότε ο αλγόριθμος χρονοδρομολόγησης παραχωρεί την CPU στην επόμενη στην ουρά διεργασία. Σημαντική παράμετρο αποτελεί η επιλογή του μεγέθους του κβάντου χρόνου, αφού η εναλλαγή διεργασιών μπορεί να προκαλέσει σημαντική καθυστέρηση. 12 6
Παράδειγμα Κβάντο χρόνου = 20msec Χρόνος διαχείρισης από τη CPU = 5msec Απώλεια Χρόνου 20% Παράδειγμα Κβάντο χρόνου = 500 msec Χρόνος διαχείρισης από τη CPU = 5msec Απώλεια Χρόνου 1% Όμως μεγάλος χρόνος αναμονής σε διαλογικούς χρήστες τυπική τιμή κβάντου 70 msec 13 Χρονοδρομολόγηση με βάση τη Προτεραιότητα Ηαπαίτησηναληφθείυπόψηότιόλεςοιδιεργασίεςδενείναι εξίσου σημαντικές και η ανάγκη να ληφθούν υπόψη και εξωτερικοί παράγοντες, οδηγούν στη σχεδίαση χρονοδρομολόγηση προτεραιοτήτων (priority scheduling). Σε κάθε διεργασία ανατίθεται μία προτεραιότητα και εκτελείται η διεργασία με την υψηλότερη προτεραιότητα. Για την αποτροπή της επ άπειρο εκτέλεσης διεργασιών υψηλής προτεραιότητας, ο χρονοδρομολογητής μειώνει την προτεραιότητα της τρέχουσας διεργασίας σε κάθε διακοπή ρολογιού ή, εναλλακτικά, σε κάθε διεργασία καθορίζεται ένα μέγιστο κβάντο. 14 7
Ένας τυπικός αλγόριθμος καλής εξυπηρέτησης, αναθέτει προτεραιότητα: 1/f, όπου f είναι το μέρος του κβάντου χρόνου που χρησιμοποιήθηκε από τη διεργασία την τελευταία φορά. π.χ. Χρήση 2ms από τα 100 ms (κβάντο χρόνου) προτεραιότητα 50 Χρήση 50ms από τα 100 ms (κβάντο χρόνου) προτεραιότητα 2 Συνεπώς αν μια διεργασία είναι φραγμένη λόγω Ε/Ε, τότε δεν έχει νόημα απλά να περιμένει πολύ ώρα στη μνήμη για να αξιοποιήσει τη CPU και να καταναλώνει μνήμη. 15 Υβριδικό σχήμα περιλαμβάνει την ομαδοποίηση διεργασιών σε κλάσεις προτεραιοτήτων (priority classes). Χρησιμοποιείται ταυτόχρονα: χρονοδρομολόγηση προτεραιοτήτων μεταξύ των κλάσεων χρονοδρομολόγηση εξυπηρέτησης εκ περιτροπής μεταξύ των διεργασιών της ίδιας κλάσης. Με τον αλγόριθμο αυτό, μπορεί να εμφανισθεί το πρόβλημα της παρατεταμένης στέρησης πόρων (starvation) της CPU για κάποιες διεργασίες. 16 8
Πολλαπλές Ουρές Σε όλους τους αλγορίθμους εναλλαγής διεργασιών, σημαντική σχεδιαστική παράμετρο αποτελεί η επιλογή του μεγέθους του κβάντου χρόνου Διεργασίες με υψηλή απαίτηση σε CPU μεγάλο κβάντο χρόνου Διεργασίες με υψηλή απαίτηση σε I/O μικρό κβάντο χρόνου Επιλογή μεταξύ πλήθους εναλλαγών έναντι υψηλών χρόνων απόκρισης. 17 Μία αποτελεσματική επιλογή είναι η λύση των πολλαπλών ουρών (multiple queues) - κλάσεων προτεραιοτήτων: οι διεργασίες της ουράς υψηλότερης κλάσης εκτελούνται για ένα κβάντο χρόνου οι διεργασίες της ουράς της επόμενης κλάσης εκτελούνται για δύο κβάντα χρόνου όταν μια διεργασία χρησιμοποιεί όλο το κβάντο χρόνου που της ανατίθεται, υποβιβάζεται κατά μία κλάση. 18 9
Παράδειγμα: Διεργασία απαιτεί 100 κβάντα χρόνου 100 εναλλαγές από τον αλγόριθμο εκ περιτροπής Κβάντα χρόνου 1 2 Συνολικά κβάντα χρόνου 1 3 Εναλλαγές 1 2 4 7 3 8 15 4 16 31 5 32 63 6 64 127 7 19 Τα πλεονεκτήματα της μεθόδου αυτής είναι: απαιτείται μικρότερος αριθμός εναλλαγών, σε σχέση με τον αλγόριθμο εξυπηρέτησης εκ περιτροπής όσο μια μεγάλη διεργασία βυθίζεται βαθύτερα στις ουρές προτεραιοτήτων, τόσο ευνοείται η ολοκλήρωση μικρών διαλογικών διεργασιών. 20 10
Εγγυημένος Χρονοπρογραμματισμός: Συγκεκριμένες απαιτήσεις για την απόδοση του συστήματος Αν Ν χρήστες ο καθένας θα έχει το 1/ΝτηςCPU Απαιτείται να κρατάμε το χρόνο CPU που διατίθεται σε κάθε διεργασία χρήστη Χρονοπρογραμματισμός Δίκαιης Διανομής: Λαμβάνεται υπόψη σε ποιόν χρήστη ανήκει η κάθε διαδικασία Ας υποθέσουμε δύο χρήστες (στον καθένα θα πρέπει να δίνεται το 50% της CPU). O χρήστης 1 έχει 4 διεργασίες (Α, Β, Γ, και Δ) ενώ ο χρήστης 2 μόνο 1 διεργασία (Ε). Με χρονοπρογραμματισμό εκ περιτροπής: Α ΕΒΕΓΕΔΕ... Αν ο 1 δικαιούται διπλάσιο χρόνο τότε: ΑΒΕΓΔΕ...κ.λ.π. 21 ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ Ο Χρόνος διεκπεραίωσης είναι κρίσιμος Συστήματα αυστηρά πραγματικού χρόνου (Hard Realtime) Ήπια συστήματα πραγματικού Χρόνου Η συνήθης τακτική είναι ο χωρισμός του προγράμματος σε κάποιον αριθμό από διεργασίες που έχουν προβλέψιμη και γνωστή εκ των προτέρων συμπεριφορά Όταν ανιχνεύεται κάποιο εξωτερικό γεγονός ο χρονοπρογραμματιστής επιλέγει την κατάλληλή διεργασία ώστε να τηρηθούν οι προθεσμίες. 22 11