Αλγόριθμος Χρονοπρογραμματισμού με Βάση την Προτεραιότητα

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια

• Οι διεργασίες λαμβάνουν ένα επίπεδο προτεραιότητας με βάση τη πολιτική του συστήματος,

π.χ. Επείγουσες διεργασίες λειτουργικού συστήματος → διεργασίες λειτουργικού συστήματος παρασκηνίου → αλληλεπιδραστικές διεργασίες Ι/Ο-bound → αλληλεπιδραστικές διεργασίες CPUbound → διεργασίες δέσμης (βλέπε task manager Windows ή εντολή top/nice Linux)

• Η εφαρμογή μπορεί να είναι έμμεση ή άμεση (ρητή αντιστοίχιση επιπέδου με κάποιο αριθμό) ή έμμεση (επιλογή του χρονοδρομολογητή σε κάθε εκτέλεσή του με βάση τις διαθέσιμες διεργασίες).

• Για την αποφυγή πιθανής στέρησης ή λιμοκτονίας (παρατεταμένης μη εκτέλεσης) μιας διεργασίας το επίπεδο προτεραιότητας μπορεί να μειώνεται σε κάθε Ν χτύπους ρολογιού ή κάθε Ν θεματικές εναλλαγές.

• Εναλλακτικά κάθε διεργασία μπορεί να λαμβάνει ένα μέγιστο συνολικό quantum από το οποίο αφαιρείται ένα ποσό κάθε φορά που εκτελείται.

• H προτεραιότητα μπορεί να μεταβάλλεται δυναμικά με βάση τη τρέχουσα συμπεριφορά της διεργασίας (μετάπτωση από CPU-bound σε I/O-bound ή Ι/Ο-bound μετά από μεγάλη αναμονή Ε/Ε).

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

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

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

• Σύστημα με τέσσερα επίπεδα προτεραιότητας: κάθε ουρά έτοιμων εργασιών εκτελεί ξεχωριστό αλγόριθμο χρονοπρογραμματισμού (ή τον ίδιο αλγόριθμο με διαφορετικό tunning). Οι ουρές χαμηλότερης προτεραιότητας εξυπηρετούνται μόνο αν οι ουρές ανώτερης προτεραιότητας είναι άδειες.