Συνιστάται, 2024

Επιλογή Συντάκτη

Διαφορά μεταξύ προληπτικού και μη προληπτικού προγραμματισμού σε λειτουργικό σύστημα

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

Ας συζητήσουμε εν συντομία τις διαφορές μεταξύ του Προληπτικού και του Μη Προληπτικού Προγραμματισμού με τη βοήθεια του πίνακα σύγκρισης που φαίνεται παρακάτω.

Συγκριτικό διάγραμμα

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

Ορισμός του Προληπτικού Προγραμματισμού

Ο προληπτικός προγραμματισμός είναι αυτός που μπορεί να γίνει υπό τις συνθήκες όταν μια διαδικασία μεταβαίνει από κατάσταση λειτουργίας σε κατάσταση ετοιμότητας ή από κατάσταση αναμονής σε κατάσταση ετοιμότητας . Εδώ, οι πόροι (κύκλοι CPU) κατανέμονται στη διαδικασία για περιορισμένο χρονικό διάστημα και στη συνέχεια αφαιρούνται και η διαδικασία επανατοποθετείται ξανά στην έτοιμη ουρά εάν εξακολουθεί να έχει υπολειπόμενο χρόνο CPU. Η διαδικασία παραμένει στην έτοιμη ουρά μέχρι να πάρει την επόμενη ευκαιρία να εκτελέσει.

Εάν μια διαδικασία με υψηλή προτεραιότητα φτάνει στην έτοιμη ουρά, δεν χρειάζεται να περιμένει την τρέχουσα διαδικασία να ολοκληρώσει το χρόνο έκρηξης. Αντ 'αυτού, η τρέχουσα διαδικασία διακόπτεται στη μέση της εκτέλεσης και τοποθετείται στην έτοιμη ουρά έως ότου η διαδικασία με υψηλή προτεραιότητα χρησιμοποιεί τους κύκλους CPU. Με αυτό τον τρόπο, κάθε διαδικασία στην έτοιμη ουρά παίρνει κάποιο χρόνο για να τρέξει την CPU. Κάνει τον προληπτικό προγραμματισμό ευέλικτο, αλλά αυξάνει το γενικό κόστος της αλλαγής της διαδικασίας από την κατάσταση λειτουργίας σε κατάσταση ετοιμότητας και στίγμα.

Αλγόριθμοι που δουλεύουν στον προληπτικό προγραμματισμό είναι ο Round Robin. Η πιο σύντομη δουλειά (SJF) και ο προγραμματισμός προτεραιότητας μπορεί ή όχι να εμπίπτουν σε προληπτικό προγραμματισμό.

Ας πάρουμε ένα παράδειγμα Προληπτικού Προγραμματισμού, δείτε την παρακάτω εικόνα. Έχουμε τέσσερις διαδικασίες P0, P1, P2, P3. Από τα οποία, το P2 φτάνει στο χρόνο 0. Έτσι, η CPU κατανέμεται στη διαδικασία P2, καθώς δεν υπάρχει άλλη διαδικασία στην ουρά. Εν τω μεταξύ, το P2 εκτελούσε, η Ρ3 φτάνει στο χρόνο 1, τώρα ο χρόνος που απομένει για τη διεργασία Ρ2 (5 χιλιοστά του δευτερολέπτου) ο οποίος είναι μεγαλύτερος από τον χρόνο που απαιτείται για το P3 (4 milli-sec). Έτσι, η CPU διατίθεται στον επεξεργαστή P3.

Εν τω μεταξύ, το P3 εκτελούσε, η διαδικασία Ρ1 φτάνει στο χρόνο 2. Τώρα ο υπόλοιπος χρόνος για το Ρ3 (3 χιλιοστά του δευτερολέπτου) είναι μικρότερος από τον απαιτούμενο χρόνο από τις διαδικασίες Ρ1 (4 χιλιοστά του δευτερολέπτου) και Ρ2 (5 χιλιοστά του δευτερολέπτου). Συνεπώς, επιτρέπεται η συνέχιση της διαδικασίας P3. Ενώ η P3 συνεχίζει τη διαδικασία P0 φτάνει στο χρόνο 3, τώρα ο υπόλοιπος χρόνος για P3 (2 milliseconds) είναι ίσος με τον χρόνο που απαιτείται από το P0 (2 milliseconds). Συνεπώς, η P3 συνεχίζει και μετά την λήξη του P3, η CPU κατανέμεται στο P0 καθώς έχει μικρότερο χρόνο έκρηξης από ό, τι άλλο. Μετά το τερματισμό του P0, η CPU κατανέμεται στο P1 και μετά στο P2.

Ορισμός του μη προληπτικού προγραμματισμού

Ο μη προληπτικός προγραμματισμός είναι αυτός που μπορεί να εφαρμοστεί στις περιστάσεις όταν τερματίζεται μια διαδικασία ή μια διαδικασία μεταβαίνει από κατάσταση λειτουργίας σε κατάσταση αναμονής . Στον μη προληπτικό προγραμματισμό, όταν οι πόροι (CPU) διατεθούν σε μια διαδικασία, η διαδικασία κρατά την CPU μέχρι να τερματιστεί ή να φτάσει σε κατάσταση αναμονής.

Σε αντίθεση με τον προληπτικό προγραμματισμό, ο μη προληπτικός προγραμματισμός δεν διακόπτει μια διαδικασία που τρέχει CPU στη μέση της εκτέλεσης. Αντίθετα, περιμένει τη διαδικασία να ολοκληρώσει τον χρόνο εκτόξευσης της CPU και στη συνέχεια μπορεί να διαθέσει την CPU σε άλλη διαδικασία.

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

Ας λύσουμε το παραπάνω παράδειγμα προγραμματισμού με μη προληπτικό τρόπο. Καθώς αρχικά η διαδικασία P2 φτάνει στο χρόνο 0, έτσι η CPU έχει κατανεμηθεί στη διαδικασία P2 που χρειάζεται 6 χιλιοστά του δευτερολέπτου για να εκτελεστεί. Μεταξύ όλων των διαδικασιών, δηλαδή P0, P1, P3 φτάνει στην έτοιμη ουρά. Αλλά όλα περιμένουν έως ότου η διαδικασία Ρ2 ολοκληρώσει τον χρόνο εκτόξευσης της CPU. Στη συνέχεια, η διαδικασία που φτάνει μετά το P2, δηλαδή το P3, τότε κατανέμεται η CPU μέχρι να τελειώσει ο χρόνος έκρηξης. Παρομοίως, τότε εκτελείται το Ρ1 και στη συνέχεια δίδεται στη CPU διαδικασία P0.

Βασικές διαφορές μεταξύ του προληπτικού και του μη προληπτικού προγραμματισμού

  1. Η βασική διαφορά μεταξύ του προληπτικού και του μη προληπτικού προγραμματισμού είναι ότι στον προληπτικό προγραμματισμό η CPU κατανέμεται στις διαδικασίες για τον περιορισμένο χρόνο. Ενώ είναι σε μη προληπτικό προγραμματισμό, η CPU κατανέμεται στη διαδικασία έως ότου τερματιστεί ή μεταβεί σε κατάσταση αναμονής .
  2. Η διαδικασία εκτέλεσης στον προληπτικό προγραμματισμό διακόπτεται στη μέση της εκτέλεσης, ενώ η διαδικασία εκτέλεσης στον μη προληπτικό προγραμματισμό δεν διακόπτεται στη μέση της εκτέλεσης.
  3. Ο προληπτικός προγραμματισμός έχει τα γενικά έξοδα της αλλαγής της διαδικασίας από την κατάσταση σε κατάσταση λειτουργίας, στίχο και διατήρηση της έτοιμης ουράς. Από τα άλλα χέρια, ο μη προληπτικός προγραμματισμός δεν έχει επιβάρυνση για την αλλαγή της διαδικασίας από κατάσταση λειτουργίας σε κατάσταση ετοιμότητας.
  4. Στον προληπτικό προγραμματισμό, αν μια διαδικασία με υψηλή προτεραιότητα φτάνει συχνά στην έτοιμη ουρά, τότε η διαδικασία με χαμηλή προτεραιότητα πρέπει να περιμένει για πολύ και μπορεί να χρειαστεί να πεθάνει. Από τα υπόλοιπα χέρια, στον μη προληπτικό προγραμματισμό, εάν η CPU έχει κατανεμηθεί στη διαδικασία με μεγαλύτερο χρόνο έκρηξης, τότε οι διαδικασίες με μικρό χρόνο έκρηξης ίσως χρειαστεί να λιμοκτονούν.
  5. Ο προληπτικός προγραμματισμός είναι αρκετά ευέλικτος επειδή οι κρίσιμες διαδικασίες επιτρέπεται να έχουν πρόσβαση στην CPU κατά την άφιξή τους στην έτοιμη ουρά, ανεξάρτητα από το ποια διαδικασία εκτελείται αυτή τη στιγμή. Ο μη προληπτικός προγραμματισμός είναι άκαμπτος, καθώς ακόμη και αν μια κρίσιμη διαδικασία εισέλθει στην έτοιμη ουρά, η διαδικασία που τρέχει η CPU δεν διαταράσσεται.
  6. Ο Προληπτικός Προγραμματισμός είναι συνεκτικός ως προς το κόστος, καθώς πρέπει να διατηρεί την ακεραιότητα των κοινών δεδομένων, κάτι που δεν συμβαίνει με τον Μη Προληπτικό Προγραμματισμό.

Συμπέρασμα:

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

Top