Η εξέλιξη του λειτουργικού συστήματος Unix από το 1970 μέχρι σήμερα (Eugenides Foundation, 2021)
: Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE με βάση για πολλά άλλα μεταγενέστερα λειτουργικά συστήματα. Σημερινός καλεσμένος και ομιλητής στο webcast του Ιδρύματος Ευγενίδου είναι ο κύριος Διωμίδης Σπινέλης, καθηγητής του Τμήματος Διοικητικής Επιστήμης και Τεχνολογίας του Οικονομικού Πανεπιστημίου Αθηνών. Να αναφέρω επιγραμματικά κάποια σημεία από το βιογραφικό του κυρίου Σπινέλη. Το επιστημονικό του έργο περιλαμβάνει τα βραβευμένα και ευραίως μεταφρασμένα βιβλία «Code Reading – The Open Source Perspective» και «Code Quality – The Open Source Perspective» καθώς και πάνω από 300 επιστημονικά άρθρα που έχουν λάβει περισσότερες από 10.500 ετεροαναφορές. Το πιο πρόσφατο βιβλίο του έχει τίτλο «Effective Debugging – 66 Specific Ways to Debug Software and Systems». Την περίοδο 2009-2011 υπηρέτησε ως Γενικός Γραμματέας Πληροφοριακών Συστημάτων στο Υπουργείο Οικονομικών. Έχει διατελέσει διευθυντή σύνταξης του επιστημονικού περιοδικού IEEE Software, καθώς και επί δεκαετίας συντάκτης της τακτικής στήλης του Tools of the Trade. Εργαλεία και βιβλιοθήκες λογισμικού ανοιχτού κώδικα που έχει υλοποιήσει αποτελούν θμήματα λειτουργικών συστημάτων Apple, Mac OS και BSD Unix και κατέχει τον τίτλο του διακεκριμένου μέλους στις οργανώσεις ACM και IEEE, ενώ πρόσφατα εξελέγει Πρόεδρος της Επιτροπής Περιοδικών της IEEE Computer Society για το έτος 2021. Κύριε Σπινέλη, μεγάλη μας χαρά και τιμή να σας έχουμε σήμερα εδώ κοντά μας. Δική μου χαρά να συμμετέχω σε αυτή την εκδήλωση. Κύριε Σπινέλη, ο τίτλος του σημερινού webcast μιλάει για το Unix, το λογισμικό που άλλαξε τον κόσμο. Προφανώς αναφέρεστε στον κόσμο μας ευρύτερα και όχι μόνο στον κόσμο της πληροφορικής και του προγραμματισμούς, σωστά? Ναι, κύριε Καλαμάκη, όταν λέω ότι άλλαξε τον κόσμο μας, μιλάω κυριολεκτικά. Σήμερα η οικονομία και η κοινωνία κινούνται και βασίζονται όλο και περισσότερο στο λογισμικό. Λέμε το λογισμικό τρόι τον πλανήτη μας. Σκεφτείτε το διαδίκτυο, τα κινητά μας τηλέφωνα, τα μέσα κοινωνικής δικτύωσης, το ηλεκτρονικό επιχειρήνη, την δορυφορική πλοήγηση, πολύ μεγάλο ποσοστό από αυτό το λογισμικό, εκτελείται πάνω σε συστήματα που αποτελούν εξέλιξη του λειτουργικού συστήματος Unix όπως αναπτύχθηκε πριν από 50 χρόνια ή σε συστήματα όπως το Linux που βασίζονται πάνω στις ιδέες του. Αυτά τα συστήματα καλύπτουν ένα πολύ μεγάλο εύρος, συσκεύονται από τα κινητά μας τηλέφωνα μέχρι τους δρομολογητές DSL που έχουμε στο σπίτι μας, μέχρι τις ενεφοϊπολογιστικές υποδομές εταιρίων όπως η Google και η Amazon, μέχρι οι υπεριπολογιστές. Πριν περάσουμε στην εξαιρετικά ενδιαφέρουσα παρουσίαση που έχετε ετοιμάσει, θα ήθελα να σας ρωτήσω το εξής. Ο περισσότερος κόσμος, όταν θα βρεθεί μπροστά στον όρο λειτουργικό σύστημα, θα σκεφτεί πιθανόν τα Microsoft Windows, τα Microsoft DOS που χρησιμοποιούν παγκοσμίως εκατομμύρια άνθρωποι καθημερινά στους προσωπικούς τους υπολογιστές. Σε σύγκριση με αυτά, πώς διαφοροποιείται το Unix και πού έγκειται η μεγάλη του σπουδιότητα. Κύριε Καλαμάκη, το λειτουργικό σύστημα Unix διακρίνεται γιατί σπάνια, όπως είχαν πει όταν βραβεύτηκε, απλότητά του, την ισχύει του και την κομψότητά του. Να σας αναφέρω ενδεικτικά πέντε σημαντικά στοιχεία, τα οποία συνεισέφερα στο χώρο των λειτουργικών συστημάτων. Πρώτα απ' όλα είναι ιεραρχικό σύστημα οργάνωσης στον Άρχαιο, όταν έχουμε φακέλους μέσα στους οποίους έχουμε υποφακέλους και άλλους υποφακέλους και όχι όπως ήταν διαδεδομένο την εποχή εκείνης συσκευές με αλφαβητικά γράμματα, το οποίο ακόμα υπάρχει στις μέρες μας σε άλλες συστήματα. Επίσης, ιδέο της συσκευές, όπως ο εκτυπωτής μας ή οθόνη, εμφανίζονται ως αρχεία τα οποία μπορούμε να χρησιμοποιήσουμε οποιοδήποτε πρόγραμμα. Η δυνατότητα επιλογής του φλίου, του τρόπου δηλαδή, με τον οποίο αλληλοποιηδρούμε το λειτουργικό σύστημα, δεν είναι τιμή του λειτουργικού συστήματος, είναι ένα ξεχωριστό απλό πρόγραμμα, το οποίο καθένας μπορεί να αλλάξει, να εξελίξει και να βελτιώσει. Και τέλος, κάτι πολύ σημαντικό, είναι η ιδέα των σωλινώσεων και των φίλτων, δηλαδή η δυνατότητα να ενώνουμε προγράμματα μεταξύ τους και να επικοινωνούν μέσω μιας διαπαφής που λέγεται σωλινώσης, καθένα να κάνει ένα μικρό τιμό της επεξεργασίας και όλο μαζί να μας επιτρέπουν την πάρα πολύ εύκολη, αποδοτική και σύνθετη επεξεργασία και ετερογενών και μεγάλου ογκουδεδομένου. Αυτό είναι κάτι ξεραντικά σημαντικό στις μέρες μας. Μάλιστα τρέχω ένα μάθημα στην πλατφόρμα edX, ακριβώς με αυτό το αντικείμενο. Πολύ ωραία. Μπορούμε λοιπόν να περάσουμε στην πραγματικά πολύ ωραία και ενδιαφέρουσα παρουσίαση που μας έχετε ετοιμάσει. Θα ξεκινήσει σε λίγα δευτερόλεπτα να πω ότι οι φίλοι μας που μας παρακολουθούν, τόσο στο Zoom όσο και στο YouTube, μπορούν να υποβάλλουν κατά τη διάρκεια της παρουσίασης τις ερωτήσεις τους στα αντίστοιχα chats. Ξεκινάμε με την παρουσίαση. Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE που δεν είχε καν οθόνη, απ΄το τη λέτυπα που βλέπουμε εδώ. Πώς εξελίχθηκε η αρχιτεκτονική του από τότε? Στις μέρες μας, το Unix και το λειτουργικό σύστημα Linux που βασίζεται στις ιδέες του, αναπτύσσονται από κοινότες που τα εξελίσουν ως λογισμικό ανοιχτού κώδικα, δηλαδή λογισμικό που μπορεί ο καθένας ελεύθερα και δωρεάν να χρησιμοποιήσει, να διαβάσει και να αλλάξει. Πώς συνέχισα να εξελίσεις τα αρχιτεκτονικά? Θα παρουσιάσω την πορεία του συστήματος, θα συνεχίσω με τις πηγές δεδομένων που μας επιτρέπουν την ανάλυσή της. Βασισμένος σε αυτά, θα εστιάσω στην αρχιτεκτονική εξέλιξη, με ρυθμούς και με ποιοτικές παρατηρήσεις. Το Unix γεννήθηκε στα διάσημα εργαστήρια Bell Labs της εταιρείας AT&T. Τα εργαστήρια αυτά ήταν εκπληκτική πηγή καινοτομίας. Να τα πιο διάσημα κατορθώματά τους. Οκτώ βραβεία Nobel. Τρία βραβεία Turing, το αντίστοιχο του βραβεού Nobel για την πληροφορική. Στην εργαστήρια Bell, εφευρέθηκε η ραδιαυθορρονομία και ανακαλύπθηκε η κοσμική ακτινοβολία. Εκεί αναπτύχθηκαν τα πρώτα υπερατλαντικά καλώδια. Στην εργαστήρια Bell, εφευρέθηκε το transistor, η βάση των σύγχρονων τεχνολογιών πληροφορικής και επικοινωνιών. Η φωτογραφική μηχανή του κινητούζεως τηλεφώνου βασίζεται σε μια άλλη εφεύρεση των Bell Labs, τους εσυντήρες CCD. Ο διάσημος θεωρητικός της πληροφορικής, Claude Shannon, διατύπωσε μαθηματικά τη θεωρία της επικοινωνίας. Σε πιο πρακτικό επίπεδο, τα Bell Labs συνεισέφεραν τέσσερις άλλες κομβικές τεχνολογίες του σύγχρονου κόσμου. Τα laser. Τις οπτικές ίνες. Τους τηλεπικοινωνικούς δορυφόρους. Και την πολυπλεξία, την DMA και συν-DMA που χρησιμοποιείται ευλίδοντα στην κινητή τηλεφωνία. Στο χώρο της πληροφορικής, έχουμε την ανάπτυξη των γλώσεων προγραμματισμού C, C++ και OK που επίσης χρησιμοποιούνται πάρα πολύ. Και φυσικά, το λειτουργικό σύστημα Unix. Η δεκαετία του 1960 βρήκε τα Bell Labs να συμμετέχουν μαζί με την General Electric και το MIT στην ανάπτυξη ενός εξαιρετικά φιλόδοξου λειτουργικού συστήματος, του Multics. Δυστυχώς όμως, το σύστημα αυτό ήταν τόσο φιλόδοξο που δεν μπορούσε να ικανοποιήσει τους στόχους του, κυρίως λόγω περιορισμών της τεχνολογίας εκείνης της εποχής. Τα Bell Labs αποχώρησαν και τότε ο Ken Thompson, ο Dennis Ritchie, ο Doug McIlroy, ο Joe Osana, αποχώρησαν και αυτοί μαζί και άρχισαν να κατασκευάζουν ένα λειτουργικό σύστημα, το οποίο δεν είχε όνομα, σαν ένα πολύ πρωτόγον υπολογιστή, αυτό που βλέπουμε εδώ πέρα, ένα PDP-7. Βασισμένη σε αυτά που έμαθαν, το σύστημα ήταν τόσο φιλόδοξο που δεν μπορούσε να ικανοποιήσει τους στόχους του, κυρίως λόγω περιορισμών της τεχνολογίας εκείνης της εποχής. Το PDP-7. Βασισμένη σε αυτά που έμαθαν, κατέθεσαν μια αίτηση χρηματοδότησης για να αγοράσουν ένα ισχυρότερο υπολογιστή, τον PDP-11 που βλέπουμε εδώ πέρα, αλλά και πίσω μου, με στόχο να φτιάξουν ένα σύστημα επεξαργασίας κειμένου. Τότε τα Bell Labs έφτιαχναν ένα σωρό διπλώματα έβρεση τεχνίας και χρειάζονταν ένα σύστημα που να τους επιτρέπει να γράφουν τις αιτήσεις με εύκολο τρόπο. Η ιστορία αυτού που ακολούθησε ήταν αρκετά περίπλοκη και σύνθετη. Την βλέπουμε εδώ πέρα σε ένα γενεολογικό δέντρο. Εμείς θα εξετάσουμε το πορτοκαλί μονοπάτι αυτού του δέντρου. Για να δούμε τις πηγές δεδομένων που θα χρησιμοποιήσω. Η πρώτη πηγή είναι ένα αποθετήριο, ένα μέρος στο οποίο φυλάσσεται κώδικας προγραμματισμού, που περιέχει την ιστορία εξέλιξης του λειτουργικού συστήματος Unix. Αρχικά το Unix ήταν εμπορικό απόριτο, δηλαδή δεν μπορούσε κανείς να το μελετήσει. Ευτυχώς, στις αρχές δεκαετίας του 2000, η εταιρεία Caldera, που είχε τότε τα πνευματικά δικαιώματα των αρχικών εκδόσων του Unix, έδωσε την άδεια σε μελετητές να πάρουν τις αρχικές εκδόσεις και να τις μελετήσουν και έτσι τις εισήγαγα σε αυτό το αποθετήριο. Κάποια τμήματα δεν διασώθηκαν σε μορφή μηχαναγνώσιμη. Βλέπουμε εδώ πέρα μια επιστολή, η οποία ήταν για μια ομιλία που θα εξηγούσε το Unix, του 1972, Σεπτέμβριο 1972. Ευτυχώς, παράρτημα σε αυτήν την επιστολή, ήταν ο πηγαίος κώδικας αυτής της εκδόσεις του Unix. Βλέπετε εδώ πέρα κάποια σελίδα από αυτήν. Μια βάδα θελοντών πήρε, σάρωσε αυτές τις σελίδες, τις διόρθωσε και αυτόν τον τρόπο μπορείς να τις εισάγω στο αποθετήριο και να έχουμε πρόσβαση σε αυτές. Το σύνολο των δεδομένων που είναι στο αποθετήριο που μελέτησα, φαίνεται εδώ πέρα σαν γενεολογικό δέντρο. Ξεκινάει από κώδικα που αναπτύχθηκε στα εργαστήρια Bell, συνεχίζει με κώδικα που ανέπτυξαν στο Πανεπιστήμιο της Καλιφόρειας, το Berkeley και τελειώνει με κώδικα που αναπτύχθηκε σαν λογισμικό νύχτου κώδικα, από τις προσφάθειες 386BSD και FreeBSD. Βλέπουμε εδώ πέρα πως σε αυτό το αποθετήριο, ο κώδικας με διάφορα χρώματα ενώ ο κώδικας που μπαίνει μια συγκεκριμένη χρονιά, συνεχίζει να υπάρχει τα επόμενα έτης, επόμενες εκδόσεις του Unix, επικαλεπτόμενος, όπως θα μπορούσε κανείς να φανταστεί και ότι θα μπορούσε να γίνει σε μια αρχαία λογική ανασκαφή, από καινούργιο κώδικα, ο οποίος προστίθεται αργότερα. Αν κανείς αναλύσει τον κώδικα, γραμμή-γραμμή, μπορεί να δει στο ίδια αρχαία του κώδικα, θμήματα τα οποία αναπτύχθηκαν από τους αρχικούς ερευνητές του Unix, όπως τον Denis Ricci, βλέπουμε εδώ πέρα το 1979, με θμήματα που προσθέθηκαν αργότερα, όπως η άλλη σημείωση με κίτρινο, μια αλλαγή που έκανε όντως ούτεν το 2009. Εδώ βλέπουμε τη χρονοϊστορία των εκδόσων που υπάρχουν στο αποθετήριο που δημιουργήθηκε, μελέτησα. Αρχικά δεν χρησιμοποιούνταν κάποιο δικό λογισμικό για να καταγράφει τις αλλαγές που γίνονται στο σύστημα και έτσι οι πρώτες εκδόσεις αποτυπώνονται σαν στιγμιότυπα. Αργότερα χρησιμοποιούνταν ειδικά προγράμματα, όπως το CVS, αργότερα το Subversion και σήμες στις μέρες μας το Git και έτσι απλώς έχω αποτυπώσει τις επίσημες εκδόσεις, ενώ από κάτω βρίσκονται και όλες οι αλλαγές μέρα προς μέρα. Δεύτερη πηγή δεδομένων αφορά κάτι πολύ διαφορετικό. Βιβλία τα οποία έχουν βγει και περιγράφουν την δομή του πυρήνα του Unix και την εξέλιξή της στην αρχιτεκτονική και τις λειτουργίες που προσφέρει. Τρίτη πηγή δεδομένων. Αυτή είναι η τεκμηρίωση που συνοδεύει το Unix από την αρχή της εκδοσίας του μέχρι σήμερα. Αυτοί που το έφτιαξαν έδωσαν ιδιαίτερη σημασία στην τεκμηρίωση με τη μορφή εγχειρηδίων. Κάποια μάλιστα από αυτά μπορέσαν να ανασυνθέσω από τον αρχικό κώδικα σε μηχαναγνώσεμη μορφή που το συνόδευε. Βλέπουμε εδώ την τρίτη έκδοση, η οποία είχε τυπωθεί σε έναν κλασικό κτυπωτή με χαρακτήρα σαν αυτούς της γραφομηχανής και την τέταρτη έκδοση του ίδιου έτους, αλλά το Νοέμβριο του 1973, η οποία είχε φτιαχτεί σε ένα πρωτόγωνο μηχάνημα φωτοστηχειοθεσίας και αυτό βλέπετε ότι χρησιμοποιεί κανονικά τυπογραφικά στοιχεία. Τέταρτη πηγή. Αυτή είναι ένα αποθετήριο που δημιούργησα που καταγράφει την εξέλιξη των διαφόρων στοιχείων του Unix, δηλαδή των τεκμηριωμένων εντολών του, των κλείσεων που γίνονται προς το λειτουργικό σύστημα, των εντολών που περιέχει η γλώσσα προγραμματισμού C, των συσκευών, των μορφωτυμών των αρχείων, παιχνιδιών και άλλων στοιχείων. Με βάση αυτό έχω φτιάξει μια γραμμή ιστορική η οποία μας δείχνει την εξέλιξη, πότε δηλαδή προσθέθηκε κάθε στοιχείο και πότε έπαψε να υπάρχει σε ποια έκδοση. Θα προχωρήσουμε τώρα και να δούμε την αρχιτεκτονική εξέλιξη όπως μπορούμε να την καταλάβουμε από αυτά τα στοιχεία, τις κύριες δηλαδή αρχιτεκτονικές αποφάσεις. Θα ξεκινήσω με τα σημαντικότερα ορώσιμα και συγκεκριμένα από λίγο πριν το 1970, όταν οι δημιουργοί του άρχισαν να φτιάχνουν αυτό το σύστημα που δεν είχε καν όνομα σε αυτόν τον πρωτόγον υπολογιστή PDP-7. Βλέπουμε εδώ πέρα ένα θέμα του πυρήνα που τελείται από μόλις 2,5 χιλιάδες γραμμές. Σημειώστε ότι σύγχρονοι πυρήνες λειτουργικού συστήματος αποτελούνται από εκατομμύρια γραμμές. Και όμως σε αυτό το σύστημα βλέπουμε να είναι διαχωρισμένο σε διαφορετικά επίπεδα, δηλαδή να υπάρχει το χαμηλότερο επίπεδο που περιέχει το πυρήνα και το ανώτερο επίπεδο περιέχει τις εντολές που εκτελούνται στον πυρήνα του λειτουργικού συστήματος. Και επίσης βλέπουμε διαμερισμό σε ξεχωρίστα τμήματα και τα όνομα τους. Όλα τα αρχεία που βλέπουμε εδώ που ξεκινά το χαρακτήρα S είναι τα αρχαία του πυρήνα, system. Ενώ βλέπουμε κάποια αρχεία με το όνομα add1 και add2, αυτά είναι οι προτιορθωτήσεις που χρησιμοποιούσε αυτό το σύστημα, ο τρόπος για να εισάγει κανείς τον κώδικα. Σε αυτή την αρχιτεκτονική εδώ βλέπουμε ότι ο πυρήνας δεν εξαρτάται από τις εντολές και οι εντολές δεν εξαρτώνται μεταξύ τους. Επομένως αυτό μας δείχνει ότι υπήρχε διαμεριασμός και διαχωρισμός σε επίπεδα. Υπήρχε δυνατότητα της διαχείρισης διεργασιών, δηλαδή ανεξάρτητα προγράμματα τα οποία το ένα δεν επηρεάζει το άλλο και μπορεί το σύστημα να φορτώσει ξεχωριστά προγράμματα και να τα εκτελέσει. Επίσης υπήρχε διεπαφή εισόδου-εξόδου και συστήματος αρχείων, να μπορούμε να διαβάζουμε και να γράφουμε και να δημιουργούμε αρχεία και επίσης να σβήνουμε τα αρχεία τα οποία δεν θέλουμε πια ή να αλλάζουμε το όνομα ενός αρχείου. Υπήρχε ένας διερμηνευτής, ένας τρόπος δηλαδή ένα πρόγραμμα να μην εκτελεστεί απ'ευθείας από τον επεξεργαστή του υπολογιστή, αλλά να γραφτεί σε μια υψηλότερη επίπεδο γλώσσα, βλέπουμε εδώ πέρα ένα παράδειγμα, την οποία μετά θα εκτελέσει εντολή εντολή ένα ειδικό πρόγραμμα αυτός ο διερμηνευτής. Το πρώτο σημείο που πραγματικά ονομαζόταν Unix δούλευε σε αυτόν τον υπολογιστή τον PDP-1120 σαν αυτόν που βλέπουμε εδώ πέρα ή στην προσωμίωση της κονσόλας του η οποία δουλεύει πίσω μου. Κοιτάξτε εδώ πέρα την αρχιτεκτονική της πρώτης έκδοσης Νοεύριος 1971. Στο χαμηλότερο επίπεδο έχουμε τον πυρήνα με διάφορες κλήσεις οι οποίες είναι σημειωμένες με ροζ, υποστηρικτικές λειτουργίες, ένα υποσύστημα για είσοδο έξοδο και ένα σύστημα που ελέγχει τις διεργασίες. Από πάνω έχουμε μια βιβλιοθήκη από χρήσιμες λειτουργίες και πάνω εκεί χτισμένες τις εντολές του χρήστη σε διάφορες κατηγορίες καθώς και τις εντολές που χρησιμοποιεί ο διαχειριστής. Κρατήστε στο μυαλό σας αυτή την αρχιτεκτονική για να την ξαναδούμε αργότερα. Η πρώτη έκδοση είχε μία διεπαφή με συγκεκριμένες εντολές που καλούμε στον πυρήνα αριθμιμένες και το εκπληκτικό είναι ότι η ίδια διεπαφή, οι ίδιες κλήσεις εντολών με τους ίδιους αριθμούς υπάρχει μέχρι τις μέρες μας στο λειτουργικό σύστημα FreeBSD. Βλέπουμε εδώ πέρα πώς εμφανίζεται το 2018. Το ότι διατηρήθηκαν αυτές τις εντολές δείχνει το πόσο καλά τις είχαν σκεφτεί για αρχική δημιουργή τους. Άλλο ενδιαφέρον στοιχείο είναι ότι σε αυτή την έκδοση εμφανίζονταν εργαλεία και παιχνίδια τα οποία συνεισέφεραν οι χρήστες. Ήταν σε ένα υποκατάλογο USR, από το user, χρήστης, και αυτός ο κατάλογος έχει μείνει μέχρι τις μέρες μας στα συστήματα Unix και Linux υπονοώντας εντολές οι οποίες είναι περισσότερο μαζικές, έχουν έρθει από περισσότερους χρήστες. Βλέπουμε εδώ πέρα κάποια από αυτά τα στοιχεία. Ήταν μάλιστα ενδιαφέρον, μιλάκα πριν για το πόσο χρήσιμη είναι η τεκμηρίωση, ότι όσα προγράμματα δεν συνοδεύουν από αντίστοιχη τεκμηρίωση, δηλαδή τον τρόπο με τον οποίο δούλευαν, υπήρχε ένα πρόγραμμα, για κάθε πρόγραμμα το οποίο δεν είχε την τεκμηρίωση, πήγαινε και έσβαινε το αντίστοιχο πρόγραμμα. Αυτό ήταν ένας τρόπος να ξαναγκαστούν όσοι συνεισέφεραν πρόγραμματα να τα τεκμηριώνουν κιόλας, να γράφουν τις οδηγίες τους. Άλλο σημαντικό στοιχείο που βλέπουμε σε αυτή την έκδοση είναι η δενδρική δομή των αρχείων. Μέχρι τότε δεν υπήρχε αυτό. Πολλά συστήματα είχαν ξεχωριστούς δίσκους στους οποίους φύλαγαν τα αρχεία, αλλά δεν είχαν αυτήν την οργάνωση που έχουμε μέχρι τις μέρες μας, που σε ένα φάκελο μπορούμε να έχουμε υποφακέλους και υποφακέλους των υποφακέλων. Υπήρχαν δηλαδή δημιουργήθηκαν εδώ κλήσεις για να δημιουργούνται και να αλλάζει ο φάκελος, καθώς και εργαλεία τα οποία επέτρεπαν να επεξαργαστούν αυτούς τους φακέλους. Η τρίτης έκδοση ήταν επίσης σημαντική, το Φεβράριο του 1973, βλέπουμε εδώ πέρα το εχειρίδιο της. Και αυτή η σίγα είναι μια εκπληκτική καινοτομία, δυνατότητα ξεχωριστές διαργασίες να ενώνονται μεταξύ τους με σωλήνωση. Με έναν τρόπο δηλαδή ότι παράγει μια διαργασία ένα πρόγραμμα, να το καταναλώνει το άλλο και να το αλλάζει. Έτσι ξεχωριστές διαργασίες μπορεί να είναι φίλτρα τα οποία να επηρεάζουν τα δεδομένα τα οποία περνούν μέσα από αυτά και με αυτόν τον τρόπο ενώνοντας πολλά φίλτα μεταξύ τους να κάνουμε πολύ πιο σύνθετα προγράμματα. Βλέπουμε εδώ πέρα ένα κείμενο με το οποίο Doug McIlroy πρότεινε αυτόν τον τρόπο οργάνωση του 1964, τελικά εξελίχθηκε και αναπτύχθηκε δέκα σχεδόν χρόνια αργότερα. Ήταν τόσο ενθουσιασμός των δημιουργών του Unix για την δυνατότητα ενός προγράμματος να δράσει σαν φίλτρο, ώστε όταν φτιάξαν τις σωλήνωσεις, το βράδυ δούλεψαν ολυνηχτοίς για να μετατρέψουν τα περισσότερα προγράμματα, που από τότε διάβαζαν από αρχεία σε ξεχωριστά φίλτρα τα οποία μπορούσαν να ενωθούν με μία σωλήνωση. Η τέταρτη έκδοση βγήκε το Νοέμβριο του 1973. Ένα σημαντικότητο στοιχείο στην έκδοση αυτή είναι ο τομημένος προγραμματισμός, ο πυρήνες δηλαδή του συστήματος, ο οποίος μέχρι τότε γράφονταν στην γλώσσα του επεξεργαστή, στη γλώσσα του PDP-11 σε σύνθετες εντόλες που είναι δύσκολο κάποιος να καταλάβει και να αλλάξει, γράφτηκε σε μια γλώσσα προγραμματισμού υψηλότερο επίπεδο, την βλέπετε δεξιά ένα τμήμα της, την ονόμαζαν νιουμπί, περίπου σε 63.000 γραμμές νιουμπί. Ένα μικρό τμήμα ήταν ακόμα γραμμένο σε συμβολική γλώσσα του PDP-11, περίπου 800 γραμμές. Αυτό είχε ως αποτέλεσμα το σύστημα να αποτελείται περίπου από 105 συναρτήσεις και 50 σύμβολα, έναντι της αρχής της πρώτης έκδοσης που είχε 250 σύμβολα, πολύ περισσότερα δηλαδή σύμβολα, που σήμαζε ότι το πρόγραμμα ήταν πολύ πιο δύσκολο να συντηρηθεί και να κατανοηθεί ο δοημένος προγραμματισμός. Το έκανε πιο εύκολο να κατανοηθεί και μέχρι τις μέρες μας οι πυρήνες πια γράφονται σε γλώσση υψηλού επίπεδου, στην συγγλώση προγραμματισμού συ συνήθως, οποία είναι απόγονος της νιουμπή και όχι σε συμβολική γλώσσα όπως γινόταν μέχρι τότε. Επίσης αυτή η έκδοση έφερε μια διεπαφή του πυρήνα σε πολλαπλές γλώσσες. Βλέπουμε εδώ ένα παράδειγμα τεκμηρίωση μιας εντολής κλήσης προς τον πυρήνα της εντολής πάι που δημιουργεί μια σωλήνωση, η οποία τεκμηριώνεται για το πώς μπορεί να χρησιμοποιηθεί τόσο από τη συμβολική γλώσσα όπου τα στοιχεία στέλνουν τους καταχωρητές, R0 και R1 βλέπουμε εδώ πέρα, όσο και από τη γλώσσα προγραμματισμού B ή τον απογονό της C, όπου τα στοιχεία στέλνονται σε έναν πίνακα file descriptor που λέει από κάτω με δύο στοιχεία. Αυτό συνεχίζεται επίσης μέχρι τις μέρες μας όπου τα λειτουργικά συστήματα είναι προσβάσιμα υπηρέως του λειτουργικού συστήματος από κλήσεις που μπορεί να κληθούν από πολλές διαφορετικές γλώσσες. Η πέμπτη έκδοση βγήκε το αρχείο τον Ιούνιο του 1974. Ένα σημαντικό στοιχείο της ήταν αρχεία εντολών. Η ιδέα δηλαδή, κάποιες εντολές που χρησιμοποιούμε συχνά, τις φυλάξουμε σε ένα αρχείο και να τις χρησιμοποιήσουμε ομαδικά σε ένα πακέτο αργότερα, χωρίς να χρειαστεί να γράψουμε μία μία της εντολής. Βλέπουμε εδώ ένα παράδειγμα που μεταγλωτίζει ένα τμήμα του πηγαίου κώδικα του συστήματος και αυτό χρησιμοποιείται ευρύδατα στις μέρες μας. Η έκτη έκδοση βγήκε τον Μάιο του 1975. Εδώ βλέπουμε ένα φωτοτυπημένο αντίγραφο, σημειώσου που φτιάξε ο John Lyons στην Αυστραλία, που είχε τον πηγαίου κώδικα και τον εξηγούσε γραμμή γραμμή. Πάρα πολλοί φοιτητές έμαθαν πως δουλεύουν τα λειτουργικά συστήματα ακριβώς από αυτό το βιβλίο του John Lyons. Επειδή μάλιστα κάποια στιγμή η AT&T απαγόρευσε, θεωρώντας ότι είναι εμπορικό απόλυτο ο κώδικος του Unix, την διάδοση αυτού του βιβλίου, αυτό άρχισε να κυκλοφορεί σε φωτοτυπημένες σημειώσεις και κάποιοι λένε ότι είναι από τα πιο πολύ φωτοτυπημένα βιβλία που κυκλοφόρησαν ποτέ. Ένα σημαντικό στοιχείο αυτής της έκδοσης είναι ότι είχε μια μεταφέρσιμη βιβλιοθήκη από εντολές της γλώσσας προγραμματισμού C. Εντολές δηλαδή που χρησιμοποιούνται συχνά, μπήκανε σε αρχεία σαν αυτά που βλέπετε εδώ πέρα και πολλά από αυτά χρησιμοποιούνται σαν εντολές μέχρι τις μέρες μας έχουν επιζήσει και αποτελούν την βάση του τρόπου με τον οποίο χρησιμοποιείται η γλώσσα προγραμματισμού C. Η έβδομη έκδοση του Unix που βγήκε από τα εργαστήρια Bell Labs, για αυτό λέγεται Research Edition, βγήκε τον Ιανουάριο του 1979, αρκετά χρόνια μετά. Πολλοί χιουμοριστικά την αποκαλούν σαν μια βελτίωση, όχι μόνο εναντί των προηγούμενων εκδόσων αλλά και εναντί των εκδόσων που ακολούθησαν μετά. Γιατί είχε τις κύριες ιδέες του Unix σε πολύ συνεπτυγμένο τρόπο. Ένα σημαντικό στοιχείο αυτής της έκδοσης είναι η ιδέα υπάρχει στο Unix σαν μια ιδεατή μηχανή. Ο Steve Johnson σκέφτηκε τότε και είπε ότι αντί να πρέπει να παίρνουν διάφορα προγράμματα τα οποία δεν μπορούσαν να δουλέψουν σε διαφορετικούς υπολογιστές και να τα μεταφέρουν και να τα αλλάζουν για να δουλεύουν σε κάθε υπολογιστή θα ήταν πιο εύκολο να παίρνω ολόκληρο το Unix, να το κάνω να δουλεύει σε έναν υπολογιστή και τότε αυτόματα όλα τα προγράμματα τα οποία τρέχουν στο Unix θα δουλεύαν σε αυτόν τον υπολογιστή. Επομένως έχουμε την ιδέα το Unix να δράσει σαν ένας ιδεατός υπολογιστής, σαν ένας υπολογιστής τον οποίος μας κρύβει τις λεπτομέρειες που έχει κάθε ξεχωριστός επεξαργαστής, κάθε ξεχωριστός υπολογιστής. Άλλο σημαντικό στοιχείο στην 7η έκδοση ήταν οι ειδικά εργαλεία για να αναπτύσσονται νέες γλώσσες προγραμματισμού. Δύο εργαλεία, το εργαλείο LEX και YAK, επέτρεπαν τη λεκτική ανάλυση ενός προγράμματος, το σπάσουν δηλαδή σε ξεχωριστές λέξεις και τη συντακτική ανάλυση του, να βρουν δηλαδή πώς αυτό δημιουργεί ένα δέντρο από εντολές. Αυτή ήταν τρομερή επιτυχία. Σε αυτή την έκδοση 12 προγράμματα χρησιμοποιούσαν αυτά τα εργαλεία. Με βάση αυτά τα εργαλεία δημιουργήθηκαν μια σειρά από γλώσσες ξεδικευμένου πεδίου. Γλώσσες δηλαδή, που δεν μπορεί να τις χρησιμοποιήσει κανείς για να προγραμματίσει και να φτιάξει οποιαδήποτε εφαρμογή, αλλά είναι πάρα πολύ καλές για συγκεκριμένες εφαρμογές. Εδώ πέρα τα ονόματα μερικαίων από αυτών στις γλώσσες, κάποιες από αυτές χρησιμοποιούνται ευρύτατα στις μέρες μας. Μετά την έβδομη έκδοση, το Unix άρχισε να διαδίδεται ευρύτατα σε πανεπιστήμια και ένα από τα πανεπιστήμια το οποίο το υιοθέτησε και το εξέλεξε ήταν το Πανεπιστήμιο της Καλιφόρνια στο Μπέρκλι. Άρχισε να προσθέτει προγράμματα και μια εξαιρετικά σημαντική έκδοση που βγήκε από το Μπέρκλι ήταν η έκδοση 4.2 BSD, Berkeley Software Distribution, το Σεπτέμβριο του 1983. Τότε με χρήματα τα οποία είχε δώσει η Αμερικανική Κυβέρνηση στο Μπέρκλι ανάπτυξαν μέσα στο σύστημα Unix τα πρωτόκολλα του διαδικτύου, του ίντερνετ. Τα βασικό τρόπο δηλαδή με τον οποίο οι κόμβοι του διαδικτύου επικοινώνουν μεταξύ τους. Τα αρχικά ARP, IP, TCP, UDP, ICMP είναι η βάση του διαδικτύου. Ο τρόπος με τον οποίο επικοινώνουν οι υπολογιστές μέχρι τις μέρες μας. Ακόμα αυτή η έκδοση παρήχε επικοινωνία μεταξύ απομακρυσμένων διαργασιών, τη δυνατότητα μια διαργασία που τρέχει σε έναν υπολογιστή, να επικοινωνεί με μια διαργασία που τρέχει σε έναν άλλο υπολογιστή. Αυτό κάθε μέρα, κάθε κλικ που κάνουμε σε ένα πρόγραμμα σήμερα στο διαδίκτυο, από πίσω του κρύβεται ακριβώς αυτό το αρχιτεκτονική ιδέα την οποία ανέπτυξαν τότε το 1983 στο Μπέρκλι. Επίσης εσωτερικά στο σύστημα έφτιαξαν βάσεις εδομένων για υπολογιστές, για τα δίκτυα, για τους χρήστες, έτσι ώστε να μπει μια τάξη στον τρόπο που χρησιμοποιείται το διαδίκτυο. Αντίστοιχες βάσεις χρησιμοποιούνται μέχρι τις μέρες μας, για να μπορούμε να ενώσουμε όλους τους υπολογιστές στον πλανήτη μας, γύρω από τον Παγκοσμίου Στό, για παράδειγμα. Τον Ιούνιο του 1988 μία άλλη σημαντική έκδοση που βγήκε από το Μπέρκλι ήταν η έκδοση Ταχόου, η οποία για το σημαντικό χαρακτηριστικό του μπορούσε να υποστηρίξει διαφορετικές αρχιτεκτονικές επεξεργαστών. Οι επεξεργαστές που χρησιμοποιούν υπολογιστές όπως αυτή της Intel, της AMD ή της ARM πολλές φορές δεν είναι συμβατοί μεταξύ τους. Ένα πρόγραμμα για επεξεργαστές Intel όχι, δεν μπορεί να εκτελεστεί από έναν επεξεργαστή ARM. Αυτό που έκανε αυτή η έκδοση είναι ο πυρήνας του λειτουργικού συστήματος να περιέχει αρκετό κώδικα ο οποίος ήταν ανεξάρτητος από τον επεξεργαστή. Η συγκεκριμένη έκδοση μπορούσε να τρέχει σε επεξεργαστές VAX και Ταχόου. Στις μέρες μας ο πυρήνας του Unix και του Linux μπορεί να τρέχει σε δεκάδες διαφορετικούς επεξεργαστές βασισμένως ακριβώς σε αυτή την ιδέα και αρχιτεκτονική. Ένα άλλο ενδιαφέρον στοιχείο αυτής της έκδοσης είναι ότι παρήχε υποστήριξη για ορολογικές ζώνες δηλαδή να μπορούμε να ξέρουμε τι ώρα είναι σε διάφορα μέρη του πλανήτη μας. Σημαντικό στοιχείο είναι ότι αυτός ο κώδικας είναι αρκετά ογκώδης. Δεν αναπτύχθηκε εσωτερικά στο Μπέρκλι αλλά το συνισέφερε μια κοινότητα έξω από το Μπέρκλι και είναι το πρώτο παράδειγμα ανάπτυξη του λειτουργικού συστήματος με κώδικα που παρέχουν άλλοι. Αυτό είναι κάτι που σήμερα γίνεται ευρύτατα. Επειδή ο κώδικας που είχε αναπτυχθεί στο Μπέρκλι είχε χρηματοδοτηθεί από την αμερικανική κυβέρνηση αυτός ήταν διαθέσιμος όπως οτιποτε χρηματοδοτείται με αυτόν τον τρόπο σε όλους. Δηλαδή μπορείς ο καθένας να πάρει τον κώδικα, να τον διαβάσει, να τον εξελίξει. Δύο πληροφορικοί, ο William και η Lynn Jollitz, σκέφτηκαν ότι μπορούσαν να πάρουν αυτόν τον κώδικα να προσθέσουν κάποια τεμάντα τα οποία συνέχιζαν να είναι εμπορικά απόλυτα της AT&T να τα ξαναγράψουν αυτά και με βάση αυτά να φτιάξουν λειτουργικό σύστημα το οποίο μπορούσε ο καθένας να χρησιμοποιήσει χωρίς να χρειαστεί να έχει άδεια από την AT&T όπως χρειαζόταν μέχρι τότε. Αυτό το διεννήναν σε ένα CD μαζί με το περιοδικό Dr. Dobbs και πολλοί χομπίστες πιτάξαν να χρησιμοποιούν το Unix, κάτι το οποίο μέχρι τότε δεν ήταν δυνατό σαν λογισμικό ανοιχτού κώδικα, ο κύριος τρόπος που χρησιμοποιείται το Unix στις μέρες μας. Πολλοί έπρεπε να αναπτύσσουν εκεί πέρα διορθώσεις και βελτιώσεις αυτό ονομάστηκε 386 Patch Kit και αυτό επειδή ήταν οργανωμένες συνισφορές από την κοινότητα μετέτρεψε το Unix από ένα λογισμικό ανοιχτού κώδικα που μπορεί ο καθένας να διαβάσει σε ένα έργο ανοιχτού κώδικα, δηλαδή ένα έργο στο οποίο διάφοροι συνισφέρουν από την κοινότητα. Οι συνισφορές που γίνονταν εκείνη την εποχή ήταν οι οργανωμένες, είχαν το τίτλο τους, το συγγραφέα τους, την περιγραφή τους και τα προαπετούμενα για να μπορέσει να δουλέψει κάποια συνισφορά. Με βάση αυτά μια μεγαλύτερη ομάδα εθελοντών είπαν να οργανώσουν αυτή τη διαδικασία, να μην συνισφέρει καθένας ανουργάνωτα κάτω από έναν πυρήνα που ονομάστηκε FreeBSD. Υπάρχουν και άλλα τέτοια συστήματα όπως το OpenBSD, το NetBSD ή αντίστοιχη κοινότητα του Linux, η οποία όμως βασίζεται σε διαφορετικό κώδικα. Δεν έχει την γενεολογία του Unix που περιγράφω εδώ πέρα. Το Μάιο του 1994 η έκδοση 1.1 του FreeBSD είχε μαζί της έναν διαχειριστή πακέτον, δηλαδή ειδικό πρόγραμμα το οποίο τον κώδικα που έχει συνισφέρει κάποιος, μπορεί να τον μεταγλωτίσει, να τον κάνει να δουλεύει στο συγκεκριμένο υπολογιστή, να τον εγκαταστήσει, αν δεν τον θέλουμε και επίσης να διαχειριστεί ότι προαπαιτούμενα χρειάζονταν αντεκαταστήσει δηλαδή και αυτά. Αυτό επέτρεψε στο σύστημα να μεγαλώσει πολύ διότι διάφορα μπορούν να συνισφέρουν τον κώδικα χωρίς να χρειαστεί να οργανωθούν και να έρθουν σε στενή συνεργασία με την ομάδα ανάπτυξης του συστήματος και να συνισφέρουν ένα πακέτο. Πιο μετά, το Ιανουάριο του 1999 στο FreeBSD 3.0 ένα ενδιαφέρον στοιχείο που βλέπουμε εδώ πέρα είναι ένα υποσύστημα του συστήματος, το βλέπετε σε αυτό το τετράγωνο, το οποίο έχει τη δική του αρχιτεκτονική. Το σύστημα αυτό, πρόσβαση σε αποθηκευτικές μονάδες όπως σκληρούς δίσκους, ήταν τόσο περίπλοκο που βλέπουμε να απαρτίζεται και αυτό από επίπεδα και κάθε επίπεδο να έχει μέσα του ξεχωριστές μονάδες. Βλέπουμε δηλαδή την αρχιτεκτονική ολόκληρο του συστήματος να πουλείται από μικρότερα συστήματα με τη δική τους αρχιτεκτονική. Κάτι αντίστοιχο έγινε το δεκέμβριο του 1999 στην εκδοσία 3.4 όταν ήρθε ένα ολόκληρο άλλο υποσύστημα και αυτό βλέπετε με τη δική του αρχιτεκτονική για να διαχειρίζεται τα διάφορα πρωτόκολλα του διαδικτύου τα οποία είχαν αρχίσει τότε να γιώνεται πολλά και να χρειάζεται καλύτερη συνεργασία μεταξύ τους. Πώς μπορούμε να δούμε αυτή την εκκλήση με αριθμούς. Κοιτάξτε πέρα την αύξηση των εντολών. Βλέπουμε πως οι εντολές που υποστηρίζει το σύστημα Unix αυξάνονται σχεδόν γραμμικά στις διάφορες εκδόσεις από την πρώτη εκδοσία των Bell Labs μέχρι τις εκδόσεις της μέρες μας. Τους εκκλήσεις προς το λειτουργικό σύστημα βλέπουμε να μην έχουν την ίδια αύξηση αλλά όσο είναι στην ίδια κοινότητα όπως στα Bell Labs αριστερά στο Berkeley στη μέση να μένουν περίπου σταθερές μέχρι που απελευθερώθηκαν στο ανοιχτό σύστημα FreeBSD όπου συνέχεια προσθήθονται καινούργιες πλήσεις και έχουν φτάσει κοντά στις 400 στις μέρες μας. Οι εντολές της βρώσης προγραμματισμούς είχαν μια αντίστοιχη εξέλιξη. Σταθερή στα Bell Labs, μια αύξηση στο Berkeley και συνεχή αύξηση στο FreeBSD. Στο αριθμό συσκευών βλέπουμε να υπάρχει μια συνεχή αύξηση το οποίο είναι λογικό διότι οι συσκευές, καινούργιες συσκευές προέρχονται συνέχεια. Υπάρχει εξωτερική πίεση δηλαδή για να αυξάνονται και να δημιουργούνται συνέχεια, να υποστηρίζονται συνέχεια καινούργιες συσκευές. Πως προς τις εντολές τους συσκευάτων σε αντίστοιχα βλέπουμε μια συνεχή αύξηση γιατί θέλουμε κανείς να μπορεί να διαχειριστεί καλύτερα το συνεχείο. Μια ενδιαφέρουσα πατήρηση μπορούμε να κάνουμε στους αντικμηριωμένους μορφότυπους αρχείων. Εδώ βλέπουμε ότι υπάρχει μια αύξηση η οποία τελευταία χρόνια έχει σταματήσει. Για ποιο λόγο? Μάλλον πια δεν είναι τόσο εύκολο να επικοινωνούμε με αρχεία, χρησιμοποιούμε άλλες τεχνικές και αυτό η επικοινωνία με αρχεία η τεκμηρίωση ενών τύπων αρχείων έχει σταματήσει. Πώς μπορούμε να δούμε την πολυπλοκότητα του κώδικα? Υπάρχει μια μετρική που λέγεται κυκλοματική πολυπλοκότητα. Πολύ αδραά μας δείχνει με πόσες άλλα τετράμενα του κώδικα ενώνεται μια συγκεκριμένη γραμμή κώδικα. Και βλέπουμε ότι αυξανόταν τις δεκαετίες του 70, του 80 και 90, αλλά μετά το 2000 αρχίζονται στις εντολές του συστήματος, όπως και στη βιβλιοθήκη του συστήματος που μπορεί να χρησιμοποιεί ο καθένας, όσο και στο μπρίνα του λειτουργικού συστήματος. Αυτό είναι ενδιαφέρον και μας έκανε να ψάξουμε να δούμε αν συμβαίνει και αλλού αυτό. Προκρίναμε και στο λειτουργικό σύστημα λύτου, το οποίο σύστημα συζητεί σε διαφορετικό κώδικο και είδαμε και εκείνο το σχήμα, μια άδοδο και μετά μια πτώση. Αυτό μας δείχνει ότι αυτό μάλλον δεν είναι κάτι τυχαίο, ότι μας προγραμματίζουμε καλύτερα και γράφουμε κώδικο ο οποίος είναι λιγότερο πολύπλοκος. Πρέπει να το πούμε έτσι, πολύπλοκος κώδικος, είναι δύσκολο να κατανοηθεί και να συντηρήσει. Θα δούμε και λίγο την αρχιεκτονική εκπλήξη ιδιωτικά, μπορούμε να δούμε δηλαδή και πώς μπορούμε να εντυπώσουμε μια θέση για το πώς εξελίχει η αρχιεκτονικά ενελειτουργή του σύστημα σαν το use. Θα ξεκινήσω με τη μορφή της εξελίξης. Αυτό από άλλο ένα σημαντικό στοιχείο που βλέπουμε είναι ότι αυτά τα στοιχεία αποφασίστηκαν στην αρχή της ζωής του σύστηματος. Κοιτάξτε εδώ πέρα με τον χρόνο, όπως τα πρώτα πράγματα για την αρχή της ζωής του, τα πρώτα πέντε μετά τα χρόνια. Εντιαφέρον, όταν περισσότερα από τα στοιχεία αυτά επέζησαν. Εδώ πέρα έχω σημειώσει με μία μπλε γραμμή, ότι γεννήθηκε κάθε στοιχείο. Βλέπω ότι τα πρώτα πράγματα γεννήθηκαν κάποια στιγμή στην αρχή της ζωής του. Συνεχίζουν έτσι μέχρι την αρχιτεκτονική συνολικά. Κοιτάξτε την πρώτη εικόνα της αρχιτεκτονικής, που σας έδειξα για την πρώτη έκδοση. Τώρα μη το κλείσε τα μάτια σας, γιατί θα δείτε την αρχιτεκτονική όπως είναι σύντομα. Κοιτάξτε να δείτε ότι είναι πρωτόμια. Πάλι πάνω. Κοιτάξτε να δείτε ότι είναι πρωτόμια. Πάλι πάνω στις εντολές του χρήση και του διαχειριστή, με μπλε γνώση αυτές που υπήρχαν και στην πρώτη έκδοση. Από πάνω έχουμε τελειώσει με πράσινο χωρίς κάποιες λειτουργίες, που υπήρχαν και στην πρώτη έκδοση. Από πιο κάτω έχουμε τελειώσει του λειτουργικού αρχιτεκτονίματος. Πάλι με ρόντια αυτές που υπήρχαν και στην πρώτη έκδοση. Και από πάνω είναι τα γνώρα υποσυστήμα, με μπλε γνώση αυτές που υπήρχαν και στην πρώτη έκδοση. Κόψαμε για λίγο τη μετάδοση της παρουσίασης, γιατί έκανε κάποια κοψήματα τώρα. Σας ζητούμε συγγνώμη γι' αυτό. Θα προσπαθήσουμε να ξανακάνουμε, από το σημείο που είχαμε μείνει. Κίτρινο αυτά τα οποία διαχειρίζουν τις διαργασίες, και με μόφτα υποστηρικτικά. Εδώ πέρα ότι η αρχιτεκτονική μορφή είναι παρόμοια, σε μέρη στα μορφολογίες δεν έχουν εξελιχθεί. Υπάρχουν ραδιο, διαδίκτυο, πληξεραγδιακτική αλλήξη. Εδώ πέρα έχουμε αρχιτεκτονική εξέλιξη, η οποία φυσικά δεν υπήρχε στην πρώτη έκδοση. Εδώ βλέπουμε ότι συνεχίζουν να βλέπουν τα στοιχεία. Εδώ πέρα έχουμε αρχιτεκτονική εξέλιξη, η οποία φυσικά δεν υπήρχε στην πρώτη έκδοση. Υπάρχουν ραδιο, διαδίκτυο, πληξεραγδιακτική αλλήξη, η οποία φυσικά δεν υπήρχε στην πρώτη έκδοση. Δυστυχώς συνεχίζονται οι διακοπές πράγματι στον ήχο. Θα κάνουμε μια τελευταία προσπάθεια να συνεχίσουμε την παρουσίαση. Παρακαλώ. Μέχρι να ξεκινήσει να λυθεί το πρόβλημα, φαντάζομαι πάλι δεν θα ακούγομαι κι εγώ. Είναι θεματικό βίντεο μόνο. Όχι, εσείς ακούγεστε κανονικά, κύριε Σπινέλη. Μπορούμε να δούμε κάποιες ερωτήσεις μέχρι να λυθεί το πρόβλημα του βίντεο, αν υπάρχει λύση. Ναι, μπορούμε να προχωρήσουμε στις ερωτήσεις. Εγώ θα ήθελα να σταθούμε λίγο στη συμβολή του Unix, στην ανάπτυξη του ίντερνετ. Πόσο σημαντική είναι αυτή η συμβολή και πώς φαντάζεστε ότι θα ήταν η κατάσταση χωρίς την ύπαρξη του Unix. Ενδιαφέρουσα ερώτηση. Τα βασικά πρωτόκολλα του διαδικτύου, Internet στα ελληνικά, βασίζονται σε ένα δημοφιλή μάλλον σε μια υλοποίηση που προγραμματοποιήθηκε από την ομάδα Computer Science Research Group στο Πανεπιστήμιο της Καλιφόρνια στο Μπέρκλι. Επομένως εκεί χάρη στην ευρία διάδοση του Unix στα πανεπιστήμια και σε ερευνητικούς οργανισμούς, αυτά τα πρωτόκολλα του διαδικτύου υιοθετήθηκαν ευρύτατα και έτσι συνέβαινα στη διάδοση του διαδικτύου. Να πω εδώ πέρα ότι αυτό δεν ήταν καθόλου διαδεδομένο εκείνη την εποχή. Υπήρχε ένα αντίπαλο σύστημα επικοινωνίας δικτιακής, το οποίο ήταν κεντρικά ελεγχόμενο, το προωθούσαν οι τηλεφωνικές εταιρείες, εξαιρετικά περίπλοκο και χωρίς τη διάδοση των πρωτοκόλων του διαδικτύου μέσω της διάδοσης του Unix, πιθανότητα μπορεί να έχει επικρατήσει, οπότε η κατάσταση σήμερα μπορεί να ήταν αντίστοιχη με την κλασική τηλεφωνία που δεν μπορεί κανείς να επικοινωνήσει τηλεφωνικά με κάποιον αν δεν έχει σύμβαση μια τηλεφωνική εταιρεία. Και σκεφτείτε ότι τηλεφωνικές εταιρείες ορίζουν ποιους μπορούμε να καλέσουμε και τι μπορεί να κάνει μια κλασική τηλεφωνική συσκευή, δεν μπορεί να τρέξει όποια εφαρμογή θέλουμε, μπορεί να κάνει μόνο φωνητικές κλήσεις και βιντεοκλήσεις, οι οποίες ελάχιστοι χρησιμοποιούν. Αντίστοιχα μπορούσε να είναι η κατάσταση με τις επικοινωνίες της ψηφιακές της μέρες μας, αν δεν είχαν επικρατήσει τα πρωτόκολλα του διαδικτύου μέσω του Unix. Πολύ ωραία. Ας κάνουμε μια προσπάθεια να δούμε και το τέλος της παρουσίασης και θα προχωρήσουμε στη συνέχεια και στις επόμενες ερωτήσεις. Προσπαθεί να μειώσει αυτή την πολυπλοκότητα, κάνοντας το σύστημα πιο εύκολο να συντηρηθεί και να κατανοηθεί και να εξελιχθεί. Ως προς τις δυνάμεις της αρχιτεκτονικής εξέλιξης βλέπουμε και εδώ ενδιαφέροντα στοιχεία. Πρώτα από όλα, βλέπουμε ότι έχουμε τη χρήση συμβάσεων, ένδυση επιβολής συγκεκριμένων χαρακτηριστικών, οι οποίες δευκολύνουν την εξέλιξη μειώνοντας το κόστος της ανάπτυξης και προσφέροντας ευελιξία. Στιχεία δηλαδή του Unix δεν επιβάλλονται από συγκεκριμένες εντολές ή διαπαφές, τρόπο δηλαδή επικοινωνίας που είναι προδιαγραμμένος, αλλά απλώς από συμβάσεις σε οποίες συμφωνούν όλοι όσοι το χρησιμοποιούν. Μία από αυτές είναι τα αρχαία κειμένου, ότι επικοινωνούν τα διάφορα προγράμματα μεταξύ τους με βάση απλά αρχαία κειμένου χωρίς σύνθετη δομή. Μια άλλη σύμβαση έχει να κάνει με την δενδρική ιεραρχία, σε ποια σημεία του συστήματος των αρχιών βάζουμε συγκεκριμένες εντολές. Μια άλλη σύμβαση είναι ότι όπου χρειάζεται να επικοινωνήσουμε με αρχεία, μπορούμε να τεκμηριώσουμε τη μορφή των αρχείων, χωρίς να χρειαστεί να φτιάξουμε ειδικές εντολές για να διαβάζουμε και να γράφουμε τα αρχεία αυτά. Βασιζόμενη σε σύμβαση, αν θέλουμε να εξελίξουμε αυτή τη μορφή είναι εύκολο, απλώς προσθέτουμε κάποια στοιχεία στο αρχείο και προσαρμόζουμε αντίστοιχα τα προγράμματα. Μια άλλη σύμβαση είναι μεταβλητές περιβάλλοντος, δυνατό δηλαδή κάποια στοιχεία να τους δώσουμε ένα όνομα και να τα φυλάξουμε στη μνήμη του υπολογιστή και όποιος ενδιαφέρεται για αυτά να μπορέσει να διαβάσει χωρίς να έχουμε χρειαστεί να έρθουμε σε συμφωνία με αυτούς από πριν. Αυτή είναι άλλη μία σύμβαση, η οποία είναι δυνατότητα της ελεύθερης συνεργασίας χωρίς την επιβολή συγκεκριμένων χαρακτηριστικών. Ένα άλλο στοιχείο το οποίο συνσέφερε στην εξέλιξη του Unix είναι η ανάγκη της μεταφερσιμότητας του συστήματος, να μεταφερθεί δηλαδή από τον υπολογιστή PDP-11 στα Bell Labs, αργότερα στον υπολογιστή VAX στο Berkeley και στις μέρες μας σε άλλους υπολογιστές που τρέχουν όπως τους υπολογιστές που χρησιμοποιούμε στα συστήματα, στους υπολογιστικές υποδομές ή στους φορητούς υπολογιστές μας. Είναι περίπλοκο να μεταφέρει κανείς ένα σύστημα από έναν υπεξεργαστή σε άλλο. Η περίπλοκότητα αυτή οδήγησε την εξέλιξη, επιβάλλοντας λόγω χάη τη χρήση μιας γλώσσης ψήλου επίπεδου, της γλώσσας προγραμματισμού C, ή τον διαχωρισμό του πυρήνα σε θέματα που αφορούν να συγκρίνουν έναν υπεξεργαστή και στα άλλα θέματα που μπορούν να δουλέψουν σε οποιοδήποτε υπεξεργαστή. Ένα άλλο ενδιαφέρον στοιχείο είναι ότι στις μέρες μας έχει δημιουργηθεί ένα οικοσύστημα από άλλα λειτουργικά συστήματα και από άλλους οργανισμούς το οποίο διαμορφώνει την εξέλιξη της αρχιτεκτονικής. Η αρχιτεκτονική δηλαδή δεν είναι να εξελίσσεται από την ίδια την κοινότητα που εξελίσει το πυρήνα του Unix, αλλά λαμβάνει συστυχία από άλλες κοινότητες. Κοιτάξτε εδώ πέρα στο Μεσαίο Πίνακα, χιλιάδες γραμμές, εκατομμύρια γραμμών στις πάνω τρεις γραμμές έχουν έρθει από άλλες ομάδες που δημιουργούν ξεχωριστά συστήματα όπως μεταγλωδιστές, είναι οι πρώτες δύο γραμμές, ένα σύστημα που δημιουργεί εντολές για μια ομάδα που δημιουργεί εκτελέσιμες εντολές, μια ομάδα που δημιουργεί το σύστημα που συντονίζουν την ώρα οι υπολογιστές μεταξύ τους, κρυπτογραφικές βιβλιοθήκες, συστήματα αποσφαλμάτωσης, συστήματα από εξεργασία σκημένων κλπ. Όλα αυτά δημιουργούνται από άλλες ομάδες και εισάγονται στο λειτουργικό σύστημα Unix. Επίσης βλέπουμε δεξιά ομάδες οι οποίες συνεισφέρουν στο λειτουργικό σύστημα Unix με διάφορα περίεργα ονόματα και εταιρίες οι οποίες συνεισφέρουν τον κωδικά τους. Έχουμε φύγει δηλαδή από την ανάπτυξη σε μια κλειστή ομάδα σε ένα ανοιχτό οικοσύστημα το οποίο συνεισφέρει στο λειτουργικό σύστημα Unix και μέσω αυτού εξελίσσεται η αρχιτεκτονική του. Τέλος, και σχετικό με αυτό, βλέπουμε ότι πια μεγάλα υποσυστήματα του λειτουργικού συστήματος Unix σχηματίζουν τη δική τους ανεξάρτητη αρχιτεκτονική. Ποια, και εδώ κλείνει ο κύκλος μας, το λειτουργικό σύστημα Unix δεν έχει μια ξεχωριστή τη δική του αυτόν με αρχιτεκτονική αλλά έχουμε μια ομοσπονδία από αρχιτεκτονικές μεγάλων υποσυστημάτων κάθε μια με τα δικά της ανεξάρτητα χαρακτηριστικά και όλες αυτές δημιουργούν ένα οικοσύστημα το οποίο απαρτίζει τα σύγχρονα λειτουργικά συστήματα Unix και Linux. Σας ευχαριστώ πολύ για την προσοχή σας. Ελπίζω να βρήκατε αυτά ενδιαφέροντα και να μπορέσουμε να συνεχίσουμε και να συζητήσουμε με βάση αυτά. Σίγουρα ήταν εξαιρετικά ενδιαφέροντα όλα αυτά που είδαμε στην παρουσία σας κύριε Σφινέλη και μπορούμε να περάσουμε και στις υπόλοιπες ερωτήσεις φαντάζομαι σιγά σιγά. Έχουν γίνει αρκετές ερωτήσεις. Είδα ότι έχετε απαντήσει και κάποιες στο chat. Να δούμε κάποιες ακόμα. Θα ήθελα να κάνω την εξής ερώτηση. Η εξέλιξη του Unix συνέβαλε και στην δημιουργία και ανάπτυξη των open source λειτουργικών συστημάτων όπως είπατε και εσείς. Πόσο σημαντική είναι αυτή η σχέση του Unix με την έννοια του open source software. Θα έλεγα ότι είναι συμβιωτική η σχέση. Τι είχε γίνει στην αρχή επειδή η εταιρεία στα εργαστήρια της οποίας αναπτύχθηκε το Unix, το μονοπόλιο των επικοινωνιών στις ΗΠΑ, της απαγορευόταν να ασχολείται με άλλα επιχειρηματικές δραστηριότητες όπως λόγω χάρη την πληροφορική. Έτσι δεν μπορούσε να πουλάει το Unix. Ηδεναιμόταν δωρεάν με μια άδεια στα πανεπιστήμια. Με την ανάπτυξη τους σε πανεπιστήμια, σας είπα ότι έγινε μεγάλο τμήμα της ανάπτυξης, έγινε εργότητα στο Πανεπιστήμιο της Καλιφόρνια στο Μπέρκλι. Μεγάλα του τμήματα ήταν λογισμικό ανοιχτού κώδικα ουσιαστικά, διότι είχαν αναπτυχθεί με χρήματα των φορολογουμένων και λόγω αυτού βάσει της Αμερικάνικης Νομοθεσίας, επειδή είχαν νεομοσπονδιακή χρηματοδότηση, διανέμονταν ελεύθερα. Παράλληλα, αυτό συνέχινε στη χρήση του λογισμικού ανοιχτού κώδικα και πάνω εκεί επίσης αναπτύχθηκαν εργαλεία, όπως τα εργαλεία της Free Software Foundation, ο μεταγροτιστής GCC που χρησιμοποιείται σήμερα ευρύτατα, ο διορθωτής EMAX και πολλά άλλα συστήματα. Οπότε κάποια στιγμή ο κύκλος αυτός έκλεισε με την ανάπτυξη, τη διανομή και την υιοθέτηση συστημάτων, που ήταν ο ξελοκλήρου συστήματα λογισμικού ανοιχτού κώδικα, το 386BSD, το FreeBSD, το NetBSD και επίσης έδωσαν την ιδέα σε έναν φοιτητή εκείνη την εποχή, το Linus Torvalds, ότι αφού το κάνουν και άλλοι φτιάχνουν έτσι λογισμικό ανοιχτού κώδικα λογιτουργικό σύστημα, γιατί να μην δοκιμάσω να το κάνω και εγώ. Και έφτιαξε ένα λογισμικό βασισμένο στις ίδιες ιδέες, το Linux. Με βάση αυτό που αναφέρετε το Linux και με βάση τις ερωτήσεις που έχουν γίνει και στο chat, μπορείτε να αναφέρετε κάποιες εμπορικές εκδόσεις του Unix που να είναι διαδεδομένες σήμερα σε οποιοδήποτε τομέα? Ναι, να πω καταρχήν ότι τη μεγαλύτερη διάδοση έχει το Linux αυτή τη στιγμή και όχι τόσο πολύ οι εμπορικές εκδόσεις, χρησιμοποιείται ευρύτατα, όπως είπα βασίζεται στις ιδέες και την αρχιτεκτονική του Unix, δηλαδή έχει τον ίδιο τρόπο διεπαφής των προγραμμάτων με τον πυρήνα του λειτουργικού συστήματος, ακόμα και την ίδια αρρύθμιση, δηλαδή η κλήση για να διαβάσουμε κάτι από ένα αρχείο, έχει τον ίδιο αριθμό στο κλασικό Unix αυτό που αναπτύχθηκε στα Bell Labs και στο Linux. Τώρα εμπορικά συστήματα διαδεδομένα είναι συστήματα όπως το Solaris που αναπτύχθηκε από την εταιρεία Sun Microsystems και στις μέρες μας την έχει αγοράσει η Oracle και διατίθεται από την Oracle, το AIX της IBM, το HP UX και άλλα. Ωραία, είδα και μια ερώτηση πιο πριν που έγινε από κάποιον φίλο που παρακολουθεί στο YouTube σχετικά με το τι πρέπει να διαβάσει κάποιος για να αρχίσει να ασχολείται με το Unix αν θέλει από πλευράς βιβλιογραφίας. Έχετε κάτι να προτείνετε σε αυτό το τομέα? Στις μέρες μας το περισσότερο υλικό είναι ανοιχτά διαθέσιμο στο διαδίκτυο. Υπάρχει ένα εκπληκτικό αποθετήριο στο GitHub, The Art of the Command Line, θα το γράψω και στα Chat. Το έχουμε μεταφράσει μάλιστα με μια συνάδελφα από τη Θεσσαλονίκη και στα ελληνικά που είναι συνδιαθέσιμο και στα ελληνικά αυτό το κείμενο το οποίο μας λέει τι πρέπει να ξέρουμε για να επικοινωνούμε με το φλειό του Unix με ένα σωρό δεσμούς. Είπα και πριν ότι τρέχω στην πλατφόρμα edX ένα ανοιχτό διαδικτυακό μάθημα MOOC Massive Open Online Course το οποίο μας λέει πως μπορούμε να χρησιμοποιούμε το φλειό του συστήματος Unix για την ανάλυση δεδομένων στην τεχνολογία λογισμικού και για να τρέχουμε συστήματα. Επομένως αυτά είναι δύο τρόποι με τους οποίους ο κανείς μπορεί να μάθει να χρησιμοποιεί το Unix σαν χρήστης. Ωραία. Να δω αν υπάρχουν κάποιες άλλες ερωτήσεις οι οποίες είναι για να υποβληθούν. Βλέπω για παράδειγμα γιατί στο δημόσιο στην Ελλάδα δεν χρησιμοποιούνται συστήματα Unix και από τι λέει ο φίλος εδώ ποιον πρέπει να πείσουμε για να χρησιμοποιηθούν περισσότερα. Καταρχήν δεν είναι αλήθεια ότι δεν χρησιμοποιούνται. Μπορεί να μην διαφημίζεται ευρύτατα γιατί δεν υπάρχει από πίσω κάποια εταιρεία να το διαφημίσει. Βλέπω ενδεικτικά ότι τα συστήματα της ανεξάρτητης αρχής δημοσίων εσόδων τρέχουν πάνω σε Linux από πάνω από όσο γνωρίζω η έντερχε βάση Oracle αλλά από κάτω είναι Linux. Επομένως αυτό είναι μια τεχνολογία Unix αναφισβήτητα και συμβαίνει σε πάρα πολλές άλλες περιπτώσεις απλώς δεν αυτό που βλέπουμε προς τα έξω. Εν κατακλείδι κύριε Σπινέλη τι πιστεύετε για το μέλλον του Unix θα έχει άλλα 50 χρόνια ζωής και πώς θα φαντάζεστε αυτά. Παλιά κάποιος είχε πει ότι δεν ξέρω σε τι γλώσσα προγραμματίζουν οι επιστήμονες σε 50 χρόνια αλλά θα την λένε Fortran. Επομένως και αντίστοιχα πιστεύω για το Unix ήταν μια επανάσταση την εποχή του. Στις μέρες μας είναι δύσκολο να γίνει μια αντίστοιχη επανάσταση επειδή υπάρχει πάρα πολύ κληρονομημένος κώδικας. Είναι δύσκολο ένα καινούργιο σύστημα να αναπτυχθεί με νέες ιδέες και να έχει την υιοθέτηση που έχει το Unix. Αλλά το Unix συνεχίζει να εξελίσεται όπως έδειξα στην παρουσίαση με αργότερο ρυθμό και επίσης αλλάζει η σπουδαιότητα των στοιχείων του. Για παράδειγμα στις μέρες μας σπάνια αλληλεπιδρούμε με τις συσκευές που είναι συναιδεμένες απάνω του κατευθείαν όπως οι κτυποτές ή την οθόνητηση του ίδιου του υπολογιστή ή το πληκτρολόγιο και νομίζουμε σε ενός άλλου καναλιού και όλο και περισσότερο σχηματίζει ένα ιδεατό περιβάλλον, ένα περιβάλλον δηλαδή που δεν είναι ο ίδιος ο υπολογιστής πάνω στο οποίο τρέχουν άλλα λειτουργικά συστήματα ή το ίδιο το Unix ή μια διάλεκτος του Unix. Τρέχει δηλαδή όχι πάνω στον ίδιο τον υπολογιστή αλλά πάνω σε αυτό το ιδεατό περιβάλλον. Επομένως βλέπουμε το Unix και αντίστοιχα συστήματα να χρησιμοποιούνται όλο και περισσότερο για να τρέχουν σε τέτοια περιβάλλοντα ή να είναι το μέρος στο οποίο να παρέχουν της υπηρεσίας ενός τέτοιου ιδεατού περιβάλλοντος. Ωραία. Σε αυτό το σημείο εγώ προσωπικά θα ήθελα να σας ευχαριστήσω πάρα πολύ για τη σημερινή συμμετοχή σας. Ήταν μεγάλη χαρά και τιμή όπως σας είπα και στην αρχή του webcast η παρουσία σας σήμερα εδώ και η παρουσία που μας δημιουργήσατε για να μας δείξετε αλλά και οι απαντήσεις σας στις ερωτήσεις τόσο στο chat όσο και σε εμένα και ελπίζω στο μέλλον να επαναλάβουμε μια αντίστοιχη τέτοια διαδικτυακή ή και μη συνάντησή μας. Και εγώ ευχαριστώ κύριε Καλαμάκη και το ίδρυμα Ευγενίδου για την παρουσία σας και την ευκαιρία που μου δώσατε να μιλήσω και φυσικά να ευχαριστήσω όλους τους συμμετέχοντες. Σχετικά με τα κενά ήχου παρουσιάστηκαν έγραψα και στο chat θα ανεβάσω την παρουσίαση σαν βίντεο στο κανάλι μου στο YouTube. Ωραία. Και πάλι. Σας ευχαριστούμε πάρα πολύ. Καλή συνέχεια. Ευχαριστώ. Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE Υπότιτλοι AUTHORWAVE