Προληπτικός και Μη Προληπτικός Προγραμματισμός
Βασικές διαφορές μεταξύ προληπτικού και μη προληπτικού προγραμματισμού
- Στον προληπτικό προγραμματισμό, η CPU εκχωρείται στις διεργασίες για μια συγκεκριμένη χρονική περίοδο και η CPU μη προληπτικού προγραμματισμού εκχωρείται στη διαδικασία μέχρι να τερματιστεί.
- Στον προληπτικό προγραμματισμό, οι εργασίες εναλλάσσονται βάσει προτεραιότητας, ενώ στον μη προληπτικό προγραμματισμό, δεν πραγματοποιείται εναλλαγή.
- Ο προληπτικός αλγόριθμος έχει την επιβάρυνση της εναλλαγής της διαδικασίας από την κατάσταση ετοιμότητας στην κατάσταση λειτουργίας, ενώ ο μη προληπτικός προγραμματισμός δεν έχει τέτοια επιβάρυνση μεταγωγής.
- Ο προληπτικός προγραμματισμός είναι ευέλικτος, ενώ ο μη προληπτικός προγραμματισμός είναι άκαμπτος.

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