ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ
ΘΕΩΡΙΑ
2: Ιστορία και τύποι Λειτουργικών Συστημάτων
- Προϊστορία:
oΣτην πρώτη περίοδο των ηλεκτρονικών υπολογιστών (περίπου από το 1945 ως το 1960) δεν υπήρχαν λειτουργικά συστήματα. Κάθε πρόγραμμα έπρεπε να γνωρίζει πλήρως πώς να χειρίζεται το υποκείμενο υλικό με άμεσες και αδιαμεσολάβητες εντολές προς αυτό.
oΑυτό αρχικώς δεν συνιστούσε σπουδαίο πρόβλημα. Οι υπολογιστές τότε ήταν τεράστιοι σε μέγεθος, δύσχρηστοι, πανάκριβοι, ελάχιστοι και προγραμματίζονταν από εξαιρετικά εξειδικευμένο προσωπικό σε συμβολική γλώσσα. Το εκάστοτε λογισμικό ήταν στενά συσχετισμένο με τη συγκεκριμένη μηχανή για την οποία είχε συγγραφεί και δεν υπήρχε καμία συμβατότητα μεταξύ των περισσότερων υπολογιστών.
oΜε τον καιρό ωστόσο εμφανίστηκαν γλώσσες προγραμματισμού υψηλού επιπέδου και ανάλογοι μεταγλωττιστές (π.χ. η LISP, η Cobol και η Fortran στο δεύτερο ήμισυ της δεκαετίας του 1950). Οι υπολογιστές άρχισαν να διεισδύουν ευρύτερα στις μεγάλες επιχειρήσεις, πέρα από στενά επιστημονικούς σκοπούς. Έτσι ως το 1960 είχε καθιερωθεί το υποστηρικτικό λογισμικό συστήματος, ανεξάρτητα από τις εφαρμογές χρήστη: μεταγλωττιστές, βιβλιοθήκες, συμβολομεταφραστές κλπ.
oΣτη συνέχεια διαδόθηκαν οι λειτουργοί ή χειριστές (operators): ειδικευμένοι άνθρωποι-χειριστές οι οποίοι τοποθετούσαν προς εκτέλεση με την ορθή σειρά τα προγράμματα των χρηστών και διασφάλιζαν την ασφαλή αξιοποίηση των υπολογιστικών πόρων και των περιφερειακών συσκευών (π.χ. εκτυπωτών). Αυτό δεν ήταν επίπονη εργασία, καθώς εκείνη την εποχή οι περισσότερες εφαρμογές απλώς επεξεργάζονταν επί μεγάλο χρονικό διάστημα κάποια δεδομένα εισόδου προκειμένου να παράγουν κάποια δεδομένα εξόδου, χωρίς καμία αλληλεπίδραση με τους χρήστες. Ήταν επομένως, σύμφωνα με την ορολογία, «υπολογιστικώς φραγμένα προγράμματα» και όχι «φραγμένα λόγω Εισόδου / Εξόδου»: τα προγράμματα των χρηστών εκτελούνταν απλώς με τη σειρά και διαδοχικά, χωρίς να ζητούν ποτέ χειροκίνητα είσοδο κατά τον χρόνο της εκτέλεσής τους («επεξεργασία δέσμης»).
oΠολύ γρήγορα έγινε αντιληπτό ότι η δραστηριότητα των λειτουργών ήταν δυνατόν να αυτοματοποιηθεί προκειμένου να γίνει πιο αποδοτική και επιτυχημένη, με ένα απλό λογισμικό συστήματος το οποίο θα εκτελούνταν μονίμως στο υπόβαθρο με τη βοήθεια ειδικευμένων βιβλιοθηκών χρόνου εκτέλεσης. Αυτή ήταν η πιο πρώιμη εκδοχή ενός πυρήνα λειτουργικού συστήματος: επρόκειτο για υποστηρικτικά προγράμματα διαχείρισης των υπολογιστικών πόρων, τα οποία διέφεραν τελείως από υπολογιστή σε υπολογιστή – ακόμα και του ίδιου κατασκευαστή – και ήταν πλήρως ασύμβατα μεταξύ τους. Σε αυτή τη φάση το λογισμικό, τόσο συστήματος όσο και χρήστη, ήταν κατά κανόνα δωρεάν διαθέσιμο και «ανοιχτό», δηλαδή ο πηγαίος κώδικας ήταν πάντα διαθέσιμος για όποιον ενδιαφέροταν να τον αναλύσει.
- Εξέλιξη:
oΤο 1964 η εταιρεία IBM παρουσίασε τη νέα της σειρά υπολογιστών «System/360», τα διάφορα μοντέλα της οποίας χαρακτηρίζονταν από διαφορετικές δυνατότητες και κόστος, αλλά οι επεξεργαστές τους είχαν κοινή αρχιτεκτονική, κοινό υποστηριζόμενο σύνολο εντολών και ίδια υποσυστήματα Εισόδου / Εξόδου. Στόχος ήταν να εκτελούν ένα κοινό λειτουργικό σύστημα: το OS/360.
oΤελικά, ύστερα από απανωτές καθυστερήσεις και αποτυχίες τις οποίες ο μηχανικός λογισμικού της IBM Φρεντ Μπρουκς θα καταγράψει αργότερα (το 1975) στο θρυλικό βιβλίο του «Ο μυθικός ανθρωπομήνας» (The Mythical Mon-Month), η σειρά System/360 κυκλοφόρησε με μία οικογένεια διαφορετικών αλλά συμβατών λειτουργικών συστημάτων για τα διαφορετικά μοντέλα. Οι ποικίλες παραλλαγές του OS/360 χαρακτηρίζονταν από σημαντικές καινοτομίες.
oΆλλες εταιρίες υπολογιστών κυκλοφόρησαν ανταγωνιστικές μηχανές και ΛΣ για τους μεγάλους, κεντρικούς υπολογιστές (mainframes) της εποχής καθ’ όλη τη δεκαετία του 1960.
oΓρήγορα, χάρη στη μεγάλη βελτίωση των επιδόσεων του διαθέσιμου υλικού, ήρθαν στο προσκήνιο λειτουργικά συστήματα πολυχρηστικά (multi-user) και πολυπρογραμματιστικά (multiprogramming) ή χρονομεριστικά (time-sharing): οι εν λόγω όροι αφορούσαν ΛΣ τα οποία εκτελούνταν σε κεντρικούς υπολογιστές αλλά υποστήριζαν ταυτοχρόνως πολλαπλούς χρήστες μέσω απομακρυσμένων τερματικών (συνήθως τίποτα περισσότερο από μία οθόνη κι ένα τηλεφωνικό καλώδιο), συνδεδεμένων στον μεγάλο υπολογιστή. Οι χρήστες αυτοί μπορούσαν να εκτελούν ο καθένας τη δική του εργασία την ίδια στιγμή με τους άλλους στον έναν διαθέσιμο επεξεργαστή, αρκεί το κάθε πρόγραμμα να απελευθέρωνε ρητά μέσω του κώδικά του τη CPU σε τακτά, μικρά χρονικά διαστήματα και να πάγωνε προσωρινά, ώστε να μπορέσουν να εκτελεστούν για κάποιο χρόνο και τα προγράμματα των άλλων χρηστών. Έτσι κάθε χρήστης αντιλαμβανόταν πως είχε στην απόλυτη διάθεσή του έναν προσωπικό, αλλά όχι τόσο γρήγορο υπολογιστή. Η ίδια εναλλαγή εκτελούμενου προγράμματος συνέβαινε αυτόματα και όταν η τρέχουσα εφαρμογή σταματούσε αναμένοντας κάποια δεδομένα εισόδου προκειμένου να συνεχίσει (π.χ. από το πληκτρολόγιο), σε περίπτωση προγραμμάτων φραγμένων λόγω Εισόδου / Εξόδου.
oΗ συνεπαγόμενη δυνατότητα της ταυτόχρονης εκτέλεσης πολλαπλών προγραμμάτων με έναν μόνο επεξεργαστή, όπου ο χρόνος του τελευταίου διαμοιράζεται και εναλλάσσεται ταχύτατα και διαφανώς για τους χρήστες μεταξύ διαφορετικών εφαρμογών, ονομάζεται σήμερα ψευδοπαραλληλισμός ή ψευδοπαραλληλία. Τα πολυχρηστικά συστήματα πολυπρογραμματισμού / χρονομερισμού της δεκαετίας του 1960 ήταν τα πρώτα λειτουργικά συστήματα τα οποία υποστήριζαν ψευδοπαραλληλισμό. Η εξέλιξη αυτή συνεισέφερε στην ωρίμανση των ΛΣ και πλέον, ως το 1970, το λογισμικό είχε αρχίσει να εμπορευματοποιείται και η κατασκευή του να διαμορφώνεται σε πραγματική αγορά και βιομηχανία. Ως αποτέλεσμα σταδιακά έπαψε να διατίθεται δωρεάν και να είναι ανοιχτό.
oΤο 1969 στα εργαστήρια της εταιρείας Bell κατασκευάστηκε η γλώσσα προγραμματισμού C (από τους Ντένις Ρίτσι και Μπράιαν Κέρνιγχαν) και ένας πρότυπος μεταγλωττιστής της, μαζί με συνοδευτικές βιβλιοθήκες. Η γλώσσα αποτελούσε διάδοχο του δοκιμαστικού προγόνου της, ονόματι B. Στόχος ήταν να γραφεί σε αυτήν – αντί για συμβολική γλώσσα χαμηλού επιπέδου, όπως συνηθιζόταν – το νέο πολυχρηστικό λειτουργικό σύστημα της εταιρείας ονόματι Unix, διάδοχος του προγενέστερου, καινοτόμου αλλά προβληματικού Multics.
oΤο καινούργιο ΛΣ όχι μόνο διέθετε ένα προτυποποιημένο σύνολο κλήσεων συστήματος, αλλά και ένα προτυποποιημένο κέλυφος γραμμής εντολών. Tα πρότυπα αυτά, θεμελιώδη για τον ορισμό του Unix, ύστερα από πολύ καιρό (το 1988) θα τυποποιηθούν και θα ονομαστούν POSIX. Επικεφαλείς της ανάπτυξης του αρχικού Unix ήταν ο Ρίτσι, ο Κέρνιγχαν και ο Κεν Τόμπσον: η εκ νέου συγγραφή του ΛΣ σε C έγινε τελικά πραγματικότητα το 1972.
oΕφόσον ο μεταγλωττιστής και οι βιβλιοθήκες της C είχαν γραφεί σε πολλαπλές εκδοχές για να υποστηρίζουν υπολογιστές διαφορετικής αρχιτεκτονικής, το Unix ήταν πλέον δυνατόν να μεταφερθεί σε εκδόσεις για μεγάλη ποικιλία υπολογιστών με μία απλή επαναμεταγλώττιση του πηγαίου του κώδικα!
- Μικροϋπολογιστές:
oΤόσο η C όσο και το Unix, στενά συνυφασμένες έννοιες αρχικά, εξαπλώθηκαν πολύ γρήγορα σε ποικιλία παραλλαγών, καθώς η διάθεσή τους ήταν εύκολη ή δωρεάν για μεγάλο χρονικό διάστημα, η φορητότητά τους μεταξύ διαφορετικών υπολογιστικών αρχιτεκτονικών απαράμιλλη και οι δυνατότητές τους πολύ μεγάλες. Μέχρι τα τέλη της δεκαετίας του 1970 μία εκδοχή του Unix υπήρχε σχεδόν για κάθε υπολογιστή, τόσο στον ακαδημαϊκό όσο και στον εμπορικό κόσμο! Ακόμα και η κυβέρνηση των ΗΠΑ στηριζόταν πλέον στο εν λόγω ΛΣ. Λόγω του υψηλού επιπέδου φορητότητας και προτυποποίησης, σε μία τυπική περίπτωση, ένα πρόγραμμα για Unix δεν χρειαζόταν παρά επαναμεταγλώττιση (όχι αλλαγές στον πηγαίο κώδικα) για να μπορεί να εκτελείται σε άλλον τύπο υπολογιστή, ακόμα και αν ο κώδικας προέβαινε ρητά σε κλήσεις συστήματος.
oΚατά τη δεκαετία του 1970 το Unix επηρέασε πολύπλευρα την ανάπτυξη των ΛΣ και βοήθησε στην εξάπλωση των ιεραρχικών συστημάτων αρχείων, των δικτύων υπολογιστών και θεμελιωδών εννοιών, όπως οι διεργασίες και η διαδιεργασιακή επικοινωνία. Το σημερινό Διαδίκτυο (Internet) οφείλει τη βασική του μορφή στο Unix της δεκαετίας του ’70. Ακόμα, το Unix της περιόδου, σε ορισμένες περιπτώσεις δωρεάν διαθέσιμο από κοινού με τον πηγαίο του κώδικα λόγω νομικών κωλυμάτων, αποτέλεσε μία από τις ρίζες του κατοπινού «κινήματος ελεύθερου λογισμικού»: μίας ιδεολογικής κίνησης η οποία υποστηρίζει πως η ανάπτυξη λογισμικού πρέπει να είναι ανοιχτή, συνεργατική και εθελοντική, ενώ η διανομή του λογισμικού πρέπει να είναι δωρεάν και χωρίς περιορισμούς, με τη συνοδεία του πηγαίου κώδικα ώστε να είναι εφικτή η ανάλυση και βελτίωση των προγραμμάτων από άλλους, κατά την παράδοση που είχε σχηματιστεί και επικρατήσει στις δεκαετίες του 1950 και '60.
oΧάρη στις τεχνολογικές εξελίξεις, πέρα από τους ακριβούς και γιγάντιους κεντρικούς υπολογιστές, κατά το πρώτο ήμισυ της δεκαετίας του '70 εμφανίστηκαν και μικροϋπολογιστές περιορισμένων δυνατοτήτων και ταχύτητας. Αυτοί ήταν υπολογιστικές μηχανές οι οποίες χωρούσαν σε ένα γραφείο και μπορούσαν να χρησιμοποιούνται ατομικά από έναν μόνο χρήστη.
oΤο Unix εμφανίστηκε σε εκδόσεις και για μικροϋπολογιστές, αλλά πιο απλοϊκά ΛΣ επικράτησαν τελικά σε αυτόν τον χώρο λόγω των περιορισμών ταχύτητας του υλικού: το CP/M (Control Program for Microcomputers) και, κατόπιν, το DOS (Disk Operating System). Αυτά επίσης διέθεταν γραμμή εντολών – επηρεασμένη αλλά διαφορετική από το πρότυπο κέλυφος του Unix –, μα δεν υποστήριζαν πολυπρογραμματισμό ή πολυχρηστικότητα, ενώ τα σύνολα κλήσεων συστήματος και οι μηχανισμοί τους ήταν τελείως ασύμβατα με τα αντίστοιχα των διαφόρων παραλλαγών του Unix.
oΤαυτόχρονα ο όρος «πολυπρογραμματισμός» άρχισε να αντικαθίσταται από τον όρο πολυδιεργασία (multitasking), όταν τα ΛΣ έγιναν ικανά να παγώνουν ενεργά και με δική τους πρωτοβουλία μία εκτελούμενη εφαρμογή προκειμένου να αναθέσουν για κάποιο χρονικό διάστημα τον επεξεργαστή σε άλλο πρόγραμμα. Η πολυδιεργασία επίσης διαχωρίστηκε από την πολυχρηστικότητα: οι διαφορετικές εφαρμογές που εκτελούνται ψευδοπαράλληλα είναι δυνατόν να έχουν εκκινηθεί από τον ίδιο χρήστη.
oΩς τα μέσα της δεκαετίας του 1980, αρχικά από τον χώρο των μικροϋπολογιστών, είχαν ήδη εμφανιστεί κελύφη λειτουργικών συστημάτων με γραφική διασύνδεση χρήστη (Graphical User Interface, GUI) αντί για γραμμές εντολών. Σημαντική για την ανάπτυξη των GUI υπήρξε η έρευνα της εταιρείας Xerox καθ’ όλη την προηγούμενη δεκαετία στο ερευνητικό της κέντρο του Πάλο Άλτο των ΗΠΑ (Xerox PARC), αλλά εκείνη η έρευνα έμεινε ουσιαστικά αναξιοποίητη. Πρωτοπόρα υπήρξε η εταιρεία Apple με τους υπολογιστές «Macintosh» του 1984 και το γραφικό τους περιβάλλον, αλλά τελικά το μεγαλύτερο μερίδιο αγοράς στον χώρο των μικροϋπολογιστών απέκτησαν τα λεγόμενα «PC» της IBM, με επεξεργαστές αρχιτεκτονικής x86 από την εταιρεία Intel και συνηθέστερο λειτουργικό σύστημα το MS-DOS – συνοδευόμενο από παραδοσιακό κέλυφος γραμμής εντολών – της εταιρείας Microsoft. Παράλληλα οι επιδόσεις και οι δυνατότητες των PC άρχισαν να αυξάνονται αλματωδώς κάθε έτος κατά το δεύτερο ήμισυ της δεκαετίας του ’80, χωρίς βέβαια να πλησιάζουν ακόμα τους πανίσχυρους, παραδοσιακούς, κεντρικούς υπολογιστές.
oΗ Microsoft κατασκεύασε τα Windows με σκοπό να αντικαταστήσουν σταδιακά το DOS στην τεράστια αγορά των PC, η οποία είχε επικρατήσει σχεδόν πλήρως στους μικροϋπολογιστές ως το 1990 λόγω της πρωτοποριακής «ανοιχτής αρχιτεκτονικής» της: οποιοσδήποτε μπορούσε να συναρμολογήσει ένα PC με τα κατάλληλα εξαρτήματα, ή να κατασκευάσει τέτοια εξαρτήματα, χωρίς να χρειάζεται να πληρώσει δικαιώματα στην IBM. Τα Windows γρήγορα ενσωμάτωσαν ιδέες από το MacOS της Apple αλλά και από τις διάφορες εκδοχές του Unix, όμως μόλις το 1995 απέκτησαν πραγματική υπόσταση ως διακριτό λειτουργικό σύστημα. Οι παλαιότερες εκδόσεις δεν ήταν παρά ένα πολυσύνθετο γραφικό κέλυφος εκτελούμενο πάνω από το MS-DOS.
oΚατά τη δεκαετία του 1980 το Unix είχε πλέον διασπαστεί σε δύο βασικές οικογένειες παραλλαγών, ασύμβατες σε έναν βαθμό μεταξύ τους (το BSD και το System V). Εμπορικές, επί πληρωμή εκδοχές του Unix κυκλοφόρησαν με κάποια επιτυχία από μεγάλες εταιρείες, κατασκευασμένες ειδικά για ακριβούς, ισχυρούς και «κλειστής αρχιτεκτονικής» μικροϋπολογιστές των τελευταίων («σταθμοί εργασίας»): το Solaris της εταιρείας Sun, το HP-Unix της Hewlett Packard, το AIX της IBM και το Irix της Silicon Graphics. Αυτή η πολυδιάσπαση της οικογένειας ΛΣ του Unix οδήγησε σε αυξημένες πιέσεις για αυστηρή και οριστική προτυποποίηση των κλήσεων συστήματος, του κελύφους γραμμής εντολών και βασικών βιβλιοθηκών και εργαλείων, ώστε να επιτευχθεί η όσο το δυνατόν πληρέστερη συμβατότητα. Έτσι ανακοινώθηκε το πρότυπο POSIX που προαναφέρθηκε (1988).
oΟι σταθμοί εργασίας τέτοιου τύπου, καθώς και ανίσχυροι οικιακοί υπολογιστές με έμφαση στα παιχνίδια και σε πρώιμες εφαρμογές πολυμέσων στο άλλο άκρο (π.χ. Amiga, Commodore, Atari κλπ), απέτυχαν τελικά να αποκτήσουν μεγάλο μερίδιο αγοράς, ενώ οι Macintosh της Apple περιορίστηκαν περίπου στο 10% των πωλήσεων μικροϋπολογιστών. Τα PC – και μαζί τους οι επεξεργαστές x86 της Intel και τα ΛΣ της Microsoft – μεσουρανούσαν πλέον ως το 1990. Κατά την επόμενη δεκαετία κατασκευάστηκαν νέες παραλλαγές του Unix, στοχευμένες ειδικά για τα PC και συνήθως ελεύθερο λογισμικό, με δημοφιλέστερες το Linux και το FreeBSD. Παρά τη διάδοσή τους δεν έχουν καταφέρει να εκτοπίσουν τα Windows της Microsoft από την πρώτη θέση.
oTo 2001 το MacOS της Apple, με τη δέκατη μείζονα έκδοσή του («MacOS X»), μετατράπηκε ουσιαστικά σε ακόμα μία νέα, μοντέρνα παραλλαγή του Unix, υπερβαίνοντας έτσι τους τεχνολογικούς περιορισμούς του κλασικού MacOS.
- Παραλληλισμός:
oΜε την καθιέρωση κατά τη δεκαετία του 1970 υπολογιστών με πολλαπλούς επεξεργαστές, όπου τα προγράμματα μπορούσαν να εκτελούνται πραγματικά παράλληλα και όχι ψευδοπαράλληλα, προέκυψαν νέα ζητήματα υλικού με αποτέλεσμα να αναδυθεί η παράλληλη επεξεργασία, ένα επιστημονικό πεδίο το οποίο μελετά, τόσο από πλευράς υλικού όσο και λογισμικού, μόνο υπολογιστικά συστήματα με πολλαπλές επεξεργαστικές μονάδες. Τα συστήματα αυτά μπορούν να εκτελούν ορισμένες, κατάλληλα σχεδιασμένες εφαρμογές (συνήθως επιστημονικού σκοπού, π.χ. προσομοιώσεις) ταχύτερα απ' ότι οι συνηθισμένοι σειριακοί υπολογιστές.
oΤην ίδια περίοδο εξελίσσονταν και τα δίκτυα υπολογιστών με αποτέλεσμα, καθώς η δικτύωση άρχισε να είναι πανταχού παρούσα προς τα τέλη της δεκαετίας του 1970, να εμφανιστούν δικτυακά προγράμματα που όχι μόνο αλληλεπιδρούσαν μεταξύ τους μέσω της υποκείμενης δικτυακής υποδομής, αλλά εκτελούσαν από κοινού υπολογισμούς με διαφανή για τον χρήστη τρόπο, διασπώντας τους σε τμήματα και κατανέμοντάς τους μεταξύ τους, ενώ στο εξωτερικό περιβάλλον εμφανίζονταν ως ένα μοναδικό σύστημα. Καθώς αυτός ήταν ένας τύπος παραλληλισμού εμφανίστηκε ο όρος κατανεμημένη επεξεργασία για να τον περιγράψει.
oΗ κατανεμημένη επεξεργασία αποτελεί ένα υποσύνολο της παράλληλης επεξεργασίας, στο οποίο όλες οι CPU έχουν ιδιωτικές, τοπικές μνήμες με ξεχωριστούς χώρους διευθύνσεων (είναι δηλαδή ανεξάρτητοι, δικτυωμένοι υπολογιστές) και παρέχουν στον χρήστη την ψευδαίσθηση του ενιαίου, μοναδικού συστήματος. Ο όρος «κατανεμημένο σύστημα» αναφέρεται τόσο στο υλικό (επεξεργαστές, μνήμες, δίκτυο) όσο και στο λογισμικό (λειτουργικό σύστημα, εφαρμογές) που είναι απαραίτητα για να υλοποιηθούν η κατανομή και αυτή η ψευδαίσθηση, με έμφαση όμως στο λογισμικό.
oΣτα κατανεμημένα συστήματα, σε αντίθεση με τα παράλληλα, η εικόνα συνεκτικότητας των γεωγραφικά διεσπαρμένων πόρων είναι συνήθως σπουδαιότερος στόχος από την αύξηση των υπολογιστικών επιδόσεων που επιτυγχάνεται με τον παραλληλισμό. Δεν είναι σπάνιο μάλιστα να μη συμμετέχουν καν οι κόμβοι σε κάποιον από κοινού υπολογισμό αλλά να εκτελούν διαφορετικές επιμέρους εργασίες, παρουσιαζόμενοι όμως στο εξωτερικό περιβάλλον (π.χ. σε πελάτες οι οποίοι ζητούν υπηρεσίες) ως ενιαίο σύστημα. Αυτά ονομάζονται μη συνεκτικά κατανεμημένα συστήματα (π.χ. ο Παγκόσμιος Ιστός ή οι ομότιμες εφαρμογές ανταλλαγής αρχείων μέσω Διαδικτύου), σε αντίθεση με τα συνεκτικά κατανεμημένα συστήματα, τα οποία αξιοποιούνται περισσότερο ως συνήθη παράλληλα συστήματα για τη μεγιστοποίηση των υπολογιστικών επιδόσεων.
oΤα παράλληλα συστήματα διακρίνονται σε πολυεπεξεργαστές κοινής μνήμης, όπου πολλαπλοί επεξεργαστές επικοινωνούν με μία κοινή μνήμη ενιαίου χώρου διευθύνσεων, και σε πολυυπολογιστές κατανεμημένης μνήμης, όπου πολλαπλά πακέτα επεξεργαστή-ιδιωτικής μνήμης, με τον δικό του χώρο διευθύνσεων το καθένα, διασυνδέονται και επικοινωνούν μεταξύ τους – η επικοινωνία γίνεται μέσω ενός δικτύου υπολογιστών. Οι πολυυπολογιστές ουσιαστικά αποτελούνται από διαφορετικούς, δικτυωμένους υπολογιστές: αν οι κόμβοι αυτοί είναι ίδιοι μεταξύ τους μιλάμε για ομοιογενείς πολυυπολογιστές, ενώ αν διαφέρουν μιλάμε για ετερογενείς πολυυπολογιστές.
- Τύποι λειτουργικών συστημάτων:
oΑπό τη σκοπιά της κατανεμημένης επεξεργασίας τα λειτουργικά συστήματα διακρίνονται σε συνεκτικά, στα οποία το λογισμικό διατηρεί και εμφανίζει στους χρήστες μία ενιαία καθολική εικόνα των πόρων, και μη συνεκτικά, στα οποία οι κόμβοι είναι θεμελιωδώς ανεξάρτητοι μεταξύ τους και επικοινωνούν σε κάποιον περιορισμένο βαθμό. Έτσι υπάρχουν οι εξής κατηγορίες ΛΣ:
·Κατανεμημένα Λειτουργικά Συστήματα (Distributed Operating System, DOS), τα οποία είναι συνεκτικά ΛΣ για πολυεπεξεργαστές και ομοιογενείς πολυυπολογιστές. Ένα DOS που εκτελείται σε έναν πολυυπολογιστή αποτελεί πραγματικό κατανεμημένο σύστημα.
·Λειτουργικά Συστήματα Δικτύου (Network Operating System, NOS), τα οποία είναι μη συνεκτικά ΛΣ για ετερογενείς πολυυπολογιστές. Τα NOS, στην πράξη τα περισσότερα σύγχρονα λειτουργικά συστήματα, δεν μπορούν να χαρακτηριστούν από μόνα τους κατανεμημένα συστήματα.
·Ενδιάμεσο λογισμικό, το οποίο είναι ένα επίπεδο λογισμικού που μεσολαβεί μεταξύ ενός NOS και μιας εφαρμογής, παρέχοντας στην τελευταία την ψευδαίσθηση ενός DOS και ενός εικονικού ομοιογενούς περιβάλλοντος. Με το ενδιάμεσο λογισμικό είναι εφικτός ο συνδυασμός των πλεονεκτημάτων των DOS και των NOS, ακόμα και σε δίκτυα ευρείας περιοχής με τελείως ανόμοιους κόμβους (π.χ. το Διαδίκτυο).
oΜε βάση τα προηγούμενα, ενδιάμεσο λογισμικό αποτελεί π.χ. μία βιβλιοθήκη η οποία λειτουργεί ως «διαμεσολαβητής» για την εύκολη και διαφανή ανάπτυξη παράλληλων εφαρμογών σε πολυυπολογιστές (π.χ. η βιβλιοθήκη BOINC). Ο προγραμματιστής τέτοιων εφαρμογών χρήστη καλεί στον κώδικά του διαδικασίες που παρέχει η υλοποίηση της βιβλιοθήκης, οι οποίες αποκρύπτουν τις λεπτομέρειες της κατανομής των πόρων και της δικτυακής υποδομής, αυτοματοποιώντας τις επικοινωνίες μεταξύ διαφορετικών υπολογιστών μέσω δικτύου.
oΈνα ενδιάμεσο λογισμικό μπορεί επίσης να μην παρέχεται ως ξεχωριστή βιβλιοθήκη για την υποστήριξη πολλαπλών εφαρμογών, αλλά να είναι ενσωματωμένο σε μία μόνο κατανεμημένη δικτυακή εφαρμογή και βελτιστοποιημένο γι' αυτήν. Αυτό συμβαίνει π.χ. με τις περισσότερες ομότιμες εφαρμογές ανταλλαγής αρχείων μέσω Διαδικτύου (προγράμματα τύπου peer-to-peer, π.χ. το «e-Mule»).
- Τύποι πυρήνων:
oΗ παραδοσιακή προσέγγιση στην κατασκευή του πυρήνα ενός λειτουργικού συστήματος είναι η μονολιθική: όλοι οι μηχανισμοί του ΛΣ περιέχονται πλήρως στον πυρήνα, ως ένα ενιαίο, γιγάντιο κομμάτι κώδικα σε κοινό χώρο μνήμης. Στην ακραία περίπτωση ακόμα και τμήμα του κελύφους περιέχεται στον πυρήνα για λόγους απόδοσης (π.χ. στα Windows).
oΈτσι οι κατασκευαστές του πυρήνα έχουν πλήρη εποπτεία των επιμέρους τμημάτων του κατά τη συγγραφή και αποσφαλμάτωση του κώδικα, ενώ οι απαιτούμενες κλήσεις συστήματος κατά την εκτέλεση των εφαρμογών χρήστη ελαχιστοποιούνται με αποτέλεσμα βελτίωση των επιδόσεων: οι χρονοβόρες εναλλαγές του επεξεργαστή από κατάσταση πυρήνα σε κατάσταση χρήστη αποφεύγονται όσο το δυνατόν περισσότερο.
oΤο μειονέκτημα των μονολιθικών πυρήνων είναι η εκτεταμένη αστάθεια και η αδυναμία συντήρησης του κώδικα. Αν ένα τμήμα λογισμικού του πυρήνα, π.χ. ένας οδηγός συσκευής, δυσλειτουργεί κατά τον χρόνο εκτέλεσης λόγω σφάλματος, τότε είναι πιθανόν να καταρρεύσει όλο το ΛΣ. Με το πέρασμα του χρόνου και ύστερα από απανωτές αναβαθμίσεις, ο κώδικας ενός μονολιθικού πυρήνα γίνεται όλο και πιο δυσανάγνωστος.
oΩς λύση απέναντι σε αυτά τα ζητήματα έχει προβληθεί, από τα μέσα της δεκαετίας του 1980, η προσέγγιση του μικροπυρήνα: μόνον οι απολύτως βασικοί μηχανισμοί του λειτουργικού συστήματος περιέχονται στον πυρήνα. Οι υπόλοιποι (π.χ. η υποστήριξη της δικτύωσης, οι οδηγοί συσκευών, το κέλυφος κλπ) παρέχουν υπηρεσίες στις εφαρμογές από βιβλιοθήκες χρόνου εκτέλεσης τοποθετούμενες στον χώρο του χρήστη. Προκειμένου να προσπελάσουν το υλικό, πρέπει να προβούν σε κλήσεις συστήματος.
oΤο πλεονέκτημα των μικροπυρήνων είναι η ευκολότερη συντήρηση και αποσφαλμάτωση του πυρήνα – αφού το ΛΣ είναι αρθρωτό και αποτελείται από συνεργαζόμενα τμήματα – και η ευελιξία που παρέχουν: εφόσον κάποιες υπηρεσίες βρίσκονται στον χώρο του χρήστη, είναι πολύ πιο εύκολο να τροποποιηθούν από μία εφαρμογή προκειμένου να βελτιστοποιηθεί το σύστημα ως προς τις ανάγκες της. Το κύριο μειονέκτημα των μικροπυρήνων είναι η πτώση στην απόδοση, λόγω των διαρκών κλήσεων συστήματος και των συνεπαγόμενων εναλλαγών μεταξύ πυρήνα και χώρου του χρήστη που πλέον απαιτούνται. Περαιτέρω πτώση των επιδόσεων συμβαίνει επειδή, καθώς τα διάφορα συστατικά του ΛΣ είναι ανεξάρτητα τμήματα με δικό τους χώρο διευθύνσεων μνήμης, για να επικοινωνήσουν και να ανταλλάξουν δεδομένα πρέπει να προβούν αρκετές φορές σε διαδιεργασιακή επικοινωνία, μία επιπρόσθετη πηγή καθυστερήσεων.
oΤα περισσότερα γνωστά λειτουργικά συστήματα είναι μονολιθικά. Ο κύριος αρχιτέκτονας του πυρήνα του Linux, ο Λίνους Τόρβαλντς, στα μέσα της δεκαετίας του 1990 είχε εμπλακεί σε μία διάσημη διένεξη με τον φημισμένο ερευνητή και υποστηρικτή των μικροπυρήνων Άντριου Τάνενμπαουμ, κατασκευαστή μίας ακαδημαϊκής παραλλαγής του Unix για PC ονόματι Minix. Σε σχεδίαση μικροπυρήνα βασίζεται επίσης και το MacOS X.
oΩς προέκταση της λογικής του μικροπυρήνα, υπάρχουν και πιο εξωτικοί σχεδιασμοί όπως ο εξωπυρήνας και ο νανοπυρήνας.
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου
Αφήστε το σχόλιό σας για την τρέχουσα ανάρτηση: