Unix

Το Unix ή UNIX είναι λειτουργικό σύστημα Ηλεκτρονικών Υπολογιστών, το οποίο αναπτύχθηκε κατά τις δεκαετίες του 1960 και του 1970 από ομάδα εργαζομένων των εργαστηρίων Μπελ (Bell Labs) της εταιρείας AT&T, στην οποία συμμετείχαν, μεταξύ άλλων, οι Κεν Τόμσον (Ken Thompson), Ντένις Ρίτσι (Dennis Ritchie) και Ντάγκλας Μακιλρόι (Douglas McIlroy). Σήμερα τα συστήματα Unix έχουν χωριστεί σε πολλούς κλάδους και αναπτύσσονται τόσο από την AT&T όσο και από άλλους εμπορικούς παράγοντες, όπως και από αρκετούς μη κερδοσκοπικούς οργανισμούς, όπως το πρόγραμμα GNU. Ο νυν ιδιοκτήτης του εμπορικού συμβόλου Unix είναι μια ομάδα, η οποία ονομάζεται The Open Group, ενώ οι κάτοχοι των πνευματικών δικαιωμάτων του πηγαίου κώδικα του Unix είναι η ομάδα SCO Group και η εταιρία Νοβέλ (Novell). Μόνο συστήματα πλήρως συμβατά και πιστοποιημένα με το πρωτόκολλο Single UNIX Specification χαρακτηρίζονται ως «Unix» (τα υπόλοιπα χαρακτηρίζονται ως «παρόμοια με το Unix» ή, στην καθομιλούμενη των υπολογιστών, «Unix-οειδή», «Unix-like»). Κατά τη διάρκεια των τελευταίων χρόνων της δεκαετίας του 1970 και των αρχών της δεκαετίας του 1980 η επιρροή του Unix στους ακαδημαϊκούς κύκλους οδήγησε στην μαζική αποδοχή του (ειδικά από την παραλλαγή του BSD, προερχόμενη από το Πανεπιστήμιο του Μπέρκλεϊ) από εμπορικά προγράμματα Unix, με πιο αξιοσημείωτο αυτό της εταιρείας Sun Microsystems. Μερικές φορές ο όρος Παραδοσιακό Unix χρησιμοποιείται για να περιγράψει ένα λειτουργικό σύστημα Unix ή GNU το οποίο έχει τα χαρακτηριστικά είτε της έκδοσης 7 του Unix είτε του UNIX System V.

 Τα λειτουργικά συστήματα Unix χρησιμοποιούνται ευρέως και σε εξυπηρετητές και σε σταθμούς εργασίας. Το περιβάλλον Unix και το μοντέλο πελάτη - εξυπηρετητή ήταν απαραίτητα στοιχεία στην ανάπτυξη του Διαδικτύου και τον αναπροσανατολισμό των υπολογιστών προς την δημιουργία και χρήση δικτύων αντί για ξεχωριστούς υπολογιστές. Τόσο το Unix όσο και η γλώσσα προγραμματισμού C αναπτύχθηκαν από την εταιρία AT&T και διανεμήθηκαν σε κρατικά και σε ακαδημαϊκά ιδρύματα, με αποτέλεσμα να μεταφερθούν και να προσαρμοστούν σε κατά πολύ ευρύτερο φάσμα υπολογιστών από οποιοδήποτε άλλο λειτουργικό σύστημα. Συνεπώς, το Unix έγινε ταυτόσημο με την έννοια του ανοιχτού συστήματος (Open System). Το Unix σχεδιάστηκε για να μεταφέρεται εύκολα σε άλλες πλατφόρμες και να υποστηρίζει πολλαπλές ταυτόχρονες εργασίες παράλληλα με την ταυτόχρονη χρήση του από πολλούς χρήστες, σε διάταξη χρονομερισμού. Τα συστήματα Unix χαρακτηρίζονται συνήθως από τις εξής ιδιότητες: χρήση απλού κειμένου για την αποθήκευση των δεδομένων, ιεραρχικό σύστημα αρχείων, η αντιμετώπιση συσκευών αλλά και κάποιων μορφών διαδιεργασιακής επικοινωνίας ως αρχεία και η χρήση ενός μεγάλου αριθμού εργαλείων, μικρές εφαρμογές που μπορούν να συνδυαστούν με ένα διερμηνέα γραμμής εντολών με χρήση σωληνώσεων (pipes), αντί για ένα μονολιθικό πρόγραμμα που θα υλοποιούσε την ίδια λειτουργία. Οι αρχές αυτές είναι γνωστές και ως η φιλοσοφία Unix.Στο Unix το "λειτουργικό σύστημα" αποτελείται από πολλά τέτοια εργαλεία μαζί με το κύριο πρόγραμμα ελέγχου, τον πυρήνα. Ο πυρήνας παρέχει υπηρεσίες για την εκκίνηση και τερματισμό προγραμμάτων, χειρίζεται το σύστημα αρχείων και άλλες λειτουργίες "χαμηλού επιπέδου", τις οποίες μοιράζονται τα περισσότερα προγράμματα. Επιπλέον, ίσως πιο σημαντικό, σχεδιάζει την πρόσβαση στο υλικό ώστε να αποφύγει συγκρούσεις αν δυο προγράμματα προσπαθούν ταυτόχρονα να έχουν πρόσβαση στον ίδιο πόρο ή συσκευή. Για να μεσολαβήσει σε τέτοιες προσβάσεις, ο πυρήνας έχει ειδικά δικαιώματα πάνω στο σύστημα, γεγονός που οδηγεί στη διαφοροποίηση: "χώρος πυρήνα" και "χώρος χρήστη". Η αρχή του μικροπυρήνα (microkernel) αναπτύχθηκε σε μια προσπάθεια να αντιστραφεί η τάση για μεγαλύτερους πυρήνες, και για επιστροφή σε ένα σύστημα όπου οι περισσότερες λειτουργίες εκτελούνται από μικρά εργαλεία. Σε μια περίοδο που ο "κανονικός" υπολογιστής συμπεριλάμβανε σκληρό δίσκο για την αποθήκευση δεδομένων, και τερματικό για είσοδο και έξοδο, το μοντέλο αρχείων του Unix δούλευε αρκετά ικανοποιητικά, μιας και η είσοδος και έξοδος ήταν κυρίως "γραμμική". Όμως, τα σύγχρονα συστήματα περιλαμβάνουν δικτύωση, και άλλες νέες συσκευές. Με την ανάπτυξη των γραφικών διεπαφών, το μοντέλο αρχείων αποδείχθηκε ανεπαρκές για τη διαχείριση ασύγχρονων γεγονότων, όπως αυτά που προκαλούνται από ένα ποντίκι. Έτσι, τη δεκαετία 1980, η ασύγχρονη είσοδος/έξοδος και η διαδιεργασιακή επικοινωνία επεκτάθηκαν με sockets, κοινή μνήμη, ουρές μηνυμάτων, σημαφόρους, και άλλες λειτουργίες, καθώς τα πρωτόκολλα δικτύου μετακινήθηκαν εκτός του πυρήνα. Στη δεκαετία του 1960 το MIT, η AT&T στα εργαστήρια Μπελ, και η General Electric εργάζονταν πάνω σε ένα πειραματικό λειτουργικό σύστημα που λεγόταν Multics (Multiplexed Information and Computing Service), το οποίο είχε σχεδιαστεί ώστε να τρέχει στη σειρά υπολογιστών mainframe GE-645. (Τελικά το Multics έγινε εμπορικό προϊόν, αν και οι πωλήσεις δεν έφτασαν τις προσδοκίες.) Το Multics ήταν ένα διαδραστικό λειτουργικό σύστημα με πολλές νέες δυνατότητες, όπως η αυξημένη ασφάλεια. Τα εργαστήρια Μπέλ της AT&T αποσύρθηκαν από το πρόγραμμα Multics και ανέπτυξαν τους πόρους τους αλλού. Ένας από τους προγραμματιστές στην ομάδα των εργαστηρίων Μπελ, ο Κεν Τόμσον, συνέχισε να αναπτύσσει λογισμικό για τον μεγάλο υπολογιστή (mainframe) GE-645, και έγραψε ένα παιχνίδι για τον υπολογιστή αυτό, το Space Travel. Όμως, διαπίστωσε ότι το παιχνίδι ήταν πολύ αργό στον υπολογιστή GE, και ακριβό, κοστίζοντας 75 δολάρια για κάθε εκτέλεσή του, και πολύτιμο υπολογιστικό χρόνο. Έτσι, ο Τόμσον ξανάγραψε το παιχνίδι σε συμβολική γλώσσα για τον PDP-7 της DEC, με τη βοήθεια του Ντένις Ρίτσι. Η εμπειρία αυτή, σε συνδυασμό με τη δουλειά του στο πρόγραμμα Multics, οδήγησαν τον Τόμσον να ξεκινήσει ένα καινούριο λειτουργικό σύστημα για τον PDP-7. Οι Τόμσον και Ρίτσι ηγούνταν μιας ομάδας προγραμματιστών, που συμπεριλάμβανε τον Ρουντ Κάναντεϊ, στα εργαστήρια Μπελ, και η οποία ανέπτυσσε ένα σύστημα αρχείων, καθώς και το καινούριο λειτουργικό σύστημα που μπορούσε να εκτελεί πολλές διεργασίες ταυτόχρονα. Συμπεριέλαβαν έναν ερμηνευτή γραμμής εντολών και μερικά μικρά βοηθητικά προγράμματα. Στη δεκαετία 1970 το πρόγραμμα ονομαζόταν Unics, και τελικά μπορούσε να υποστηρίξει δύο ταυτόχρονους χρήστες. Ο Μπράιαν Κέριγκαν εφηύρε αυτό το όνομα σε αντιδιαστολή με το Multics. Αργότερα, η ορθογραφία άλλαξε σε "Unix". Μέχρι εκείνο το σημείο δεν είχε δοθεί οικονομική στήριξη από τα εργαστήρια Μπελ. Όταν η ερευνητική ομάδα της επιστήμης υπολογιστών θέλησε να χρησιμοποιήσει το Unix σε μεγαλύτερους υπολογιστές από το PDP-7, οι Τόμσον και Ρίτσι κατάφεραν να το ανταλλάξουν με την υπόσχεση να προσθέσουν δυνατότητες επεξεργασίας κειμένου στο Unix, για ένα μηχάνημα PDP-11/20. Αυτό οδήγησε σε κάποια οικονομική υποστήριξη από τη Μπελ. Για πρώτη φορά το 1970, το λειτουργικό σύστημα Unix ονομάστηκε επίσημα, και έτρεξε στον PDP-11/20. Προστέθηκε ένα πρόγραμμα διαμόρφωσης κειμένου, το roff και ένας επεξεργαστής κειμένου. Και τα τρία ήταν γραμμένα στην συμβολική γλώσσα του PDP-11/20. Τα εργαστήρια Μπελ χρησιμοποίησαν αυτό το αρχικό "σύστημα επεξεργασίας κειμένου" που αποτελούνταν από το Unix, το roff και τον κειμενογράφο, για να επεξεργάζονται κείμενο αιτήσεων πατεντών. Το roff σύντομα εξελίχθηκε στο troff, το πρώτο πρόγραμμα ηλεκτρονικής εκτύπωσης με πλήρεις δυνατότητες στοιχειοθεσίας. Το "εγχειρίδιο προγραμματισμού Unix" εκδόθηκε στις 3 Νοεμβρίου 1971. Το 1973, γράφτηκε ξανά σε γλώσσα προγραμματισμού C, πηγαίνοντας κόντρα στη γενική νοοτροπία του ότι "κάτι τόσο περίπλοκο όσο ένα λειτουργικό σύστημα, που πρέπει να αντιμετωπίσει γεγονότα χρονικής κρισιμότητας, έπρεπε να γράφεται αποκλειστικά σε γλώσσα assembly (συμβολική γλώσσα)". Η μεταπήδηση από τη συμβολική γλώσσα στη γλώσσα υψηλού επιπέδου C είχε ως αποτέλεσμα την αύξηση της μεταφερσιμότητας του λογισμικού, αφού απαιτούνταν να αντικατασταθεί μια σχετικά μικρή ποσότητα κώδικα εξαρτώμενου από τη μηχανή προκειμένου το UNIX να μεταφερθεί σε άλλες υπολογιστικές πλατφόρμες. Η AT&T διέθεσε το Unix σε πανεπιστήμια και εταιρείες, καθώς και στην κυβέρνηση των Ηνωμένων Πολιτειών, κάτω από κάποιες άδειες λογισμικού. Οι άδειες αυτές περιλάμβαναν όλον τον πηγαίο κώδικα, συμπεριλαμβανομένου και των εξαρτώμενων από τη μηχανή τμημάτων του πυρήνα, γραμμένων σε συμβολική γλώσσα για PDP-11. Αντίγραφα του πηγαίου κώδικα Unix (με σημειώσεις) κυκλοφόρησαν ευρέως κατά τα τέλη της δεκαετίας του 1970, με τη μορφή ενός γνωστού βιβλίου, του Τζον Λάιονς, του University of New South Wales, του Lions' Commentary on UNIX 6th Edition, with Source Code, το οποίο και οδήγησε σε μια αύξηση της χρήσης του Unix στην εκπαίδευση. Οι εκδόσεις του συστήματος Unix καθορίζονταν από τις εκδόσεις των εγχειριδίων τους, με αποτέλεσμα για παράδειγμα, οι ονομασίες "Πέμπτη Έκδοση του UNIX" ("Fifth Edition UNIX") και "UNIX Έκδοση 5" ("UNIX Version 5") να έχουν χρησιμοποιηθεί με την ίδια σημασία. Η ανάπτυξη του συστήματος οδήγησε στις Εκδόσεις 4, 5, και 6 να έχουν κυκλοφορήσει μέχρι το 1975. Αυτές οι εκδόσεις πρόσθεσαν την έννοια των σωληνώσεων, οδηγώντας στην ανάπτυξη μιας αρθρωτής βάσης κώδικα, κάτι που επιτάχυνε ακόμα περισσότερο την ανάπτυξη. Η Έκδοση 5 και ειδικά η Έκδοση 6 οδήγησαν σε μια πληθώρα διαφορετικών εκδόσεων του Unix, τόσο μέσα όσο και έξω από τα Εργαστήρια Μπελ, όπως το PWB/UNIX και το πρώτο εμπορικό Unix, το IS/1. Καθώς όλο και μεγαλύτερο μέρος του Unix γραφόταν σε C, βελτιώθηκε και η μεταφερσιμότητά του. Μια ομάδα στο University of Wollongong το μετέφερε στο Interdata 7/32 (με αποτέλεσμα το πρώτο μη-PDP Unix). Τα εργαστήρια Μπελ ανέπτυξαν διάφορες εκδόσεις για έρευνα και για εσωτερική χρήση στην AT&T. Τα μηχανήματα στα οποία μεταφέρθηκε περιλάμβαναν έναν υπολογιστή Intel 8086 (με ειδική MMU) και τον UNIVAC 1100.Το 1978, κυκλοφόρησε το UNIX/32V, για το νέο σύστημα VAX της DEC. Μέχρι εκείνη τη στιγμή, περισσότερα από 600 μηχανήματα έτρεχαν κάποια μορφή του Unix. Η Έκδοση 7 του Unix, η τελευταία έκδοση του Research Unix που θα κυκλοφορούσε ευρέως, εμφανίστηκε το 1979. Οι εκδόσεις 8, 9 και 10 αναπτύχθηκαν κατά τη δεκαετία του 1980 αλλά διατέθηκαν μόνο σε κάποια πανεπιστήμια, αν και προέκυψαν δημοσιεύσεις που τα περιέγραφαν. Η έρευνα αυτή οδήγησε στην ανάπτυξη του Plan 9 from Bell Labs, ενός νέου μεταφέρσιμου κατανεμημένου συστήματος. Linux BSD Εξέλιξη των συστημάτων Unix Αρχειοθετήθηκε 2007-09-18 στο Wayback Machine. Μια εισαγωγή στο Unix Βασικές Έννοιες στο UNIX Unix στο Curlie