360 likes | 496 Vues
Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling ). Περίληψη. Χρονοπρογραμματισμός διεργασιών και κριτήρια Κατηγορίες χρονοπρογραμματιστών Αλγόριθμοι χρονοπρογραμματισμού. Χρονοπρογραμματισμός.
E N D
Χρονοπρογραμματισμός Διεργασιών (Process Scheduling)
Περίληψη • Χρονοπρογραμματισμός διεργασιών και κριτήρια • Κατηγορίες χρονοπρογραμματιστών • Αλγόριθμοι χρονοπρογραμματισμού
Χρονοπρογραμματισμός • Η πολιτική με την οποία το ΛΣ αποφασίζει ποια διεργασία θα εκτελεστείς την επόμενη χρονική στιγμή • Οι απαιτήσεις από τον χρονοπρογραμματιστή διαφέρουν σύμφωνα με την εφαρμογή • Σε παλαιότερα συστήματα τύπου batch η δουλεία του χρονοπρογραμματιστή ήταν σχετικά απλή… • Σε συστήματα με πολλαπλούς χρήστες (time sharing or multi-user)η δουλεία του χρονοπρογραμματιστή είναι πιο δύσκολη… • Ποια η δουλεία του χρονοπρογραμματιστή σε έναν προσωπικό υπολογιστή; • Στην περίπτωση των δικτυωμένων εξυπηρετητών ο χρονοπρογραμματιστής παίζει μεγάλο ρόλο στην απόδοση του συστήματος • Interactive and background processes.
Χρονοπρογραμματισμός • Κόστος αλλαγής διεργασίας • Αποθήκευσης της κατάστασης μιας διεργασίας • Επιλογή της επόμενης, • Φόρτωση της κατάστασης της επόμενης και • Επαναδραστηριοποίηση • Πότε θα πάρει απόφαση ο χρονοπρογραμματιστής; • Όταν μια διεργασία δημιουργήσει ένα παιδί (child process). • Όταν μια διεργασία τελειώσει τότε ο χρονοπρογραμματιστής θα επιλέξει την επόμενη διεργασία • Όταν μια διεργασία μπλοκάρει (Ε/Ε ή σηματοφόρος) • Όταν συμβεί κάποιο σήμα διακοπής (interrupt) • Σήμα διακοπής από Ε/Ε • Σήμα διακοπής από χρονομέτρη (timer)
Χρονοπρογραμματισμός • Preemptive vs. non-preemptive • Preemptive: μια διεργασία μπορεί να διακοπεί και ο επεξεργαστής να δοθεί σε μια νέα διεργασία. • Non-preemptive: μια διεργασία δεν διακόπτεται. • Εάν δεν υπάρχει ρολόι τότε non-preemptive είναι η μόνη επιλογή εκτός εάν υπάρχουν διεργασίες με διαφορετικές προτεραιότητες.
Στόχοι Χρονοπρογραμματιστή • Αυτοί εξαρτώνται από το περιβάλλον της εφαρμογής • Σε όλα τα συστήματα • Δικαιοσύνη • Όλες οι διεργασίες παίρνουν ένα «δίκαιο» μερίδιο από την υπολογιστική δυνατότητα του επεξεργαστή • Εφαρμογή της πολιτικής • Ισοζυγισμός • Όλα τα μέρη του υπολογιστή πρέπει να χρησιμοποιούνται
Στόχοι Χρονοπρογραμματιστή • Συστήματα τύπου batch • Διεκπεραιωτική ικανότητα (throughput) • Πόσες διεργασίες τελειώνουν σε κάθε χρονική περίοδο (π.χ., κάθε ώρα). • Χρόνος ολοκλήρωσης ή χρόνος στο σύστημα (turnaround time) • Ο χρόνος από τη στιγμή που κατατίθεται η διεργασία μέχρι τη στιγμή διεκπεραίωσης. Συμπεριλαμβάνει το χρόνο αναμονής και επεξεργασίας. • Χρήση του επεξεργαστή (CPU utilization) • Ποσοστό του χρόνου κατά το οποίο ο επεξεργαστής είναι απασχολημένος.
Στόχοι Χρονοπρογραμματιστή • Διαδραστικά Συστήματα (Interactive) • Χρόνος απόκρισης • Χρόνος από τη στιγμή που θα υπάρξει κάποια εντολή μέχρις ότου εκτελεστεί • Αναλογικότητα (proportionality) • Απόκριση του συστήματος είναι σύμφωνα με την αντίληψη του χρήστη. • Μας ενδιαφέρει το ποσοστό χρήσης του επεξεργαστή; • Συστήματα Πραγματικού Χρόνου (real-time) • Οι διεργασίες πρέπει να τελειώνουν μέσα στα δεδομένα χρονικά πλαίσια (deadlines) • Η απόκριση του συστήματος πρέπει να είναι προβλέψιμη (predictable)
Στόχοι Χρονοπρογραμματιστή • Οι απαιτήσεις πολλές φορές είναι αντιφατικές • Ελαχιστοποίηση του χρόνου ολοκλήρωσης (turnaround)δεν σημαίνει και μεγιστοποίηση της διεκπεραιωτικής ικανότητας του συστήματος • Υποθέστε ένα σύστημα με πολλές σύντομες και μεγάλες διεργασίες • Μεγιστοποίηση Διεκπεραιωτικής ικανότητας συνεπάγεται εκτέλεση όλων των σύντομων διεργασιών πρώτα που κατά συνέπεια μεγαλώνει το χρόνο ολοκλήρωσης των μεγάλων διεργασιών.
Τύποι Χρονοπρογραμματιστών • Μακροπρόθεσμος (admission scheduler) • Πόσες και ποιες διεργασίες θα εκτελεσθούν • Επηρεάζει το επίπεδο του πολυπρογραμματισμού • Μεσοπρόθεσμος (memory scheduler) • Πόσες και ποιες διεργασίες θα φορτωθούν στη κύρια μνήμη • Επηρεάζει το επίπεδο του πολυπρογραμματισμού • Βραχυπρόθεσμος (dispatcher or CPU scheduler) • Πια διεργασία θα εκτελεστεί αμέσως μετά. • Χρονοπρογραμματισμός συσκευών Ε/Ε
Κριτήρια • Πόσο χρόνος πέρασε από την στιγμή που μια διεργασία μπήκε ή βγήκε από την επεξεργαστή • Πόσος χρόνος του επεξεργαστή κατανεμήθηκε πρόσφατα στη κάθε διεργασία • Πόσο μεγάλη είναι η διεργασία • Πόσο σημαντική είναι η διεργασία (priority).
Πολιτική FIFO • First-In-First-Out ή First Come First Serve • Ο χρονοπρογραμματιστής επιλέγει την διεργασία που ήταν στην ουρά τον περισσότερο χρόνο και την τρέχει μέχρι να τελειώσει. • Πλεονεκτήματα • Είναι απλή • Καμιά διεργασία δεν υποφέρει από παρατεταμένη στέρηση • Μειονεκτήματα • Ο εξυπηρετητής μπορεί να μείνει αχρησιμοποίητος ενώ εκτελούνται εντολές Ε/Ε • Δεν παρουσιάζει καλή απόκριση • Μια «μικρή» διεργασία μπορεί να περιμένει πολλή ώρα εάν φτάσει ακριβώς μετά από μια μεγάλη διεργασία • Όταν ο χρόνος εκτέλεσης των διεργασιών παρουσιάζει μεγάλη διασπορά (variance) τότε ο χρόνος απόκρισης μπορεί να είναι μεγάλος
Παράδειγμα Πολιτικής FIFO Ε Δ Γ B 5 10 15 20 Μέσος χρόνος στο σύστημα =8.6 Μέσος ΧΟ/Επ. =2.56 A
Πολιτική Round-Robin • Ο χρονοπρογραμματιστής επιλέγει ένα διάστημα qκαι εκτελεί κάθε διεργασία για q χρονικές μονάδες και στη συνέχεια εναλλάσσει διεργασία. • Πλεονεκτήματα • Είναι απλή • Είναι δίκαιη • Καμιά διεργασία δεν υποφέρει από παρατεταμένη στέρηση • Παρουσιάζει καλή απόκριση για μικρές διεργασίες (μικρές διεργασίες δεν περιμένουν πολύ πίσω από μεγάλες διεργασίες) • Μειονεκτήματα • Πιθανόν να έχει μειωμένη διεκπεραιωτική ικανότητα εάν το q είναι πολύ μικρό. • Δίνει προτεραιότητα στις διεργασίας με περισσότερους υπολογισμούς παρά σε διεργασίες με Ε/Ε • Διεργασίες με πολλές λειτουργίες Ε/Ε μπορεί να μην εκμεταλλεύονται ολόκληρο το q και μετά θα «χάνουν» τη σειρά τους
Παράδειγμα Πολιτικής Round-Robin (q=1) 5 10 15 20 Μέσος χρόνος στο σύστημα =10.8 Μέσος ΧΟ/Επ. =2.71 Ε Ε Δ Δ Δ Δ Γ Γ Γ Γ B B B B B B A A
Παράδειγμα Πολιτικής Round-Robin (q=4) 5 10 15 20 Μέσος χρόνος στο σύστημα =10.0 Μέσος ΧΟ/Επ. =2.71 Ε Δ Δ Γ B B A
Πολιτική Shortest Process Next (SPN) • Ο χρονοπρογραμματιστής επιλέγει την πιο μικρή διεργασία που περιμένει στην ουράτην οποία εκτελεί μέχρι το τέλος. • Πλεονεκτήματα • Έχει αυξημένη διεκπεραιωτική ικανότητα • Πολύ καλή απόδοση (απόκριση) για μικρές διεργασίες • Μειονεκτήματα • Μεγάλες διεργασίες μπορούν να υποφέρουν από παρατεταμένη στέρηση • Είναι γενικά δύσκολο να υπολογίσουμε το χρόνο που χρειάζεται η κάθε διεργασία
Παράδειγμα Πολιτικής Shortest Process Next 5 10 15 20 Μέσος χρόνος στο σύστημα =7.6 Μέσος ΧΟ/Επ. =1.84 Ε Δ Γ B A
Υπολογισμός του Χρόνου Εκτέλεσης μιας Διεργασίας • Υπολογίζουμε το χρόνο εκτέλεσης σύμφωνα με το χρόνο εκτέλεσης της διεργασίας στο παρελθόν. • Ti: ο χρόνος εκτέλεσης της διεργασίας την φορά i(μέτρηση). • Si: ο υπολογισμένος (προβλεπόμενος) χρόνος για την εκτέλεση i. • Μέσος όρος • Εκθετικός μέσος όρος
Πολιτική Shortest RemainingTime (SRT) • Ο χρονοπρογραμματιστής επιλέγει την διεργασία που της έχει μείνει ο λιγότερος χρόνος μέχρι να τελειώσει. Σε περίπτωση που φτάσει μικρότερη διεργασία, τότε την εναλλάσσει με αυτήν που τρέχει. • Πλεονεκτήματα • Έχει αυξημένη διεκπεραιωτική ικανότητα • Πολύ καλή απόδοση (απόκριση) για μικρές διεργασίες • Σε σύγκριση με την SPN, δίνει αμέσως προτεραιότητα στις μικρές διεργασίες • Μειονεκτήματα • Μεγάλες διεργασίες μπορούν να υποφέρουν από παρατεταμένη στέρηση • Είναι γενικά δύσκολο να υπολογίσουμε το χρόνο που χρειάζεται η κάθε διεργασία. • Επίσης πρέπει να κρατούμε στοιχεία για το χρόνο που υπολείπεται η κάθε διεργασία.
Παράδειγμα Πολιτικής Shortest Remaining Time (SRT) 5 10 15 20 Μέσος χρόνος στο σύστημα =7.2 Μέσος ΧΟ/Επ. =1.59 Ε Δ Γ Γ B B A A
Πολιτική Highest Response Ration Next (HRRN) • Ορίζουμε • Wi: ο χρόνος που πέρασε στην ουρά η διεργασία i. • Si: ο υπολογισμένος χρόνος για την εκτέλεση της διεργασίας i. • Ο χρονοπρογραμματιστής επιλέγει την διεργασία με το μεγαλύτερο Ri και την τρέχει μέχρι το τέλος. • Πλεονεκτήματα • Έχει αυξημένη διεκπεραιωτική ικανότητα • Πολύ καλή απόδοση (απόκριση) • Μεγάλες διεργασίες δεν μπορούν να υποφέρουν από παρατεταμένη στέρηση • Μειονεκτήματα • Είναι γενικά δύσκολο να υπολογίσουμε το χρόνο που χρειάζεται η κάθε διεργασία. • Σε κάθε βήμα πρέπει να υπολογίζουμε τα Ri για όλες τις διεργασίες
Παράδειγμα Πολιτικής Highest Response Ratio Next 5 10 15 20 Μέσος χρόνος στο σύστημα =8.0 Μέσος ΧΟ/Επ. =2.14 Ε Δ Γ B A
Πολιτικές με Κάποιας Μορφής Ανάδραση • Σκεπτικό: Πολλές φορές είναι δύσκολο να υπολογιστεί ο χρόνος επεξεργασίας που χρειάζεται μια διεργασία. Οπόταν ορίζουμε μια διαδικασία κατά την οποία μεγάλες διεργασίες θα καθυστερούν περισσότερο απ’ ότι οι μικρές. • Ο χρονοπρογραμματιστής επιλέγει ένα διάστημα qκαι εκτελεί κάθε διεργασία για q χρονικές μονάδες και στη συνέχεια εναλλάσσει διεργασία. • Σε αντίθεση με τη πολιτική Round-Robin επιλέγει την διεργασία που μέχρι τώρα είχε τη λιγότερη ώρα στον επεξεργαστή. • Πλεονεκτήματα • Δίνει προτεραιότητα σε διεργασίες με Ε/Ε • Δεν χρειάζεται εκτίμηση του χρόνου εκτέλεσης κάθε διεργασίας • Μειονεκτήματα • Πιθανόν να έχει μειωμένη διεκπεραιωτική ικανότητα εάν το q είναι πολύ μικρό. • Μεγάλες διεργασίες κινδυνεύουν με παρατεταμένη στέρηση.
Παράδειγμα Πολιτικής Με Ανάδραση (q=1) 5 10 15 20 Μέσος χρόνος στο σύστημα =11.2 Μέσος ΧΟ/Επ. =2.65 Ε Δ Δ Δ Δ Γ Γ Γ B B B B B B A A A
Άλλες Μετρικές Απόδοσης • Χρήση (utilization) του επεξεργαστή • Σε όλα τα παραδείγματα η χρήση του επεξεργαστή είναι 100% • Σε γενικές γραμμές είναι επιθυμητό ένα υψηλό ποσοστό χρήσης αλλά το 100% είναι «επικίνδυνο». • Διεκπεραιωτική ικανότητα (throughput) • Σε όλα τα παραδείγματα η διεκπεραιωτική ικανότητα ήταν 5 διεργασίες στις 20 χρονικές μονάδες • Όλα τα παραδείγματα αγνοούσαν δύο πτυχές του προβλήματος του χρονοπρογραμματισμού • Το κόστος εναλλαγής διεργασιών • Διεργασίες με εντολές Ε/Ε
Χρονοπρογραμματισμός με Προτεραιότητες … k CPU k+1 … • Οι διεργασίες μπορεί να κατανεμηθούν σε διάφορες ουρές οι οποίες έχουν διαφορετικές προτεραιότητες. • Παραδείγματα • Ο επεξεργαστής δεν παίρνει ποτέ διεργασίες από την ουρά k+1 εάν υπάρχουν διεργασίες στη k. • Preemptive or non-preemptive • Generalized Processor Sharing • … • Οι προτεραιότητα κάθε διεργασίας μπορεί να υπολογίζεται δυναμικά ανάλογα με τους στόχους του συστήματος • Π.χ., μια διεργασία που επιστρέφει από Ε/Ε εντολές μπορεί να πάρει ψηλότερη προτεραιότητα
Χρονοπρογραμματισμός με Λαχνούς • Ο χρονοπρογραμματιστής επιλέγει τυχαία την επόμενη διεργασία. • Εάν όλες οι διεργασίες έχουν την ίδια προτεραιότητα, τότε μακροπρόθεσμα θα πάρουν κατά μέσο όρο 1/n του χρόνου του επεξεργαστή. • Εναλλακτικά, στην κάθε διεργασία μπορούμε να δώσουμε ένα αριθμό από «λαχνούς» οι οποίοι θα καθορίζουν την πιθανότητα να επιλεχθεί η συγκεκριμένη διεργασία • Διεργασίες με περισσότερους λαχνούς έχουν μεγαλύτερη πιθανότητα επιλογής και επομένως ψηλότερη προτεραιότητα • Αυτός ο αλγόριθμος επιλύει το δύσκολο πρόβλημα του καθορισμού της προτεραιότητας της κάθε διεργασίας με ένα σχετικά απλό τρόπο.
Χρονοπρογραμματισμός για Δίκαιο Μερίδιο (Fair Share) • Υποθέστε ένα υπολογιστή με δύο χρήστες. • Ο χρήστης 1 (Χ1) τρέχει τη διεργασία Α • Ο χρήστης 2 (Χ2) τρέχει τις διεργασίες Β, Γ, Δ, Ε. • Εάν χρησιμοποιήσουμε Round-Robin με ίσα διαστήματα q, τότε πιθανόν οι διεργασίες να εκτελεσθούν • Α,Β,Γ,Δ,Ε,Α,Β,Γ,Δ,Ε,… • Σαν αποτέλεσμα ο Χ1 παίρνει μόνο 20% του επεξεργαστή ενώ ο Χ2 τα υπόλοιπα 80%! • Εναλλακτικά εάν υποχρεώσουμε το σύστημα να δίνει ίσο χρόνο στους δύο χρήστες, τότε οι διεργασίες θα εκτελεσθούν • Α,Β,Α,Γ,Α,Δ,Α,Ε,Α,Β,Α,Γ,Α,Δ,… • Εάν δώσουμε διπλάσιο χρόνο στον Χ2 από αυτόν του Χ1 • Α,Β,Γ,Α,Δ,Ε, Α,Β,Γ,Α,Δ,Ε,…
Χρονοπρογραμματισμός στο Linux • Το Linux υποστηρίζει τρεις κλάσεις διεργασιών • SCHED_FIFOγια υποδιεργασίες πραγματικού χρόνου (real-time threads). • SCHED_RR (round-robin) επίσης για υποδιεργασίες πραγματικού χρόνου. • SCHED_OTHERγια υποδιεργασίες μη πραγματικού χρόνου (non-real-time threads) • Κάθε κατηγορία πραγματικού χρόνου έχει προτεραιότητα που κυμαίνεται μεταξύ 0-99 και κάθε SCHED_OTHER μεταξύ 100-139 • Μικρότερος αριθμός σημαίνει μεγαλύτερη προτεραιότητα.
Χρονοπρογραμματισμός στο Linux: SCHED_FIFO • Το ΛΣ δεν διακόπτει(non-preemptive) διεργασία αυτής της κατηγορίας εκτός από τις ακόλουθες περιπτώσεις • Διεργασία SCHED_FIFO με ψηλότερη προτεραιότητα μπήκε στην κατάσταση «έτοιμη». • Η διεργασία η οποία εκτελείται μπήκε στη κατάσταση «blocked». • Η διεργασία η οποία εκτελείται εθελοντικά σταματά (sched_yield) • Όταν η διεργασία η οποία εκτελείται διακόπτεται μπαίνει σε ουρά αντίστοιχη με την προτεραιότητα της. • Όταν η διεργασία επανέρχεται στην κατάσταση «έτοιμη» τότε • Εάν η διεργασία η οποία εκτελείται είναι χαμηλότερης προτεραιότητας τότε τη διακόπτει και παίρνει τον επεξεργαστή. • Εάν περιμένουν περισσότερες από μια διεργασίες με την ίδια προτεραιότητα, τότε εκτελείται αυτή η οποία περίμενε περισσότερο.
Χρονοπρογραμματισμός στο Linux: SCHED_RR • Παρόμοια με την SCHED_FIFO με μόνη διαφορά την ύπαρξη των χρονικών διαστημάτων q. • Μόλις μια διεργασία συμπληρώσει το διάστημα της, διακόπτεται και επιλέγεται να εκτελεστεί μια διεργασία με προτεραιότητα μεγαλύτερη ή ίση με αυτή της διεργασίας που μόλις διακόπηκε. • Διεργασίες με μεγαλύτερη προτεραιότητα μπορεί να έχουν μεγαλύτερο διάστημα απ’ ότι διεργασίες με μικρότερη προτεραιότητα.
Παράδειγμα Χρονοπρογραμματισμού στο Linux 5 10 15 20 Ε Ε Δ Δ Δ Δ Δ Γ Γ Γ Γ B B B B B B A
Χρονοπρογραμματισμός στο Linux • Το Linux χρησιμοποιεί δύο δομές (active and expired) για κάθε επεξεργαστή όπως πιο κάτω Struct prio_array { int nr_active; /*number of active processes*/ unsigned long bitmap[BITMAP_SIZE]; struct list_head queue[MAX_PRIO]; /*priority queues*/ } • Υπάρχει μια ουρά για κάθε προτεραιότητα (MAX_PRIO=140) • Το bitmap δείχνει ποίες ουρές είναι άδειες • Το nr_active δείχνει το συνολικό αριθμό από ενεργοποιημένες διεργασίες
Χρονοπρογραμματισμός στο Linux • Εκτελούνται πάντα οι διεργασίες στη δομή active. • Όταν μια διεργασία συμπληρώσει το διάστημα της τότε μεταφέρεται στη δομή expired στην αντίστοιχη προτεραιότητα. • Εάν η διεργασία διακοπεί πριν τον προβλεπόμενο χρόνο, τότε επιστρέφει πίσω στη δομή active. • Μόλις αδειάσει η δομή active, τότε απλά η expired γίνεται η νέα active και η expired αρχικοποιείται σε άδεια και ο κύκλος επαναλαμβάνεται. • Διεργασίες πραγματικού χρόνου επιστρέφουν πάντα στην δομή active. • To Linux δίνει περισσότερη προτεραιότητα σε διεργασίες με εντολές Ε/Ε • Αυξάνει την προτεραιότητα διεργασιών που περνούν πολλή ώρα μπλοκαρισμένες. • Το διάστημα επεξεργασίας κάθε διεργασίας κυμαίνεται από 10 έως 200 ms.