Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

36
Χρονοπρογραμματισμ ός Διεργασιών (Process Scheduling)

description

Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling ). Περίληψη. Χρονοπρογραμματισμός διεργασιών και κριτήρια Κατηγορίες χρονοπρογραμματιστών Αλγόριθμοι χρονοπρογραμματισμού. Χρονοπρογραμματισμός. - PowerPoint PPT Presentation

Transcript of Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Page 1: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Χρονοπρογραμματισμός Διεργασιών (Process Scheduling)

Page 2: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Περίληψη

Χρονοπρογραμματισμός διεργασιών και κριτήρια

Κατηγορίες χρονοπρογραμματιστών Αλγόριθμοι χρονοπρογραμματισμού

Page 3: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Χρονοπρογραμματισμός

Η πολιτική με την οποία το ΛΣ αποφασίζει ποια διεργασία θα εκτελεστείς την επόμενη χρονική στιγμή

Οι απαιτήσεις από τον χρονοπρογραμματιστή διαφέρουν σύμφωνα με την εφαρμογή Σε παλαιότερα συστήματα τύπου batch η δουλεία του

χρονοπρογραμματιστή ήταν σχετικά απλή… Σε συστήματα με πολλαπλούς χρήστες (time sharing or multi-user)

η δουλεία του χρονοπρογραμματιστή είναι πιο δύσκολη… Ποια η δουλεία του χρονοπρογραμματιστή σε έναν προσωπικό

υπολογιστή; Στην περίπτωση των δικτυωμένων εξυπηρετητών ο

χρονοπρογραμματιστής παίζει μεγάλο ρόλο στην απόδοση του συστήματος

Interactive and background processes.

Page 4: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Χρονοπρογραμματισμός

Κόστος αλλαγής διεργασίας Αποθήκευσης της κατάστασης μιας διεργασίας Επιλογή της επόμενης, Φόρτωση της κατάστασης της επόμενης και Επαναδραστηριοποίηση

Πότε θα πάρει απόφαση ο χρονοπρογραμματιστής; Όταν μια διεργασία δημιουργήσει ένα παιδί (child process). Όταν μια διεργασία τελειώσει τότε ο χρονοπρογραμματιστής θα

επιλέξει την επόμενη διεργασία Όταν μια διεργασία μπλοκάρει (Ε/Ε ή σηματοφόρος) Όταν συμβεί κάποιο σήμα διακοπής (interrupt)

Σήμα διακοπής από Ε/Ε Σήμα διακοπής από χρονομέτρη (timer)

Page 5: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Χρονοπρογραμματισμός

Preemptive vs. non-preemptive Preemptive: μια διεργασία μπορεί να διακοπεί και ο επεξεργαστής

να δοθεί σε μια νέα διεργασία. Non-preemptive: μια διεργασία δεν διακόπτεται. Εάν δεν υπάρχει ρολόι τότε non-preemptive είναι η μόνη επιλογή

εκτός εάν υπάρχουν διεργασίες με διαφορετικές προτεραιότητες.

Page 6: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Στόχοι Χρονοπρογραμματιστή

Αυτοί εξαρτώνται από το περιβάλλον της εφαρμογής

Σε όλα τα συστήματα Δικαιοσύνη

Όλες οι διεργασίες παίρνουν ένα «δίκαιο» μερίδιο από την υπολογιστική δυνατότητα του επεξεργαστή

Εφαρμογή της πολιτικής Ισοζυγισμός

Όλα τα μέρη του υπολογιστή πρέπει να χρησιμοποιούνται

Page 7: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Στόχοι Χρονοπρογραμματιστή

Συστήματα τύπου batch Διεκπεραιωτική ικανότητα (throughput)

Πόσες διεργασίες τελειώνουν σε κάθε χρονική περίοδο (π.χ., κάθε ώρα).

Χρόνος ολοκλήρωσης ή χρόνος στο σύστημα (turnaround time)

Ο χρόνος από τη στιγμή που κατατίθεται η διεργασία μέχρι τη στιγμή διεκπεραίωσης. Συμπεριλαμβάνει το χρόνο αναμονής και επεξεργασίας.

Χρήση του επεξεργαστή (CPU utilization) Ποσοστό του χρόνου κατά το οποίο ο επεξεργαστής είναι

απασχολημένος.

Page 8: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Στόχοι Χρονοπρογραμματιστή

Διαδραστικά Συστήματα (Interactive) Χρόνος απόκρισης

Χρόνος από τη στιγμή που θα υπάρξει κάποια εντολή μέχρις ότου εκτελεστεί

Αναλογικότητα (proportionality) Απόκριση του συστήματος είναι σύμφωνα με την αντίληψη του

χρήστη. Μας ενδιαφέρει το ποσοστό χρήσης του επεξεργαστή;

Συστήματα Πραγματικού Χρόνου (real-time) Οι διεργασίες πρέπει να τελειώνουν μέσα στα δεδομένα χρονικά

πλαίσια (deadlines) Η απόκριση του συστήματος πρέπει να είναι προβλέψιμη

(predictable)

Page 9: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Στόχοι Χρονοπρογραμματιστή

Οι απαιτήσεις πολλές φορές είναι αντιφατικές Ελαχιστοποίηση του χρόνου ολοκλήρωσης

(turnaround) δεν σημαίνει και μεγιστοποίηση της διεκπεραιωτικής ικανότητας του συστήματος

Υποθέστε ένα σύστημα με πολλές σύντομες και μεγάλες διεργασίες

Μεγιστοποίηση Διεκπεραιωτικής ικανότητας συνεπάγεται εκτέλεση όλων των σύντομων διεργασιών πρώτα που κατά συνέπεια μεγαλώνει το χρόνο ολοκλήρωσης των μεγάλων διεργασιών.

Page 10: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Τύποι Χρονοπρογραμματιστών

Μακροπρόθεσμος (admission scheduler) Πόσες και ποιες διεργασίες θα εκτελεσθούν Επηρεάζει το επίπεδο του πολυπρογραμματισμού

Μεσοπρόθεσμος (memory scheduler) Πόσες και ποιες διεργασίες θα φορτωθούν στη κύρια

μνήμη Επηρεάζει το επίπεδο του πολυπρογραμματισμού

Βραχυπρόθεσμος (dispatcher or CPU scheduler) Πια διεργασία θα εκτελεστεί αμέσως μετά.

Χρονοπρογραμματισμός συσκευών Ε/Ε

Page 11: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Τύποι Χρονοπρογραμματιστών

Page 12: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Κριτήρια

Πόσο χρόνος πέρασε από την στιγμή που μια διεργασία μπήκε ή βγήκε από την επεξεργαστή

Πόσος χρόνος του επεξεργαστή κατανεμήθηκε πρόσφατα στη κάθε διεργασία

Πόσο μεγάλη είναι η διεργασία Πόσο σημαντική είναι η διεργασία (priority).

Page 13: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Πολιτική FIFO

First-In-First-Out ή First Come First Serve Ο χρονοπρογραμματιστής επιλέγει την διεργασία που

ήταν στην ουρά τον περισσότερο χρόνο και την τρέχει μέχρι να τελειώσει.

Πλεονεκτήματα Είναι απλή Καμιά διεργασία δεν υποφέρει από παρατεταμένη στέρηση

Μειονεκτήματα Ο εξυπηρετητής μπορεί να μείνει αχρησιμοποίητος ενώ

εκτελούνται εντολές Ε/Ε Δεν παρουσιάζει καλή απόκριση

Μια «μικρή» διεργασία μπορεί να περιμένει πολλή ώρα εάν φτάσει ακριβώς μετά από μια μεγάλη διεργασία

Όταν ο χρόνος εκτέλεσης των διεργασιών παρουσιάζει μεγάλη διασπορά (variance) τότε ο χρόνος απόκρισης μπορεί να είναι μεγάλος

Page 14: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Παράδειγμα Πολιτικής FIFO

Διερ. Άφ. Eπ.

Α 0 3Β 2 6Γ 4 4Δ 6 5Ε 8 2

5 10 15 20

AB

ΓΔ

Ε

Διερ. ΧΟ ΧΟ/Επ.

ΑΒΓΔΕ

3 17 7/69 9/412 12/512 6

Μέσος χρόνος στο σύστημα =8.6

Μέσος ΧΟ/Επ. =2.56

Page 15: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Πολιτική Round-Robin

Ο χρονοπρογραμματιστής επιλέγει ένα διάστημα q και εκτελεί κάθε διεργασία για q χρονικές μονάδες και στη συνέχεια εναλλάσσει διεργασία.

Πλεονεκτήματα Είναι απλή Είναι δίκαιη Καμιά διεργασία δεν υποφέρει από παρατεταμένη στέρηση Παρουσιάζει καλή απόκριση για μικρές διεργασίες (μικρές

διεργασίες δεν περιμένουν πολύ πίσω από μεγάλες διεργασίες) Μειονεκτήματα

Πιθανόν να έχει μειωμένη διεκπεραιωτική ικανότητα εάν το q είναι πολύ μικρό.

Δίνει προτεραιότητα στις διεργασίας με περισσότερους υπολογισμούς παρά σε διεργασίες με Ε/Ε

Διεργασίες με πολλές λειτουργίες Ε/Ε μπορεί να μην εκμεταλλεύονται ολόκληρο το q και μετά θα «χάνουν» τη σειρά τους

Page 16: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Παράδειγμα Πολιτικής Round-Robin (q=1)

Διερ. Άφ. Eπ.

Α 0 3Β 2 6Γ 4 4Δ 6 5Ε 8 2

5 10 15 20

AB

Ε

Διερ. ΧΟ ΧΟ/Επ.

ΑΒΓΔΕ

4 4/316 16/613 13/414 14/57 7/2

Μέσος χρόνος στο σύστημα =10.8

Μέσος ΧΟ/Επ. =2.71

AB

ΓΔ

Δ

B

ΕΔ

ΓB

Δ

Page 17: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Παράδειγμα Πολιτικής Round-Robin (q=4)

Διερ. Άφ. Eπ.

Α 0 3Β 2 6Γ 4 4Δ 6 5Ε 8 2

5 10 15 20

AB

Ε

Διερ. ΧΟ ΧΟ/Επ.

ΑΒΓΔΕ

3 115 15/67 7/4

14 14/511 11/2

Μέσος χρόνος στο σύστημα =10.0

Μέσος ΧΟ/Επ. =2.71

ΓΔ Δ

B

Page 18: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Πολιτική Shortest Process Next (SPN)

Ο χρονοπρογραμματιστής επιλέγει την πιο μικρή διεργασία που περιμένει στην ουρά την οποία εκτελεί μέχρι το τέλος.

Πλεονεκτήματα Έχει αυξημένη διεκπεραιωτική ικανότητα Πολύ καλή απόδοση (απόκριση) για μικρές διεργασίες

Μειονεκτήματα Μεγάλες διεργασίες μπορούν να υποφέρουν από

παρατεταμένη στέρηση Είναι γενικά δύσκολο να υπολογίσουμε το χρόνο που

χρειάζεται η κάθε διεργασία

Page 19: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Παράδειγμα Πολιτικής Shortest Process Next

Διερ. Άφ. Eπ.

Α 0 3Β 2 6Γ 4 4Δ 6 5Ε 8 2

5 10 15 20

A

Διερ. ΧΟ ΧΟ/Επ.

ΑΒΓΔΕ

3 17 7/6

11 11/414 14/53 3/2

Μέσος χρόνος στο σύστημα =7.6

Μέσος ΧΟ/Επ. =1.84

ΕΔ

Page 20: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Υπολογισμός του Χρόνου Εκτέλεσης μιας Διεργασίας

Υπολογίζουμε το χρόνο εκτέλεσης σύμφωνα με το χρόνο εκτέλεσης της διεργασίας στο παρελθόν. Ti: ο χρόνος εκτέλεσης της διεργασίας την φορά i (μέτρηση). Si: ο υπολογισμένος (προβλεπόμενος) χρόνος για την εκτέλεση i.

Μέσος όρος

Εκθετικός μέσος όρος

11

1 n

n ii

S Tn

11 1

n n nnS T S

n n

1 1n n nS T S

Page 21: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Πολιτική Shortest Remaining Time (SRT)

Ο χρονοπρογραμματιστής επιλέγει την διεργασία που της έχει μείνει ο λιγότερος χρόνος μέχρι να τελειώσει. Σε περίπτωση που φτάσει μικρότερη διεργασία, τότε την εναλλάσσει με αυτήν που τρέχει.

Πλεονεκτήματα Έχει αυξημένη διεκπεραιωτική ικανότητα Πολύ καλή απόδοση (απόκριση) για μικρές διεργασίες Σε σύγκριση με την SPN, δίνει αμέσως προτεραιότητα στις

μικρές διεργασίες Μειονεκτήματα

Μεγάλες διεργασίες μπορούν να υποφέρουν από παρατεταμένη στέρηση

Είναι γενικά δύσκολο να υπολογίσουμε το χρόνο που χρειάζεται η κάθε διεργασία.

Επίσης πρέπει να κρατούμε στοιχεία για το χρόνο που υπολείπεται η κάθε διεργασία.

Page 22: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Παράδειγμα Πολιτικής Shortest Remaining Time (SRT)

Διερ. Άφ. Eπ.

Α 0 3Β 2 6Γ 4 4Δ 6 5Ε 8 2

5 10 15 20

A

Διερ. ΧΟ ΧΟ/Επ.

ΑΒΓΔΕ

3 113 13/64 1

14 14/52 1

Μέσος χρόνος στο σύστημα =7.2

Μέσος ΧΟ/Επ. =1.59

ΕΔ

A

Page 23: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Πολιτική Highest Response Ration Next (HRRN) Ορίζουμε

Wi: ο χρόνος που πέρασε στην ουρά η διεργασία i. Si: ο υπολογισμένος χρόνος για την εκτέλεση της διεργασίας i.

Ο χρονοπρογραμματιστής επιλέγει την διεργασία με το μεγαλύτερο Ri και την τρέχει μέχρι το τέλος.

Πλεονεκτήματα Έχει αυξημένη διεκπεραιωτική ικανότητα Πολύ καλή απόδοση (απόκριση) Μεγάλες διεργασίες δεν μπορούν να υποφέρουν από παρατεταμένη

στέρηση Μειονεκτήματα

Είναι γενικά δύσκολο να υπολογίσουμε το χρόνο που χρειάζεται η κάθε διεργασία.

Σε κάθε βήμα πρέπει να υπολογίζουμε τα Ri για όλες τις διεργασίες

i ii

i

W SR

S

Page 24: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Παράδειγμα Πολιτικής Highest Response Ratio Next

Διερ. Άφ. Eπ.

Α 0 3Β 2 6Γ 4 4Δ 6 5Ε 8 2

5 10 15 20

A

Διερ. ΧΟ ΧΟ/Επ.

ΑΒΓΔΕ

3 17 7/69 9/4

14 14/57 7/2

Μέσος χρόνος στο σύστημα =8.0

Μέσος ΧΟ/Επ. =2.14

ΕΔ

Page 25: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Πολιτικές με Κάποιας Μορφής Ανάδραση

Σκεπτικό: Πολλές φορές είναι δύσκολο να υπολογιστεί ο χρόνος επεξεργασίας που χρειάζεται μια διεργασία. Οπόταν ορίζουμε μια διαδικασία κατά την οποία μεγάλες διεργασίες θα καθυστερούν περισσότερο απ’ ότι οι μικρές.

Ο χρονοπρογραμματιστής επιλέγει ένα διάστημα q και εκτελεί κάθε διεργασία για q χρονικές μονάδες και στη συνέχεια εναλλάσσει διεργασία. Σε αντίθεση με τη πολιτική Round-Robin επιλέγει την διεργασία

που μέχρι τώρα είχε τη λιγότερη ώρα στον επεξεργαστή. Πλεονεκτήματα

Δίνει προτεραιότητα σε διεργασίες με Ε/Ε Δεν χρειάζεται εκτίμηση του χρόνου εκτέλεσης κάθε διεργασίας

Μειονεκτήματα Πιθανόν να έχει μειωμένη διεκπεραιωτική ικανότητα εάν το q είναι

πολύ μικρό. Μεγάλες διεργασίες κινδυνεύουν με παρατεταμένη στέρηση.

Page 26: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

A

Παράδειγμα Πολιτικής Με Ανάδραση (q=1)

Διερ. Άφ. Eπ.

Α 0 3Β 2 6Γ 4 4Δ 6 5Ε 8 2

5 10 15 20

AB

Ε

Διερ. ΧΟ ΧΟ/Επ.

ΑΒΓΔΕ

11 11/318 312 313 13/52 1

Μέσος χρόνος στο σύστημα =11.2

Μέσος ΧΟ/Επ. =2.65

AB

ΓΔ

ΔΓ

B

Δ Δ

B B

Page 27: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Άλλες Μετρικές Απόδοσης

Χρήση (utilization) του επεξεργαστή Σε όλα τα παραδείγματα η χρήση του επεξεργαστή

είναι 100% Σε γενικές γραμμές είναι επιθυμητό ένα υψηλό ποσοστό

χρήσης αλλά το 100% είναι «επικίνδυνο». Διεκπεραιωτική ικανότητα (throughput)

Σε όλα τα παραδείγματα η διεκπεραιωτική ικανότητα ήταν 5 διεργασίες στις 20 χρονικές μονάδες

Όλα τα παραδείγματα αγνοούσαν δύο πτυχές του προβλήματος του χρονοπρογραμματισμού Το κόστος εναλλαγής διεργασιών Διεργασίες με εντολές Ε/Ε

Page 28: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Χρονοπρογραμματισμός με Προτεραιότητες

Οι διεργασίες μπορεί να κατανεμηθούν σε διάφορες ουρές οι οποίες έχουν διαφορετικές προτεραιότητες.

CPU

……

k

k+1

Παραδείγματα Ο επεξεργαστής δεν παίρνει ποτέ

διεργασίες από την ουρά k+1 εάν υπάρχουν διεργασίες στη k.

Preemptive or non-preemptive Generalized Processor Sharing …

Οι προτεραιότητα κάθε διεργασίας μπορεί να υπολογίζεται δυναμικά ανάλογα με τους στόχους του συστήματος Π.χ., μια διεργασία που επιστρέφει από Ε/Ε εντολές μπορεί να πάρει

ψηλότερη προτεραιότητα

Page 29: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Χρονοπρογραμματισμός με Λαχνούς

Ο χρονοπρογραμματιστής επιλέγει τυχαία την επόμενη διεργασία. Εάν όλες οι διεργασίες έχουν την ίδια προτεραιότητα, τότε

μακροπρόθεσμα θα πάρουν κατά μέσο όρο 1/n του χρόνου του επεξεργαστή.

Εναλλακτικά, στην κάθε διεργασία μπορούμε να δώσουμε ένα αριθμό από «λαχνούς» οι οποίοι θα καθορίζουν την πιθανότητα να επιλεχθεί η συγκεκριμένη διεργασία

Διεργασίες με περισσότερους λαχνούς έχουν μεγαλύτερη πιθανότητα επιλογής και επομένως ψηλότερη προτεραιότητα

Αυτός ο αλγόριθμος επιλύει το δύσκολο πρόβλημα του καθορισμού της προτεραιότητας της κάθε διεργασίας με ένα σχετικά απλό τρόπο.

Page 30: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Χρονοπρογραμματισμός για Δίκαιο Μερίδιο (Fair Share) Υποθέστε ένα υπολογιστή με δύο χρήστες.

Ο χρήστης 1 (Χ1) τρέχει τη διεργασία Α Ο χρήστης 2 (Χ2) τρέχει τις διεργασίες Β, Γ, Δ, Ε.

Εάν χρησιμοποιήσουμε Round-Robin με ίσα διαστήματα q, τότε πιθανόν οι διεργασίες να εκτελεσθούν Α,Β,Γ,Δ,Ε,Α,Β,Γ,Δ,Ε,… Σαν αποτέλεσμα ο Χ1 παίρνει μόνο 20% του επεξεργαστή ενώ ο

Χ2 τα υπόλοιπα 80%! Εναλλακτικά εάν υποχρεώσουμε το σύστημα να δίνει ίσο

χρόνο στους δύο χρήστες, τότε οι διεργασίες θα εκτελεσθούν Α,Β,Α,Γ,Α,Δ,Α,Ε,Α,Β,Α,Γ,Α,Δ,…

Εάν δώσουμε διπλάσιο χρόνο στον Χ2 από αυτόν του Χ1 Α,Β,Γ,Α,Δ,Ε, Α,Β,Γ,Α,Δ,Ε,…

Page 31: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Χρονοπρογραμματισμός στο Linux

Το Linux υποστηρίζει τρεις κλάσεις διεργασιών SCHED_FIFO για υποδιεργασίες πραγματικού χρόνου (real-time

threads). SCHED_RR (round-robin) επίσης για υποδιεργασίες

πραγματικού χρόνου. SCHED_OTHER για υποδιεργασίες μη πραγματικού χρόνου

(non-real-time threads) Κάθε κατηγορία πραγματικού χρόνου έχει προτεραιότητα

που κυμαίνεται μεταξύ 0-99 και κάθε SCHED_OTHER μεταξύ 100-139 Μικρότερος αριθμός σημαίνει μεγαλύτερη προτεραιότητα.

Page 32: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Χρονοπρογραμματισμός στο Linux: SCHED_FIFO

Το ΛΣ δεν διακόπτει (non-preemptive) διεργασία αυτής της κατηγορίας εκτός από τις ακόλουθες περιπτώσεις Διεργασία SCHED_FIFO με ψηλότερη προτεραιότητα μπήκε στην

κατάσταση «έτοιμη». Η διεργασία η οποία εκτελείται μπήκε στη κατάσταση «blocked». Η διεργασία η οποία εκτελείται εθελοντικά σταματά (sched_yield)

Όταν η διεργασία η οποία εκτελείται διακόπτεται μπαίνει σε ουρά αντίστοιχη με την προτεραιότητα της.

Όταν η διεργασία επανέρχεται στην κατάσταση «έτοιμη» τότε Εάν η διεργασία η οποία εκτελείται είναι χαμηλότερης προτεραιότητας

τότε τη διακόπτει και παίρνει τον επεξεργαστή. Εάν περιμένουν περισσότερες από μια διεργασίες με την ίδια

προτεραιότητα, τότε εκτελείται αυτή η οποία περίμενε περισσότερο.

Page 33: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Χρονοπρογραμματισμός στο Linux: SCHED_RR

Παρόμοια με την SCHED_FIFO με μόνη διαφορά την ύπαρξη των χρονικών διαστημάτων q.

Μόλις μια διεργασία συμπληρώσει το διάστημα της, διακόπτεται και επιλέγεται να εκτελεστεί μια διεργασία με προτεραιότητα μεγαλύτερη ή ίση με αυτή της διεργασίας που μόλις διακόπηκε.

Διεργασίες με μεγαλύτερη προτεραιότητα μπορεί να έχουν μεγαλύτερο διάστημα απ’ ότι διεργασίες με μικρότερη προτεραιότητα.

Page 34: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Παράδειγμα Χρονοπρογραμματισμού στο Linux

Διεργασία Κλάση Επεξεργασία

Α SCHED_FIFO 3Β SCHED_RR 6Γ SCHED_RR 4Δ SCHED_OTHER 5Ε SCHED_OTHER 2

5 10 15 20

AB

Γ

ΕΔ

B B

ΕΔ Δ Δ Δ

Page 35: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Χρονοπρογραμματισμός στο 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 δείχνει το συνολικό αριθμό από

ενεργοποιημένες διεργασίες

Page 36: Χρονοπρογραμματισμός Διεργασιών ( Process Scheduling )

Χρονοπρογραμματισμός στο Linux

Εκτελούνται πάντα οι διεργασίες στη δομή active. Όταν μια διεργασία συμπληρώσει το διάστημα της τότε μεταφέρεται

στη δομή expired στην αντίστοιχη προτεραιότητα. Εάν η διεργασία διακοπεί πριν τον προβλεπόμενο χρόνο, τότε

επιστρέφει πίσω στη δομή active. Μόλις αδειάσει η δομή active, τότε απλά η expired γίνεται η

νέα active και η expired αρχικοποιείται σε άδεια και ο κύκλος επαναλαμβάνεται.

Διεργασίες πραγματικού χρόνου επιστρέφουν πάντα στην δομή active.

To Linux δίνει περισσότερη προτεραιότητα σε διεργασίες με εντολές Ε/Ε Αυξάνει την προτεραιότητα διεργασιών που περνούν πολλή ώρα

μπλοκαρισμένες. Το διάστημα επεξεργασίας κάθε διεργασίας κυμαίνεται από

10 έως 200 ms.