Sprite (λειτουργικό σύστημα)

Το Sprite ήταν ένα πειραματικό κατανεμημένο λειτουργικό σύστημα τύπου Unix που αναπτύχθηκε στο Πανεπιστήμιο Μπέρκλεϋ της Καλιφόρνια από την ερευνητική ομάδα του επιστήμονα υπολογιστών Τζον Όιστερχουτ (John Ousterhout) από το 1984 ως το 1992. Θεωρείται σημαντικό βήμα για την υποστήριξη εικόνας ενιαίου συστήματος σε συστάδες υπολογιστών και για την καθιέρωση ενός συστήματος αρχείων καταγραφικής δομής. Η γλώσσα προγραμματισμού Tcl επίσης προήλθε από το Sprite. Το λειτουργικό σύστημα Sprite ήταν διαθέσιμο με την άδεια χρήσης MIT και εκτελούνταν σε συστήματα DECstation 5000 Model 200 και SPARCstation 2.

 Η πρωταρχική δουλειά πάνω στο Sprite βασίστηκε στην ιδέα κατασκευής ενός λειτουργικού συστήματος περισσότερο «δικτυακού» και διαφανούς για τον χρήστη. Αρχικά η ανάπτυξη επικεντρώθηκε σε ένα νέο δικτυακό σύστημα αρχείων που χρησιμοποιούσε σε μεγάλο βαθμό τοπική κρυφή μνήμη σε κάθε κόμβο για να πετυχαίνει υψηλές επιδόσεις. Αφότου θα άνοιγε ένα αρχείο και έπειτα από κάποιες αρχικές αναγνώσεις, το δίκτυο θα χρησιμοποιούνταν μόνο όταν υπήρχε ανάγκη επικοινωνίας, ενώ οι περισσότερες ενέργειες του χρήστη θα πραγματοποιούνταν στην τοπική κρυφή μνήμη. Παρόμοιες μέθοδοι επέτρεπαν σε απομακρυσμένες συσκευές να απεικονιστούν στον τοπικό υπολογιστή, όπως για παράδειγμα ένας δικτυακός εκτυπωτής. Πολλά από τα κύρια αρχεία του Unix χρησιμοποιήθηκαν στο δίκτυο, όπως το αρχείων των συνθηματικών. Όλα τα μηχανήματα στο δίκτυο είχαν επίσης κοινό ριζικό κατάλογο. Άλλα συνηθισμένα προγράμματα του Unix, όπως το finger, ξαναγράφτηκαν για να γίνουν δικτυακά, ώστε να μπορούν να δίνουν πληροφορίες για όλους τους χρήστες που είναι στο δίκτυο. Αυτό έκανε το Sprite να μοιάζει σαν ένα ενιαίο σύστημα διαμοιρασμού χρόνου , ή μια εικόνα μονού συστήματος. Άλλο αξιόλογο χαρακτηριστικό του Sprite ήταν η μετανάστευση διεργασιών, που επέτρεπε σε προγράμματα να μεταφέρονται από τον έναν υπολογιστή στον άλλο οποιαδήποτε στιγμή. Το σύστημα είχε μια λίστα με τους υπολογιστές και την εργασία που έκαναν, και μπορούσε αυτόματα να μεταφέρει διεργασίες σε μηχανήματα που δεν έκαναν κάποια εργασία εκείνη τη στιγμή ώστε να αυξάνονται οι τοπικές επιδόσεις. Μπορούσε επίσης να γίνει "έξωση" σε διεργασίες αν αυτό θα ανέβαζε τις επιδόσεις κάποιου υπολογιστή, κάνοντας το μηχάνημα που ξεκίνησε τη διεργασία να την μεταφέρει σε άλλο υπολογιστή του δικτύου ή να την ξαναπάρει τοπικά. Μεγάλες διεργασίες (όπως η μετατροπή του πηγαίου κώδικα του συστήματος Sprite σε εκτελέσιμα προγράμματα) μπορούσαν να γίνονται πολύ γρήγορα. Η δουλειά πάνω στο "πρωταρχικό" Sprite όπως περιγράφηκε παραπάνω τελείωσε γύρω στο 1987, αλλά εξελίχθηκε το επόμενο έτος. Από το 1990 το Sprite χρησιμοποιήθηκε ως βάση για την ανάπτυξη του πρώτου συστήματος αρχείων δομημένου με ημερολόγιο (LFS: log-structured file system), μια προσπάθεια που συνεχίστηκε μέχρι το 1992 περίπου. Το LFS αύξανε δραματικά τις επιδόσεις εγγραφής αρχείων με κόστος τις επιδόσεις ανάγνωσης. Στο Sprite, αυτή η "ανταλλαγή" ήταν ιδιαίτερα χρήσιμη καθώς οι περισσότερες προσβάσεις για ανάγνωση γινόντουσαν από τη προσωρινή μνήμη — δηλαδή τα συστήματα Sprite τυπικά έκαναν λιγότερες αναγνώσεις από ένα κανονικό σύστημα Unix. Επίσης, τα συστήματα που είχαν δυνατότητες τύπου LFS επέτρεπαν ευκολότερη επαναφορά μετά από αποτυχία του λογισμικού, κάτι που έγινε προτεραιότητα του αναπτυξιακού έργου εκείνη τη περίοδο. Μέχρι το 1994 συνεχίστηκε επιπλέον πειραματισμός με συστήματα αρχείων κατανεμημένα σε πολλούς δίσκους ή σε διαφορετικά μηχανήματα. Το Sprite δεν χρησιμοποιούσε μικροπυρήνα (είχε δηλαδή μονολιθικό πυρήνα), κι έτσι είχε τα ίδια προβλήματα με άλλα συστήματα Unix όσον αφορά τη πολυπλοκότητα του συστήματος, με αποτέλεσμα να γίνεται όλο και πιο δύσκολη η επιπλέον ανάπτυξή του όσο οι προγραμματιστές πρόσθεταν κι άλλες δυνατότητες. Από τη δεκαετία του 1990 η ανάπτυξη δεν πήγαινε καλά και η μικρή ομάδα που ασχολιόταν με το έργο απλά δεν άντεχε να εργάζεται σε αυτό ενώ στο Unix γινόταν ήδη ραγδαίες αλλαγές εκείνο το καιρό. Το ερευνητικό έργο τελικά είχε σταματήσει μέχρι το 1994. Ιστοσελίδα του Sprite Εκκίνηση μιας εικόνας Sprite σε εξομοιωμένο DECstation 5000/200