Λειτουργικά Συστήματα IT FOR BUSINESS ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Λειτουργικά Συστήματα Κεφάλαιο 7
Στόχοι κεφαλαίου Περιγραφή των κύριων λειτουργιών του Λ.Σ Ορισμός των εννοιών ‘διαχείριση μνήμης’ και ‘διαχείριση διεργασιών’. Περιγραφή της έννοιας ‘διαμοιρασμός χρόνου’ Επεξήγηση της σχέσης μεταξύ φυσικών και λογικών διευθύνσεων Αναφορά σε τεχνικές διαχείρισης μνήμης Εισαγωγή στις διεργασίες (processes) και στις διάφορες φάσεις εκτέλεσής τους
Κατηγορίες Λογισμικού Λογισμικό εφαρμογών: Καλύπτει κάποια συγκεκριμένη ανάγκη – επιλύει ένα πρόβλημα Π.χ. επεξεργαστές κειμένου, παιγνίδια, διαγνωστικά προγράμματα αυτοκινήτων, προγράμματα καθοδήγησης πυραύλων κλπ. Λογισμικό συστήματος: διευθύνει/διαχερίζεται τον υπολογιστή σε χαμηλό/βασικό επίπεδο Παρέχει τα εργαλεία και το περιβάλλον ανάπτυξης και εκτέλεσης λογισμικών εφαρμογών συχνά αλληλεπιδρά απευθείας με το υλικό
Παράδειγμα Λειτουργικού Συστήματος Microsoft Windows
Λειτουργικό Σύστημα Το Λειτουργικό Σύστημα (Operating System) Είναι ο πυρήνας του λογισμικού συστήματος Είναι ένα σύνολο προγραμμάτων που ελέγχουν και επιβλέπουν το υλικό του Η/Υ παρέχοντας διάφορες υπηρεσίες Διευθύνει/διαχειρίζεται πόρους του Η/Υ όπως η μνήμη, οι συσκευές εισόδου / εξόδου και η κεντρική μονάδα επεξεργασίας Προσφέρει το περιβάλλον (τη διεπαφή) μέσω του οποίου ο χρήστης επικοινωνεί με τον υπολογιστή Άλλα λογισμικά συστήματος υποστηρίζουν συγκεκριμένους στόχους εφαρμογών, όπως μια βιβλιοθήκη γραφικών που δίνει μια εικόνα στην οθόνη. Το λειτουργικό σύστημα επιτρέπει σε μια εφαρμογή να επικοινωνεί (αλληλεπιδρά) με τέτοιους πόρους του συστήματος
Λειτουργικό Σύστημα (συν.) Το λειτουργικό σύστημα επικοινωνεί/αλληλεπιδρά με διάφορα μέρη του υπολογιστικού συστήματος Το λειτουργικό σύστημα διαχειρίζεται τους πόρους του συστήματος. Επιτρέπει στις εφαρμογές να έχουν πρόσβαση στους πόρους του συστήματος, είτε απευθείας είτε διαμέσου άλλων λογισμικών συστήματος. Προσφέρει μια άμεση διεπαφή/επικοινωνία του χρήστη με το υπολογιστικό σύστημα. π.χ. βιβλιοθήκη γραφικών, οδηγοί συσκευών
Λειτουργικό Σύστημα (συν.) Ένας Η/Υ γενικά έχει ένα λειτουργικό σύστημα το οποίο γίνεται ενεργό και παίρνει τον έλεγχο της διαχείρισης του συστήματος, όταν το σύστημα εκκινεί (booting). Το υλικό αρχικά φορτώνει ένα μικρό σετ από εντολές του συστήματος που είναι αποθηκευμένες στη μόνιμη μνήμη (ROM). Αυτές οι εντολές φορτώνουν ένα μεγαλύτερο τμήμα του λογισμικού συστήματος από δευτερεύουσα μνήμη, συνήθως από το μαγνητικό δίσκο. Τελικά, όλα τα βασικά στοιχεία του λειτουργικού συστήματος φορτώνονται, προγράμματα εκκίνησης εκτελούνται, η διεπαφή με το χρήστη προσφέρεται και το σύστημα είναι έτοιμο να χρησιμοποιηθεί.
Λειτουργικό Σύστημα (συν.) Η κεντρική ιδέα που αποτελεί τη βάση λειτουργίας του λειτουργικού συστήματος είναι ο «δίκαιος καταμερισμός» Το λειτουργικό σύστημα, διευθύνει / διαχειρίζεται διάφορους πόρους που πρέπει να μοιράζονται δίκαια στα διάφορα προγράμματα στα οποία είναι απαραίτητοι.
Λειτουργικό Σύστημα (συν.) Πολλαπλά προγράμματα που εκτελούνται ταυτόχρονα μοιράζονται τη χρήση της κυρίας μνήμης. Παίρνουν τη σειρά τους χρησιμοποιώντας τη ΚΜΕ. Συναγωνίζονται για μια ευκαιρία να χρησιμοποιήσουν συσκευές εισόδου / εξόδου Το λειτουργικό σύστημα παίζει το ρόλο του ελεγκτή για να σιγουρευτεί ότι όλα τα μέρη συνεργάζονται και έχουν την ευκαιρία να «δράσουν»
Κατηγορίες Λ.Σ. Με βάση τον αριθμό των χρηστών Ενός χρήστη (single user) – μόνο ένας χρήστης μπορεί να χρησιμοποιεί τον υπολογιστή σε μια δεδομένη χρονική στιγμή (π.χ. PalmOS (for PDAs), Symbian (for mobile devices)) Πολλών χρηστών (multi-user) – ταυτόχρονη χρήση του υπολογιστή από πολλούς χρήστες (π.χ. Unix, Linux, Windows, MacOS) Με βάση τον αριθμό των εργασιών Μίας εργασίας (single tasking) π.χ. PalmOS Πολλών εργασιών (multi-tasking) π.χ. Windows, Unix, Linux, MacOS Personal Digital Assistants
Κατηγορίες Λ.Σ. (συν.) Πολλών-Εργασιών Λ.Σ.
Διαχείριση Πόρων Ένα πρόγραμμα που εκτελείται βρίσκεται στην κυρία μνήμη και οι εντολές του επεξεργάζονται η μια μετά την άλλη με τον Κύκλο Φέρε-Αποκωδικοποίησε-Εκτέλεσε (Fetch-Decode-Execute Cycle). Πολυπρογραμματισμός είναι η ταυτόχρονη συνύπαρξη πολλών προγραμμάτων στην κύρια μνήμη τα οποία επιζητούν πρόσβαση (ανταγωνιζόμενα μεταξύ τους) στην ΚΜΕ ώστε να ‘τρέξουν’ (execute) Διαχείριση μνήμης είναι μια διαδικασία που παρακολουθεί ποια προγράμματα βρίσκονται στη μνήμη καθώς και την ακριβή θέση τους σε αυτή. Ένα μοντέρνο Λειτουργικό Σύστημα υιοθετεί τον πολυπρογραμματισμό και γι’ αυτό εκτελεί διαχείριση μνήμης.
Διαχείριση Πόρων (συν.) Διεργασία (process) είναι ένα πρόγραμμα στη φάση εκτέλεσής του. Ένα πρόγραμμα είναι ένα στατικό σύνολο από εντολές. Μια διεργασία είναι μια δυναμική οντότητα που αντιπροσωπεύει το πρόγραμμα καθώς εκτελείται.
Διαχείριση Πόρων (συν.) Διαχείριση Διεργασιών Το λειτουργικό σύστημα διαχειρίζεται τις διάφορες διεργασίες, που λόγω του πολυπρογραμματισμού ένα σύστημα μπορεί να έχει αρκετές ενεργές διεργασίες τη κάθε στιγμή: ελέγχει την κατάσταση τους και σε ποια φάση εκτέλεσης βρίσκονται (κρατεί πληροφορίες για τις ενεργές διεργασίες) Σε κάθε χρονική στιγμή μια συγκεκριμένη εντολή είναι η επόμενη που θα εκτελεστεί. Μια διεργασία μπορεί να διακοπεί καθώς εκτελείται
Διαχείριση Πόρων (συν.) Χρονοδρομολόγηση (scheduling) ΚΜΕ Η χρονοδρομολόγηση της ΚΜΕ ορίζει ποια διεργασία από αυτές που βρίσκονται στη μνήμη θα εκτελεστεί από την ΚΜΕ σε μια δεδομένη χρονική στιγμή.
Διαχείριση Πόρων (συν.) Το Λειτουργικό Σύστημα είναι κι αυτό ένα πρόγραμμα που πρέπει να εκτελεστεί. Οι διεργασίες του Λ.Σ. πρέπει να διαχειριστούν και να διατηρηθούν στην κυρία μνήμη μαζί με άλλα προγράμματα συστήματος και εφαρμογών.
Διαχείριση Πόρων (συν.)
Διαχείριση Πόρων (συν.)
Διαχείριση Πόρων (συν.) FETCH-DECODE-EXECUTE CYCLE CPU RAM DISC Διεργασίες (Processes)
Επεξεργασία κατά δεσμίδες Τις δεκαετίες 1960 και 1970 ένας υπολογιστής ήταν ένα ογκώδες μηχάνημα που είχε ένα και μόνο χειριστή (operator) Ο χειριστής θα έπαιρνε τις διάφορες εργασίες από τους χρήστες και θα τις οργάνωνε σε δεσμίδες (batches) Μια δεσμίδα περιέχει ένα σύνολο εργασιών που χρειάζονται τους ίδιους πόρους. Μια εργασία (job) αποτελείται από το πρόγραμμα και ένα σύνολο εντολών σχετικά με το λογισμικό συστήματος και πόρους που χρειάζονται για την εκτέλεση του προγράμματος. Οι δεσμίδες αυτές θα δίνονταν μετά στον υπολογιστή για επεξεργασία. Η οργάνωση σε δεσμίδες γινόταν για να μη χρειάζεται ο χειριστής να αλλάζει την κατάσταση της μηχανής πριν κάθε εκτέλεση
Επεξεργασία κατά δεσμίδες (συν.)
Επεξεργασία κατά δεσμίδες (συν.) Ο όρος batch – δεσμίδα σημαίνει πλέον ένα σύστημα στο οποίο προγράμματα και πόροι συστήματος συντονίζονται και εκτελούνται χωρίς αλληλεπίδραση μεταξύ του χρήστη και του προγράμματος. Μοντέρνα Λ.Σ. ενσωματώνουν επεξεργασία του τύπου δεσμίδας με το να επιτρέπουν στο χρήστη να ορίζει ένα σετ από εντολές Λ.Σ. ως ένα αρχείο δεσμίδας (batch file) για να ελέγχει/διαχειρίζεται την επεξεργασία ενός μεγάλου προγράμματος. Αρχεία με προέκταση .bat στα Windows περιέχουν εντολές συστήματος Π.χ.: επεξεργασία πληρωμής μηνιαίας μισθοδοσίας ενός οργανισμού είναι μια μεγάλη εργασία που χρησιμοποιεί συγκεκριμένους πόρους με ουσιαστικά καμία αλληλεπίδραση με το χρήστη.
Χρονικός Καταμερισμός Ο χρονικός καταμερισμός (time sharing) επιτρέπει την ταυτόχρονη χρήση του υπολογιστή από πολλαπλούς χρήστες. Ο χρόνος Κ.Μ.Ε. διαμοιράζεται στους ενεργούς χρήστες Ο πολυπρογραμματισμός, είναι μια τεχνική που επιτρέπει σε πολλαπλές διεργασίες να είναι ενεργές ταυτόχρονα. Έτσι, πολλοί προγραμματιστές μπορούν να επικοινωνούν με τον υπολογιστή και να μοιράζονται τους διαθέσιμους πόρους Το Λ.Σ. διαχειρίζεται το μοίρασμα των πόρων, συμπεριλαμβανομένου και της Κ.Μ.Ε. Σε ένα σύστημα χρονικού καταμερισμού, ο κάθε χρήστης έχει τη δική του νοητή μηχανή, στην οποία όλοι οι πόροι του συστήματος είναι, στην πραγματικότητα, διαθέσιμοι προς χρήση. Στην ουσία οι πόροι διαμοιράζονται στους χρήστες. Σε ένα σύστημα χρονικού καταμερισμού, οι χρήστες μπορεί να δουν πτώση στην απόδοση του συστήματος, είτε λόγω του αριθμού των ενεργών χρηστών είτε των ικανοτήτων της Κ.Μ.Ε.
Χρονικός Καταμερισμός (συν.) CPU RAM DISC Διεργασίες (Processes) Δ1, Δ2, Δ3, Δ4 Δ5, Δ6, Δ7, Δ8 User 1 User 2 Καταμερισμός Χρόνου: μεταξύ του χρήστη 1 και χρήστη 2 Πολυπρογραμματισμός: μεταξύ διεργασιών Δ1, Δ2, …, Δ8
Διαχείριση Μνήμης Η μνήμη είναι μια συνεχής συλλογή από bits (σε ομάδες του byte – 8 bits, 16, 32 ή 64-bits word) με καθορισμένες διευθύνσεις, που μοναδικά καθορίζουν το κάθε συγκεκριμένο τμήμα μνήμης
Διαχείριση Μνήμης (συν.) Ένα πρόγραμμα είναι γεμάτο με αναφορές σε μεταβλητές και σε άλλα μέρη του κώδικα. Όταν το πρόγραμμα μεταγλωττίσει, αυτές οι αναφορές αλλάζουν σε διευθύνσεις στη μνήμη όπου τα δεδομένα και ο κώδικας υπάρχουν. Για να γίνει αυτό, χρειαζόμαστε δυο είδη διευθύνσεων. Η λογική διεύθυνση (γνωστή και ως νοητή ή σχετική διεύθυνση) είναι μια τιμή που προσδίδει μια γενική θέση, σχετική με ένα πρόγραμμα αλλά όχι με την κύρια μνήμη Κατά τη συγγραφή προγραμμάτων, ο προγραμματιστής γνωρίζει μόνο τη λογική διεύθυνση Είναι μια αναφορά σε μια αποθηκευμένη τιμή σχετική με το πρόγραμμα που κάνει τις αναφορές Η φυσική διεύθυνση είναι μια πραγματική διεύθυνση στην κύρια μνήμη. Το λειτουργικό σύστημα γνωρίζει την ακριβή θέση ενός προγράμματος στη μνήμη και μπορεί να μετατρέπει λογικές διευθύνσεις σε ακριβείς διευθύνσεις.
Διαχείριση Μνήμης (συν.) Όταν ένα πρόγραμμα μεταγλωττίσει, μια αναφορά σε π.χ. ένα όνομα μεταβλητής αλλάζει σε μια λογική διεύθυνση. Όταν το πρόγραμμα φορτωθεί στη μνήμη για να εκτελεστεί, κάθε λογική διεύθυνση αντιστοιχεί σε μια συγκεκριμένη φυσική διεύθυνση.
Διαχείριση Μνήμης (συν.) CPU RAM εδώ υπάρχει ένα πρόγραμμα (φυσική διεύθυνση [1000 … 5000]) 0 1 2 3 ……………………..1000 – 5000 ……….. φυσικές διευθύνσεις λογική διεύθυνση: 2 φυσική διεύθυνση: 1002
Διάχειριση Συνεχούς Μνήμης Υπάρχουν μόνο 2 προγράμματα στη μνήμη, κάθε χρονική στιγμή Το λειτουργικό σύστημα Η εφαρμογή μόνο μια εφαρμογή εκτός του Λ.Σ. μπορεί να επεξεργαστεί κάθε φορά Αυτή η προσέγγιση ονομάζεται: Διαχείριση Συνεχούς Μνήμης ολόκληρο το πρόγραμμα της εφαρμογής φορτώνεται σε ένα μεγάλο κομμάτι της μνήμης. μνήμη
Διαχείριση Συνεχούς Μνήμης (συν.) Μια λογική διεύθυνση είναι απλά μια αριθμητική τιμή σχετική με το σημείο εκκίνησης του προγράμματος. Δημιουργούνται «λες και» το πρόγραμμα φορτώνεται στη θέση 0 της κυρίας μνήμης. Για να προσδιορίσουμε τη φυσική διεύθυνση, απλά προσθέτουμε τη λογική διεύθυνση στη διεύθυνση του σημείου εκκίνησης του προγράμματος στη φυσική κύρια μνήμη φυσική διεύθυνση = λογική διεύθυνση + σημείο εκκίνησης προγράμματος
Διαχείριση Συνεχούς Μνήμης (συν.) σημείο εκκίνησης προγράμματος (φυσική διεύθυνση) Διεύθυνση 0 Η λογική διεύθυνση L (222222) μεταφράζεται στη φυσική διεύθυνση A+L (777777) π.χ. 555555 (φυσική διεύθυνση)
Άλλοι Μέθοδοι Διαχείρισης Μνήμης Άλλοι τρόποι διαχείρισης μνήμης παρέχουν περισσότερη ευελιξία Διαμερισμένη μνήμη: η μνήμη είναι χωρισμένη σε κομμάτια σταθερού μεγέθους ή σε κομμάτια που το μέγεθός τους καθορίζεται από τις ανάγκες των προγραμμάτων Σελιδοποιημένη μνήμη: τα προγράμματα χωρίζονται σε σελίδες σταθερού μεγέθους που φυλάσσονται σε πλαίσια μνήμης όταν φορτώνονται στη μνήμη.
Διαχείριση Διεργασιών Διαχείριση της Κ.Μ.Ε. από το Λ.Σ. για χρήση της από τις διεργασίες Οι διάφορες φάσεις μιας διεργασίας: Η διεργασία περιμένει για πόρους (εκτός της Κ.Μ.Ε.). Π.χ. δεδομένα από δευτερεύουσα μνήμη π.χ. να επιτραπεί σε μια άλλη διεργασία να χρησιμοποιήσει τη Κ.Μ.Ε. Η διεργασία δεν περιμένει για ένα γεγονός να συμβεί πρώτα, π.χ. ναρθούν δεδομένα από δευτερεύουσας μνήμης. Περιμένει μόνο τη σειρά της για να χρησιμοποιήσει τη Κ.Μ.Ε. Η διεργασία εκτελείται από τη Κ.Μ.Ε. Οι εντολές της επεξεργάζονται από το Fetch-Decode-Execute Κύκλο Μια διεργασία δημιουργείται π.χ. ένα πρόγραμμα που εκτελείται Η διεργασία έχει ολοκληρώσει την εκτέλεσή της και έτσι δεν είναι πλέον μια ενεργή διεργασία.
Διαχείριση Διεργασιών (συν.) CPU Waiting Running RAM Ready Terminated DISC Πολλές διεργασίες μπορούν να είναι στη φάση ετοιμότητας (Ready) ή στη φάση αναμονής (Waiting) την ίδια χρονική στιγμή, αλλά μόνο μια διεργασία μπορεί να είναι στη φάση εκτέλεσης (Running).
Ομάδα Ελέγχου Διεργασίας (Process Control Block) Το λειτουργικό σύστημα πρέπει να διαχειρίζεται μεγάλο όγκο δεδομένων για κάθε ενεργή διεργασία Συνήθως, αυτά τα δεδομένα τοποθετούνται σε μια δομή δεδομένων που ονομάζεται «ομάδα ελέγχου διεργασίας» Κάθε φάση εκτέλεσης, αντιπροσωπεύεται από μια λίστα ομάδων ελέγχου διεργασίας, μια για κάθε διεργασία που βρίσκεται σε αυτή τη φάση
Ομάδα Ελέγχου Διεργασίας (Process Control Block) (συν.) Όμως, για όλες τις ενεργές διεργασίες, υπάρχει μόνο μια ΚΜΕ και μόνο μια ομάδα καταχωρητών. Οι καταχωρητές (registers) περιέχουν τις τιμές που αφορούν τη διεργασία που τρέχει τη συγκεκριμένη στιγμή. Κάθε φορά που μια διεργασία μπαίνει σε φάση εκτέλεσης: Οι τιμές των καταχωρητών της διεργασίας υπό εκτέλεση θα σωθούν στην ομάδα ελέγχου της διεργασίας Καινούργιες τιμές σχετικές με τη διεργασία που θα αρχίσει να εκτελείται φορτώνονται στους καταχωρητές Αυτή η αλλαγή ονομάζεται «μεταγωγή περιβάλλοντος» (context switching)
Χρονοδρομολόγηση ΚΜΕ (scheduling) Η διαδικασία προσδιορισμού της διεργασίας που πρέπει να μετακινηθεί από την φάση ετοιμότητας (Ready) στη φάση εκτέλεσης (Running). Πολλές διεργασίες μπορούν να βρίσκονται στη φάση ετοιμότητας αλλά η ΚΜΕ μπορεί να εκτελεί μόνο μια. Υπάρχουν αλγόριθμοι χρονοδρομολόγησης της ΚΜΕ που αποφασίζουν ποια διεργασία πρέπει να «δοθεί» στη ΚΜΕ έτσι ώστε να προχωρήσει στην επεξεργασία/εκτέλεσή της.
Κατηγορίες Χρονοδρομολόγησης ΚΜΕ Προεκτοπιστική χρονοδρομολόγηση (preemptive scheduling): Όταν το λειτουργικό σύστημα αποφασίσει να εκτελέσει μια συγκεκριμένη διεργασία αντί της διεργασίας που εκτελείται εκείνη τη στιγμή Π.χ. Όταν μια διεργασία μετακινείται από τη φάση εκτέλεσης στη φάση ετοιμότητας (γιατί έχει διακοπεί από το Λ.Σ.) «βγάζουμε εκτός επεξεργασίας τη διεργασία υπό εκτέλεση» Μη-προεκτοπιστική χρονοδρομολόγηση (Nonpreemptive scheduling): Όταν η διεργασία που εκτελείται αποφασίσει εθελοντικά να σταματήσει να χρησιμοποιεί την ΚΜΕ Π.χ. Όταν μια διεργασία μετακινείται από τη φάση εκτέλεσης στη φάση αναμονής (γιατί περιμένει για πόρους – εκτός της ΚΜΕ - ) «περιμένουμε τη διεργασία να ολοκληρώσει»
Αλγόριθμοι επιλογής διεργασίας Αλγόριθμοι Χρονοδρομολόγησης ΚΜΕ (Scheduling Algorithms) Με σειρά άφιξης (First-Come First-Served) Επιλογή μικρότερης διεργασίας (Shortest Job Next) Κυκλική επιλογή (Round Robin)
5 διεργασίες σε φάση ετοιμότητας Παράδειγμα χρόνος ολοκλήρωσης διεργασίας διεργασία σειρά άφιξης στη φάση ετοιμότητας 5 διεργασίες σε φάση ετοιμότητας
Με σειρά άφιξης (First-Come First-Served) Από τη σειρά διεργασιών σε φάση ετοιμότητας, επιλέγεται πάντα η μπροστινή (πρώτη) διεργασία (με τη σειρά με την οποία έχουν φθάσει) Υλοποιείται ως Μη-προεκτοπιστική χρονοδρομολόγηση (non-preemptive scheduling)
Επιλογή μικροτερης διεργασίας (Shortest Job Next) Επιλέγεται η διεργασία που θα χρειαστεί το λιγότερο χρόνο εκτέλεσης Ο χρόνος εκτέλεσης κάθε διεργασίας εκτιμάται (estimated) από το Λ.Σ. (βλέποντας τον τύπο της διεργασίας κλπ) Υλοποιείται ως μη-προεκτοπιστική χρονοδρομολόγηση
Κυκλική επιλογή Κατανέμει το χρόνο εκτέλεσης ισομερώς σε όλες τις «έτοιμες» διεργασίες. Μια διεργασία εκτελείται για κάποιο συγκεκριμένο χρονικό διάστημα προτού αντικατασταθεί από μια άλλη διεργασία. Αφού αντικατασταθεί, περιμένει και πάλι στη σειρά για συνέχισης της εκτέλεσης (από τη φάση εκτέλεσης στη φάση ετοιμότητας) αν δεν έχει προλάβει να τελειώσει. Υλοποιείται ως Προεκτοπιστική χρονοδρομολόγηση Χρόνος εκτέλεσης διεργασίας ανά κύκλο: 50 χρονικές μονάδες