Συντομότερη εργασία Πρώτα (SJF): Προληπτικό, Μη Προληπτικό Παράδειγμα

Τι είναι ο Συντομότερος Προγραμματισμός Πρώτης Εργασίας;

Πρώτα η συντομότερη εργασία (SJF) είναι ένας αλγόριθμος στον οποίο η διεργασία που έχει τον μικρότερο χρόνο εκτέλεσης επιλέγεται για την επόμενη εκτέλεση. Αυτή η μέθοδος προγραμματισμού μπορεί να είναι προληπτική ή μη προληπτική. Μειώνει σημαντικά τον μέσο χρόνο αναμονής για άλλες διεργασίες που περιμένουν να εκτελεστούν. Η πλήρης μορφή του SJF είναι το Shortest Job First.

Υπάρχουν βασικά δύο τύποι μεθόδων SJF:

  • Μη προληπτικό SJF
  • Προληπτικό SJF

Χαρακτηριστικά Προγραμματισμού SJF

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

Μη προληπτικό SJF

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

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

Ουρά διαδικασίας Ώρα έκρηξης Ωρα άφιξης
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Βήμα 0) Τη στιγμή=0, φτάνει το P4 και ξεκινά την εκτέλεση.

Μη προληπτικό SJF

Βήμα 1) Τη στιγμή= 1, φτάνει η διαδικασία P3. Όμως, το P4 χρειάζεται ακόμα 2 μονάδες εκτέλεσης για να ολοκληρωθεί. Θα συνεχίσει να εκτελείται.

Μη προληπτικό SJF

Βήμα 2) Τη στιγμή =2, η διεργασία P1 φτάνει και προστίθεται στην ουρά αναμονής. Το P4 θα συνεχίσει να εκτελείται.

Μη προληπτικό SJF

Βήμα 3) Τη στιγμή = 3, η διεργασία P4 θα ολοκληρώσει την εκτέλεσή της. Συγκρίνεται ο χρόνος ριπής των P3 και P1. Η διαδικασία P1 εκτελείται επειδή ο χρόνος ριπής της είναι μικρότερος σε σύγκριση με το P3.

Μη προληπτικό SJF

Βήμα 4) Τη στιγμή = 4, η διαδικασία P5 φτάνει και προστίθεται στην ουρά αναμονής. Το P1 θα συνεχίσει την εκτέλεση.

Μη προληπτικό SJF

Βήμα 5) Τη στιγμή = 5, η διαδικασία P2 φτάνει και προστίθεται στην ουρά αναμονής. Το P1 θα συνεχίσει την εκτέλεση.

Μη προληπτικό SJF

Βήμα 6) Τη στιγμή = 9, η διεργασία P1 θα ολοκληρώσει την εκτέλεσή της. Συγκρίνεται ο χρόνος ριπής των P3, P5 και P2. Η διαδικασία P2 εκτελείται επειδή ο χρόνος ριπής της είναι ο χαμηλότερος.

Μη προληπτικό SJF

Βήμα 7) Τη στιγμή=10, το P2 εκτελείται και το P3 και το P5 βρίσκονται στην ουρά αναμονής.

Μη προληπτικό SJF

Βήμα 8) Τη στιγμή = 11, η διεργασία P2 θα ολοκληρώσει την εκτέλεσή της. Συγκρίνεται ο χρόνος ριπής των P3 και P5. Η διαδικασία P5 εκτελείται επειδή ο χρόνος ριπής της είναι μικρότερος.

Μη προληπτικό SJF

Βήμα 9) Τη στιγμή = 15, η διεργασία P5 θα ολοκληρώσει την εκτέλεσή της.

Μη προληπτικό SJF

Βήμα 10) Τη στιγμή = 23, η διεργασία P3 θα ολοκληρώσει την εκτέλεσή της.

Μη προληπτικό SJF

Βήμα 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

Προληπτικό SJF

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

Εξετάστε την ακόλουθη πέντε διαδικασία:

Ουρά διαδικασίας Ώρα έκρηξης Ωρα άφιξης
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Βήμα 0) Τη στιγμή=0, φτάνει το P4 και ξεκινά την εκτέλεση.

Ουρά διαδικασίας Ώρα έκρηξης Ωρα άφιξης
P1 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Προληπτικό SJF

Βήμα 1) Τη στιγμή= 1, φτάνει η διαδικασία P3. Όμως, το P4 έχει μικρότερο χρόνο ριπής. Θα συνεχίσει να εκτελείται.

Προληπτικό SJF

Βήμα 2) Τη στιγμή = 2, η διεργασία P1 φθάνει με χρόνο ριπής = 6. Ο χρόνος ριπής είναι μεγαλύτερος από αυτόν του P4. Ως εκ τούτου, το P4 θα συνεχίσει να εκτελείται.

Προληπτικό SJF

Βήμα 3) Τη στιγμή = 3, η διεργασία P4 θα ολοκληρώσει την εκτέλεσή της. Συγκρίνεται ο χρόνος ριπής των P3 και P1. Η διαδικασία P1 εκτελείται επειδή ο χρόνος ριπής της είναι μικρότερος.

Προληπτικό SJF

Βήμα 4) Τη στιγμή = 4, θα φτάσει η διαδικασία P5. Συγκρίνεται ο χρόνος ριπής των P3, P5 και P1. Η διαδικασία P5 εκτελείται επειδή ο χρόνος ριπής της είναι ο μικρότερος. Η διαδικασία P1 είναι προκαταρκτική.

Ουρά διαδικασίας Ώρα έκρηξης Ωρα άφιξης
P1 Απομένουν 5 στα 6 2
P2 2 5
P3 8 1
P4 3 0
P5 4 4

Προληπτικό SJF

Βήμα 5) Τη στιγμή = 5, θα φτάσει η διαδικασία P2. Συγκρίνεται ο χρόνος έκρηξης των P1, P2, P3 και P5. Η διαδικασία P2 εκτελείται επειδή ο χρόνος ριπής της είναι λιγότερος. Η διαδικασία P5 είναι προκαταρκτική.

Ουρά διαδικασίας Ώρα έκρηξης Ωρα άφιξης
P1 Απομένουν 5 στα 6 2
P2 2 5
P3 8 1
P4 3 0
P5 Απομένουν 3 στα 4 4

Προληπτικό SJF

Βήμα 6) Τη χρονική στιγμή =6, το P2 εκτελείται.

Προληπτικό SJF

Βήμα 7) Τη στιγμή =7, το P2 τελειώνει την εκτέλεσή του. Συγκρίνεται ο χρόνος ριπής των P1, P3 και P5. Η διαδικασία P5 εκτελείται επειδή ο χρόνος ριπής της είναι μικρότερος.

Ουρά διαδικασίας Ώρα έκρηξης Ωρα άφιξης
P1 Απομένουν 5 στα 6 2
P2 2 5
P3 8 1
P4 3 0
P5 Απομένουν 3 στα 4 4

Προληπτικό SJF

Βήμα 8) Τη στιγμή =10, το P5 θα ολοκληρώσει την εκτέλεσή του. Συγκρίνεται ο χρόνος ριπής των P1 και P3. Η διαδικασία P1 εκτελείται επειδή ο χρόνος ριπής της είναι μικρότερος.

Προληπτικό SJF

Βήμα 9) Τη στιγμή =15, το P1 τελειώνει την εκτέλεσή του. Το P3 είναι η μόνη διαδικασία που απομένει. Θα ξεκινήσει η εκτέλεση.

Προληπτικό SJF

Βήμα 10) Τη στιγμή =23, το P3 τελειώνει την εκτέλεσή του.

Προληπτικό SJF

Βήμα 11) Ας υπολογίσουμε τον μέσο χρόνο αναμονής για το παραπάνω παράδειγμα.

Wait time 
P4= 0-0=0
P1=  (3-2) + 6 =7
P2= 5-5 = 0
P5= 4-4+2 =2
P3= 15-1 = 14
Average Waiting Time = 0+7+0+2+14/5 = 23/5 =4.6

Πλεονεκτήματα του SJF

Ακολουθούν τα πλεονεκτήματα/πλεονεκτήματα της χρήσης της μεθόδου SJF:

  • Το SJF χρησιμοποιείται συχνά για μακροπρόθεσμο προγραμματισμό.
  • Μειώνει τον μέσο χρόνο αναμονής μέσω του αλγόριθμου FIFO (First in First Out).
  • Η μέθοδος SJF δίνει τον χαμηλότερο μέσο χρόνο αναμονής για ένα συγκεκριμένο σύνολο διεργασιών.
  • Είναι κατάλληλο για εργασίες που εκτελούνται κατά παρτίδες, όπου οι χρόνοι εκτέλεσης είναι γνωστοί εκ των προτέρων.
  • Για το σύστημα παρτίδων του μακροπρόθεσμου προγραμματισμού, μπορεί να ληφθεί μια εκτίμηση χρόνου ριπής από την περιγραφή εργασίας.
  • Για τον βραχυπρόθεσμο προγραμματισμό, πρέπει να προβλέψουμε την τιμή του επόμενου χρόνου ριπής.
  • Πιθανώς το βέλτιστο όσον αφορά τον μέσο χρόνο περιστροφής.

Μειονεκτήματα/Μειονεκτήματα του SJF

Ακολουθούν ορισμένα μειονεκτήματα/μειονεκτήματα του αλγορίθμου SJF:

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

Σύνοψη

  • Ο SJF είναι ένας αλγόριθμος στον οποίο η διεργασία που έχει τον μικρότερο χρόνο εκτέλεσης επιλέγεται για την επόμενη εκτέλεση.
  • Ο Προγραμματισμός SJF σχετίζεται με κάθε εργασία ως μονάδα χρόνου προς ολοκλήρωση.
  • Αυτή η μέθοδος αλγορίθμου είναι χρήσιμη για επεξεργασία τύπου παρτίδας, όπου η αναμονή για την ολοκλήρωση των εργασιών δεν είναι κρίσιμη.
  • Υπάρχουν βασικά δύο τύποι μεθόδων SJF 1) Μη προληπτική SJF και 2) Προληπτική SJF.
  • Στον μη προληπτικό προγραμματισμό, μόλις ο κύκλος της CPU εκχωρηθεί στην επεξεργασία, η διαδικασία τον κρατά μέχρι να φτάσει σε κατάσταση αναμονής ή να τερματιστεί.
  • Στον Προληπτικό Προγραμματισμό SJF, οι εργασίες τοποθετούνται στην ουρά έτοιμων καθώς έρχονται.
  • Παρόλο που ξεκινά μια διαδικασία με σύντομο χρόνο ριπής, η τρέχουσα διεργασία αφαιρείται ή αποκλείεται από την εκτέλεση και η εργασία που είναι μικρότερη εκτελείται 1η.
  • Το SJF χρησιμοποιείται συχνά για μακροπρόθεσμο προγραμματισμό.
  • Μειώνει τον μέσο χρόνο αναμονής μέσω του αλγόριθμου FIFO (First in First Out).
  • Στον προγραμματισμό SJF, ο χρόνος ολοκλήρωσης της εργασίας πρέπει να είναι γνωστός νωρίτερα, αλλά είναι δύσκολο να προβλεφθεί.
  • Το SJF δεν μπορεί να εφαρμοστεί για βραχυπρόθεσμο προγραμματισμό CPU. Αυτό συμβαίνει επειδή δεν υπάρχει συγκεκριμένη μέθοδος για την πρόβλεψη της διάρκειας της επερχόμενης έκρηξης της CPU.