Οι κύριες ευθύνες του προγραμματιστή περιλαμβάνουν:
* Επιλογή μιας διαδικασίας εκτέλεσης: Από το σύνολο των διαδικασιών που είναι έτοιμοι να εκτελεστούν (είτε περιμένουν στην ουρά Ready είτε νεοσύστατη), ο προγραμματιστής επιλέγει την "επόμενη" διαδικασία για να διαθέσει χρόνο CPU. Ο αλγόριθμος που χρησιμοποιείται για να κάνει αυτή την επιλογή είναι μια βασική πτυχή του σχεδιασμού του προγραμματιστή.
* εναλλαγή μεταξύ διαδικασιών (εναλλαγή περιβάλλοντος): Όταν ο προγραμματιστής αποφασίσει να μεταβεί σε διαφορετική διαδικασία, εξοικονομεί την κατάσταση της τρέχουσας διαδικασίας (καταχωρητές, δείκτες μνήμης κ.λπ.) και φορτώνει την κατάσταση της επιλεγμένης διαδικασίας. Αυτό επιτρέπει στις διαδικασίες να επαναλάβουν την εκτέλεση απρόσκοπτα από το σημείο όπου σταμάτησαν.
* Προτεραιότητες διαχείρισης της διαδικασίας: Πολλοί προγραμματιστές αναθέτουν προτεραιότητες στις διαδικασίες, δίνοντας προτίμηση σε πιο σημαντικές ή επείγουσες εργασίες. Οι διαδικασίες υψηλής προτεραιότητας ενδέχεται να αποκτήσουν περισσότερο χρόνο CPU από ό, τι οι χαμηλής προτεραιότητας.
* επιβολή της δικαιοσύνης (μερικές φορές): Ενώ η ιεράρχηση ορισμένων καθηκόντων είναι απαραίτητη, ένας καλός προγραμματιστής προσπαθεί να διανείμει τον χρόνο της CPU δίκαια μεταξύ όλων των διαδικασιών για την πρόληψη της λιμοκτονίας (μια κατάσταση όπου μια διαδικασία δεν θα τρέξει ποτέ).
* Λειτουργίες I/O: Όταν μια διαδικασία ξεκινά μια λειτουργία I/O (όπως η ανάγνωση από ένα δίσκο), μπορεί να μπλοκαριστεί. Ο προγραμματιστής μπορεί στη συνέχεια να μεταβεί σε άλλη διαδικασία, βελτιώνοντας την ανταπόκριση του συστήματος.
Τύποι αλγορίθμων προγραμματισμού:
Ο συγκεκριμένος αλγόριθμος που χρησιμοποιείται από έναν προγραμματιστή διεργασίας επηρεάζει σε μεγάλο βαθμό τις επιδόσεις και τα χαρακτηριστικά του. Διαφορετικοί αλγόριθμοι προσφέρουν διάφορες συμβιβασμούς, όπως:
* Πρώτος-Πρωταθοποιημένος (FCFS): Απλό, αλλά μπορεί να οδηγήσει σε μεγάλους χρόνους αναμονής για μικρότερες διαδικασίες.
* συντομότερη εργασία πρώτα (SJF): Ελαχιστοποιεί τον μέσο χρόνο αναμονής, αλλά απαιτεί εκ των προτέρων τον χρόνο εκτέλεσης κάθε διαδικασίας.
* Προγραμματισμός προτεραιότητας: Δίνει προτεραιότητα στις διαδικασίες που βασίζονται στη σημασία. Μπορεί να οδηγήσει σε πείνα των διαδικασιών χαμηλής προτεραιότητας.
* Στρογγυλό Robin: Κάθε διαδικασία παίρνει μια μικρή φέτα χρόνου (κβαντικό) του χρόνου CPU πριν προληφθεί.
* Προγραμματισμός ουράς πολλαπλών επιπέδων: Οι διαδικασίες κατηγοριοποιούνται σε ουρές με διαφορετικές προτεραιότητες και αλγόριθμους προγραμματισμού.
* Προγραμματισμός ουράς ανατροφοδότησης πολυεπίπεδου επιπέδου: Οι διαδικασίες μπορούν να μεταναστεύσουν μεταξύ των ουρών με βάση τη συμπεριφορά τους (π.χ., I/O-δεσμευμένη έναντι CPU).
Συνοπτικά, ο προγραμματιστής διαδικασιών είναι ένα θεμελιώδες στοιχείο του λειτουργικού συστήματος, υπεύθυνος για την αποτελεσματική κατανομή των πόρων της CPU μεταξύ των ανταγωνιστικών διαδικασιών και τη μεγιστοποίηση της διακίνησης και της ανταπόκρισης του συστήματος. Η επιλογή του αλγορίθμου προγραμματισμού επηρεάζει σημαντικά τη συνολική απόδοση και τη δικαιοσύνη του συστήματος.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα