Κεφάλαιο 3: Λειτουργικά Συστήματα (1ο μέρος) Η Επιστήμη των Υπολογιστών: Μια Ολοκληρωμένη Παρουσίαση J. Glenn Brookshear
Κεφάλαιο 3: Λειτουργικά Συστήματα Κεφάλαιο 3: Λειτουργικά Συστήματα 3.1 Ιστορικό των λειτουργικών συστημάτων 3.2 Αρχιτεκτονική λειτουργικών συστημάτων 3.3 Συντονισμός των δραστηριοτήτων του υπολογιστή 3.4 Χειρισμός ανταγωνισμού μεταξύ διεργασιών 3.5 Ασφάλεια
Ενέργειες των Λειτουργικών Συστημάτων Μεταμορφώνουν το υλικό του υπολογιστή σε χρήσιμο εργαλείο. Θα δούμε τι κάνουν και πως το κάνουν Συντονίζουν τις εσωτερικές δραστηριότητες ενός υπολογιστής και επιτηρούν την επικοινωνία με τον έξω κόσμο Επιβλέπουν τη λειτουργία του υπολογιστή Αποθηκεύουν και ανακτούν αρχεία Προγραμματίζουν χρονικά την εκτέλεση των προγραμμάτων Συντονίζουν την εκτέλεση των προγραμμάτων
Παραδείγματα Λειτουργικών Συστημάτων Windows Unix Eίναι πυρήνας για δύο άλλα λειτουργικά: Mac OS Solaris Linux Αναπτύχθηκε ερασιτεχνικά -> σήμερα διατίθεται εμπορικά
Ιστορικό Λειτουργικών Συστημάτων Εκτέλεση μιας εργασίας [job] Ομαδική επεξεργασία Αλληλεπιδραστική επεξεργασία Απαιτεί επεξεργασία πραγματικού χρόνου Χρονομερισμός/Πολυδιεργασία Υλοποιείται από τον πολυπρογραμματισμό Μηχανές με πολλούς επεξεργαστές
Ιστορικό Λειτουργικών Συστημάτων Δεκαετίες 1940 – 1950 Μη αποδοτικοί και μη ευέλικτοι υπολογιστές Εκτέλεση κάθε προγράμματος [job] σαν μεμονωμένη δραστηριότητα Ο υπολογιστής υπό τον έλεγχο του χρήστη Δέσμευση του υπολογιστή από κάθε χρήστη μέσω ειδικών εντύπων
Ιστορικό Λειτουργικών Συστημάτων Εμφάνιση λειτουργικών συστημάτων με στόχο τη: Διευθέτηση των προγραμμάτων Εξομάλυνση της μετάβασης από εργασία σε εργασία Πρώτες εξελίξεις μέσω των λειτουργικών συστημάτων Διαχωρισμός χρηστών και εξοπλισμού Εξάλειψη της ανάγκης φυσικής παρουσίας των χρηστών στην αίθουσα του υπολογιστή Εμφάνιση του ρόλου του «χειριστή»
Ιστορικό Λειτουργικών Συστημάτων Ομαδική Επεξεργασία [batch processing] Συγκέντρωση εργασιών [jobs] προς εκτέλεση σε ομάδες ή δέσμες [batches] Εκτέλεσή τους χωρίς αλληλεπίδραση με το χρήστη με βάση οδηγίες σχετικές με απαιτήσεις του προγράμματος, γραμμένες σε job control language Ουρά εργασιών, FIFO όχι αυστηρή, προτεραιότητες Αποθηκεύει και των οδηγιών για κάθε εργασία και τις εκτυπώνει όταν έρθει η σειρά της
Ομαδική επεξεργασία
Ιστορικό Λειτουργικών Συστημάτων Μειονεκτήματα Ομαδικής Επεξεργασίας Χειριστής – μεσάζων μεταξύ χρήστη κ υπολογιστή Αδυναμία αλληλεπίδρασης μεταξύ χρήστη και υπολογιστή Αποδεκτή για εφαρμογές χωρίς ανάγκη αλληλεπίδρασης με χρήστη, όπου τα δεδομένα και οι αποφάσεις επεξεργασίας καθορίζονται από πριν π.χ. μισθοδοσία Μη αποδεκτή για εφαρμογές που απαιτούν αλληλεπίδραση με το χρήστη, π.χ.: κρατήσεις θέσεων, επεξεργασία κειμένου, παιχνίδια
Υποστηρίζουν αλληλεπιδραστική επεξεργασία Ιστορικό Λειτουργικών Συστημάτων Ανάπτυξη νέων λειτουργικών συστημάτων (1/2) Υποστηρίζουν αλληλεπιδραστική επεξεργασία Διάλογος με χρήστη μέσω απομακρυσμένων τερματικών ή σταθμών εργασίας Τερματικά -> εξελίχθηκαν σε workstations και PC
Αλληλεπιδραστική επεξεργασία
Ιστορικό Λειτουργικών Συστημάτων Ανάπτυξη νέων λειτουργικών συστημάτων (2/2) Τα λειτουργικά συστήματα που υποστηρίζουν αλληλεπιδραστική επεξεργασία εκτελούν γρήγορα τις ενέργειες του υπολογιστή και συντονίζονται με τις ανάγκες του χρήστη Ο υπολογιστής εκτελεί εργασίες κάτω από προθεσμίες αντι να συμμορφώνεται ο χρήστης με το χρονοδιάγραμμα της μηχανής Επεξεργασία Πραγματικού Χρόνου (Real time processing): Οι εργασίες εκτελούνται σε πραγματικό χρόνο δηλαδή μέσα από καθορισμένες προθεσμίες από το περιβάλλον του υπολογιστή (πραγματικός κόσμος)
Ιστορικό Λειτουργικών Συστημάτων Ανάγκη εξυπηρέτησης πολλών χρηστών Αν το λειτουργικό εκτελεί μια εργασία κάθε φορά, μόνο ένας χρήστης λαμβάνει ικανοποιητικές υπηρεσίες πραγματικού χρόνου Λύση: Χρονομερισμός (time sharing) μέσω πολυπρογραμματισμού Διαίρεση του χρόνου σε χρονοθυρίδες Εκτέλεση εργασίας σε μια χρονοθυρίδα τη φορά Γρήγορη εναλλαγή εργασιών εμπρός και πίσω -> ψευδαίσθηση ταυτόχρονης εκτέλεσης πολλών εργασιών Τα πρώτα χρονομεριστικά συστήματα, εξυπηρετούσαν μέχρι και 30 χρήστες ταυτόχρονα
Ιστορικό Λειτουργικών Συστημάτων Ανάγκη εξυπηρέτησης πολλών χρηστών Τεχνικές πολυπρογραμματισμού χρησιμοποιούνται και σε μονοχρηστικά και σε πολυ χρηστικά συστήματα. Χρονομερισμός (Time Sharing) vs. Πολυδιεργασία (Multi-tasking) Πολυχρηστικά, χρονομεριστικά συστήματα παραμερίζουν την ανάγκη χειριστή ως μεσάζοντα -> νέος ρόλος: διαχειριστής συστήματος
Ιστορικό Λειτουργικών Συστημάτων Ανάγκη εξυπηρέτησης πολλών χρηστών Πολυχρηστικά, χρονομεριστικά συστήματα – συνήθης διευθέτηση: ένας μεγάλος κεντρικός Η/Υ με πολλούς σταθμούς εργασίας. Άμεση επικοινωνία των χρηστών με τον υπολογιστή παραμερίζουν την ανάγκη χειριστή ως μεσάζοντα -> νέος ρόλος: διαχειριστής συστήματος
Ιστορικό Λειτουργικών Συστημάτων Ρόλος Διαχειριστή Συστήματος Δεν περιλαμβάνει χειρισμό Η/Υ για εξυπηρέτηση τακτικών αιτημάτων χρηστών. Περιλαμβάνει Επίβλεψη και διεκπεραίωση εγκατάστασης νέου εξοπλισμού και λογισμικού Επιβολή τοπικών κανονισμών Π.χ. Δημιουργία νέων λογαριασμών, όρια αποθηκευτικού χρόνου, άδειες πρόσβασης σε αρχεία και προγράμματα Συντονισμό προσπαθειών για επίλυση προβλημάτων στο σύστημα
Ιστορικό Λειτουργικών Συστημάτων Περίληψη της εξέλιξης τους Από απλά προγράμματα Που ανακτούσαν και εκτελούσαν ένα πρόγραμμα τη φορά Σε σύνθετα συστήματα που Συντονίζουν τον χρονομερισμό Διατηρούν προγράμματα και αρχεία σε συσκευές μαζικής αποθήκευσης της μηχανής Ανταποκρίνονται άμεσα σε αιτήματα των χρηστών Η εξέλιξή τους συνεχίζεται
Ιστορικό Λειτουργικών Συστημάτων Λειτουργικά για Πολυεπεξεργαστικές Μηχανές και Δίκτυα Δυνατότητες Χρονομερισμού και Πολυδιεργασίας μέσω Ανάθεσης εργασίας σε πάνω από έναν επεξεργαστές και διαμοιρασμός χρόνου σε κάθε επεξεργαστή Εξισορρόπηση φόρτου (load balancing) δυναμική κατανομή σε όλους τους επεξεργαστές για αποδοτική χρήση τους Κλιμάκωση (scaling) διάσπαση εργασιών σ’ ένα αριθμό υπο-εργασιών συμβατό με το πλήθος των διαθέσιμων επεξεργαστών Δίκτυα Υπολογιστών ανάγκη για ανάπτυξη ενιαίου λειτουργικού που συντονίζει τις δραστηριότητες του δικτύου αντί για ένα δίκτυο μεμονωμένων λειτουργικών συστημάτων
Κατευθύνσεις Έρευνας στα Λειτουργικά Συστήματα Κατευθύνσεις Έρευνας στα Λειτουργικά Συστήματα Λειτουργικά για υπολογιστές με πολλούς επεξεργαστές Εξισορρόπηση φόρτου Κλιμάκωση Λειτουργικά συστήματα για δίκτυα υπολογιστών Λειτουργικά για μικρούς φορητούς υπολογιστές όπως PDA, tablet computers (ιδιαίτερες απαιτήσεις αποθήκευσης και εξοικονόμησης ισχύος) VxWorks από την Wind River Systems για τα οχήματα Spirit και Opportunity για την εξερεύνηση του πλανήτη Άρη Android για smartphones και tablet computers. Βασίζεται στο Linux (από Open Handset Alliance led by Google) Windows CE ή Pocket PC (από Microsoft) Palm OS (από PalmSοurce, Inc) αναπτύχθηκε ειδικά για χρήση σε PDA
Αρχιτεκτονική Λειτουργικών Συστημάτων
Αρχιτεκτονική Λειτουργικών Συστημάτων Για την κατανόηση της σύνθεσης ενός Λ.Σ. θα εξετάσουμε πρώτα όλο το φάσμα λογισμικού σ’ έναν υπολογιστή, παρουσιάζοντας έναν τρόπο ταξινόμησής του και μετά θα επικεντρωθούμε στο Λ.Σ.
Κατηγορίες λογισμικού (1/2) Λογισμικό εφαρμογών Προγράμματα που αξιοποιούν τον Η/Υ και εκτελούν συγκεκριμένες εργασίες για τους χρήστες Διαφορετικό για κάθε υπολογιστικό σύστημα ανάλογα με τις ανάγκες των χρηστών Λογισμικό συστήματος Εκτελεί λειτουργίες κοινές για όλα τα υπολογιστικά συστήματα Παρέχει την υποδομή για το λογισμικό εφαρμογών
Κατηγορίες λογισμικού (2/2)
Στοιχεία Λειτουργικού Συστήματος Φλοιός ή Κέλυφος: Διασύνδεση του πυρήνα του Λ.Σ. με τους χρήστες μπορεί να έχει διαφορετικές μορφές ανάλογα με τις ανάγκες των χρηστών Πυρήνας: Περιέχει λογισμικό για τις βασικές απαιτούμενες λειτουργίες ενός Η/Υ
Ο φλοιός ως διασύνδεση μεταξύ των χρηστών και του πυρήνα του λειτουργικού συστήματος
Φλοιός ή Κέλυφος (Shell) Διασύνδεση του πυρήνα του Λ.Σ. με τους χρήστες μπορεί να έχει διαφορετικές μορφές ανάλογα με τις ανάγκες των χρηστών. Π.χ. Για το Unix: Φλοιός Bourne, Φλοιός C, Φλοιός Korn H Διασύνδεση με τους χρήστες γίνεται Με διασύνδεση κειμένου Με γραφική διασύνδεση με το χρήστη (GUI ή WIMP) Με τρισδιάστατες διασυνδέσεις, π.χ. αισθητήρες αφής Διαχειριστής Παραθύρων: Σημαντικό συστατικό στους φλοιούς GUI
Πυρήνας (Kernel) Λειτουργικού Συστήματος Περιέχει το απαραίτητο λογισμικό για τις βασικές λειτουργίες ενός υπολογιστικού συστήματος. Παραδείγματα τέτοιου λογισμικού: Διαχειριστής αρχείων Οδηγοί συσκευών Διαχειριστής μνήμης Χρονοπρογραμματιστής και διεκπεραιωτής
Διαχειριστής Αρχείων Συντονίζει τη χρήση λειτουργιών μαζικής αποθήκευσης Καταγραφή όλων των αρχείων σ’ ένα συγκεκριμένο μέσο αποθήκευσης, τη θέση τους, τους χρήστες που έχουν πρόσβαση, τα διαθέσιμα τμήματα για νέα αρχεία Διατηρούνται στο μέσο αποθήκευσης που έχει τα αρχεία. Όταν γίνεται διαθέσιμο, ο Δ.Α. μπορεί να τα ανακτήσει και να τα δει Κατάλογος (ή Φάκελος): Μια δημιουργούμενη από το χρήστη ομαδοποίηση αρχείων και άλλων καταλόγων (υποκαταλόγων) συμφωνα με το σκοπό τους Διαδρομή καταλόγου: Μια ακολουθία από καταλόγους μέσα σε καταλόγους (π.χ. Path: /Users/Aphro/Documents/Courses/Introduction to CS/Chapter3.pptx Επιβλέπει πρόσβαση σε αρχεία από οποιαδήποτε άλλη μονάδα λογισμικού: αίτηση για παραχώρηση πρόσβασης -> άνοιγμα του αρχείου
Οδηγοί Συσκευών Device Drivers Λογισμικό που επικοινωνεί με τους ελεγκτές ή απ’ ευθείας με τις περιφερειακές συσκευές του υπολογιστή Ειδικά σχεδιασμένο για συγκεκριμένο τύπο συσκευής (π.χ. Οθόνη, εκτυπωτής) Μεταφράζει γενικές απαιτήσεις σε πιο τεχνικά βήματα Επιτρέπουν το σχεδιασμό των άλλων μονάδων λογισμικού ανεξάρτητα από τα ειδικά χαρακτηριστικά συγκεκριμένων συσκευών Αποτέλεσμα: Γενικό λειτουργικό σύστημα που προσαρμόζεται για συγκεκριμένες περιφερειακές συσκευές με απλή εγκατάσταση κατάλληλων οδηγών
Διαχειριστής Μνήμης (1/2) Memory Manager Συντονίζει τη χρήση της κύριας μνήμης του υπολογιστή Περιορισμένα καθήκοντα όταν εκτελείται μια εργασία τη φορά Εκτεταμένα καθήκοντα σε πολυδιεργασιακά και πολυχρηστικά συστήματα Πολυδιεργασιακά/Πολυχρηστικά συστήματα Διατήρηση στην κύρια μνήμη πολλών προγραμμάτων και δεδομένων μνήμη Ο Δ.Μ. εκχωρεί χώρο μνήμης και εξασφαλίζει ότι οι ενέργειες κάθε προγράμματος περιορίζονται στο χώρο που του έχει παραχωρηθεί Ο Δ.Μ. παρακολουθεί την εξέλιξη των εργασιών και τις περιοχές μνήμης που δεν είναι πλέον κατειλημμένες
Διαχειριστής Μνήμης (2/2) Σελιδοποίηση και Εικονική Μνήμη Όταν η συνολική απαιτούμενη μνήμη υπερβαίνει αυτή του υπολογιστή χρησιμοποιείται σελιδοποίηση (paging) Ψευδαίσθηση μεγαλύτερης ποσότητας μνήμης (π.χ. 1024 ΜΒ ενώ η πραγματική είναι 512 ΜΒ) με δέσμευση 1024 ΜΒ στον μαγνητικό δίσκο όπου καταγράφει τα μπιτς που θα αποθηκεύονταν στην κύρια μνήμη αν είχε 1024 ΜΒ Διαίρεση των δεδομένων ομοιόρμοφο μέγεθος μερικών KB: σελίδες (pages) Αντιμετάθεση αυτών των σελίδων μεταξύ κύριας μνήμης και δίσκου εξασφαλίζοντας ότι οι απαιτούμενες κάθε φορά σελίδες βρίσκονται στη μνήμη Εικονική μνήμη (Virtual Memory) Είναι η ψευδαίσθηση του μεγάλου χώρου μνήμης που δημιουργείται από τη σελιδοποίηση
Χρονοπρογραμματιστής και Διεκπεραιωτής Σε πολυπρογραμματιστικά συστήματα Χρονοπρογραμματιστής (Scheduler) Προσδιορίζει τις δραστηριότητες προς εκτέλεση Διεκπεραιωτής (Dispatcher) Ελέγχει την κατανομή του χρόνου σε αυτές τις δραστηριότητες
Η διαδικασία εκκίνησης (1/3) Διαδικασία Εκκίνησης -> boot strapping, booting: εκτελείται κάθε φορά που ο υπολογιστής τίθεται σε λειτουργία Το λειτουργικό μεταφέρεται από το μέσο αποθήκευσης στην κύρια μνήμη (που είναι κενή κατά την εκκίνηση) Η ΚΜΕ έχει έναν μετρητή προγράμματος με μια συγκεκριμένη προκαθορισμένη διεύθυνση μνήμης που περιμένει να βρει την αρχή του προγράμματος προς εκτέλεση Η κύρια μνήμη κατασκευάζεται με πτητικές τεχνολογίες Ένα μικρό τμήμα της κύριας μνήμης όπου η ΚΜΕ περιμένει να βρει το αρχικό πρόγραμμα κατασκευάζεται από ειδικά κελιά μη πτητικής μνήμης: Read Only Memory (ROM) Στη ROM των υπολογιστών βρίσκεται μόνιμα αποθηκευμένο ένα πρόγραμμα που ονομάζεται ρουτίνα εκκίνησης (bootstrap) και εκτελείται όταν ανάβει ο υπολογιστής Κατευθύνει την ΚΜΕ να μεταφέρει το λειτουργικό από το μέσο αποθήκευσης στην Κ.Μ. Μόλις φορτωθεί το λειτουργικό, το πρόγραμμα εκκίνησης κατευθύνει την ΚΜΕ να εκτελέσει μιά εντολή μετάβασης (JUMP) στη συγκεκριμένη περιοχή Υλικολογισμικό (Firmware): λογισμικό αποθηκευμένο σε ROM, δηλ. μόνιμα καταγεγραμμένο σε υλικό
Η διαδικασία εκκίνησης (2/3)
Η διαδικασία εκκίνησης (3/3) Μετά την εκκίνηση ο χρήστης κάνει αιτήσεις στο λειτουργικό για την εκτέλεση διαφόρων βοηθητικών προγραμμάτων ή προγραμμάτων εφαρμογών Απαιτείται εκμάθηση από το χρήστη του συγκεκριμένου βοηθητικού προγράμματος ή εφαρμογής του λειτουργικού για περιήγηση μεταξύ των εφαρμογών Συστήματα «Με το κλειδί στο χέρι» (turn key systems) Το λογισμικό τους είναι μόνιμα αποθηκευμένο στην κύρια μνήμη τους
ΒΙΟS (Basic Input-Output System) Βρίσκεται στη ROM ενός προσωπικού υπολογιστή μαζί με το πρόγραμμα εκκίνησης (bootstrap) Περιέχει συλλογή ρουτινών για εκτέλεση στοιχειωδών δραστηριοτήτων εισόδου – εξόδου, π.χ. λήψη πληροφοριών από το πληκτρολόγιο, εμφάνιση μηνυμάτων στην οθόνη του υπολογιστή, ανάγνωση δεδομένων από μέσα αποθήκευσης Οι ρουτίνες αυτές χρησιμοποιούνται από το πρόγραμμα εκκίνησης για δραστηριότητες Ε/Ε πριν το κανονικό ξεκίνημα του λειτουργικού π.χ. για επικοινωνία με το χρήστη ή για αναφορά σφαλμάτων κατά τη διάρκεια εκκίνησης
Ο όρος ΒΙΟS Στην πραγματικότητα αναφέρεται μόνο σε ένα μέρος της ROM ενός υπολογιστή Παρ όλα αυτά χρησιμοποιείται ευρέως ως αναφορά για όλο το λογισμικό που είναι στην ROM ή και για την ίδια τη ROM
Ευχαριστώ για την προσοχή σας! Ευχαριστώ για την προσοχή σας!