Λειτουργικό σύστημα
Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
| Αυτό το άρθρο ή η ενότητα δεν αναφέρει τις πηγές του ή δεν περιέχει επαρκείς παραπομπές. Μπορείτε να βοηθήσετε την Βικιπαίδεια προσθέτοντας κατάλληλες πηγές και παραπομπές που να υποστηρίζουν το άρθρο. |
Λειτουργικό σύστημα ή ΛΣ (αγγλ. Operating System ή OS) είναι το λογισμικό του υπολογιστή που είναι υπεύθυνο για την διαχείριση και τον συντονισμό των εργασιών και την κατανομή των διαθέσιμων πόρων. Το λειτουργικό σύστημα παρέχει ένα θεμέλιο, ένα μεσολαβητικό επίπεδο λογικής διασύνδεσης μεταξύ λογισμικού και υλικού, διαμέσου του οποίου οι εφαρμογές αντιλαμβάνονται εμμέσως τον υπολογιστή. Μια από τις κεντρικές αρμοδιότητες του λειτουργικού συστήματος είναι η διαχείριση του υλικού, απαλλάσσοντας έτσι τις εφαρμογές από τον άμεσο και επίπονο χειρισμό του τελευταίου και καθιστώντας ευκολότερο τον προγραμματισμό τους. Σχεδόν όλοι οι υπολογιστές (παλάμης, επιτραπέζιοι, υπερυπολογιστές, ακόμη και παιχνιδομηχανές) χρησιμοποιούν έναν τύπο λειτουργικού συστήματος. Ορισμένα παλαιά μοντέλα όμως μπορεί να βασίζονται σε ένα ενσωματωμένο λειτουργικό σύστημα, το οποίο να περιέχεται σε έναν οπτικό δίσκο ή άλλες συσκευές αποθήκευσης δεδομένων.
Πίνακας περιεχομένων |
[Επεξεργασία] Επισκόπηση
Ως λειτουργικό σύστημα (ΛΣ) χαρακτηρίζεται μία συλλογή βασικών προγραμμάτων [1], η οποία ελέγχει τη λειτουργία του υπολογιστή συνολικά και χρησιμοποιείται ως υπόβαθρο για την εκτέλεση όλων των υπόλοιπων προγραμμάτων, τη διαχείριση των περιφερειακών συσκευών και την εξασφάλιση της επικοινωνίας μεταξύ χρήστη και υπολογιστή. Στην πράξη πρόκειται για ένα επίπεδο λογισμικού που μεσολαβεί μεταξύ του υλικού και των εκτελούμενων προγραμμάτων σε έναν ηλεκτρονικό υπολογιστή. Αποτελείται από ένα σύνολο μηχανισμών μέσω των οποίων επιτυγχάνεται αυτόματη διαχείριση των πόρων ενός υπολογιστή και ελεγχόμενη κατανομή τους στις εκτελούμενες εφαρμογές, έτσι ώστε οι τελευταίες να έχουν εύκολη πρόσβαση στους πόρους και στις συσκευές του συστήματος χωρίς να χρειάζεται να γνωρίζουν τη δομή του υποκείμενου υλικού, αλλά και ώστε πολλαπλές εφαρμογές να μπορούν να εκτελούνται ταυτόχρονα χωρίς να έρχονται σε διένεξη μεταξύ τους ή με τον υπολογιστή.
Οι πρώιμοι υπολογιστές στερούνταν λειτουργικού συστήματος. Ένας άνθρωπος χειριστής (operator) φόρτωνε τα προγράμματα στη μνήμη του υπολογιστή και φρόντιζε για την εκτέλεσή τους, εξ ου και το όνομα του λογισμικού συστήματος το οποίο αντικατέστησε τις ανθρώπινες αυτές ενέργειες (Operating Systems). Μέσω του μεσολαβητικού επιπέδου διασύνδεσης που προσφέρει το ΛΣ, οι εφαρμογές μπορούν να αξιοποιούν τη μνήμη, τον επεξεργαστή, το σύστημα αρχείων και τις περιφερειακές συσκευές. Δηλαδή το ΛΣ δημιουργεί ένα απλουστευμένο εικονικό περιβάλλον μέσα στο οποίο εκτελούνται οι εφαρμογές. Οι τελευταίες, μέσα από κάποια συγκεκριμένη και τυποποιημένη προγραμματιστική διασύνδεση που τους προσφέρει το ΛΣ, τις κλήσεις συστήματος, διαμορφώνουν αυστηρά συμμορφούμενα με αυτήν τη διασύνδεση αιτήματα για να αποκτήσουν πόρους προκειμένου να φέρουν εις πέρας τις εργασίες που ζητά ο χρήστης[1].
Το ΛΣ είναι το πρώτο λογισμικό που «φορτώνεται» στην μνήμη του υπολογιστή μετά την εκτέλεση του BIOS. Οποιοδήποτε λογισμικό φορτωθεί στη συνέχεια βασίζεται στο ΛΣ για την παροχή όλων των υπηρεσιών οι οποίες απαιτούν πρόσβαση στο υλικό.
[Επεξεργασία] Υπηρεσίες
Το λειτουργικό σύστημα περιέχει κώδικα χαμηλού επιπέδου, αποκλειστικά για την αρχιτεκτονική του επεξεργαστή στην οποία εκτελείται (γραμμένο είτε σε κατάλληλη γλώσσα προγραμματισμού υψηλού επιπέδου, όπως η C, είτε απευθείας σε συμβολικό κώδικα), ο οποίος αναλαμβάνει την υλοποίηση όλων αυτών των μηχανισμών. Ο εν λόγω κώδικας, ο οποίος κατά την κανονική λειτουργία του υπολογιστή είναι αποθηκευμένος στη μνήμη, ονομάζεται «πυρήνας» και ο κώδικας των εκτελούμενων εφαρμογών («κώδικας χρήστη») δεν έχει άμεση πρόσβαση σε αυτόν. Ο πυρήνας όμως παρέχει μία προγραμματιστική διασύνδεση, τις κλήσεις συστήματος που προαναφέρθηκαν, με την οποία τα προγράμματα χρήστη μπορούν να καλούν με ελεγχόμενο τρόπο διαδικασίες που εξάγει ο πυρήνας και παρέχουν υπηρεσίες στον καλούντα. Η σύνταξη, η σημασιολογία και η ονοματολογία των κλήσεων συστήματος διαφέρει από ΛΣ σε ΛΣ, με αποτέλεσμα ένα εκτελέσιμο πρόγραμμα συνήθως να μπορεί να τρέξει μόνο σε ένα ΛΣ. Ο κώδικας χρήστη δεν μπορεί να προσπελάσει μόνος του τους πόρους του υπολογιστή (π.χ. δίσκους, μνήμη συστήματος, περιφερειακά, δίκτυο κλπ) αλλά μπορεί να ζητήσει ό,τι χρειάζεται (π.χ. άνοιγμα ενός αρχείου στον δίσκο) από τον πυρήνα μέσω των κλήσεων συστήματος.
Συνήθως οι γλώσσες προγραμματισμού παρέχουν προτυποποιημένες βιβλιοθήκες που αποκρύπτουν αυτήν τη διαδικασία από τον προγραμματιστή και παρέχουν φορητότητα κώδικα από ΛΣ σε ΛΣ. Π.χ. η απλή συνάρτηση fopen() της πρότυπης βιβλιοθήκης της C, με κοινή σύνταξη για όλες τις αρχιτεκτονικές και λειτουργικά συστήματα αλλά με διαφορετική υλοποίηση για το καθένα, όταν κληθεί καλεί με τη σειρά της την αντίστοιχη κλήση συστήματος - κατά κανόνα πιο πολύπλοκη - που παρέχει το υποκείμενο ΛΣ. Ο κώδικας που υλοποιεί τις κλήσεις συστήματος είναι ουσιαστικά τμήμα του πυρήνα, οπότε η fopen() του συγκεκριμένου παραδείγματος ζητά μετάβαση του επεξεργαστή σε κατάσταση πυρήνα, κατά την οποία μπορούν να εκτελεστούν εντολές με άμεση επίδραση στο υλικό και τους πόρους του υπολογιστή, και μεταφέρει τον έλεγχο στον κώδικα της κλήσης συστήματος. Όταν ο τελευταίος τερματίσει ο επεξεργαστής μεταβαίνει πάλι σε κατάσταση χρήστη και η fopen() συνεχίζει την εκτέλεσή της από την εντολή που ακολουθεί την κλήση συστήματος. Φυσικά τα προγράμματα χρήστη μπορούν να παρακάμψουν την fopen() και να καλέσουν κατευθείαν τον πυρήνα, κάτι που γίνεται αναγκαστικά όταν η βιβλιοθήκη της γλώσσας προγραμματισμού δεν παρέχει υψηλού επιπέδου διασύνδεση (όπως την fopen()) για κάποια λειτουργία.
Οι βασικοί μηχανισμοί ενός λειτουργικού συστήματος αφορούν τη διαχείριση της εκτέλεσης των προγραμμάτων χρήστη (μέσω του μηχανισμού των διεργασιών και - στα συστήματα τα οποία υποστηρίζουν ταυτοχρονισμό / πολυδιεργασία / πολυπρογραμματισμό - του κατάλληλου χρονοπρογραμματισμού τους), της επικοινωνίας μεταξύ τους (μέσω των μηχανισμών εικονικής μνήμης και διαδιεργασιακής επικοινωνίας) και των δεδομένων που αυτές χρησιμοποιούν (μέσω του συστήματος αρχείων). Με τον τρόπο που είναι υλοποιημένοι οι εν λόγω μηχανισμοί διασφαλίζουν συνήθως τόσο την ασφάλεια του πυρήνα απέναντι στον κώδικα χρήστη, όσο και την ασφάλεια μεταξύ των προγραμμάτων χρήστη, ώστε κανένα να μην παρεμποδίζει ή να επηρεάζει αρνητικά την πρόσβαση των άλλων στους πόρους του συστήματος.
[Επεξεργασία] Διαχείριση διεργασιών
Ένα πρόγραμμα που εκτελείται στον υπολογιστή αποτελεί μία ή περισσότερες διεργασίες· πρόκειται για το βασικό μέσο εκτέλεσης προγραμμάτων σε ένα συνηθισμένο ΛΣ. Ο ίδιος κώδικας / πρόγραμμα μπορεί να εκτελείται ταυτόχρονα μέσα από πολλές διαφορετικές διεργασίες οι οποίες μπορεί να ανήκουν σε διαφορετικούς χρήστες. Στα πλαίσια της σειριακής αρχιτεκτονικής φον Νόιμαν και των υπολογιστών που έχουν οικοδομηθεί με βάση αυτήν, μόνο μια διεργασία μπορεί να εκτελείται στην ΚΜΕ οποιαδήποτε χρονική στιγμή[1]· επομένως οι ποικίλες διεργασίες οι οποίες είναι ταυτόχρονα ενεργές εκτελούνται ψευδοπαράλληλα, με διαδοχική εναλλαγή του επεξεργαστή μεταξύ τους κάθε λίγη ώρα. Σε ένα παράλληλο σύστημα, όπου υπάρχουν πολλαπλοί επεξεργαστές, ο ταυτοχρονισμός / πολυδιεργασία μπορούν να υλοποιηθούν πραγματικά παράλληλα. Σε κάθε περίπτωση, το τμήμα του πυρήνα το οποίο λαμβάνει διάφορες αποφάσεις σχετικά με την ανάθεση των ΚΜΕ στις διάφορες διεργασίες ονομάζεται χρονοπρογραμματιστής.
[Επεξεργασία] Διαχείριση μνήμης
Στις σύγχρονες αρχιτεκτονικές υπολογιστών η μνήμη είναι οργανωμένη ιεραρχικά. Αρχίζοντας από την ταχύτερη: καταχωρητές, κρυφή μνήμη, κύρια μνήμη και δευτερεύουσα μνήμη (π. χ. σκληροί δίσκοι). Το τμήμα εκείνο του ΛΣ που καλείται διαχειριστής μνήμης συντονίζει τη χρήση των διαφόρων τύπων μνήμης, καταγράφοντας ποια τμήματά τους είναι διαθέσιμα, ποια είναι δεσμευμένα και, ανάλογα με τις απαιτήσεις των διεργασιών, εκχωρεί ή απελευθερώνει τμήματα για να τα χρησιμοποιήσουν οι διεργασίες. Αυτή η δραστηριότητα λέγεται διαχείριση εικονικής μνήμης, αφού η συνολική μνήμη που μπορούν να χρησιμοποιήσουν οι διεργασίες κατά την εκτέλεση τους μπορεί να ξεπερνά το μέγεθος της κύριας μνήμης. Τα προηγμένα Λ.Σ. αποφεύγουν, όπου και όταν είναι δυνατό, τη χρήση αυτής της τεχνικής, επειδή η χρήση δευτερεύουσας μνήμης ως κύριας μειώνει την ταχύτητα του συστήματος.
[Επεξεργασία] Συστήματα αρχείων
Το κομμάτι του ΛΣ που ονομάζεται διαχειριστής συστήματος αρχείων δημιουργεί την αφαιρετική έννοια του αρχείου και την δυνατότητα στον χρήστη να βλέπει τη δευτερεύουσα μνήμη σαν ένα σύνολο από αρχεία όπου μπορεί να δημιουργεί , να τροποποιεί, να σβήνει , να μετακινεί και να αντιγράφει αρχεία.
[Επεξεργασία] Δικτύωση
Τα περισσότερα σύχρονα λειτουργικά συστήματα επιτρέπουν τη σύνδεση ενός υπολογιστή τόσο σε τοπικά δίκτυα όσο και στο Διαδίκτυο, ενσωματώνοντας στον κωδικά τους την υλοποίηση των απαιτούμενων αντίστοιχων πρωτοκόλλων.
[Επεξεργασία] Ασφάλεια
[Επεξεργασία] Εσωτερική ασφάλεια
Με τον όρο αυτό εννοούνται οι ενέργειες, τις οποίες πραγματοποιεί το αντίστοιχο τμήμα του ΛΣ προκειμένου να προφυλάξει τους πόρους μιας διεργασίας από τις άλλες διεργασίες που εκτελούνται παράλληλα. Αυτό συμβαίνει επειδή δεν είναι επιθυμητό μια διεργασία ενός χρήστη να μπορεί να έχει αποκλειστική πρόσβαση σε ολόκληρο το σύστημα αρχείων ή μια διεργασία να εγγράφει δεδομένα στο τμήμα εκείνο της μνήμης που έχει εκχωρηθεί σε άλλη διεργασία.
[Επεξεργασία] Εξωτερική ασφάλεια
Σαν κόμβος ενός δικτύου ένας υπολογιστής μπορεί να δεχτεί επιθέσεις από κακόβουλο λογισμικό. Τα σύγχρονα ΛΣ περιλαμβάνουν και τμήματα που είναι υπεύθυνα να αναγνωρίσουν τέτοιες απειλές.
[Επεξεργασία] Γραφική διασύνδεση χρήστη
Τα σύγχρονα ΛΣ παρέχουν τη δυνατότητα στον χρήστη να επικοινωνεί με τον Η/Υ με τη χρήση ποντικιού,παραθύρων,εικονιδίων,δείκτη ποντικιού,γραμμές εργασιών.
[Επεξεργασία] Οδηγοί συσκευών
Ένα λειτουργικό σύστημα περιλαμβάνει και πολλούς οδηγούς συσκευών (drivers). Συνοπτικά, ένας οδηγός συσκευής είναι το πρόγραμμα που χρησιμοποιούν τα τμήματα του ΛΣ καθώς και οι διεργασίες των χρηστών όποτε θέλουν να ανταλλάξουν δεδομένα με τη συγκεκριμένη συσκευή. Συνήθως οι οδηγοί συσκευών περιλαμβάνονται στο λογισμικό που συνοδεύει την περιφερειακή συσκευή κατά την αγορά της και, συνήθως, είναι καλύτεροι από αυτούς που εγγενώς διατίθενται από το ΛΣ.
[Επεξεργασία] Πυρήνας
Έχει καθιερωθεί να χρησιμοποιούμε τον όρο Πυρήνας για να αναφερόμαστε στα πιο βασικά μέρη ενός ΛΣ τα οποία αλληλεπιδρούν στενά με το υλικό. Ενώ μέρη του ΛΣ που δεν ανήκουν στον πυρήνα μπορούν να θεωρηθούν π.χ. η διασύνδεση με το χρήστη, τα πρωτόκολλα επικοινωνίας ανάμεσα στις εφαρμογές, τα πρωτόκολλα διαχείρισης περιόδων εργασιών χρηστών, τα πρωτόκολλα δικτύου κτλ. Μια ενδιαφέρουσα ανάλυση σχετικά με την διαφορά ΛΣ και πυρήνα μπορεί να βρεθεί εδώ (Linux and GNU). Πάντως δεν υπάρχει γενική συναίνεση σχετικά με το θέμα αυτό στην κοινότητα της επιστήμης των υπολογιστών.
[Επεξεργασία] Σύγχρονα Λειτουργικά Συστήματα
Στις μέρες μας (μέσα 2005), τα λειτουργικά συστήματα που γνωρίζουν την μεγαλύτερη εξάπλωση στους υπολογιστές γενικής χρήσης, (συμπεριλαμβανομένων των προσωπικών υπολογιστών), έχουν διαμορφωθεί σε δύο μεγάλες οικογένειες: Αυτή των Unix-συμβατών και την οικογένεια των Microsoft Windows. Οι μεγάλοι υπολογιστές και τα ενσωματωμένα συστήματα χρησιμοποιούν μια ποικιλία από διάφορα άλλα λειτουργικά συστήματα πολλά από τα οποία δεν έχουν άμεση συγγένεια με τα Windows ή με το Unix.
Τα Unix-συμβατά Λειτουργικά Συστήματα αποτελούν μια πολυποίκιλη ομάδα, με πολλές κύριες υποκατηγορίες συμπεριλαμβανομένων των System V, BSD, και GNU/Linux. To εμπορικό σήμα Unix χρησιμοποιείται από πολλά ΛΣ που έχουν πολλά κοινά με το αρχικό Unix. Τα Unix Λ.Σ. τρέχουν σε μια μεγάλη γκάμα από αρχιτεκτονικές υπολογιστών. Χρησιμοποιούνται πολύ σαν συστήματα εξυπηρετητές στις επιχειρήσεις και σε σταθμούς εργασίας σε ακαδημαϊκούς και μηχανολογικούς χώρους εργασίας.
Παραλλαγές του Unix που διακινούνται ως Ελεύθερο λογισμικό, όπως το GNU/Linux και BSD αυξάνουν σε δημοτικότητα στο χώρο των σταθμών εργασίας και των προσωπικών υπολογιστών. Παραλλαγές που διακινούνται με κλειστές άδειες χρήσης όπως το HP-UX της Hewlett-Packard, το Irix της Silicon Graphics και το AIX της IBM έχουν σχεδιαστεί να τρέχουν μόνο στο υλικό των συγκεκριμένων εταιρειών ενώ άλλες παραλλαγές μπορούν να τρέξουν και σε προσωπικούς υπολογιστές. Το Solaris της Sun (που άλλαξε άδεια χρήσης σε λογισμικό ανοιχτού κώδικα υπό την CDDL άδεια) είναι ένα τέτοιο πολύμορφο αλλά αληθινό Unix και μπορεί να τρέχει στους σταθμούς εργασίας της Sun αλλά και στον μικρότερο υπολογιστή x86 αρχιτεκτονικής. Το ΛΣ Mac OS X της Apple είναι μια παραλλαγή του BSD, και έχει αντικαταστήσει τα προηγούμενα (όχι-unix) MacOS ΛΣ της Apple σε μια μικρή αλλά αφοσιωμένη αγορά, έχοντας γίνει ένα πολύ δημοφιλές Unix.
Η οικογένεια των Microsoft Windows ΛΣ ξεκίνησε σαν ένα επίπεδο γραφικής διασύνδεσης πάνω από το παλιότερο MS-DOS περιβάλλον για τους IBM PC. Οι σύγχρονες εκδόσεις των Windows βασίζονται στον καινούργιο Windows NT πυρήνα που πρωτοδιαμορφώθηκε στο OS/2, με πιό πρόσφατη έκδοση εν έτει 2008 τα Windows Vista. Τα Windows τρέχουν πάνω σε 32- και 64-bit Intel και AMD υπολογιστές, αν και προηγούμενες εκδόσεις έτρεχαν και σε DEC Alpha, MIPS και PowerPC αρχιτεκτονικές (και υπήρξε και προσπάθεια να το κάνουν να τρέχει και σε SPARC αρχιτεκτονική).
Σήμερα, τα Windows είναι το δημοφιλέστερο ΛΣ προσωπικών υπολογιστών απολαμβάνοντας ένα σχεδόν μονοπώλιο του 90% του παγκόσμιου μεριδίου αγοράς των προσωπικών υπολογιστών. Επίσης χρησιμοποιείται ευρέως και στους εξυπηρετητές υποστηρίζοντας εφαρμογές όπως Web εξυπηρετητές (Web Servers) και εξυπηρετητές βάσεων δεδομένων (DBMS Servers).
Τα ΛΣ μεγάλων υπολογιστών, όπως της IBM z/OS και ενσωματωμένων ΛΣ όπως QNX, eCos, Symbian και Palm OS, είναι συνήθως άσχετα με το Unix και τα Windows. Τα ΛΣ Windows CE, Windows NT Embedded 4.0 και Windows XP Embedded σχετίζονται με τα Windows.
Παλιότερα ΛΣ που ακόμα χρησιμοποιούνται σε κλειστές αγορές περιλαμβάνουν το παρόμοιο με τα Windows OS/2 της IBM, το VMS της Hewlett-Packard (πρώην DEC), το Mac OS, το όχι-Unix προηγούμενο του Mac OS της Apple X και το AmigaOS, το πρώτο με γραφική διασύνδεση χρήστη ΛΣ με αναπτυγμένες δυνατότητες πολυμέσων που έγινε διαθέσιμο στο κοινό. Παλαιότερο, επίσης, ΛΣ που χρησιμοποιείται ακόμη σε πολύ περιορισμένες εφαρμογές, είναι ο πρόγονος των Windows στους Προσωπικούς υπολογιστές, το MS-DOS.
Η έρευνα και η ανάπτυξη νέων τύπων ΛΣ συνεχίζεται και αποτελεί ένα ενεργό πεδίο της επιστήμης των υπολογιστών.
[Επεξεργασία] Παραδείγματα λειτουργικών συστημάτων
- UNIX - που περιλαμβάνει όλα τα UNIX BSD (FreeBSD) και GNU/Linux
- Mac OS
- Microsoft Windows
- Solaris
- MS-DOS
- CP/M
- AmigaOS
[Επεξεργασία] Παραπομπές
- ↑ 1,0 1,1 1,2 Daniel Pierre Bovet, Marco Cesati, Understanding the Linux Kernel: [from I/O Ports to Process Management]., O'Reilly 2005, σελ. 8, ISBN 978-0-596-00565-8