Κεφάλαιο 3: Λειτουργικά Συστήµατα B Μέρος Συντονισµός Δραστηριοτήτων Υπολογιστή Copyright 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley
Εισαγωγή Σήµερα θα περιγράψουµε πως ένα λειτουργικό σύστηµα συντονίζει την εκτέλεση Λογισµικού εφαρµογών Βοηθητικού Λογισµικού Και των δικών του εσωτερικών µονάδων 3-2
Διεργασία, Εργασία, Πρόγραµµα Πρόγραµµα: ένα στατικό σύνολο εντολών Εργασία (job): ένα πρόγραµµα που έχει επιλεγεί για εκτέλεση, µέχρι να ολοκληρωθεί η εκτέλεσή του Μπορεί να βρίσκεται στο δίσκο περιµένοντας να φορτωθεί στη µνήµη ή στη µνήµη περιµένοντας να εκτελεστεί από την ΚΜΕ ή περιµένοντας κάποιο συµβάν Διεργασία (process): ένα πρόγραµµα υπό εκτέλεση, δηλ. µια εργασία που είναι στη µνήµη Έχει επιλεγεί µεταξύ άλλων εργασιών που περιµένουν κι έχει φορτωθεί στη µνήµη Είναι µια δυναµική δραστηριότητα, της οποίας οι ιδιότητες µεταβάλλονται µε την πάροδο του χρόνου. Σε µια συγκεκριµένη στιγµή µπορεί να εκτελείται ή να περιµένει να της παραχωρηθει χρόνος της ΚΜΕ 3-3
3-4
Πρόγραµµα Πρόγραµµα είναι ένα στατικό σύνολο εντολών που Είναι ανενεργές Έχουν γραφτεί από έναν προγραµµατιστή Έχουν αποθηκευτεί σ ένα δίσκο, ταινία κλπ. Ένα πρόγραµµα µπορεί να µετατραπεί σε εργασία, χωρίς αυτό να είναι απαραίτητο 3-5
Εργασία (job) Είναι ένα πρόγραµµα που έχει επιλεγεί για εκτέλεση. Παραµένει ως εργασία µέχρι να ολοκληρωθεί η εκτέλεσή του, οπότε και µετατρέπεται πάλι σε πρόγραµµα Μια εργασία µπορεί: Να εκτελεστεί, µπορεί και όχι Να βρίσκεται στο δίσκο περιµένοντας να φορτωθεί στη µνήµη Να βρίσκεται στη µνήµη περιµένοντας να εκτελεστεί από την ΚΜΕ Να βρίσκεται στη µνήµη ενώ εκτελείται από την ΚΜΕ Να βρίσκεται στη µνήµη περιµένοντας κάποιο συµβάν Ε/Ε Σε όλες τις παραπάνω καταστάσεις, το πρόγραµµα είναι Εργασία Όταν µια Εργασία ολοκληρώσει την εκτέλεσή της (είτε κανονικά ή ανώµαλα) γίνεται ξανά πρόγραµµα και αφαιρείται από τη µνήµη, και υπάρχει µόνο στο δίσκο. Το λειτουργικό σύστηµα δεν ελέγχει πλέον το πρόγραµµα. Κάθε Εργασία είναι πρόγραµµα, αλλά κάθε πρόγραµµα δεν είναι Εργασία 3-6
Διεργασία (Process) Είναι ένα Πρόγραµµα υπό εκτέλεση, δηλ. µια Εργασία που είναι στη µνήµη Έχει επιλεγεί µεταξύ άλλων εργασιών που αναµένουν κι έχει φορτωθεί στη µνήµη Όσο η Εργασία βρίσκεται στη µνήµη αποτελεί Διεργασία Η Διεργασία µπορεί να εκτελείται ή να περιµένει να της παραχωρηθεί χρόνος της ΚΜΕ ή να περιµένει Ε/Ε Κάθε Διεργασία είναι Εργασία, αλλά κάθε Εργασία δεν είναι και Διεργασία 3-7
Κατάσταση Διεργασίας (process state) Κάθε διεργασία έχει µια συγκεκριµένη κατάσταση που περιλαµβάνει Τρέχουσα κατάσταση της δραστηριότητας Μια εικόνα του υπολογιστή τη συγκεκριµένη χρονική στιγµή Υπάρχουν διαφορετικές εικόνες σε διαφορετικές χρονικές στιγµές Η κατάσταση διεργασίας περιγράφεται από το περιεχόµενο Του Μετρητή προγράµµατος Των Καταχωρητών γενικής χρήσης Των Σχετιζόµενων κελιών της κύριας µνήµης 3-8
Διαχείριση Διεργασιών (1/10) Σ ένα χρονοµεριστικό/πολυδιεργασικό περιβάλλον, οι διεργασίες ανταγωνίζονται µεταξύ τους για τους πόρους του υπολογιστή Περιφερειακές συσκευές, χώρος στην κύρια µνήµη, πρόσβαση σε αρχεία και πρόσβαση στην ΚΜΕ Το λειτουργικό σύστηµα διαχειρίζεται τις διεργασίες έτσι ώστε να έχουν τους πόρους που χρειάζονται να µην αλληλοεπηρεάζονται αν είναι ανεξάρτητες να ανταλλάσσουν πληροφορίες µεταξύ τους αν χρειάζεται Οι εργασίες που σχετίζονται µε το συντονισµό της εκτέλεσης των διεργασιών γίνεται στο εσωτερικό του λειτουργικού συστήµατος από Τον χρονοπρογραµµατιστή (scheduler) Τον διεκπεραιωτή (dispatcher) 3-9
Διαχείριση Διεργασιών (2/10) Χρονοπρογραµµατιστής Διατηρεί κατάλογο διεργασιών που είναι παρούσες στο υπολογιστικό σύστηµα Προσθέτει νέες διεργασίες στον κατάλογο Διαγράφει τις ολοκληρωµένες διεργασίες Ο χρονοπρογραµµατιστής διατηρεί στην κύρια µνήµη Πίνακα διεργασιών Για κάθε διεργασία διατηρεί πληροφορίες σχετικές µε: την περιοχή µνήµης της διεργασίας (την παίρνει από τον διαχειριστή µνήµης), την προτεραιότητα διεργασίας το αν είναι έτοιµη προς εκτέλεση ή όχι 3-10
Διαχείριση Διεργασιών (3/10) Διεργασία έτοιµη Μπορεί να συνεχιστεί η πρόοδός της Διεργασία υπό εκτέλεση Εκτελείται από την ΚΜΕ Διεργασία σε αναµονή Περιµένει κάποιο εξωτερικό συµβάν, π.χ. µήνυµα από άλλη διεργασία, ολοκλήρωση λειτουργίας σε µέσο αποθήκευσης κλπ. 3-11
Καταστάσεις Διεργασίας 3-12
3-13
Διαχείριση Διεργασιών (4/10) Διεκπεραιωτής: Επιβλέπει την εκτέλεση των προγραµµατισµένων διεργασιών Ελέγχει την εκχώρηση χρονοµεριδίων στις διεργασίες του πίνακα διεργασιών Σ ένα χρονοµεριστικό/πολυδιεργασιακό σύστηµα αυτό γινεται µε τη βοήθεια πολυπρογραµµατισµού Ο χρόνος διαιρείται σε χρονοµερίδια (time slices) που είναι <50 χιλιοστά του δευτερολέπτου Η ΚΜΕ εναλλάσσει τις διεργασίες ανά χρονοµερίδιο Η διαδικασία εναλλαγής ονοµάζεται µεταγωγή διεργασιών (process transfer) ή θεµατική µεταγωγή (context switch) 3-14
Διαχείριση Διεργασιών (5/10) Κάθε φορά που ο διεκπεραιωτής παραχωρεί ένα χρονοµερίδιο σε µια διεργασία, τίθεται σε λειτουργία ένα κύκλωµα χρονοµέτρησης Το τέλος ενός χρονοµεριδίου σηµατοδοτείται µε την παραγωγή ενός σήµατος που λέγεται διακοπή (interrupt). Η ΚΜΕ όταν λάβει ένα σήµα διακοπής Ολοκληρώνει τον τρέχοντα κύκλο µηχανής Αποθηκεύει τη θέση της στην τρέχουσα διεργασία Ξεκινάει τον χειριστή διακοπών (interrupt handler) που βρίσκεται σε µια καθορισµένη θέση της κύριας µνήµης Αποτελεί τµήµα του διεκπεραιωτή και περιγράφει τι πρέπει να κάνει ο διεκπεραιωτής στο σήµα διακοπής 3-15
Διαχείριση Διεργασιών (6/10) Έτσι, το σήµα διακοπής εκτοπίζει την τρέχουσα διεργασία και µεταφέρει τον έλεγχο πίσω στον διεκπεραιωτή Ο διεκπεραιωτής Επιλέγει µια έτοιµη διεργασία από τον πίνακα διεργασιών µε τη µεγαλύτερη προτεραιότητα (όπως καθορίζονται από τον χρονοπρογραµµατιστή) Επανεκκινεί το κύκλωµα χρονοµέτρησης Επιτρέπει στη διεργασία να χρησιµοποιήσει το χρονοµερίδιό της 3-16
Μεταγωγή Διεργασιών 3-17
Διαχείριση Διεργασιών (7/10) 3-18
Διαχείριση Διεργασιών (8/10) Σ ένα πολυπρογραµµατιστικό σύστηµα, µέγιστος παράγοντας επιτυχίας είναι να σταµατάει µια διεργασία και να την ξεκινάει πάλι αργότερα, αναδηµιουργώντας το περιβάλλον που υπήρχε πριν τη διακοπή, δηλ: Την τιµή του µετρητή προγράµµατος Τα περιεχόµενα των καταχωρητών Τα περιεχόµενα των σχετικών κελιών µνήµης 3-19
Διαχείριση Διεργασιών (9/10) Οι ΚΜΕ για πολυπρογραµµατιστικά συστήµατα αποθηκεύουν αυτές τις πληροφορίες ως µέρος της αντίδρασής τους στη διακοπή Διαθέτουν εντολές σε γλώσσα µηχανής για επαναφόρτωση µιας ήδη αποθηκευµένης κατάστασης Απλοποιούν την εργασία του διεκπεραιωτή στη µεταγωγή διεργασιών Αποτελούν παράδειγµα του τρόπου µε τον οποίον ο σχεδιασµός των σύγχρονων ΚΜΕ επηρεάζεται από τις ανάγκες των σύγχρονων λειτουργικών συστηµάτων 3-20
Διαχείριση Διεργασιών (10/10) Σ ένα πολυπρογραµµατιστικό σύστηµα, η συνολική αποδοτικότητα ενός υπολογιστή αυξάνεται, παρά την επιβάρυνση λόγω της εναλλαγής µεταξύ των διεργασιών Γιατί? Η επιβάρυνση από τη διαδικασία εναλλαγής µεταξύ των διεργασιών αντισταθµίζεται από το γεγονός ότι ενώ εκτελείται αίτηση Ε/Ε από µια διεργασία, προχωρούν οι άλλες διεργασίες => το σύνολο των διεργασιών θα ολοκληρωθεί σε λιγότερο χρόνο απ ότι αν εκτελούνταν η µία µετά την άλλη Αν µια διεργασία εκτελέσει µια αίτηση Ε/Ε, ο χρονοπρογραµµατιστής θα ενηµερώσει τον πίνακα διεργασιών ο διεκπεραιωτής θα σταµατήσει να της παραχωρεί χρονοµερίδια Όταν ολοκληρωθεί η Ε/Ε ο χρονοπρογραµµατιστής θα ενηµερώσει πάλι τον πίνακα διεργασιών ότι η διεργασία είναι έτοιµη ώστε να µπορεί να ανταγωνιστεί µε τις υπόλοιπες για χρονοµερίδια 3-21
Σύστηµα Διακοπών ενός Υπολογιστή Σηµαντικό εργαλείο για το συντονισµό των ενεργειών ενός υπολογιστή µε το περιβάλλον του, π.χ. πάτηµα πλήκτρου ποντικιού ή πληκτρολογίου Πως λειτουργεί παράγεται ένα σήµα διακοπής εκτελείται η ρουτίνα διακοπής που αναγκάζει την ΚΜΕ να διακόψει την τρέχουσα δραστηριότητα και να ασχοληθεί µε την αιτία της διακοπής Έχει πολλές εφαρµογές Η ρουτίνα διακοπής είναι διαφορετική ανάλογα µε την εφαρµογή Η διακοπή µε την υψηλότερη προτεραιότητα συνήθως σχετίζεται µε κάποιο πρόβληµα στην τροφοδοσία ρεύµατος 3-22
Χειρισµός Ανταγωνισµού Διεργασιών για Πόρους (1/2) Μια σηµαντική εργασία του λειτουργικού είναι η κατανοµή πόρων σε διεργασίες Πόροι Περιφερειακές συσκευές Εσωτερικές Λειτουργίες 3-23
Χειρισµός Ανταγωνισµού Διεργασιών για Πόρους (2/2) Διαχειριστής Αρχείων Κατανέµει την πρόσβαση σε αρχεία καθώς και το χώρο στα µέσα αποθήκευσης για κατασκευή νέων αρχείων Διαχειριστής Μνήµης Κατανέµει χώρο µνήµης Χρονοπρογραµµατιστής Κατανέµει χώρο στον πίνακα διεργασιών Διεκπεραιωτής Κατανέµει χρονοµερίδια Η εργασία της κατανοµής πόρων δεν είναι απλή Ένα σύγχρονο λειτουργικό σύστηµα έχει αλγόριθµους για τη διαχείριση όλων των προβληµάτων που µπορεί να παρουσιαστούν 3-24
Σηµαία και Σηµατοφορέας (1/4) Μια διεργασία θέλει να εκτυπώσει κάτι Ζητάει από το λειτουργικό πρόσβαση στον οδηγό συσκευής του εκτυπωτή Σηµαία, αντιστοιχεί σε ένα µπιτ µνήµης. Σηµαία ανενεργή -> τιµή 0 ή Σηµαία ενεργή -> τιµή 1 Το λειτουργικό ελέγχει την τιµή της σηµαίας Εκτυπωτής όχι διαθέσιµος (σηµαία 1): Το λειτουργικό θα απορρίψει την αίτηση και θα θέσει τη διεργασία σε αναµονή Εκτυπωτής διαθέσιµος (σηµαία 0): Το λειτουργικό θα δεχτεί την αίτηση και θα επιτρέψει τη συνέχεια της διεργασίας θα κάνει σηµαία -> 1 Όταν τελειώσει, το λειτουργικό παραχωρεί τον εκτυπωτή σε µια διεργασία που περιµένει ή απενεργοποιεί τη σηµαία 3-25
Σηµαία και Σηµατοφορέας (2/4) Μπορεί να παρουσιαστούν προβλήµατα Χρειάζονται πολλές εντολές µηχανής: ανάκτηση τιµής σηµαίας από την κύρια µνήµη, χρήση από την ΚΜΕ, αποθήκευση πίσω στη µνήµη Π.χ. η σηµαία ανακτάται και είναι ανενεργή -> εκτυπωτής διαθέσιµος Η εργασία διακόπτεται και ξενικάει το χρονοµερίδιο µιάς άλλης διεργασίας Η νέα διεργασία ζητάει κι αυτή τον εκτυπωτή Η σηµαία εξακολουθεί να είναι ανενεργή και το λειτουργικό επιτρέπει στη δεύτερη διεργασία να χρησιµοποιήσει τον εκτυπωτή Η πρώτη εργασία ξανα ξεκινά από εκεί που είχε σταµατήσει -> αποκτά κι αυτή πρόσβαση στον ίδιο εκτυπωτή 3-26
Σηµαία και Σηµατοφορέας (3/4) ΛΥΣΗ στο προηγούµενο πρόβληµα: Η εργασία του ελέγχου και της ενεργοποίησης της σηµαίας να ολοκληρώνεται χωρίς διακοπή Τρόποι υλοποίησης Χρήση εντολών (σε γλώσσα µηχανής) για απενεργοποίηση και ενεργοποίηση διακοπών Χρήση εντολής ελέγχου και ενεργοποίησης (test-andset) που διαθέτουν πολλές γλώσσες µηχανής: test-and-set -> η εντολή αυτή λέει στην ΚΜΕ να ανακτήσει την τιµή της σηµαίας, να καταγράψει τη ληφθείσα τιµή, και µετά να ορίσει τη νέα τιµή της. Όλα γίνονται µε µια µόνο εντολή µηχανής Η ΚΜΕ ολοκληρώνει πάντα µια εντολή πριν αναγνωρίσει κάποια διακοπή, άρα η εντολή test-and-set θα ολοκληρωθεί πριν την αναγνώριση οποιασδήποτε διακοπής 3-27
Σηµαία και Σηµατοφορέας (4/4) Σηµατοφορέας Σηµαία που έχει υλοποιηθεί όπως περιγράφτηκε πριν Αντίστοιχα µε τα σιδηροδροµικά σήµατα που ελέγχουν την πρόσβαση στα τµήµατα των τροχιών Κρίσιµη Περιοχή: η ακολουθία των εντολών που πρέπει να εκτελούνται από µια µόνο διεργασία τη φορά Αντιστοιχεί στο τµήµα των τροχιών ενός σιδηροδρόµου όπου µπορεί να βρίσκεται µόνο ένα τραίνο τη φορά Αµοιβαίος αποκλεισµός: η εκτέλεση της κρίσιµης περιοχής από µια διεργασία τη φορά Χρήση Σηµατοφορέα: Συνήθης τρόπος επίτευξης αποκλεισµού σε µια κρίσιµη περιοχή Μια διεργασία αποκτά πρόσβαση στην κρίσιµη περιοχή αν βρει τον σηµατοφορέα ανενεργό και τον ενεργοποιήσει πριν µπει στην κρίσιµη περιοχή. Όταν βγαίνει, τον απενεργοποιεί 3-28
Αδιέξοδο (1/4) Πρόβληµα στην κατανοµή πόρων όπου οι διεργασίες µπλοκάρουν η µία την άλλη επειδή η κάθε µιά περιµένει πόρους που έχουν δεσµευτεί στην άλλη Παραδείγµατα Μια διεργασία έχει πρόσβαση στον εκτυπωτή και περιµένει πρόσβαση στη µονάδα CD ενώ µια άλλη το αντίστροφο Οι διεργασίες δηµιουργούν νέες διεργασίες (forking) για να εκτελέσουν υποεργασίες. Αν ο χρονοπρογραµµατιστής δεν έχει χώρο στον πίνακα διεργασιών και κάθε διεργασία πρέπει να δηµιουργήσει µια πρόσθετη διεργασία για να ολοκληρωθεί, τότε καµµία δεν µπορεί να προχωρήσει 3-29
Αδιέξοδο (2/4) 3-30
Αδιέξοδο (3/4) 3-31
Αδιέξοδο (4/4) Τα αδιέξοδα υποβιβάζουν την απόδοση του συστήµατος Συνθήκες που απαιτούνται για αδιέξοδο 1. Ανταγωνισµός για πόρους που δεν µπορούν να είναι κοινόχρηστοι (non exclusive), δηλ. δεν µπορούν να χρησιµοποιούνται από πάνω από ένα χρήστη την ίδια χρονική στιγµή 2. Η ζήτηση των πόρων γίνεται τµηµατικά 3. Εφόσον παραχωρηθεί ένας πόρος, δεν µπορεί να ανακτηθεί µε βίαιο τρόπο. 3-32
Αντιµετώπιση Αδιεξόδου Με απαλοιφή µιάς από τις παραπάνω τρεις συνθήκες Μέθοδοι Αποτροπής Αδιεξόδου αντιµετωπίζουν τις περιπτώσεις i και ii. Μέθοδοι Ανίχνευσης και Αντιµετώπισης Αδιεξόδου για την περίπτωση iii. 3-33
Μέθοδοι Αποτροπής Αδιεξόδου Υποχρεωτικά κάθε διεργασία ζητά όλους τους πόρους εξ αρχής ή Μετατροπή µη κοινόχρηστων πόρων σε κοινόχρηστους, π.χ. Με την τεχνική Spooling (αναλύεται αµέσως µετά) Παραχώρηση διαφορετικών δικαιωµάτων πρόσβασης σε ένα αρχείο Αντιµετωπίζουν τις περιπτώσεις i και ii i. Ανταγωνισµός για πόρους που δεν µπορούν να είναι κοινόχρηστοι (δηλ. δεν µπορούν να χρησιµοποιούνται από πάνω από ένα χρήστη την ίδια χρονική στιγµή) ii. Η ζήτηση των πόρων γίνεται τµηµατικά 3-34
Παροχέτευση (Spooling) Τεχνική φύλαξης δεδοµένων γιά έξοδο σε µια µεταγενέστερη αλλά πιο βολική στιγµή Π.χ. Διάφορες διεργασίες ζητούν τη χρήση ενός εκτυπωτή Το λειτουργικό κάνει αποδεκτή την αίτηση της διεργασίας αλλά δεν τη συνδέει µε τον οδηγό συσκευής του εκτυπωτή αν δεν είναι διαθέσιµος. Τη συνδέει µ έναν άλλο οδηγό που αντί να στείλει τα δεδοµένα για εκτύπωση στον εκτυπωτή, τα αποθηκεύει Όταν γίνει διαθέσιµος ο εκτυπωτή, το λειτουργικό µεταφέρει τα δεδοµένα προς εκτύπωση από το µέσο αποθήκευσης στον εκτυπωτή Ένας µη κοινόχρηστος πόρος φαίνεται ως κοινόχρηστος Κάθε διεργασία εκτελείται κανονικά, έχοντας την ψευδαίσθηση ότι έχει πρόσβαση στον εκτυπωτή 3-35
Μέθοδοι Ανίχνευσης και Αντιµετώπισης Αδιεξόδου Για την περίπτωση iii. Εφόσον παραχωρηθεί ένας πόρος, δεν µπορεί να ανακτηθεί µε βίαιο τρόπο. το αδιέξοδο θεωρείται σπάνιο και δεν γίνεται προσπάθεια αποφυγής τους. Ανιχνεύεται όταν παρουσιάζεται και Διορθώνεται µε βίαιη ανάκτηση κάποιων από τους δεσµευµένους πόρους (π.χ. Kill σε περίπτωση γεµάτου πίνακα διεργασιών) 3-36
Λιµοκτονία Το αντίθετο του αδιεξόδου Μια διεργασία δεν µπορεί να εκτελεστεί εξαιτίας των πάρα πολλών περιορισµών στους πόρους 3-37
Λιµοκτονία (2/2) 3-38
Δείπνο φιλοσόφων (1/2) Πέντε φιλόσοφοι κάθονται γύρω από τραπέζι. Ο καθένας έχει µπροστά του ένα πιάτο ρύζι Ο κάθε φιλόσοφος χρειάζεται δύο πιρούνια για να να φάει Ανάµεσα σε κάθε ζεύγος γειτονικών πιάτων βρίσκεται ένα πιρούνι Η ζωή ενός φιλοσόφου αποτελείται από εναλλασσόµενες περιόδους φαγητού και σκέψης Όποτε πεινάει, προσπαθεί να πάρει το δεξιό και το αριστερό πιρούνι (ένα τη φορά), µε τυχαία σειρά Αν καταφέρει να τα αποκτήσει και τα δύο, τρώει για κάποιο διάστηµα και µετά αφήνει τα πιρούνια στο τραπέζι και συνεχίζει να σκέφτεται 3-39
Δείπνο φιλοσόφων (2/2) Αφού ο κάθε φιλόσοφος χρειάζεται και τα δύο ξυλάκια για να φάει ένα πιάτο ρύζι, θα µπορούσε να λιµοκτονήσει αν δεν είναι και τα δύο ξυλάκια διαθέσιµα την ίδια στιγµή 3-40
Καλό σας απόγευµα! 3-41