ΣΥΣΤΗΜΑΤΑ ΠΡΑΓΜΑΤΙΚΟΥ ΧΡΟΝΟΥ Μάθημα Επιλογής Ανάλυση Επιδόσεων Συστημάτων Πραγματικού Χρόνου Δρ. Γεώργιος Κεραμίδας e-mail: gkeramidas@teimes.gr 1
Διεργασίες: Κατάσταση Εκτέλεσης (3-σταδίων) Κατάσταση μιας διεργασίας (ως προς την εκτέλεση της) τρέχει (running): έχει τη CPU έτοιμο (ready): μπορεί να τρέξει, αλλά η CPU δόθηκε αλλού. μπλοκαρισμένη (blocked): περιμένει «εξωτερικό» γεγονός Για το σχήμα: 1. περιμένει I/O 2. CPU δίνεται σ' άλλο process 3. CPU δίνεται σ' αυτό το process 4. I/O ολοκληρώθηκε
Παράδειγμα εκτέλεσης Παράδειγμα:
Λειτουργικά Συστήματα Πραγματικού Χρόνου (ΛΣΠΧ) Κατάληψη ΚΜΕ καθοδηγούμενη από προτεραιότητες
Απόψεις της εκτέλεσης των διεργασιών A Α B Β Γ Γ Δ Α Β Γ Δ Δ Χρόνος (α) (β) (γ) (α) μοναδικός δείκτης εντολών προγράμματος (β) πολλαπλοί δείκτες εντολών προγράμματος (γ) κατανομή στον χρόνο
Χρονοπρογραμματισμός διεργασιών Σε πολυπρογραμματιζόμενα συστήματα είναι δυνατόν πάνω από μία διεργασίες να είναι εκτελέσιμες Το λειτουργικό σύστημα πρέπει να αποφασίσει ποια από αυτές θα καταλάβει την ΚΜΕ Το τμήμα του Λ.Σ. που είναι επιφορτισμένο με αυτό το καθήκον καλείται χρονοπρογραμματιστής και εφαρμόζει έναν αλγόριθμο χρονοπρογραμματισμού
Χρονοπρογραμματισμός σε συστήματα πραγματικού χρόνου Στα συστήματα πραγματικού χρόνου, ο χρονοπρογραμματιστής πρέπει να: Υποστηρίζει πολυεπεξεργασία/πολυνηματισμό με δυνατότητα προεκτόπισης Υποστηρίζει προτεραιότητες νημάτων Παρέχει προβλέψιμους μηχανισμούς συγχρονισμού νημάτων Να υπάρχει δυνατότητα ακριβούς εκτίμησης του χρόνου συγχρονισμού / αποκλεισμού Μεριμνά ιδιαίτερα για την τήρηση των χρονικών προθεσμιών
Πότε χρονοπρογραμματίζουμε; Υπάρχουν πολλές περιπτώσεις όπου μπορούμε να λάβουμε μία απόφαση χρονοπρογραμματισμού όταν δημιουργείται μία νέα διεργασία θα συνεχίσουμε να εκτελούμε τη γονική ή θα μεταχθούμε στη θυγατρική; όταν μία διεργασία τερματίζει πρέπει να επιλεχθεί κάποια από τις εκτελέσιμες ή η διεργασία αδράνειας όταν μία διεργασία αναστέλλεται για να εκτελέσει (για παράδειγμα) λειτουργίες εισόδου/εξόδου η αιτία αναστολής ίσως είναι σημαντική για την απόφαση χρονοπρογραμματισμού π.χ. αν η Α ανασταλεί περιμένοντας έναν πόρο που κατέχει η Β, η Β είναι καλός υποψήφιος για εκτέλεση. Ο χρονοπρογραμματιστής δεν έχει όμως πάντα όλες τις πληροφορίες
Χρονοπρογραμματισμός σε συστήματα χωρίς χαρακτηριστικά πραγματικού χρόνου Πρώτη ερχόμενη-πρώτη εξυπηρετούμενη (FCFS/FIFO) Νέα διεργασία Αναμένουσες διεργασίες Πρώτη διεργασία ΚΜΕ Ολοκλήρωση Πλεονεκτήματα πολύ εύκολος στην κατανόηση απλούστατος στην υλοποίηση δίκαιος, με την έννοια ότι όλοι εξυπηρετούνται, ο καθένας με τη σειρά του Μειονεκτήματα Μεγάλη ατυχία αν μία μικρή διεργασία (ή περισσότερες) τοποθετηθεί πίσω από μία μεγάλη π.χ. 100 διεργασίες εισόδου-εξόδου πίσω από μία μεγάλη διεργασία που τρέχει 3 ημέρες (head-of-line blocking) Όχι καλή αξιοποίηση των πόρων του συστήματος Απολύτως ακατάλληλος για συστήματα πραγματικού χρόνου
Χρονοπρογραμματισμός σε συστήματα χωρίς χαρακτηριστικά πραγματικού χρόνου Εκ περιτροπής εξυπηρέτηση (round robin) απλός, δίκαιος και ιδιαίτερα διαδεδομένος Σε κάθε διεργασία αποδίδεται ένα χρονικό κβάντο μέγιστος χρόνος συνεχούς εκτέλεσής της Αν η διεργασία εξαντλήσει το κβάντο ή ανασταλεί πριν το εξαντλήσει λαμβάνει χώρα μεταγωγή διεργασιών Εξάντληση χρονικού κβάντου Νέα διεργασία Αναμένουσες διεργασίες Πρώτη διεργασία ΚΜΕ Ολοκλήρωση Διεργασίες υπό αναστολή Αναστολή διεργασίας Ακατάλληλος για συστήματα πραγματικού χρόνου
Χρονοπρογραμματισμός προτεραιοτήτων με πολλαπλές ουρές Χρονοπρογραμματισμός προτεραιοτήτων Διάταξη διεργασιών σε κλάσεις προτεραιοτήτων εντός κάθε κλάσης εκ περιτροπής εξυπηρέτηση, απόλυτη προτεραιότητα της κλάσης ι έναντι των επομένων της Εκτελέσιμες διεργασίες Προτεραιότητα 0 Υψηλή προτεραιότητα Προτεραιότητα 1 Προτεραιότητα ν Χαμηλή προτεραιότητα
Χρονοπρογραμματισμός προτεραιοτήτων με ενιαία ουρά Χρονοπρογραμματισμός προτεραιοτήτων Οι προτεραιότητες μπορεί να είναι στατικές ή δυναμικές π.χ. στατική: στρατηγοί = 100, λοχαγοί = 40, στρατιώτες = 10 στατική: επιλογή χρήστη λόγω τιμολογιακών πολιτικών σε υπολογιστικά κέντρα (υψηλή προτεραιότητα = 10 ευρώ/ώρα, χαμηλή = 5 ευρώ/ώρα) Εξάντληση χρονικού κβάντου* Μείωση προτεραιότητας Νέα διεργασία + αρχική προτεραιότητα Αναμένουσες διεργασίες Διεργασίες υπό αναστολή Πρώτη διεργασία Επαναϋπολογισμός προτεραιότητας ΚΜΕ Αναστολή διεργασίας Ολοκλήρωση
Χρονοπρογραμματισμός προτεραιοτήτων με ενιαία ουρά Χρονοπρογραμματισμός προτεραιοτήτων Οι προτεραιότητες μπορεί να είναι στατικές ή δυναμικές π.χ. δυναμική: διεργασία που αξιοποίησε μόνο το μισό της κβάντο και κατόπιν ανεστάλη, λαμβάνει υψηλή δυναμική προτεραιότητα δυναμική: διεργασία που συχνά αναστέλλεται, λαμβάνει υψηλή δυναμική προτεραιότητα δυναμική: διεργασία με κοντινή προθεσμία λαμβάνει υψηλή προτεραιότητα Εξάντληση χρονικού κβάντου* Μείωση προτεραιότητας Νέα διεργασία + αρχική προτεραιότητα Αναμένουσες διεργασίες Διεργασίες υπό αναστολή Πρώτη διεργασία Επαναϋπολογισμός προτεραιότητας ΚΜΕ Αναστολή διεργασίας Ολοκλήρωση
Αλγόριθμος EDF EDF (earliest deadline first, συντομότερη προθεσμία πρώτα) Οι διεργασίες κατατάσσονται με βάση την προθεσμία που έχουν και επιλέγεται αυτή με τη συντομότερη προθεσμία Ένα απλό παράδειγμα. Θα πούμε και άλλα.
Υπολογισμός χρόνου εκτέλεσης διεργασιών Στους περισσότερους αλγόριθμους, απαιτείται να γνωρίζουμε τον χρόνο εκτέλεσης των διεργασιών Η πιο ευρέως χρησιμοποιούμενη σχετική μετρική είναι η WCET (worst case execution time). Βασίζεται στη στατική ανάλυση του λογισμικού
Υπολογισμός χρόνου εκτέλεσης διεργασιών Στους περισσότερους αλγόριθμους, απαιτείται να γνωρίζουμε τον χρόνο εκτέλεσης των διεργασιών H εκτίμηση του χρόνου χειρότερης περίπτωσης υπολογίζεται δομώντας τις διεργασίες σε έναν γράφο και υπολογίζοντας τον χρόνο εκτέλεσης του μακρύτερου μονοπατιού (longest path) που μπορεί να ακολουθήσει η εκτέλεση του λογισμικού O υπολογισμός του WCET περιπλέκεται από τις ιδιαιτερότητες της αρχιτεκτονικής (σωλήνωση, παραλληλία, κρυφή μνήμη, πρόβλεψη διακλαδώσεων κ.ο.κ.) Κατ αντιστοιχία ορίζεται και το BCET (best-case execution time)
Σχέση BCET, WCET πραγματικό ΒCET πραγματικό WCET πιθανοί χρόνοι εκτέλεσης Ασφαλής εκτίμηση WCET 0 Ανασφαλής εκτίμηση χρόνος
Βασικές εντολές συμβολικής γλώσσας (assembly) LOAD : φόρτωση καταχωρήτη από θέση μνήμης LOAD R2,&b ; R2 <-- περιεχόμενα της θέσης μνήμης "b" TEST: συγκρίνει δύο καταχωρητές. Το αποτέλεσμα της σύγκρισης απόθηκεύεται TEST R1,R2 ; σύγκριση R1 και R2, τίθεται η σχετική ένδειξη JNE: υπάρχει μετά από την TEST. Σημαίνει κάνε JUMP αν δεν υπήρχε ισότητα (Not Equal) JNE @L1 ; αν δεν προέκυψε ισότητα, άλμα στην ετικέτα L1
Βασικές εντολές συμβολικής γλώσσας (assembly) ADD: πρόσθεση καταχωρήτή με καταχωρητή ADD R1,R2 ; R1 <-- R1 + R2 JG: υπάρχει μετά από την TEST. Σημαίνει κάνε JUMP αν η σύγκριση ήταν μεγαλύτερο (Greater) JGE @L2 ; αν R1 >= R2, άλμα στην ετικέτα L2 JMP: άλμα στην ετικέτα JMP @END ; άλμα στην ετικέτα END SUB: αφαίρεση καταχωρήτή με καταχωρητή SUB R2, R3 ; R2 <-- R2 - R3
Υπολογισμός χρόνου εκτέλεσης διεργασιών (3) Ας θεωρήσουμε το ακόλουθο παράδειγμα κώδικα συμβολικής γλώσσας: LOAD R1,&a ; R1 <-- περιεχόμενα της θέσης μνήμης "a" LOAD R2,&b ; R2 <-- περιεχόμενα της θέσης μνήμης "b" TEST R1,R2 ; σύγκριση R1 και R2, τίθεται η σχετική ένδειξη JNE @L1 ; αν δεν προέκυψε ισότητα, άλμα στην ετικέτα L1 ADD R1,R2 ; R1 <-- R1 + R2 TEST R1,R2 ; σύγκριση R1 και R2, τίθεται η σχετική ένδειξη JGE @L2 ; αν R1 >= R2, άλμα στην ετικέτα L2 JMP @END ; άλμα στην ετικέτα END L1: ADD R1, R2 ; R1 <-- R1 + R2 JMP @END ; άλμα στην ετικέτα END L2: ADD R1, R2 ; R1 <-- R1 + R2 END: SUB R2, R3 ; R2 <-- R2 - R3
Υπολογισμός χρόνου εκτέλεσης διεργασιών Κατασκευάζουμε το δέντρο του προγράμματος στο οποίο απαριθμούνται όλα τα πιθανά μονοπάτια εκτέλεσης L1: ADD R1, R2 JMP @END SUB R2, R3 1 LOAD R1, &a LOAD R2, &b TEST R1,R2 JNE @L1 2, 3 (R1<>R2) (R1=R2) ADD R1, R2 TEST R1, R2 JGE @L2 L2: END: ADD R1, R2 SUB R2,R3 2 3 (R1>=R2) (R1<R2) JMP @END SUB R2, R3
Υπολογισμός χρόνου εκτέλεσης διεργασιών (5) Αν ο χρόνος εκτέλεσης μιας εντολής είναι 6μsec (ίδιος για κάθε εντολή), τότε: για το 1 ο μονοπάτι ο χρόνος εκτέλεσης είναι 42μsec (περιλαμβάνει 7 εντολές) και για το 2 ο και το 3 ο μονοπάτι είναι 54 μsec (περιλαμβάνουν 9 εντολές). Επομένως υπολογίστηκε ότι ο WCET είναι 54 μsec Christmas GIFT: Αυτό το παράδειγμα με άλλες εντολές και με άλλους χρόνους θα μπει στις εξετάσεις.
Scheduling (Χρονοδρομολόγηση) (Συνέχεια) Αλγόριθμοι: Αλγόριθμος First Come, First Serve (FCFS) Αλγόριθμος Shortest Job First (SJF) χωρίς προεκτόπιση Αλγόριθμος Shortest Job First (SJF) με προεκτόπιση Αλγόριθμος Round Robin (RR) 23
Κριτήρια
Κριτήρια (συνέχεια)
Βελτιστοποίηση Κριτήρια
Αλγόριθμος First Come, First Serve O FCFS αλγόριθμος δεν είναι προεκτοπιστικός (preemptive) Άρα η διεργασία Α θα ολοκληρωθεί Όταν ολοκληρωθεί η πρώτη εκτέλεση της Α αποθηκεύεται σε μια FIFO για μια δεύτερη εκτέλεση 27
Αλγόριθμος First Come, First Serve 28
First-Come, First-Serve (FCFS)
First-Come, First-Served
Shortest Job First SJF
Shortest Job First Είναι μη προεκτοπιστικός (ο συγκεκριμένος) Ελαχιστοποιεί τον μέσο χρόνο αναμονής Ο χρονοπρογραμματιστής επιτρέπει την εκτέλεση στη διεργασία με τον μικρότερο χρόνο εκτέλεσης 32
...Shortest Job First 33
...Shortest Job First Προεκτοπιστικός αλγόριθμος Όταν έρχονται νέες διεργασίες ο χρονοπρογραμματιστής αποφασίζει ποια θα εκτελεστεί Αυτή που έχει τον μικρότερο χρόνο εκτέλεσης, εκτελείται Κάνει συνεχής προσπάθειες για τη μείωση του μέσου χρόνου αναμονής 34
Παράδειγμα SJF χωρίς πρεκτόπιση
Παράδειγμα SJF με προεκτόπιση
Round Robin - RR
Αλγόριθμος Round Robin Προεκτοπιστικός αλγόριθμος Οι νέες διεργασίες εκτελούνται όταν τελειώσει το κβάντο χρόνου 38
Αλγόριθμος Round Robin Time quantum: 2 Συστήματα Πραγματικού Χρόνου- Δρ. Π. Κίτσος 39
Παράδειγμα 40
Παράδειγμα Χρονοπρογραμματισμού RR με q = 20
Παράδειγμα Δίνεται ο πίνακας αφίξεων και διάρκειας διεργασιών Σχεδιάστε τα διαγράμματα δρομολόγησης των διεργασιών για τις πολιτικές Πρώτη-Ήρθε-Πρώτη-Εξυπηρετήθηκε Εξυπηρέτηση εκ περιτροπής με κβάντα 2 Συντομότερη διεργασία πρώτα Υπολογίστε τον λόγο απόκρισης R για κάθε διεργασία και για κάθε πολιτική
Πίνακας
Λόγος απόκρισης = Χρόνος Επιστροφής / Διάρκεια FCFS
Λόγος απόκρισης = Χρόνος Επιστροφής / Διάρκεια RR με q = 2
Λόγος απόκρισης = Χρόνος Επιστροφής / Διάρκεια SJF
Αλγόριθμοι Scheduling: Αλγόριθμος First Come, First Serve (FCFS) Αλγόριθμος Shortest Job First (SJF) χωρίς προεκτόπιση Αλγόριθμος Shortest Job First (SJF) με προεκτόπιση Αλγόριθμος Round Robin (RR) EXTRA GIFT: ένα από τα πάνω παραδείγματα με διαφορετικά νούμερα θα μπει στις εξετάσεις.