Χρονοδρομολόγηση 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
Με βάση τον Υπολειπόμενο Χρόνο Εκτέλεσης μίας διεργασίας O χρονοδρομολογητής διαλέγει για εκτέλεση τη διεργασία εκείνη για την οποία εκτιμάται ότι έχει το λιγότερο υπολειπόμενο χρόνο εκτέλεσης (shortest remaining time). H άφιξη στην ουρά των διεργασιών που είναι έτοιμες για εκτέλεση μίας διεργασίας που ο υπολειπόμενος χρόνος εκτέλεσής της είναι μικρότερος από αυτόν της διεργασίας που εκτελείται εκείνη τη στιγμή, οδηγεί σε αναστολή της εκτέλεσης της τελευταίας αυτής διεργασίας.
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