Ο πολυπρογραμματισμός γίνεται δυνατός με τη χρήση μιας μονάδας διαχείρισης μνήμης (MMU) , το οποίο επιτρέπει στο λειτουργικό σύστημα να μοιράζει τη διαθέσιμη μνήμη μεταξύ πολλών προγραμμάτων. Σε κάθε πρόγραμμα δίνεται το δικό του τμήμα μνήμης και το MMU διασφαλίζει ότι κανένα πρόγραμμα δεν μπορεί να έχει πρόσβαση στη μνήμη άλλου προγράμματος.
Για να λειτουργήσει αποτελεσματικά ο πολυπρογραμματισμός, το λειτουργικό σύστημα πρέπει επίσης να παρέχει έναν μηχανισμό για προγραμματισμό τα προγράμματα ώστε να εκτελούνται με δίκαιο και αποτελεσματικό τρόπο. Ο προγραμματιστής χρησιμοποιεί συνήθως round-robin αλγόριθμος, ο οποίος δίνει σε κάθε πρόγραμμα ένα χρονικό διάστημα ίσου μήκους προς εκτέλεση. Όταν τελειώσει το χρονικό slice ενός προγράμματος, γίνεται προκαταρκτικός έλεγχος και δίνεται η ευκαιρία στο επόμενο πρόγραμμα στην ουρά να εκτελεστεί.
Ο πολυπρογραμματισμός έχει πολλά πλεονεκτήματα σε σχέση με τον απλό προγραμματισμό. Πρώτον, βελτιώνει τη συνολική απόδοση του συστήματος, καθώς πολλά προγράμματα μπορούν να εκτελεστούν ταυτόχρονα. Δεύτερον, μειώνει το χρόνο που πρέπει να περιμένει ένας χρήστης για να ξεκινήσει η εκτέλεση ενός προγράμματος, καθώς το λειτουργικό σύστημα μπορεί να εναλλάσσεται μεταξύ προγραμμάτων πολύ γρήγορα. Τρίτον, καθιστά δυνατή την ταυτόχρονη εκτέλεση πολλών προγραμμάτων, ακόμη και αν ορισμένα προγράμματα έχουν μεγαλύτερη ένταση I/O από άλλα.
Το κύριο μειονέκτημα του πολυπρογραμματισμού είναι ότι μπορεί να αυξήσει το ποσό των γενικών εξόδων που σχετίζονται με το λειτουργικό σύστημα, καθώς το λειτουργικό σύστημα πρέπει να διαχειρίζεται τη μνήμη και τον προγραμματισμό πολλαπλών προγραμμάτων. Ωστόσο, αυτό το γενικό κόστος είναι συνήθως μικρό και τα οφέλη του πολυπρογραμματισμού υπερβαίνουν κατά πολύ το κόστος.
Ακολουθεί ένα απλοποιημένο παράδειγμα του τρόπου λειτουργίας του πολυπρογραμματισμού:
1. Το λειτουργικό σύστημα εκχωρεί ένα τμήμα της μνήμης σε καθένα από τα προγράμματα που πρόκειται να εκτελεστούν.
2. Το λειτουργικό σύστημα τοποθετεί το πρώτο πρόγραμμα στην ουρά των έτοιμων προγραμμάτων.
3. Η CPU εκτελεί το πρώτο πρόγραμμα για ένα χρονικό διάστημα καθορισμένης διάρκειας.
4. Όταν τελειώσει το χρονικό διάστημα, το λειτουργικό σύστημα προκαταλαμβάνει το πρώτο πρόγραμμα και το τοποθετεί στο τέλος της ουράς των έτοιμων προγραμμάτων.
5. Στη συνέχεια, το λειτουργικό σύστημα τοποθετεί το επόμενο πρόγραμμα στην ουρά των έτοιμων προγραμμάτων στο μπροστινό μέρος της ουράς και του δίνει ένα χρονικό τμήμα μιας καθορισμένης διάρκειας.
6. Η διαδικασία επαναλαμβάνεται μέχρι να εκτελεστούν όλα τα προγράμματα.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα