Τι είναι ο Προληπτικός Προγραμματισμός;
Ο Προληπτικός Προγραμματισμός είναι μια μέθοδος προγραμματισμού όπου οι εργασίες ανατίθενται κυρίως με τις προτεραιότητές τους. Μερικές φορές είναι σημαντικό να εκτελέσετε μια εργασία με υψηλότερη προτεραιότητα πριν από μια άλλη εργασία χαμηλότερης προτεραιότητας, ακόμα και αν η εργασία χαμηλότερης προτεραιότητας εξακολουθεί να εκτελείται.
Εκείνη τη στιγμή, η εργασία χαμηλότερης προτεραιότητας διατηρείται για κάποιο χρονικό διάστημα και συνεχίζεται όταν η εργασία υψηλότερης προτεραιότητας ολοκληρώσει την εκτέλεση.
Σε αυτό το σεμινάριο λειτουργικού συστήματος, θα μάθετε:
- Τι είναι ο Προληπτικός Προγραμματισμός;
- Τι είναι ο μη προληπτικός προγραμματισμός;
- Διαφορά μεταξύ Προληπτικού και Μη Προληπτικού Προγραμματισμού στο λειτουργικό σύστημα
- Πλεονεκτήματα του Προληπτικού Προγραμματισμού
- Πλεονεκτήματα του μη προληπτικού προγραμματισμού
- Μειονεκτήματα του Προληπτικού Προγραμματισμού
- Μειονεκτήματα του μη προληπτικού προγραμματισμού
- Παράδειγμα μη προληπτικού προγραμματισμού
- Παράδειγμα Προληπτικού Προγραμματισμού
Τι είναι ο μη προληπτικός προγραμματισμός;
Σε αυτόν τον τύπο μεθόδου προγραμματισμού, η CPU έχει εκχωρηθεί σε μια συγκεκριμένη διαδικασία. Η διαδικασία που κρατά την CPU απασχολημένη θα αποδεσμεύσει την CPU είτε με εναλλαγή περιβάλλοντος είτε τερματίζοντας.
Είναι η μόνη μέθοδος που μπορεί να χρησιμοποιηθεί για διάφορες πλατφόρμες υλικού. Αυτό συμβαίνει επειδή δεν χρειάζεται εξειδικευμένο υλικό (για παράδειγμα, ένα χρονόμετρο), όπως ο Προληπτικός Προγραμματισμός.
Ο μη προληπτικός προγραμματισμός συμβαίνει όταν μια διαδικασία εισέρχεται οικειοθελώς στην κατάσταση αναμονής ή τερματίζεται.
Διαφορά μεταξύ Προληπτικού και Μη Προληπτικού Προγραμματισμού στο λειτουργικό σύστημα
Εδώ είναι ο Προληπτικός και Μη Προληπτικός Προγραμματισμός στο λειτουργικό σύστημα
Προληπτικός προγραμματισμός | Μη προληπτικός προγραμματισμός |
Ένας επεξεργαστής μπορεί να προεπιλέξει να εκτελέσει τις διαφορετικές διαδικασίες στη μέση οποιασδήποτε τρέχουσας εκτέλεσης διαδικασίας. | Μόλις ο επεξεργαστής ξεκινήσει την εκτέλεση του, πρέπει να τον ολοκληρώσει πριν εκτελέσει τον άλλο. Δεν μπορεί να σταματήσει στη μέση. |
Η χρήση της CPU είναι πιο αποτελεσματική σε σύγκριση με τον Προληπτικό Προγραμματισμό. | Η χρήση της CPU είναι λιγότερο αποτελεσματική σε σύγκριση με τον προληπτικό προγραμματισμό. |
Ο χρόνος αναμονής και απόκρισης του Προληπτικού Προγραμματισμού είναι μικρότερος. | Ο χρόνος αναμονής και απόκρισης της μη προληπτικής μεθόδου προγραμματισμού είναι υψηλότερος. |
Ο Προληπτικός Προγραμματισμός έχει προτεραιότητα. Η διαδικασία με την υψηλότερη προτεραιότητα είναι μια διαδικασία που χρησιμοποιείται αυτήν τη στιγμή. | Όταν οποιαδήποτε διαδικασία εισέρχεται στην κατάσταση εκτέλεσης, η κατάσταση αυτής της διαδικασίας δεν διαγράφεται ποτέ από τον προγραμματιστή έως ότου ολοκληρωθεί η εργασία της. |
Ο Προληπτικός Προγραμματισμός είναι ευέλικτος. | Ο μη προληπτικός προγραμματισμός είναι άκαμπτος. |
Παραδείγματα: - Πιο σύντομος χρόνος που απομένει Πρώτος, Round Robin κ.λπ. | Παραδείγματα: Πρώτη εξυπηρέτηση, Πρώτη συντομότερη εργασία, Προγραμματισμός προτεραιότητας κ.λπ. |
Ο αλγόριθμος Προληπτικού Προγραμματισμού μπορεί να προτιμηθεί, δηλαδή η διαδικασία μπορεί να Προγραμματιστεί | Σε μη προληπτική διαδικασία προγραμματισμού δεν μπορεί να προγραμματιστεί |
Σε αυτήν τη διαδικασία, η CPU εκχωρείται στις διαδικασίες για μια συγκεκριμένη χρονική περίοδο. | Σε αυτήν τη διαδικασία, η CPU εκχωρείται στη διαδικασία έως ότου τερματιστεί ή μεταβεί στην κατάσταση αναμονής. |
Ο προληπτικός αλγόριθμος έχει τα γενικά έξοδα της αλλαγής της διαδικασίας από την κατάσταση ετοιμότητας στην κατάσταση λειτουργίας και το αντίστροφο. | Ο Μη Προληπτικός Προγραμματισμός δεν έχει τέτοια γενικά έξοδα από τη μετάβαση της διαδικασίας σε κατάσταση ετοιμότητας. |
Πλεονεκτήματα του Προληπτικού Προγραμματισμού
Εδώ είναι τα πλεονεκτήματα / οφέλη της μεθόδου Προληπτικού Προγραμματισμού:
- Η προληπτική μέθοδος προγραμματισμού είναι πιο ισχυρή, προσέγγιση έτσι μια διαδικασία δεν μπορεί να μονοπωλήσει την CPU
- Η επιλογή της τρέχουσας εργασίας επανεξετάστηκε μετά από κάθε διακοπή.
- Κάθε συμβάν προκαλεί διακοπή των εργασιών που εκτελούνται
- Το λειτουργικό σύστημα διασφαλίζει ότι η χρήση της CPU είναι ίδια με όλες τις τρέχουσες διαδικασίες.
- Σε αυτό, η χρήση της CPU είναι η ίδια, δηλαδή, όλες οι τρέχουσες διαδικασίες θα κάνουν χρήση της CPU εξίσου.
- Αυτή η μέθοδος προγραμματισμού βελτιώνει επίσης τον μέσο χρόνο απόκρισης.
- Ο Προληπτικός Προγραμματισμός είναι επωφελής όταν το χρησιμοποιούμε για περιβάλλον πολλαπλού προγραμματισμού.
Πλεονεκτήματα του μη προληπτικού προγραμματισμού
Εδώ είναι τα πλεονεκτήματα / οφέλη της μη Προληπτικής μεθόδου Προγραμματισμού:
- Προσφέρει γενικά χαμηλό προγραμματισμό
- Τείνει να προσφέρει υψηλή απόδοση
- Είναι εννοιολογικά πολύ απλή μέθοδος
- Απαιτούνται λιγότεροι υπολογιστικοί πόροι για προγραμματισμό
Μειονεκτήματα του Προληπτικού Προγραμματισμού
Εδώ είναι τα μειονεκτήματα / μειονεκτήματα της μεθόδου Προληπτικού Προγραμματισμού:
- Χρειάζεστε περιορισμένους υπολογιστικούς πόρους για προγραμματισμό
- Χρειάζεται περισσότερος χρόνος από τον προγραμματιστή για να αναστείλει την τρέχουσα εργασία, να αλλάξει το περιβάλλον και να αποστείλει τη νέα εισερχόμενη εργασία.
- Η διαδικασία με χαμηλή προτεραιότητα πρέπει να περιμένει για μεγαλύτερο χρονικό διάστημα, εάν ορισμένες διαδικασίες υψηλής προτεραιότητας φτάνουν συνεχώς.
Μειονεκτήματα του μη προληπτικού προγραμματισμού
Εδώ είναι τα μειονεκτήματα / μειονεκτήματα της μεθόδου μη προληπτικού προγραμματισμού:
- Μπορεί να οδηγήσει σε λιμοκτονία ειδικά για αυτές τις εργασίες σε πραγματικό χρόνο
- Τα σφάλματα μπορεί να προκαλέσουν την κατάψυξη ενός μηχανήματος
- Μπορεί να κάνει τον προγραμματισμό σε πραγματικό χρόνο και προτεραιότητα δύσκολο
- Κακός χρόνος απόκρισης για διαδικασίες
Παράδειγμα μη προληπτικού προγραμματισμού
Στον μη προληπτικό προγραμματισμό SJF, όταν ο κύκλος CPU διατεθεί για επεξεργασία, η διαδικασία τον κρατά μέχρι να φτάσει σε κατάσταση αναμονής ή να τερματιστεί.
Εξετάστε τις ακόλουθες πέντε διαδικασίες που καθεμία έχουν τη δική της μοναδική ώρα έκρηξης και ώρα άφιξης
Ουρά διεργασίας | Χρόνος έκρηξης | Ωρα άφιξης |
Ρ1 | 6 | 2 |
Ρ2 | 2 | 5 |
Ρ3 | 8 | 1 |
Ρ4 | 3 | 0 |
Ρ5 | 4 | 4 |
Βήμα 0) Τη στιγμή = 0, το P4 φτάνει και ξεκινά την εκτέλεση.
Βήμα 1) Τη στιγμή = 1, φτάνει η διαδικασία P3. Ωστόσο, το P4 χρειάζεται ακόμη 2 μονάδες εκτέλεσης για να ολοκληρωθεί. Θα συνεχίσει την εκτέλεση.
Βήμα 2) Τη στιγμή = 2, η διαδικασία P1 φτάνει και προστίθεται στην ουρά αναμονής. Το P4 θα συνεχίσει την εκτέλεση.
Βήμα 3) Τη στιγμή = 3, η διαδικασία P4 θα ολοκληρώσει την εκτέλεση της. Συγκρίνεται ο χρόνος έκρηξης των P3 και P1. Η διαδικασία P1 εκτελείται επειδή ο χρόνος έκρηξης είναι μικρότερος σε σύγκριση με τον P3.
Βήμα 4) Τη στιγμή = 4, η διαδικασία P5 φτάνει και προστίθεται στην ουρά αναμονής. Το P1 θα συνεχίσει την εκτέλεση.
Βήμα 5) Τη στιγμή = 5, η διαδικασία P2 φτάνει και προστίθεται στην ουρά αναμονής. Το P1 θα συνεχίσει την εκτέλεση.
Βήμα 6) Τη στιγμή = 9, η διαδικασία P1 θα ολοκληρώσει την εκτέλεση της. Συγκρίνεται ο χρόνος έκρηξης των P3, P5 και P2. Η διαδικασία P2 εκτελείται επειδή ο χρόνος έκρηξης είναι ο χαμηλότερος.
Βήμα 7) Τη στιγμή = 10, το P2 εκτελείται και τα P3 και P5 βρίσκονται στην ουρά αναμονής.
Βήμα 8) Τη στιγμή = 11, η διαδικασία P2 θα ολοκληρώσει την εκτέλεση της. Συγκρίνεται ο χρόνος έκρηξης των P3 και P5. Η διαδικασία P5 εκτελείται επειδή ο χρόνος έκρηξης είναι χαμηλότερος.
Βήμα 9) Τη στιγμή = 15, η διαδικασία P5 θα ολοκληρώσει την εκτέλεση της.
Βήμα 10) Τη στιγμή = 23, η διαδικασία P3 θα ολοκληρώσει την εκτέλεση της.
Βήμα 11) Ας υπολογίσουμε τον μέσο χρόνο αναμονής για το παραπάνω παράδειγμα.
Wait timeP4= 0-0=0P1= 3-2=1P2= 9-5=4P5= 11-4=7P3= 15-1=14Average Waiting Time= 0+1+4+7+14/5 = 26/5 = 5.2
Παράδειγμα Προληπτικού Προγραμματισμού
Σκεφτείτε αυτό ακολουθώντας τρεις διαδικασίες στο Round-robin
Ουρά διεργασίας | Χρόνος έκρηξης |
Ρ1 | 4 |
Ρ2 | 3 |
Ρ3 | 5 |
Βήμα 1) Η εκτέλεση ξεκινά με τη διαδικασία P1, η οποία έχει χρόνο έκρηξης 4. Εδώ, κάθε διαδικασία εκτελείται για 2 δευτερόλεπτα. Τα P2 και P3 βρίσκονται ακόμη στην ουρά αναμονής.
Βήμα 2 ) Τη στιγμή = 2, το P1 προστίθεται στο τέλος της ουράς και το P2 αρχίζει να εκτελείται
Βήμα 3) Τη στιγμή = 4, το P2 έχει προκριθεί και προσθέστε στο τέλος της ουράς. Το P3 ξεκινά την εκτέλεση.
Βήμα 4) Τη στιγμή = 6, το P3 είναι προεπιλεγμένο και προστίθεται στο τέλος της ουράς. Το P1 αρχίζει να εκτελείται.
Βήμα 5) Τη στιγμή = 8, το P1 έχει χρόνο έκρηξης 4. Έχει ολοκληρώσει την εκτέλεση. Το P2 ξεκινά την εκτέλεση
Βήμα 6) Το P2 έχει χρόνο έκρηξης 3. Έχει ήδη εκτελεστεί για 2 διαστήματα. Τη στιγμή = 9, το P2 ολοκληρώνει την εκτέλεση. Στη συνέχεια, το P3 ξεκινά την εκτέλεση έως ότου ολοκληρωθεί.
Βήμα 7) Ας υπολογίσουμε τον μέσο χρόνο αναμονής για το παραπάνω παράδειγμα.
Wait timeP1= 0+ 4= 4P2= 2+4= 6P3= 4+3= 7
ΒΑΣΙΚΕΣ ΔΙΑΦΟΡΕΣ
- Στον Προληπτικό Προγραμματισμό, η CPU κατανέμεται στις διεργασίες για μια συγκεκριμένη χρονική περίοδο και η μη προληπτική προγραμματισμός της CPU εκχωρείται στη διαδικασία μέχρι να τερματιστεί.
- Στον Προληπτικό Προγραμματισμό, οι εργασίες εναλλάσσονται με βάση την προτεραιότητα, ενώ ο Προληπτικός Προγραμματισμός δεν πραγματοποιείται εναλλαγή.
- Ο προληπτικός αλγόριθμος έχει την επιβάρυνση της αλλαγής της διαδικασίας από την κατάσταση ετοιμότητας στην κατάσταση λειτουργίας, ενώ ο Μη Προληπτικός Προγραμματισμός δεν έχει τέτοια γενική αλλαγή.
- Ο Προληπτικός Προγραμματισμός είναι ευέλικτος ενώ ο Προληπτικός Προγραμματισμός είναι άκαμπτος.