Χρονοδρομολόγηση CPU Βασικές Αρχές Κριτήρια Χρονοδρομολόγησης Αλγόριθμοι Χρονοδρομολόγησης
Βασικές Αρχές Μέγιστη εκμετάλλευση της CPU μέσω πολυπρογραμματισμού Η εκτέλεση της διεργασίας αποτελείται από την εναλλαγή διαστημάτων (έντονης) χρήσης CPU και I/O.
Εκτέλεση διεργασίας
Χρονοδρομολογητής CPU 1. Αλλάζει από κατάσταση running σε waiting. 2. Αλλάζει από κατάσταση running σε ready. 3. Αλλάζει από κατάσταση waiting σε ready. 4. Ολοκληρώνει. Η χρονοδρομολόγηση σύμφωνα με τις περιπτώσεις 1 και 4 είναι μη προεκτοπιστική. Όλες οι άλλες περιπτώσεις αναφέρονται σε προεκτοπιστική χρονοδρομολόγηση.
Dispatcher O Dispatcher δίνει τον έλεγχο της CPU στην διεργασία που επιλέγεται από τον short-term scheduler. Απαιτούνται: Context switching Εναλλαγή σε user mode Μετακίνηση στο κατάλληλο σημείο μέσα στο πρόγραμμα για την επανεκκίνηση του.
Κριτήρια Χρονοδρομολόγησης Εκμετάλλευση CPU – προσπάθεια να μην μείνει αδρανής η CPU Ρυθμοαπόδοση – αριθμός διεργασιών που ολοκληρώνουν την εκτέλεση τους στην μονάδα του χρόνου Χρόνος διεκπεραίωσης (Turnaround time) – ο χρόνος που απαιτείται για την εκτέλεση μίας συγκεκριμένης διεργασίας Χρόνος αναμονής – χρόνος αναμονής μίας διεργασίας στην ουρά «ready»
First-Come, First-Served (FCFS) Διεργασίας Χρόνος P1 24 P2 3 P3 3 Σειρά άφιξης: P1 , P2 , P3 Το διάγραμμα χρονικής αλληλουχίας (Gantt) είναι: Χρονος αναμονής για P1 = 0; P2 = 24; P3 = 27 Μέσος χρόνος αναμονής : (0 + 24 + 27)/3 = 17 P1 P2 P3 24 27 30
FCFS Χρονοδρομολόγηση Σειρά άφιξης διεργασιών: P2 , P3 , P1 Το διάγραμμα Gantt είναι: Χρόνος αναμονής P1 = 6; P2 = 0; P3 = 3 Μέσος χρόνος αναμονής: (6 + 0 + 3)/3 = 3 Βελτίωση σε σχέση με το προηγούμενο σενάριο. Convoy effect: μικρής διάρκειας διεργασίες αναμένουν τις διεργασίες μεγάλης διάρκειας. P1 P3 P2 6 3 30
Shortest-Job-First (SJR) Για κάθε διεργασία προσδιορίζεται το μήκος της επόμενης περιόδου χρήσης της CPU. Αυτά τα μήκη χρησιμοποιούνται για να χρονοδρομολογηθεί η διεργασία με τον χαμηλότερο χρόνο. Δύο σχήματα: Μη προεκτοπιστικό – αν δοθεί η CPU σε μία διεργασία δεν μπορεί να της «αφαιρεθεί» εάν πρώτα δεν ολοκληρώσει την περίοδο χρήστης της CPU. Εκτοπιστικός – εάν έρθει μία νέα διεργασία με χρόνο χρήσης CPU μικρότερο από τον υπολειπόμενο χρόνο της τρέχουσας, αφαιρείται από την τρέχουσα ο έλεγχος. Το σχήμα είναι γνωστό ως Shortest-Remaining-Time-First (SRTF).
Παράδειγμα Non-Preemptive SJF Διεργασία Χρόνος άφιξης Διάρκεια P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 SJF (non-preemptive) Μέσος χρόνος αναμονής = (0 + 6 + 3 + 7)/4 - 4 P1 P3 P2 7 3 16 P4 8 12
Παράδειγμα Preemptive SJF Διεργασία Χρόνος Άφιξης Διάρκεια P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 SJF (preemptive) Μέσος χρόνος ανάμονής = (9 + 1 + 0 +2)/4 - 3 P1 P3 P2 4 2 11 P4 5 7 16
Εκτίμηση του μήκους της περιόδου χρήσης CPU Μπορούμε να εκτιμήσουμε το μήκος. Η εκτίμηση μπορεί να γίνει βάσει των παλαιότερων μετρήσεων, χρησιμοποιώντας exponential averaging. τn+1=α*tn+(1-α)*τn τn+1= εκτίμηση για την επόμενη περίοδο 1>=α>=0 τn= εκτίμηση για την τρέχουσα περίοδο tn= προηγούμενη μέτρηση
Παραδείγματα =0 =1 Εάν επεκτείνουμε τον τύπο έχουμε: n+1 = n Η πρόσφατη ιστορία δεν έχει σημασία. =1 n+1 = tn Μόνο η πρόσφατη μέτρηση έχει σημασία. Εάν επεκτείνουμε τον τύπο έχουμε: n+1 = tn+(1 - ) tn -1 + … +(1 - )j tn -1 + … +(1 - )n=1 tn 0 Εάν το και το (1 - ) είναι μικρότερα ή ίσα από 1, ο κάθε όρος έχει μικρότερη σημασία (βάρος) από τον προηγούμενο όρο.
Χρονοδρομολόγηση βάσει προτεραιοτήτων Σε κάθε διεργασία δίνεται αριθμός προτεραιότητας Η CPU εκχωρείται στη διεργασία με την υψηλότερη προτεραιότητα. Προεκτοπιστικό σχημα Μη-προεκτοπιστικό σχήμα Πρόβλημα λιμοκτονία – οι διεργασίες χαμηλής προτεραιότητας μπορεί να μην εκτελεστούν ποτέ. Λύση Γήρανση – καθώς εξελίσσεται ο χρόνος αυξάνεται η προτεραιότητα της διεργασίας.
Round Robin (RR) Η κάθε διεργασία «λαμβάνει» ένα τμήμα του χρόνου CPU (κβάντο), που συνήθως είναι της τάξης 10-100 milliseconds. Μετά από αυτό το χρόνο, αφαιρείται ο έλεγχος της CPU από την διεργασία η οποία τοποθετείται στο τέλος της ready queue. Εάν υπάρχουν n διεργασίες στην ουρά και το χρονικό κβάντο είναι q, η κάθε διεργασία λαμβάνει το 1/n του χρόνου της CPU σε δέσμες των q χρονικών μονάδων. Καμμία διεργασία δεν περιμένει περισσότερο από (n-1)q χρονικές μονάδες. Επιδόσεις q μεγάλο FIFO q μικρό το q θα πρέπει να είναι μεγάλο σε σχέση με το χρονικό κόστος του context switching, διαφορετικά η επιβάρυνση είναι ανεπίτρεπτη.
Παράδειγμα RR με κβάντο = 20 Process Διάρκεια P1 53 P2 17 P3 68 P4 24 Διάγραμμα Χρονικής Αλληλουχίας: P1 P2 P3 P4 20 37 57 77 97 117 121 134 154 162
Χρονοδρομολόγηση Πολλαπλών Επιπέδων Η Ready queue διαιρείται σε διάφορες ουρές : foreground (διαδραστικά) background (δέσμης) Η κάθε ουρά έχει τον δικό της αλγόριθμο χρονοδρομολόγησης, foreground – RR background – FCFS Και οι ίδιες οι ουρές χρονοδρομολογούνται. Χρονοδρομολόγηση σε σταθερές προτεραιότητες (π.χ., εξυπηρέτηση όλων των διεργασιών στο foreground, μετά των διεργασιών στο background). Ενδεχόμενο λιμοκτονίας. Τμήμα χρόνου – η κάθε ουρά λαμβάνει ένα ποσοστό του χρόνου της CPU στο οποίο μπορεί να χρονοδρομολογήσει τις διεργασίες της; π.χ., 80% στις foreground διεργασίες οι οποίες αντιμετωπίζονται RR 20% σε background διεργασίες που εξυπηρετούνται FCFS.
Χρονοδρομολόγηση πολλαπλών επιπέδων
Χρονοδρομολόγηση Πολλαπλών Επιπέδων με ανατροφοδότηση (Multilevel Feedback Queue) Μία διεργασία μπορεί να μετακινηθεί σε διάφορες ουρές; Με αυτόν τον τρόπο μπορεί να υλοποιηθεί και η γήρανση. Ο χρονοδρομολογητής Multilevel-feedback-queue λειτουργεί σύμφωνα με τις παρακάτω παραμέτρους: Αριθμός ουρών Πολιτική εξυπηρέτησης της κάθε ουράς Σχήμα αναβάθμισης της κάθε διεργασίας Σχήμα υποβάθμισης της κάθε διεργασίας Προσδιορισμός της ουράς στην οποία θα καταχωρηθεί μία διεργασία
Παράδειγμα Multilevel Feedback Queue 3 ουρές διεργασιών: Q0 – κβάντο: 8 milliseconds Q1 – κβάντο: 16 milliseconds Q2 – FCFS Χρονοδρομολόγηση Μία νέα διεργασία μπαίνει στην Q0 η οποία εξυπηρετείται FCFS. Οταν αποκτάει τον έλεγχο της CPU, η διεργασία εξυπηρετείται για 8 milliseconds. Εάν δεν ολοκληρώσει σε 8 milliseconds, η διεργασία μετακινείται στην ουρά Q1. Στην Q1 η διεργασία εξυπηρετείται FCFS για 16 milliseconds. Εάν πάλι δεν ολοκληρώσει, της αφαιρείται ο έλεγχος και μετακινείται στην Q2.
Multilevel Feedback Queue