Λειτουργικά Συστήματα Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα Στέργιος Παλαμάς, Υλικό Μαθήματος «Λειτουργικά Συστήματα», 2015-2016
Κεφάλαιο 4: Διεργασίες
Πρόγραμμα Πρόγραμμα 1 Πρόγραμμα 2 Πρόγραμμα Ν Κ.Μ.Ε. Κ.Μ.Ε. Στους παλαιότερους υπολογιστές η Κεντρική Μονάδα Επεξεργασίας (Κ.Μ.Ε.) μπορούσε κάθε στιγμή να εκτελεί μόνο ένα πρόγραμμα. Στους σύγχρονους υπολογιστές που υποστηρίζουν πολυπρογραμματισμό, η Κ.Μ.Ε. μοιράζει το χρόνο της σε περισσότερα προγράμματα δίνοντας έτσι την εντύπωση ότι αυτά εκτελούνται ταυτόχρονα.
Ένα σύγχρονο λειτουργικό σύστημα που υποστηρίζει πολύ-προγραμματισμό, πρέπει να διατηρεί τις πληροφορίες που χρειάζονται ώστε ένα πρόγραμμα: Να φορτώνεται Να εκτελείται Να διακόπτεται Να ξανα-φορτώνεται Να ξανα-εκτελείται Η Διαδικασία αυτή αυξάνει τις απαιτήσεις από το λειτουργικό σύστημα αλλά τελικά αυξάνει τις επιδόσεις και τη λειτουργικότητά του.
Διεργασία είναι η εκτέλεση ενός προγράμματος με τους πόρους του συστήματος που αυτό απαιτεί και τις πληροφορίες που απαιτούνται για την εκτέλεσή του. Οι πιθανές καταστάσεις μιας Διεργασίας Εκτελούμενη Running (Χρησιμοποιεί την Κ.Μ.Ε.) Έτοιμη ή Εκτελέσιμη Ready (Έχει εκτοπιστεί προσωρινά για να εκτελεστεί άλλη διεργασία) Εμποδιζόμενη ή σε αναστολή Blocked (Δε μπορεί να εκτελεστεί μέχρι να λάβει χώρα ένα εξωτερικό συμβάν π.χ. απελευθέρωση ενός πόρου) Μια διεργασία όταν δημιουργείται εισάγεται στη λίστα των έτοιμων διεργασιών. Σταδιακά προωθείται προς την κεφαλή της λίστας και μόλις ο επεξεργαστής γίνει διαθέσιμος η διεργασία ανατίθεται στον επεξεργαστή και η κατάστασή της αλλάζει σε εκτελούμενη. Η διαδικασία της ανάθεσης της πρώτης διεργασίας από τη λίστα των έτοιμων διεργασιών στον επεξεργαστή ονομάζεται διεκπεραίωση και υλοποιείται από τον διεκπεραιωτή (dispatcher), που είναι τμήμα του δρομολογητή (scheduler).
Αναστολή Εκτέλεσης Διεργασίας Η εκτελούμενη διεργασία (running) αναστέλλεται μέσω τριών βασικών κατηγοριών συμβάντων (events). Με πρωτοβουλία της διεργασίας: Η διεργασία χρειάζεται Είσοδο/Έξοδο ή άλλη λειτουργία που απαιτεί προνομιακή λειτουργία (σε κατάσταση πυρήνα), οπότε καλεί το Λ.Σ. να την εκτελέσει μέσω κλήσης συστήματος (διακοπή λογισμικού). Με πρωτοβουλία του Λ.Σ: (α) Η διεργασία προκαλεί σφάλμα, οπότε προκαλείται παγίδευση (trap) ή προκύπτει διακοπή Ε/Ε ή υλικού που πρέπει να εξυπηρετηθεί. (β) Η διεργασία έχει εξαντλήσει το χρόνο της ή υπάρχει άλλη διεργασία υψηλότερης προτεραιότητας που πρέπει να εκτελεστεί. Και στις δύο περιπτώσεις το Λ.Σ. αναλαμβάνει τον έλεγχο του επεξεργαστή. Η κατάσταση της εκτελούμενης διεργασίας αλλάζει κατάλληλα είτε σε αναστολή (αν περιμένει κάτι) είτε έτοιμη (αν διεκόπη από το λειτουργικό) και προωθείται προς εκτέλεση η αμέσως επόμενη διεργασία στη λίστα των έτοιμων. Έτσι επιτυγχάνεται εναλλαγή διεργασιών.
Ο κύκλος ζωής μιας διεργασίας και η μετάβαση από κατάσταση σε κατάσταση Διάγραμμα 5 καταστάσεων Running : η διεργασία που εκτελείται Ready : είναι έτοιμη για εκτέλεση Blocked : υπό αναστολή, δεν μπορεί να εκτελεστεί μέχρι να προκύψει το κατάλληλο γεγονός New : έχει μόλις δημιουργηθεί από το Λ.Σ. Exit : έχει απελευθερωθεί από τη δεξαμενή εκτελέσιμων εργασιών από το Λ.Σ.., τερματίζεται Admit : το Λ.Σ. τοποθετεί τη διεργασία στην ουρά των διεργασιών προς εκτέλεση, δημιουργεί τις αντίστοιχες δομές δεδομένων. Dispatch : το Λ.Σ. εκχωρεί το σύστημα (CPU κλπ) στη διεργασία για να εκτελεστεί. Timeout : το Λ.Σ. προκαλεί χρονοδιακοπή. Event Waits : η διεργασία απαιτεί υπηρεσία από το Λ.Σ.. που προκαλεί διακοπή. Event Occurs : η υπηρεσία έχει εκτελεστεί και το Λ.Σ.. Ενημερώνει τις αντίστοιχες δομές δεδομένων. Release : το Λ.Σ. τερματίζει τη διεργασία, ακυρώνει τις αντίστοιχες δομές δεδομένων. Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Ο κύκλος ζωής μιας διεργασίας και η μετάβαση από κατάσταση σε κατάσταση Διάγραμμα 6 καταστάσεων Συνήθως οι λειτουργίες Ε/Ε είναι πολύ αργές (για τα δεδομένα της CPU), έτσι το Λ.Σ. μπορεί να διαχωρίζει τις λειτουργίες Ε/Ε σε 'αργές' και 'γρήγορες' και να δημιουργεί δυο διαφορετικές καταστάσεις αναστολής: blocked και suspended. Η διαφορά τους έγκειται στο ότι όταν μια διεργασία θεωρείται suspended τότε ο χώρος διευθύνσεών της μεταφέρεται στη δευτερεύουσα μνήμη, στη περιοχή εναλλαγής. Έτσι ελευθερώνεται χώρος στη κύρια μνήμη είτε για τη μεταφορά άλλων διεργασιών από τη δευτερεύουσα μνήμη, είτε για τη δημιουργία νέων διεργασιών. Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Ο κύκλος ζωής μιας διεργασίας και η μετάβαση από κατάσταση σε κατάσταση Διάγραμμα 7 καταστάσεων Γενικεύοντας τη χρήση της ιδεατής (virtual) μνήμης μπορούμε να παρατηρήσουμε ότι σε περίπτωση πολύ μεγάλου αριθμού διεργασιών ή περιορισμένης κύριας μνήμης το πρόβλημα ανεπάρκειας της κύριας μνήμης μπορεί να εμφανιστεί και σε άλλες καταστάσεις, όπως κατά τη δημιουργία, ή όταν η διεργασία είναι μεν έτοιμη αλλά δεν υπάρχει επαρκής χώρος στη κύρια μνήμη. Έτσι καταλήγουμε στο διάγραμμα 7 καταστάσεων. Οι καταστάσεις ready/suspended και blocked/suspended αντιστοιχούν στις ready και blocked αλλά στη δευετερεύουσα μνήμη. Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Δημιουργία Διεργασίας Γεγονότα που προκαλούν δημιουργία διεργασίας: Εκκίνηση συστήματος. Σύνδεση νέου χρήστη. Μια εκτελούμενη διεργασία αιτείται τη παροχή μιας υπηρεσίας ή την εκτέλεση μιας εφαρμογής. Μια εκτελούμενη διεργασία καλεί μια κλήση συστήματος για τη δημιουργία διεργασίας. Ένας χρήστης ζητά τη δημιουργία νέας διεργασίας (εκτέλεση ενός προγράμματος ή μιας εντολής φλοιού). Εκκίνηση μιας εργασίας δέσμης / σεναρίου φλοιού ή μιας χρονο-δρομολογημένης εργασίας. Πρέπει να ικανοποιούνται περιορισμοί του συστήματος, πχ αριθμός ενεργών διεργασιών, χώρος στη μνήμη, δικαιώματα δημιουργού κλπ.
Τερματισμός Διεργασίας Γεγονότα που προκαλούν τερματισμό διεργασίας: Κανονική έξοδος (τερματισμός). Εσφαλμένη έξοδος (επιστροφή κωδικού σφάλματος) Μοιραίο σφάλμα (Fatal error κατά την εκτέλεση) π.χ. μη έγκυρη εντολή, προνομιούχος εντολή, αριθμητικά σφάλματα, σφάλματα υπερχείλισης, υπέρβαση ορίων μνήμης, σφάλματα Ε/Ε, σφάλματα προστασίας, πέρας διαθέσιμου χρόνου Εξαναγκασμός σε τερματισμό από άλλη διεργασία (Αποστολή σήματος δια-διεργασιακή επικοινωνία, Kill). Εξαναγκασμός σε τερματισμό από το χρήστη.
Εναλλαγή Διεργασίας Γεγονότα που προκαλούν εναλλαγή (αναστολή εκτέλεσης και εισαγωγή άλλης) διεργασίας: Χρονοδιακοπή / Δρομολόγηση Η διεργασία έχει εξαντλήσει το μέγιστο επιτρεπόμενο χρονικό όριο ή γενικότερα η διεργασία προ-εκτοπίζεται (pre-empted) από το Λ.Σ., πχ υπάρχει άλλη διεργασία με μεγαλύτερη προτεραιότητα Εσωτερική διακοπή (trap) Προγραμματιστικά σφάλματα που προκαλούν παγίδευση Ε/Ε ή Hardware Interrupt Κλήση συστήματος π.χ. άνοιγμα αρχείου, δημιουργία διεργασίας παιδιού (fork), Δια-διεργασιακή επικοινωνία (wait, kill)
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Χώρος Διευθύνσεων Διεργασίας Κάθε Διεργασία εκτελείται στο δικό της χώρο διευθύνσεων
Χώρος Διευθύνσεων Διεργασίας Την περιοχή στοίβας (stack region), όπου αποθηκεύονται οι παράμετροι, οι τοπικές μεταβλητές και οι πληροφορίες κλήσης για τις ενεργές κλήσεις διαδικασιών. Την περιοχή δεδομένων (data region), όπου αποθηκεύονται (α) οι καθολικές μεταβλητές και (β) η δυναμικά παραχωρούμενη μνήμη (heap). Περιοχή κώδικα (text region): Ο κώδικας πρόγραμμα που εκτελεί η διεργασία Ακόμη έχουμε τη κοινόχρηστη μνήμη (global data, system calls, shared libraries) Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας
Για να υλοποιηθεί το μοντέλο κατάστασης διεργασιών, το Λ.Σ. συντηρεί έναν πίνακα διεργασιών (process table), ο οποίος περιλαμβάνει μια καταχώρηση μπλοκ ελέγχου διεργασίας (process control block) ή περιγραφέα διεργασίας (process descriptor) για κάθε διεργασία. Στην καταχώρηση αυτή εγγράφονται πληροφορίες σχετικές με: την κατάσταση της διεργασίας το χώρο διευθύνσεων (address space) το πλαίσιο επεξεργαστή (CPU context) Οι πληροφορίες αυτές αποτελούν την εικόνα της διεργασίας (process image) ώστε να συνεχίσει να εκτελείται μετά από κάθε αναστολή εκτέλεσης. Η δημιουργία μιας διεργασίας έχει επομένως μια αρχική επιβάρυνση (overhead).
Μπλοκ Ελέγχου Διεργασίας (Process Control Block)
Υλοποίηση του μοντέλου διεργασιών (μοντέλο καταστάσεων) Παράδειγμα Τριών Διεργασιών (1/4) Η υλοποίηση του μοντέλου διεργασιών (μοντέλο καταστάσεις) βασίζεται στη διαρκή εναλλαγή διεργασιών στη CPU. Κάθε εναλλαγή εμπλέκει το Λ.Σ. και κυρίως το Βραχυπρόθεσμο Δρομολογητή (Dispatcher).
Υλοποίηση του μοντέλου διεργασιών (μοντέλο καταστάσεων) Παράδειγμα Τριών Διεργασιών (2/4) Dispatcher Διευθύνσεις Εντολών Διαδικασίας Β Διευθύνσεις Εντολών Διαδικασίας Α Διευθύνσεις Εντολών Διαδικασίας Γ
Διεργασία Γ Διεργασία Α Time-out Time-out Dispatcher Dispatcher Διεργασία Α Διεργασία B Ι/Ο Διεργασία Β Time-out Dispatcher Dispatcher Διεργασία Γ Διεργασία Γ Time-out
Παράλληλο πρόγραμμα: Ένα πρόγραμμα που μπορεί να χωριστεί σε διεργασίες που μπορούν να εκτελεστούν παράλληλα Παράδειγμα 1: Ένα πρόγραμμα που εκτελεί τους ίδιους υπολογισμούς με διαφορετικά δεδομένα. Θα μπορούσε να χωριστεί σε παράλληλες διεργασίες, κάθε μια θα αναλάμβανε τον υπολογισμό διαφορετικών δεδομένων και θα εκτελούταν σε διαφορετική Κ.Μ.Ε. (π.χ. διαφορετικό πυρήνα). Δεδομένα 1 Δεδομένα 2 Διεργασία 1 Διεργασία 2 Κ.Μ.Ε. 1 Κ.Μ.Ε. 2
Παράλληλο πρόγραμμα: Ένα πρόγραμμα που μπορεί να χωριστεί σε διεργασίες που μπορούν να εκτελεστούν παράλληλα Παράδειγμα 2: Ένα τμήμα ενός προγράμματος θα μπορούσε να εκτελεστεί παράλληλα με κάποιο άλλο σε διαφορετικές Διεργασίες. Πρόγραμμα
Κρίσιμο τμήμα Διεργασίας: Ένα τμήμα διεργασίας που προσπελαύνει έναν αποκλειστικό πόρο του συστήματος και δεν πρέπει να διαμοιραστεί γιατί δημιουργείται πρόβλημα στην ακεραιτότητα των δεδομένων. Θέματα που πρέπει να επιλύει ένα Λ.Σ. πολυ-προγραμματισμού: Αμοιβαίος Αποκλεισμός: Όταν μια διεργασία εκτελεί το κρίσιμο τμήμα της, καμία άλλη δε μπορεί να εκτελέσει το δικό της. Δεν πρέπει δύο ή περισσότερες διεργασίες να αλληλο-επικαλύπτονται χρονικά στα κρίσιμα τμήματά τους. Μόνο μια διεργασία πρέπει να καταφέρνει να εισέλθει στο Κ.Τ. της κάθε φορά. Αδιέξοδο: Ένα σύνολο διεργασιών βρίσκεται σε αδιέξοδο, όταν κάθε μια από αυτές περιμένει για ένα εξωτερικό συμβάν (π.χ. απελευθέρωση πόρου) που μπορεί να συμβεί μόνο από κάποια από τις διεργασίες που βρίσκονται στο αδιέξοδο (η μία περιμένει την άλλη δηλαδή). Υποσιτισμός: η αδυναμία μιας διεργασίας να εισέλθει στο κρίσιμο τμήμα της (αποκλείεται συνεχώς). Συγχρονισμός: Μια διεργασία μπορεί να χρειάζεται να σταματήσει και να περιμένει τα αποτελέσματα μιας άλλης να συγχρονιστούν δηλαδή.
Πηγές: Σύγχρονα Λειτουργικά Συστήματα, Andrew S. Tanebaum Λειτουργικά Συστήματα, ΤΕΕ Β Τάξη, 1 ος Κύκλος, Ο.Ε.Δ.Β. Λειτουργικά Συστήματα (Σημειώσεις)», Κ.Γ. Μαργαρίτης, Τμήμα Εφαρμοσμένης Πληροφορικής, Πανεπιστήμιο Μακεδονίας