Πώς διαφέρει το Linux από το UNIX και τι είναι ένα λειτουργικό σύστημα που μοιάζει με UNIX; Χαρακτηριστικά λειτουργικών συστημάτων της οικογένειας UNIX.

Επιπλέον, καθένα από αυτά μπορεί να εκτελέσει πολλές διαφορετικές υπολογιστικές διαδικασίες που θα χρησιμοποιήσουν τους πόρους του συγκεκριμένου υπολογιστή.

Το δεύτερο κολοσσιαίο πλεονέκτημα του Unix είναι η πολυπλατφορμική του φύση. Ο πυρήνας του συστήματος είναι σχεδιασμένος με τέτοιο τρόπο ώστε να προσαρμόζεται εύκολα σε σχεδόν οποιονδήποτε μικροεπεξεργαστή.

Το Unix έχει άλλα χαρακτηριστικά γνωρίσματα:

  • χρήση απλών αρχείων κειμένου για τη διαμόρφωση και τη διαχείριση του συστήματος.
  • ευρεία χρήση βοηθητικών προγραμμάτων που ξεκινούν από τη γραμμή εντολών.
  • αλληλεπίδραση με τον χρήστη μέσω μιας εικονικής συσκευής - ενός τερματικού.
  • αναπαράσταση φυσικών και εικονικών συσκευών και ορισμένων μέσων επικοινωνίας μεταξύ διεργασιών με τη μορφή αρχείων·
  • τη χρήση αγωγών από πολλά προγράμματα, καθένα από τα οποία εκτελεί μία εργασία.

Εφαρμογή

Επί του παρόντος, τα συστήματα Unix διανέμονται κυρίως μεταξύ των διακομιστών, αλλά και ως ενσωματωμένα συστήματα για διάφορους εξοπλισμούς, συμπεριλαμβανομένων των smartphone. Τα συστήματα Unix κυριαρχούν επίσης στους υπερυπολογιστές, συγκεκριμένα, το Linux είναι εγκατεστημένο στο 100% των υπερυπολογιστών TOP500.

Οι πρώτες εκδόσεις του Unix γράφτηκαν σε γλώσσα assembly και δεν είχαν ενσωματωμένο μεταγλωττιστή γλώσσας υψηλού επιπέδου. Γύρω στο 1969, ο Ken Thompson, με τη βοήθεια του Dennis Ritchie, ανέπτυξε και υλοποίησε τη γλώσσα Bee (B), η οποία ήταν μια απλοποιημένη (για εφαρμογή σε μίνι υπολογιστές) έκδοση της γλώσσας BCPL που αναπτύχθηκε στη γλώσσα. Το Bi, όπως και το BCPL, ήταν μια γλώσσα διερμηνείας. Κυκλοφόρησε το 1972 δεύτερη έκδοσηΤο Unix ξαναγράφεται στο Β. Το 1969-1973 με βάση το Bi, αναπτύχθηκε μια μεταγλωττισμένη γλώσσα, που ονομάζεται C (C).

Διαίρεση

Ένας σημαντικός λόγος για τη διάσπαση στο Unix ήταν η εφαρμογή το 1980 της στοίβας πρωτοκόλλων TCP/IP. Πριν από αυτό, η επικοινωνία από μηχανή με μηχανή στο Unix ήταν στα σπάργανα - η πιο σημαντική μέθοδος επικοινωνίας ήταν το UUCP (ένα μέσο αντιγραφής αρχείων από το ένα σύστημα Unix σε ένα άλλο, που αρχικά λειτουργούσε μέσω τηλεφωνικών δικτύων χρησιμοποιώντας μόντεμ).

Έχουν προταθεί δύο διεπαφές προγραμματισμού για εφαρμογές δικτύου: οι υποδοχές Berkley και η διεπαφή επιπέδου μεταφοράς TLI (διεπαφή επιπέδου μεταφοράς).

Η διεπαφή υποδοχών Berkley αναπτύχθηκε στο Πανεπιστήμιο του Μπέρκλεϋ και χρησιμοποιούσε τη στοίβα πρωτοκόλλου TCP/IP που αναπτύχθηκε εκεί. Το TLI δημιουργήθηκε από την AT&T σύμφωνα με τον ορισμό του επιπέδου μεταφοράς του μοντέλου OSI και εμφανίστηκε για πρώτη φορά στην έκδοση 3 του System V. Αν και αυτή η έκδοση περιείχε TLI και ροές, δεν εφαρμόστηκε αρχικά TCP/IP ή άλλα πρωτόκολλα δικτύου, αλλά παρέχονταν τέτοιες υλοποιήσεις από τρίτους..

Η υλοποίηση του TCP/IP συμπεριλήφθηκε επίσημα και οριστικά στη βασική διανομή της έκδοσης 4 του System V. Αυτό, μαζί με άλλες σκέψεις (κυρίως μάρκετινγκ), προκάλεσε την τελική οριοθέτηση μεταξύ των δύο κλάδων του Unix - BSD (University of Berkeley) και System V (εμπορική έκδοση από την AT&T). Στη συνέχεια, πολλές εταιρείες, έχοντας αδειοδοτήσει το System V από την AT&T, ανέπτυξαν τις δικές τους εμπορικές γεύσεις Unix, όπως AIX, CLIX, HP-UX, IRIX, Solaris.

Οι σύγχρονες υλοποιήσεις του Unix γενικά δεν είναι αμιγώς συστήματα V ή BSD. Εφαρμόζουν χαρακτηριστικά τόσο από το System V όσο και από το BSD.

Δωρεάν λειτουργικά συστήματα τύπου Unix

Αυτή τη στιγμή, το GNU/Linux και τα μέλη της οικογένειας BSD καταλαμβάνουν γρήγορα την αγορά από εμπορικά συστήματα Unix και ταυτόχρονα διεισδύουν τόσο σε επιτραπέζιους υπολογιστές τελικού χρήστη όσο και σε κινητά και ενσωματωμένα συστήματα.

Ιδιόκτητα συστήματα

Από τη διάσπαση της AT&T, το εμπορικό σήμα Unix και τα δικαιώματα στον αρχικό πηγαίο κώδικα άλλαξαν κάτοχοι αρκετές φορές, ιδίως ανήκαν στη Novell για μεγάλο χρονικό διάστημα.

Η επίδραση του Unix στην εξέλιξη των λειτουργικών συστημάτων

Τα συστήματα Unix έχουν μεγάλη ιστορική σημασία επειδή έχουν διαδώσει ορισμένες από τις σημερινές δημοφιλείς έννοιες και προσεγγίσεις του λειτουργικού συστήματος και του λογισμικού. Επίσης, κατά την ανάπτυξη συστημάτων Unix, δημιουργήθηκε η γλώσσα C.

Χρησιμοποιείται ευρέως στον προγραμματισμό συστημάτων, η γλώσσα C, που δημιουργήθηκε αρχικά για την ανάπτυξη του Unix, έχει ξεπεράσει το Unix σε δημοτικότητα. Η γλώσσα C ήταν η πρώτη "ανεκτική" γλώσσα που δεν προσπάθησε να επιβάλει ένα στυλ προγραμματισμού στον προγραμματιστή. Η C ήταν η πρώτη γλώσσα υψηλού επιπέδου που έδωσε πρόσβαση σε όλα τα χαρακτηριστικά του επεξεργαστή, όπως αναφορές, πίνακες, μετατοπίσεις bit, αυξήσεις κ.λπ. Από την άλλη πλευρά, η ελευθερία της γλώσσας C οδήγησε σε σφάλματα υπερχείλισης buffer σε τέτοια Η τυπική βιβλιοθήκη C λειτουργεί ως λήψη και σάρωση. Προέκυψαν πολλά διαβόητα τρωτά σημεία, όπως αυτό που αξιοποιήθηκε στο διάσημο σκουλήκι Morris.

Οι πρώτοι προγραμματιστές του Unix συνέβαλαν στην εισαγωγή των αρχών του αρθρωτού προγραμματισμού και της επαναχρησιμοποίησης στην πρακτική της μηχανικής.

Το Unix επέτρεψε τη χρήση πρωτοκόλλων TCP/IP σε σχετικά φθηνούς υπολογιστές, γεγονός που οδήγησε στην ταχεία ανάπτυξη του Διαδικτύου. Αυτό, με τη σειρά του, συνέβαλε στην ταχεία ανακάλυψη πολλών μεγάλων τρωτών σημείων στην ασφάλεια, την αρχιτεκτονική και τα βοηθητικά προγράμματα του Unix.

Με την πάροδο του χρόνου, κορυφαίοι προγραμματιστές Unix ανέπτυξαν πολιτιστικούς κανόνες ανάπτυξης λογισμικού που έγιναν εξίσου σημαντικοί με το ίδιο το Unix. ( )

Μερικά από τα πιο γνωστά παραδείγματα λειτουργικών συστημάτων τύπου Unix είναι τα macOS, Solaris, BSD και NeXTSTEP.

Κοινωνικός ρόλος στην επαγγελματική κοινότητα πληροφορικής και ιστορικός ρόλος

Το αρχικό Unix λειτουργούσε σε μεγάλους υπολογιστές πολλών χρηστών, οι οποίοι πρόσφεραν επίσης ιδιόκτητα λειτουργικά συστήματα από τον κατασκευαστή υλικού, όπως το RSX-11 και το απόγονό του VMS. Παρά το γεγονός ότι σύμφωνα με ορισμένες απόψεις [ του οποίου?] το τότε Unix είχε μειονεκτήματα σε σύγκριση με αυτά τα λειτουργικά συστήματα (για παράδειγμα, η έλλειψη σοβαρών μηχανών βάσης δεδομένων), ήταν: α) φθηνότερο και μερικές φορές δωρεάν για τα ακαδημαϊκά ιδρύματα. β) μεταφέρθηκε από υλικό σε υλικό και αναπτύχθηκε σε φορητή γλώσσα C, η οποία «αποσύνδεσε» την ανάπτυξη λογισμικού από συγκεκριμένο υλικό. Επιπλέον, η εμπειρία χρήστη αποδείχθηκε ότι ήταν "αποδεμένη" από τον εξοπλισμό και τον κατασκευαστή - ένα άτομο που εργάστηκε με το Unix στο VAX δούλεψε εύκολα με αυτό στο 68xxx και ούτω καθεξής.

Οι κατασκευαστές υλικού εκείνη την εποχή ήταν συχνά ψύχραιμοι με το Unix, θεωρώντας το παιχνίδι, και πρόσφεραν το ιδιόκτητο λειτουργικό τους σύστημα για σοβαρές εργασίες - κυρίως DBMS και επιχειρηματικές εφαρμογές που βασίζονται σε αυτά σε εμπορικές δομές. Υπάρχουν γνωστά σχόλια σχετικά με αυτό από την DEC σχετικά με το VMS της. Οι εταιρείες το άκουσαν αυτό, αλλά όχι το ακαδημαϊκό περιβάλλον, το οποίο είχε τα πάντα για τον εαυτό του στο Unix, συχνά δεν απαιτούσε επίσημη υποστήριξη από τον κατασκευαστή, το διαχειριζόταν από μόνο του και εκτιμούσε τη φθηνότητα και τη φορητότητα του Unix. Έτσι, το Unix ήταν ίσως το πρώτο λειτουργικό σύστημα φορητό σε διαφορετικό υλικό.

Η δεύτερη σημαντική άνοδος του Unix ήταν η εισαγωγή των επεξεργαστών RISC γύρω στο 1989. Ακόμη και πριν από αυτό υπήρχαν τα λεγόμενα. Οι σταθμοί εργασίας είναι προσωπικοί υπολογιστές ενός χρήστη υψηλής ισχύος με αρκετή μνήμη, σκληρό δίσκο και αρκετά προηγμένο λειτουργικό σύστημα (multitasking, προστασία μνήμης) για να λειτουργούν με σοβαρές εφαρμογές όπως CAD. Μεταξύ των κατασκευαστών τέτοιων μηχανών, ξεχώρισε η Sun Microsystems, η οποία δημιούργησε το όνομά της σε αυτές.

Πριν από την εμφάνιση των επεξεργαστών RISC, αυτοί οι σταθμοί χρησιμοποιούσαν συνήθως τον επεξεργαστή Motorola 680x0, όπως και στους υπολογιστές της Apple (αν και με πιο προηγμένο λειτουργικό σύστημα από αυτό της Apple). Γύρω στο 1989, εμφανίστηκαν στην αγορά εμπορικές εφαρμογές επεξεργαστών αρχιτεκτονικής RISC. Η λογική απόφαση μιας σειράς εταιρειών (Sun και άλλες) ήταν να μεταφέρουν το Unix σε αυτές τις αρχιτεκτονικές, κάτι που οδήγησε αμέσως στη μεταφορά ολόκληρου του οικοσυστήματος λογισμικού Unix.

Τα ιδιόκτητα σοβαρά λειτουργικά συστήματα, όπως το VMS, ξεκίνησαν την παρακμή τους από αυτή τη στιγμή (ακόμα και αν ήταν δυνατή η μεταφορά του ίδιου του λειτουργικού συστήματος στο RISC, όλα ήταν πολύ πιο περίπλοκα με τις εφαρμογές για αυτό, οι οποίες σε αυτά τα οικοσυστήματα αναπτύχθηκαν συχνά σε assembler ή σε ιδιόκτητες γλώσσες όπως το BLISS), και το Unix έγινε το λειτουργικό σύστημα για τους πιο ισχυρούς υπολογιστές στον κόσμο.

Ωστόσο, περίπου αυτή την περίοδο, το οικοσύστημα άρχισε να κινείται προς το GUI με τη μορφή των Windows 3.0. Τα τεράστια πλεονεκτήματα του GUI, καθώς και, για παράδειγμα, η ενοποιημένη υποστήριξη για όλους τους τύπους εκτυπωτών, εκτιμήθηκαν τόσο από τους προγραμματιστές όσο και από τους χρήστες. Αυτό υπονόμευσε σε μεγάλο βαθμό τη θέση του Unix στην αγορά των υπολογιστών - υλοποιήσεις όπως το SCO και το Interactive UNIX δεν μπορούσαν να αντιμετωπίσουν την υποστήριξη εφαρμογών των Windows. Όσο για το GUI για το Unix, που ονομάζεται X11 (υπήρχαν και άλλες υλοποιήσεις, πολύ λιγότερο δημοφιλείς), δεν μπορούσε να τρέξει πλήρως σε υπολογιστή κανονικού χρήστη λόγω απαιτήσεων μνήμης - το X11 απαιτούσε 16 MB για κανονική λειτουργία, ενώ τα Windows 3.1 με αρκετή απόδοση εκτελέστε ταυτόχρονα το Word και το Excel σε 8 MB (αυτό ήταν το τυπικό μέγεθος μνήμης υπολογιστή εκείνη την εποχή). Με υψηλές τιμές μνήμης, αυτός ήταν ο περιοριστικός παράγοντας.

Η επιτυχία των Windows έδωσε ώθηση σε ένα εσωτερικό έργο της Microsoft που ονομάζεται Windows NT, το οποίο ήταν συμβατό με τα Windows από το API, αλλά ταυτόχρονα είχε όλα τα ίδια αρχιτεκτονικά χαρακτηριστικά ενός σοβαρού λειτουργικού συστήματος όπως το Unix - multitasking, πλήρης προστασία μνήμης, υποστήριξη πολλαπλών επεξεργαστών μηχανήματα, δικαιώματα και κατάλογοι αρχείων, αρχείο καταγραφής συστήματος. Επίσης, τα Windows NT εισήγαγαν το σύστημα αρχείων NTFS journaling, το οποίο εκείνη την εποχή ξεπερνούσε όλα τα συστήματα αρχείων που παρέχονται τυπικά με το Unix ως προς τις δυνατότητες - τα ανάλογα για το Unix ήταν μόνο ξεχωριστά εμπορικά προϊόντα από τη Veritas και άλλα.

Αν και τα Windows NT δεν ήταν αρχικά δημοφιλή, λόγω των υψηλών απαιτήσεων μνήμης (τα ίδια 16 MB), επέτρεψαν στη Microsoft να εισέλθει στην αγορά λύσεων διακομιστή, όπως το DBMS. Πολλοί εκείνη την εποχή δεν πίστευαν στην ικανότητα της Microsoft, παραδοσιακά εξειδικευμένης στο λογισμικό επιτραπέζιων υπολογιστών, να παίξει στην αγορά εταιρικού λογισμικού, η οποία είχε ήδη μεγάλα ονόματα όπως η Oracle και η Sun. Σε αυτήν την αμφιβολία προστέθηκε το γεγονός ότι το DBMS της Microsoft - SQL Server - ξεκίνησε ως μια απλοποιημένη έκδοση του Sybase SQL Server, με άδεια χρήσης από τη Sybase και 99% συμβατό σε όλες τις πτυχές της εργασίας με αυτόν.

Στο δεύτερο μισό της δεκαετίας του 1990, η Microsoft άρχισε να ωθεί το Unix και στην αγορά εταιρικών διακομιστών.

Ο συνδυασμός των παραπάνω παραγόντων, καθώς και η κατάρρευση των τιμών των ελεγκτών 3D βίντεο, που έχουν γίνει σπίτι από επαγγελματικό εξοπλισμό, ουσιαστικά σκότωσαν την ίδια την έννοια του σταθμού εργασίας στις αρχές της δεκαετίας του 2000.

Επιπλέον, τα συστήματα της Microsoft είναι ευκολότερα στη διαχείριση, ειδικά σε τυπικές περιπτώσεις χρήσης.

Αλλά αυτή τη στιγμή, η τρίτη απότομη άνοδος του Unix έχει ξεκινήσει.

Επιπλέον, ο Stallman και οι σύντροφοί του γνώριζαν καλά ότι τα ιδιόκτητα εργαλεία ανάπτυξης δεν ήταν κατάλληλα για την επιτυχία του μη εταιρικού λογισμικού. Ως εκ τούτου, ανέπτυξαν ένα σύνολο μεταγλωττιστών για διάφορες γλώσσες προγραμματισμού (gcc), οι οποίες, μαζί με τα βοηθητικά προγράμματα GNU που αναπτύχθηκαν προηγουμένως (αντικαθιστώντας τα τυπικά βοηθητικά προγράμματα Unix), αποτελούσαν ένα απαραίτητο και αρκετά ισχυρό πακέτο λογισμικού για τον προγραμματιστή.

Ένας σοβαρός ανταγωνιστής του Linux εκείνη την εποχή ήταν το FreeBSD, ωστόσο, το στυλ διαχείρισης ανάπτυξης "καθεδρικού ναού" σε αντίθεση με το στυλ "παζάρι" του Linux, καθώς και πολύ πιο τεχνικός αρχαϊσμός σε θέματα όπως υποστήριξη για μηχανές πολλαπλών επεξεργαστών και εκτελέσιμο αρχείο φορμά, επιβράδυνε σημαντικά την ανάπτυξη του FreeBSD σε σύγκριση με το Linux, καθιστώντας το τελευταίο τη ναυαρχίδα του κόσμου του ελεύθερου λογισμικού.

Στο μέλλον, το Linux έφτασε σε όλο και περισσότερα ύψη:

  • μεταφορά σοβαρών ιδιόκτητων προϊόντων όπως η Oracle.
  • Το σοβαρό ενδιαφέρον της IBM για αυτό το οικοσύστημα ως βάση για τις κάθετες λύσεις της.
  • η εμφάνιση αναλόγων σχεδόν όλων των γνωστών προγραμμάτων από τον κόσμο των Windows.
  • την άρνηση ορισμένων κατασκευαστών υλικού από την υποχρεωτική προεγκατάσταση των Windows.
  • η κυκλοφορία netbook μόνο με Linux.
  • χρησιμοποιήστε ως πυρήνα στο Android.

Προς το παρόν, το Linux είναι ένα επάξια δημοφιλές λειτουργικό σύστημα για διακομιστές, αν και πολύ λιγότερο δημοφιλές σε επιτραπέζιους υπολογιστές.

Μερικά αρχιτεκτονικά χαρακτηριστικά του λειτουργικού συστήματος Unix

Τα χαρακτηριστικά Unix που διακρίνουν αυτήν την οικογένεια από άλλα λειτουργικά συστήματα παρατίθενται παρακάτω.

  • Το σύστημα αρχείων είναι δέντρο, διάκριση πεζών-κεφαλαίων στα ονόματα, πολύ αδύναμοι περιορισμοί στο μήκος των ονομάτων και των διαδρομών.
  • Δεν υπάρχει υποστήριξη για δομημένα αρχεία από τον πυρήνα του λειτουργικού συστήματος· στο επίπεδο των κλήσεων συστήματος, ένα αρχείο είναι μια ροή byte.
  • Η γραμμή εντολών βρίσκεται στο χώρο διευθύνσεων της διαδικασίας που εκκινείται και δεν ανακτάται από μια κλήση συστήματος από τη διαδικασία διερμηνέα εντολών (όπως συμβαίνει, για παράδειγμα, στο RSX-11).
  • Η έννοια των «μεταβλητών περιβάλλοντος».
  • Εκκίνηση διεργασιών καλώντας το fork(), δηλαδή τη δυνατότητα κλωνοποίησης της τρέχουσας διεργασίας με όλη την κατάσταση.
  • Οι έννοιες του stdin/stdout/stderr.
  • I/O μόνο μέσω περιγραφέων αρχείων.
  • Παραδοσιακά πολύ αδύναμη υποστήριξη για ασύγχρονη I/O σε σύγκριση με VMS και Windows NT.
  • Ο διερμηνέας εντολών είναι μια συνηθισμένη εφαρμογή που επικοινωνεί με τον πυρήνα με συνηθισμένες κλήσεις συστήματος (στο RSX-11 και το VMS, ο διερμηνέας εντολών εκτελέστηκε ως ειδική εφαρμογή, τοποθετήθηκε στη μνήμη με ειδικό τρόπο, χρησιμοποιώντας ειδικές κλήσεις συστήματος, κλήσεις συστήματος υποστηρίζεται επίσης, επιτρέποντας στην εφαρμογή να έχει πρόσβαση στις εντολές γονικού διερμηνέα της).
  • Μια εντολή γραμμής εντολών δεν είναι τίποτα άλλο από το όνομα ενός αρχείου προγράμματος, δεν απαιτείται ειδική εγγραφή και ειδική ανάπτυξη προγραμμάτων ως εντολών (κάτι που ήταν κοινή πρακτική στα RSX-11, RT-11).
  • Η προσέγγιση με ένα πρόγραμμα που θέτει ερωτήσεις στον χρήστη σχετικά με τους τρόπους λειτουργίας του δεν γίνεται αποδεκτή, αντίθετα χρησιμοποιούνται παράμετροι γραμμής εντολών (στο VMS, RSX-11, RT-11, τα προγράμματα λειτουργούσαν επίσης με τη γραμμή εντολών, αλλά ελλείψει ζητήθηκε να εισάγουν παραμέτρους).
  • Ένας χώρος ονομάτων συσκευής στο δίσκο στον κατάλογο /dev που μπορεί να διαχειρίζεται ένας διαχειριστής, σε αντίθεση με την προσέγγιση των Windows, όπου αυτός ο χώρος ονομάτων βρίσκεται στη μνήμη του πυρήνα και η διαχείριση αυτού του χώρου ονομάτων (για παράδειγμα, ρύθμιση δικαιωμάτων) είναι εξαιρετικά δύσκολη λόγω έλλειψη μόνιμης αποθήκευσης σε δίσκους (κατασκευάζεται κάθε φορά που εκκινείτε).
  • Εκτεταμένη χρήση αρχείων κειμένου για την αποθήκευση ρυθμίσεων, σε αντίθεση με μια βάση δεδομένων δυαδικών ρυθμίσεων, όπως στα Windows.
  • Ευρεία χρήση βοηθητικών προγραμμάτων επεξεργασίας κειμένου για την εκτέλεση καθημερινών εργασιών υπό τον έλεγχο σεναρίων.
  • "Προώθηση" του ΛΣ μετά τη φόρτωση του πυρήνα εκτελώντας σενάρια με έναν τυπικό διερμηνέα εντολών.
  • Ευρεία χρήση

Η ιστορία του UNIX® ξεκινά το 1969. Τα περισσότερα σύγχρονα συστήματα UNIX είναι εμπορικές εκδόσεις των αρχικών διανομών UNIX. Το Solaris της Sun, το HP-UX της Hewlett-Packard, το AIX® της IBM είναι οι καλύτεροι εκπρόσωποι του UNIX, που έχουν επίσης τα δικά τους μοναδικά στοιχεία και τις δικές τους θεμελιώδεις λύσεις. Για παράδειγμα, το Sun Solaris είναι UNIX, αλλά περιέχει επίσης πολλά εργαλεία και επεκτάσεις που έχουν σχεδιαστεί ειδικά για σταθμούς εργασίας και διακομιστές Sun.

Το Linux® αναπτύχθηκε σε μια προσπάθεια να παρέχει μια δωρεάν εναλλακτική λύση στα εμπορικά περιβάλλοντα UNIX. Η ιστορία του χρονολογείται από το 1991, ή ακόμα και το 1983, όταν δημιουργήθηκε το έργο GNU, του οποίου ο αρχικός στόχος ήταν να παρέχει μια δωρεάν εναλλακτική λύση στο UNIX. Το Linux τρέχει σε πολλές περισσότερες πλατφόρμες, όπως η Intel®/AMD x86. Τα περισσότερα λειτουργικά συστήματα UNIX μπορούν να λειτουργούν μόνο σε μία πλατφόρμα.

Το Linux και το UNIX έχουν κοινές ιστορικές ρίζες, αλλά υπάρχουν και σημαντικές διαφορές. Πολλά εργαλεία, βοηθητικά προγράμματα και δωρεάν εφαρμογές που συνοδεύουν το Linux είχαν αρχικά σχεδιαστεί ως δωρεάν εναλλακτικές λύσεις στα προγράμματα UNIX. Το Linux παρέχει συχνά υποστήριξη για πολλές επιλογές και εφαρμογές, δανειζόμενος την καλύτερη ή πιο δημοφιλή λειτουργικότητα από το UNIX.

Ως διαχειριστής ή προγραμματιστής που έχει συνηθίσει να εργάζεται με Linux, το σύστημα UNIX μπορεί να μην φαίνεται πολύ φιλικό προς το χρήστη. Από την άλλη πλευρά, η ίδρυση ενός λειτουργικού συστήματος που μοιάζει με UNIX (εργαλεία, σύστημα αρχείων, API) είναι αρκετά τυποποιημένη. Ωστόσο, ορισμένες λεπτομέρειες των συστημάτων μπορεί να έχουν σημαντικές διαφορές. Αυτές οι διαφορές θα συζητηθούν αργότερα στο άρθρο.

Τεχνικές διαφορές

Οι προγραμματιστές εμπορικών διανομών UNIX βασίζονται σε ένα συγκεκριμένο σύνολο πελατών και πλατφορμών διακομιστών για το λειτουργικό τους σύστημα. Έχουν μια καλή ιδέα για το τι είδους υποστήριξη και βελτιστοποίηση των εφαρμογών που πρέπει να υλοποιηθούν. Οι κατασκευαστές UNIX κάνουν ό,τι μπορούν για να εξασφαλίσουν τη συμβατότητα μεταξύ διαφορετικών εκδόσεων. Επιπλέον, δημοσίευσαν τα πρότυπα του ΛΣ τους.

Η ανάπτυξη GNU/Linux, από την άλλη πλευρά, δεν εστιάζει σε πλατφόρμα ή πελάτη και οι προγραμματιστές GNU/Linux έχουν διαφορετικό υπόβαθρο και προοπτικές. Δεν υπάρχει αυστηρό πρότυπο σύνολο εργαλείων ή περιβαλλόντων στην κοινότητα του Linux. Για την επίλυση αυτού του προβλήματος, ξεκίνησε το έργο Linux Standards Base (LSB), αλλά δεν αποδείχθηκε τόσο αποτελεσματικό όσο θα θέλαμε.

Αυτή η έλλειψη τυποποίησης οδηγεί σε σημαντικές ασυνέπειες στο Linux. Για ορισμένους προγραμματιστές, η δυνατότητα χρήσης των καλύτερων άλλων λειτουργικών συστημάτων είναι ένα πλεονέκτημα, αλλά η αντιγραφή στοιχείων UNIX στο Linux δεν είναι πάντα βολική, για παράδειγμα, όταν τα ονόματα συσκευών εντός Linux μπορούν να ληφθούν από το AIX, ενώ τα εργαλεία του συστήματος αρχείων επικεντρώνονται σε HP-UX. Ασυμβατότητες αυτού του είδους συμβαίνουν επίσης μεταξύ διαφορετικών διανομών Linux. Για παράδειγμα, το Gentoo και το RedHat εφαρμόζουν διαφορετικές μεθόδους ενημέρωσης.

Συγκριτικά, κάθε νέα έκδοση του συστήματος UNIX συνοδεύεται από μια καλά τεκμηριωμένη περιγραφή των νέων χαρακτηριστικών και αλλαγών στο UNIX. Οι εντολές, τα εργαλεία και άλλα στοιχεία σπάνια αλλάζουν και συχνά τα ίδια ορίσματα γραμμής εντολών για εφαρμογές παραμένουν ίδια σε πολλές εκδόσεις αυτού του λογισμικού. Όταν συμβαίνουν σημαντικές αλλαγές σε αυτά τα στοιχεία, οι πωλητές εμπορικών συστημάτων UNIX παρέχουν συχνά το περιτύλιγμα που απαιτείται για τη διασφάλιση της συμβατότητας με προηγούμενες εκδόσεις του εργαλείου.

Αυτή η συμβατότητα σημαίνει ότι τα βοηθητικά προγράμματα και οι εφαρμογές μπορούν να χρησιμοποιηθούν σε νέες εκδόσεις λειτουργικών συστημάτων χωρίς έλεγχο ή αλλαγή του πηγαίου κώδικα τους. Επομένως, η μετεγκατάσταση σε μια νεότερη έκδοση του UNIX, η οποία συνήθως δεν έχει θεμελιώδεις διαφορές από την παλιά έκδοση, είναι πολύ λιγότερη προσπάθεια για τους χρήστες ή τους διαχειριστές από τη μετεγκατάσταση από μια διανομή Linux σε μια άλλη.

Αρχιτεκτονική υλικού

Οι περισσότερες εμπορικές εκδόσεις του UNIX είναι κατασκευασμένες για μία ή για μικρό αριθμό αρχιτεκτονικών υλικού. Το HP-UX τρέχει μόνο σε πλατφόρμες PA-RISC και Itanium, το Solaris σε SPARC και x86 και το AIX είναι μόνο για επεξεργαστές POWER.

Εξαιτίας αυτών των περιορισμών, οι προμηθευτές UNIX είναι σχετικά ελεύθεροι να τροποποιήσουν τον κώδικά τους για αυτές τις αρχιτεκτονικές και να επωφεληθούν από οποιοδήποτε πλεονέκτημα της αρχιτεκτονικής τους. Επειδή γνωρίζουν τις συσκευές που υποστηρίζουν τόσο καλά, τα προγράμματα οδήγησης λειτουργούν καλύτερα και δεν χρειάζεται να αντιμετωπίσουν περιορισμούς του BIOS που αφορούν συγκεκριμένους υπολογιστές.

Το Linux, από την άλλη πλευρά, έχει σχεδιαστεί ιστορικά για μέγιστη συμβατότητα. Το Linux είναι διαθέσιμο σε μια ποικιλία αρχιτεκτονικών και ο αριθμός των συσκευών I/O και άλλων περιφερειακών που μπορούν να χρησιμοποιηθούν με το λειτουργικό σύστημα είναι σχεδόν απεριόριστος. Οι προγραμματιστές δεν μπορούν να γνωρίζουν εκ των προτέρων ποιο συγκεκριμένο υλικό θα εγκατασταθεί σε έναν υπολογιστή και συχνά δεν μπορούν να διασφαλίσουν ότι θα χρησιμοποιηθεί αποτελεσματικά. Ένα παράδειγμα είναι η διαχείριση μνήμης στο Linux. Προηγουμένως, το Linux χρησιμοποιούσε ένα μοντέλο τμηματικής μνήμης που είχε αρχικά σχεδιαστεί για x86. Είναι πλέον προσαρμοσμένο για χρήση σελιδοποιημένης μνήμης, αλλά εξακολουθεί να διατηρεί ορισμένες απαιτήσεις τμηματοποιημένης μνήμης, γεγονός που προκαλεί προβλήματα εάν η αρχιτεκτονική δεν υποστηρίζει τμηματοποιημένη μνήμη. Αυτό δεν είναι πρόβλημα για τους προμηθευτές UNIX. Ξέρουν ακριβώς σε ποιο υλικό θα τρέχει το UNIX τους.

Πυρήνας

Ο πυρήνας είναι η καρδιά του λειτουργικού συστήματος. Ο πηγαίος κώδικας για τον πυρήνα των εμπορικών διανομών UNIX είναι ιδιοκτησία των προγραμματιστών τους και δεν διανέμεται εκτός της εταιρείας. Εντελώς αντίθετη κατάσταση με το Linux. Οι διαδικασίες για τη μεταγλώττιση και την επιδιόρθωση πυρήνων και προγραμμάτων οδήγησης είναι αρκετά διαφορετικές. Για το Linux και άλλα λειτουργικά συστήματα ανοιχτού κώδικα, μια ενημέρωση κώδικα μπορεί να κυκλοφορήσει ως πηγαίος κώδικας και ο τελικός χρήστης μπορεί να την εγκαταστήσει, να δοκιμάσει, ακόμη και να την τροποποιήσει. Αυτές οι ενημερώσεις κώδικα συνήθως δεν ελέγχονται τόσο προσεκτικά όσο οι ενημερώσεις κώδικα από εμπορικούς προμηθευτές λειτουργικού συστήματος UNIX. Επειδή δεν υπάρχει πλήρης λίστα εφαρμογών και περιβαλλόντων που πρέπει να ελεγχθούν για να εκτελεστούν σωστά σε Linux, οι προγραμματιστές Linux εξαρτώνται από τους τελικούς χρήστες και άλλους προγραμματιστές για να εντοπίσουν σφάλματα.

Οι εμπορικοί προμηθευτές διανομής UNIX απελευθερώνουν πυρήνες μόνο ως εκτελέσιμο κώδικα. Ορισμένες εκδόσεις είναι μονολιθικές, ενώ άλλες σας επιτρέπουν να ενημερώσετε μόνο μια συγκεκριμένη λειτουργική μονάδα πυρήνα. Αλλά σε κάθε περίπτωση, αυτή η έκδοση παρέχεται μόνο με τη μορφή εκτελέσιμου κώδικα. Εάν απαιτείται ενημέρωση, ο διαχειριστής πρέπει να περιμένει από τον κατασκευαστή να κυκλοφορήσει μια ενημερωμένη έκδοση κώδικα σε δυαδική μορφή, αλλά μπορεί να ανακουφιστεί από το γεγονός ότι ο κατασκευαστής θα ελέγξει προσεκτικά την ενημερωμένη έκδοση κώδικα για συμβατότητα προς τα πίσω.

Όλες οι εμπορικές εκδόσεις του UNIX έχουν εξελιχθεί σε κάποιο βαθμό σε αρθρωτό πυρήνα. Τα προγράμματα οδήγησης και συγκεκριμένες λειτουργίες του λειτουργικού συστήματος είναι διαθέσιμα ως ξεχωριστά στοιχεία και μπορούν να φορτωθούν ή να εκφορτωθούν από τον πυρήνα, όπως απαιτείται. Αλλά η ανοιχτή αρθρωτή αρχιτεκτονική του Linux είναι πολύ πιο ευέλικτη. Ωστόσο, η ευελιξία και η προσαρμοστικότητα του Linux σημαίνει συνεχή αλλαγή. Ο πηγαίος κώδικας του Linux αλλάζει διαρκώς και κατά την ιδιοσυγκρασία του προγραμματιστή, το API μπορεί να αλλάξει. Όταν μια μονάδα ή πρόγραμμα οδήγησης έχει γραφτεί για μια εμπορική έκδοση του UNIX, θα διαρκέσει πολύ περισσότερο από το ίδιο πρόγραμμα οδήγησης για Linux.

Υποστήριξη συστήματος αρχείων

Ένας από τους λόγους για τους οποίους το Linux έχει γίνει ένα τόσο ισχυρό λειτουργικό σύστημα είναι η ευρεία συμβατότητά του με άλλα λειτουργικά συστήματα. Ένα από τα πιο προφανή χαρακτηριστικά είναι η πληθώρα συστημάτων αρχείων που είναι διαθέσιμα. Οι περισσότερες εμπορικές εκδόσεις του UNIX υποστηρίζουν δύο ή τρεις τύπους συστημάτων αρχείων. Το Linux, ωστόσο, υποστηρίζει τα περισσότερα από τα σύγχρονα συστήματα αρχείων. δείχνει ποια συστήματα αρχείων υποστηρίζονται από το UNIX. Οποιοδήποτε από αυτά τα συστήματα αρχείων μπορεί να προσαρτηθεί σε Linux, αν και δεν υποστηρίζουν όλα αυτά τα συστήματα αρχείων πλήρως την ανάγνωση και εγγραφή δεδομένων.

Πίνακας 1. Συστήματα αρχείων που είναι τυπικά για UNIX

Οι περισσότερες εμπορικές εκδόσεις του UNIX υποστηρίζουν συστήματα αρχείων ημερολογίου. Για παράδειγμα, το HP-UX χρησιμοποιεί το hfs ως το τυπικό σύστημα αρχείων του, αλλά υποστηρίζει επίσης το ημερολογιακό σύστημα αρχείων vxfs. Το Solaris υποστηρίζει uf και zfs. Ένα σύστημα αρχείων ημερολογίου είναι ένα ουσιαστικό στοιχείο οποιουδήποτε περιβάλλοντος διακομιστή επιχείρησης. Η υποστήριξη για ημερολογιακά συστήματα αρχείων εισήχθη αργά στο Linux, αλλά τώρα υπάρχουν αρκετές επιλογές, από κλώνους εμπορικών συστημάτων αρχείων (xfs, jfs) έως συστήματα αρχείων ειδικά για Linux (ext3, reiserfs).

Άλλες δυνατότητες του συστήματος αρχείων περιλαμβάνουν υποστήριξη ορίων, λίστες ελέγχου πρόσβασης αρχείων, κατοπτρισμό, στιγμιότυπα συστήματος και αλλαγή μεγέθους. Υποστηρίζονται με τη μια ή την άλλη μορφή από συστήματα αρχείων Linux. Οι περισσότερες από αυτές τις δυνατότητες δεν είναι στάνταρ στο Linux. Ορισμένες δυνατότητες μπορεί να λειτουργούν σε ένα σύστημα αρχείων, ενώ άλλες θα απαιτούν διαφορετικό σύστημα αρχείων. Ορισμένες από αυτές τις δυνατότητες απλώς δεν είναι διαθέσιμες σε ορισμένα συστήματα αρχείων Linux και άλλες απαιτούν πρόσθετη εγκατάσταση εργαλείων, όπως μια συγκεκριμένη έκδοση του LVM ή υποστήριξη για συστοιχίες δίσκων (πακέτο επιδρομής λογισμικού). Ιστορικά, η συμβατότητα μεταξύ διεπαφών προγραμματισμού και τυπικών εργαλείων ήταν δύσκολο να επιτευχθεί στο Linux, έτσι πολλά συστήματα αρχείων εφαρμόζουν αυτές τις δυνατότητες με διαφορετικούς τρόπους.

Δεδομένου ότι τα εμπορικά συστήματα UNIX υποστηρίζουν περιορισμένο αριθμό συστημάτων αρχείων, τα εργαλεία και οι τεχνικές τους για εργασία με αυτά είναι πιο τυποποιημένα. Για παράδειγμα, δεδομένου ότι μόνο ένα κύριο σύστημα αρχείων υποστηριζόταν στο Irix, υπήρχε μόνο ένας τρόπος για να ορίσετε λίστες ελέγχου πρόσβασης. Αυτό είναι πολύ πιο βολικό για τον τελικό χρήστη και για περαιτέρω υποστήριξη αυτού του λειτουργικού συστήματος.

Διαθεσιμότητα Εφαρμογής

Οι περισσότερες βασικές εφαρμογές είναι ίδιες τόσο στο UNIX όσο και στο Linux. Για παράδειγμα, οι εντολές cp , ls , vi και cc είναι διαθέσιμες σε UNIX και Linux και είναι πολύ παρόμοιες, αν όχι εντελώς ίδιες. Οι εκδόσεις Linux αυτών των εργαλείων βασίζονται στις εκδόσεις GNU αυτών των εργαλείων, ενώ οι εκδόσεις UNIX αυτών των εργαλείων βασίζονται στα παραδοσιακά εργαλεία UNIX. Αυτά τα εργαλεία UNIX έχουν μακρά ιστορία και σπάνια αλλάζουν.

Αλλά αυτό δεν σημαίνει ότι οι εμπορικές εκδόσεις του UNIX δεν μπορούν να χρησιμοποιηθούν με εργαλεία GNU. Στην πραγματικότητα, πολλοί εμπορικοί προμηθευτές UNIX OS περιλαμβάνουν πολλά εργαλεία GNU στις διανομές τους ή τα προσφέρουν ως δωρεάν πρόσθετα. Τα εργαλεία GNU δεν είναι απλώς τυπικά εργαλεία. Ορισμένα από αυτά τα δωρεάν βοηθητικά προγράμματα δεν έχουν εμπορικά αντίστοιχα (emacs ή Perl). Οι περισσότεροι κατασκευαστές προεγκαθιστούν αυτά τα προγράμματα και είτε εγκαθίστανται αυτόματα με το σύστημα είτε διατίθενται ως προαιρετική δυνατότητα.

Οι δωρεάν και ανοιχτού κώδικα εφαρμογές είναι σχεδόν πάντα ενσωματωμένες σε όλες τις διανομές Linux. Υπάρχει μεγάλος αριθμός ελεύθερου λογισμικού διαθέσιμος για Linux και πολλές από αυτές τις εφαρμογές έχουν μεταφερθεί σε εμπορικές εκδόσεις του λειτουργικού συστήματος UNIX.

Εμπορικές ή/και εφαρμογές κλειστού κώδικα (CAD, χρηματοοικονομικά προγράμματα, γραφικός επεξεργαστής) μπορεί να μην έχει ανάλογα για το Linux. Αν και ορισμένοι προμηθευτές κυκλοφορούν εκδόσεις των εφαρμογών τους για Linux, οι περισσότεροι προμηθευτές δεν βιάζονται να το κάνουν μέχρι να αυξηθεί η δημοτικότητα του Linux μεταξύ των χρηστών.

Από την άλλη πλευρά, οι εμπορικές εκδόσεις του UNIX έχουν υποστηρίξει ιστορικά μεγάλο αριθμό εφαρμογών σε εταιρικό επίπεδο, όπως η Oracle ή το SAP. Το Linux χάνει σε μεγάλο βαθμό λόγω της δυσκολίας πιστοποίησης μεγάλων εφαρμογών, ενώ οι εμπορικές εκδόσεις του UNIX δεν αλλάζουν πολύ από έκδοση σε κυκλοφορία. Το Linux μπορεί να αλλάξει πολλά, όχι μόνο με κάθε νέα διανομή, αλλά μερικές φορές μεταξύ των εκδόσεων της ίδιας διανομής. Επομένως, είναι πολύ δύσκολο για έναν κατασκευαστή λογισμικού να καταλάβει ακριβώς σε ποιο περιβάλλον θα χρησιμοποιηθεί η εφαρμογή του.

Διαχείριση συστήματος

Παρόλο που ορισμένες διανομές Linux συνοδεύονται από ένα τυπικό σύνολο εργαλείων διαχείρισης συστήματος, όπως το YaST της SUSE, δεν υπάρχει κοινό πρότυπο για εργαλεία διαχείρισης συστήματος Linux. Διατίθενται αρχεία κειμένου και εργαλεία γραμμής εντολών, αλλά μερικές φορές η χρήση τους μπορεί να είναι άβολη. Κάθε εμπορική έκδοση Το UNIX έχει τη δική του διεπαφή διαχείρισης συστήματος. Χρησιμοποιώντας αυτήν τη διεπαφή, μπορείτε να διαχειριστείτε και να τροποποιήσετε στοιχεία συστήματος. Ακολουθεί ένα παράδειγμα του System Administration Manager για HP-UX.

Αυτό το SAM περιέχει τις ακόλουθες ενότητες:

  • Χρήστες ή ομάδες για διαχείριση.
  • Επιλογές πυρήνα που μπορούν να αλλάξουν.
  • Διαμόρφωση δικτύου.
  • Ρύθμιση και προετοιμασία δίσκων.
  • Ρύθμιση διακομιστή X.

Η ποιότητα αυτού του βοηθητικού πακέτου είναι εξαιρετική και το βοηθητικό πακέτο λειτουργεί καλά με αρχεία κειμένου. Δεν υπάρχει ανάλογο αυτού του εργαλείου για Linux. Ακόμη και το YaST στο SUSE δεν έχει την ίδια λειτουργικότητα.

Μια άλλη πτυχή στο UNIX και το Linux που φαίνεται να αλλάζει με σχεδόν κάθε έκδοση του λειτουργικού συστήματος είναι η θέση των σεναρίων προετοιμασίας συστήματος. Ευτυχώς, οι /sbin/init και /etc/inittab είναι τυπικοί κατάλογοι. Αλλά τα σενάρια εκκίνησης του συστήματος βρίσκονται σε διαφορετικούς καταλόγους. δείχνει τις θέσεις όπου αποθηκεύονται τα σενάρια προετοιμασίας συστήματος για διάφορες διανομές UNIX και Linux.

Πίνακας 2. Θέση των σεναρίων προετοιμασίας συστήματος για διαφορετικές εκδόσεις του UNIX
HP-UX/sbin/init.d
AIX/etc/rc.d/init.d
Ίριξ/etc/init.d
Σολάρις/etc/init.d
κόκκινο καπέλο/etc/rc.d/init.d
SUSE/etc/rc.d/init.d
Debian/etc/init.d
Slackware/etc/rc.d

Λόγω του μεγάλου αριθμού διανομών Linux και του σχεδόν άπειρου αριθμού διαθέσιμων εφαρμογών (δεδομένου ότι υπάρχουν και πολλές εκδόσεις αυτής της εφαρμογής) για αυτό το λειτουργικό σύστημα, η διαχείριση προγραμμάτων σε Linux γίνεται δύσκολη υπόθεση. Η επιλογή του σωστού εργαλείου εξαρτάται από τη διανομή με την οποία εργάζεστε. Περαιτέρω ταλαιπωρία οφείλεται στο γεγονός ότι ορισμένες διανομές χρησιμοποιούν τη μορφή αρχείου Redhat Package Manager (RPM), ενώ τα προγράμματά τους είναι ασύμβατα. Αυτή η διαίρεση οδηγεί σε έναν τεράστιο αριθμό επιλογών για εργασία με πακέτα και δεν είναι πάντα σαφές ποιο σύστημα χρησιμοποιείται σε ένα συγκεκριμένο περιβάλλον.

Από την άλλη πλευρά, οι εμπορικές διανομές του UNIX περιέχουν τυπικούς διαχειριστές πακέτων. Παρόλο που υπάρχουν διαφορετικές εκδόσεις εφαρμογών και συγκεκριμένες μορφές για διαφορετικές εκδόσεις του UNIX, το περιβάλλον διαχείρισης εφαρμογών είναι το ίδιο. Για παράδειγμα, η Solaris χρησιμοποιεί τα ίδια εργαλεία διαχείρισης πακέτων εφαρμογών από την έναρξή της. Και πιθανότατα τα μέσα αναγνώρισης, προσθήκης ή αφαίρεσης πακέτων λογισμικού στο Solaris θα παραμείνουν αμετάβλητα.

Οι πωλητές εμπορικών διανομών UNIX παρέχουν επίσης το υλικό στο οποίο έχει σχεδιαστεί το λειτουργικό σύστημα τους, ώστε να μπορούν να εισάγουν νέες συσκευές στο λειτουργικό τους σύστημα, κάτι που είναι πολύ πιο δύσκολο να γίνει για το Linux. Για παράδειγμα, σε πιο πρόσφατες εκδόσειςΤο Linux προσπάθησε να εφαρμόσει υποστήριξη για hot swappable στοιχεία (με διάφορους βαθμούς επιτυχίας). Οι εμπορικές εκδόσεις του UNIX είχαν αυτή τη δυνατότητα εδώ και πολλά χρόνια. Επίσης, στις εμπορικές εκδόσεις του UNIX, η παρακολούθηση υλικού είναι καλύτερη από ό,τι στο Linux. Οι κατασκευαστές μπορούν να γράφουν προγράμματα οδήγησης και να τα ενσωματώνουν στο λειτουργικό τους σύστημα, το οποίο θα παρακολουθεί την υγεία του συστήματος, όπως σφάλματα μνήμης ECC, ρυθμίσεις τροφοδοσίας ή οποιοδήποτε άλλο στοιχείο υλικού. Αυτό το είδος υποστήριξης για Linux αναμένεται μόνο στο μακρινό μέλλον.

Το υλικό για εμπορικά συστήματα UNIX έχει επίσης πιο προηγμένες επιλογές εκκίνησης. Πριν από την εκκίνηση του λειτουργικού συστήματος, υπάρχουν πολλές επιλογές για να προσαρμόσετε τον τρόπο εκκίνησης, να ελέγξετε την υγεία του συστήματος ή να προσαρμόσετε τις ρυθμίσεις υλικού. Το BIOS ενός τυπικού υπολογιστή έχει λίγες, εάν υπάρχουν, από αυτές τις επιλογές.

Υποστήριξη

Μία από τις πιο σημαντικές διαφορές μεταξύ Linux και UNIX είναι το κόστος. Οι πωλητές εμπορικών συστημάτων UNIX έχουν χρεώσει υψηλή τιμή για το UNIX τους, παρόλο που μπορεί να χρησιμοποιηθεί μόνο με τις πλατφόρμες υλικού τους. Οι διανομές Linux, από την άλλη πλευρά, είναι σχετικά φθηνές, αν όχι καθόλου δωρεάν.

Όταν αγοράζετε μια εμπορική έκδοση του UNIX, οι πωλητές συνήθως παρέχουν τεχνική υποστήριξη. Οι περισσότεροι χρήστες Linux δεν υποστηρίζονται από τον κατασκευαστή του λειτουργικού συστήματος. Μπορούν να λάβουν υποστήριξη μόνο μέσω email, φόρουμ και διαφόρων κοινοτήτων χρηστών Linux. Ωστόσο, αυτές οι ομάδες δεν είναι μόνο για χρήστες Linux. Πολλοί διαχειριστές εμπορικών λειτουργικών συστημάτων της οικογένειας UNIX συμμετέχουν σε αυτές τις ανοιχτές ομάδες υποστήριξης προκειμένου να μπορούν να παρέχουν βοήθεια και, εάν είναι απαραίτητο, να τη χρησιμοποιούν. Πολλοί άνθρωποι βρίσκουν τέτοιες ομάδες αυτοβοήθειας ακόμη πιο χρήσιμες από το σύστημα υποστήριξης που προσφέρει ο κατασκευαστής του λειτουργικού συστήματος.

συμπέρασμα

Οι βασικές αρχές του UNIX και του Linux είναι πολύ παρόμοιες. Για έναν χρήστη ή διαχειριστή συστήματος, η εναλλαγή από Linux σε UNIX θα προσθέσει κάποια ταλαιπωρία στην εργασία, αλλά γενικά η μετάβαση θα είναι ανώδυνη. Ακόμα κι αν τα συστήματα αρχείων και οι πυρήνες είναι διαφορετικά και χρειάζονται λίγο χρόνο για να συνηθίσουν, τα εργαλεία και τα API παραμένουν τα ίδια. Ως επί το πλείστον, αυτές οι διαφορές δεν είναι πιο σημαντικές από τις διαφορές μεταξύ των κύριων εκδόσεων του UNIX. Όλοι οι κλάδοι του UNIX και του Linux εξελίσσονται σταδιακά και θα διαφέρουν ελαφρώς μεταξύ τους, αλλά λόγω της ωριμότητας των εννοιών του UNIX, οι βασικές αρχές του λειτουργικού συστήματος δεν θα αλλάξουν πολύ.

Εισαγωγή

Τι είναι το Unix;

Πού μπορώ να αποκτήσω δωρεάν Unix;

Ποιες είναι οι κύριες διαφορές μεταξύ του Unix και άλλων λειτουργικών συστημάτων;

Γιατί Unix;

Βασικές έννοιες Unix

Σύστημα αρχείων

διερμηνέας εντολών

Εγχειρίδια - άνθρωπος

Εισαγωγή

Το να γράψεις για το λειτουργικό σύστημα Unix είναι εξαιρετικά δύσκολο. Πρώτον, γιατί έχουν γραφτεί πολλά για αυτό το σύστημα. Δεύτερον, επειδή οι ιδέες και οι αποφάσεις του Unix είχαν και έχουν τεράστιο αντίκτυπο στην ανάπτυξη όλων των σύγχρονων λειτουργικών συστημάτων, και πολλές από αυτές τις ιδέες περιγράφονται ήδη σε αυτό το βιβλίο. Τρίτον, επειδή το Unix δεν είναι ένα λειτουργικό σύστημα, αλλά μια ολόκληρη οικογένεια συστημάτων και δεν είναι πάντα δυνατό να "παρακολουθήσουμε" τη σχέση τους μεταξύ τους και είναι απλά αδύνατο να περιγραφούν όλα τα λειτουργικά συστήματα που περιλαμβάνονται σε αυτήν την οικογένεια . Ωστόσο, χωρίς να ισχυριστούμε ότι είμαστε εξαντλητικοί με κανέναν τρόπο, θα προσπαθήσουμε να δώσουμε μια πρόχειρη επισκόπηση του "κόσμου Unix" σε εκείνες τις περιοχές του που μας φαίνονται ενδιαφέροντες για τους σκοπούς του σεμιναρίου μας.

Η γέννηση του λειτουργικού συστήματος Unix χρονολογείται από τα τέλη της δεκαετίας του '60 και αυτή η ιστορία έχει ήδη αποκτήσει "θρύλους", οι οποίοι μερικές φορές λένε με διαφορετικούς τρόπους για τις λεπτομέρειες αυτού του γεγονότος. Το λειτουργικό σύστημα Unix γεννήθηκε στο ερευνητικό κέντρο Bell Telephone Laboratories (Bell Labs), το οποίο αποτελεί μέρος της εταιρείας AT&T. Αρχικά, αυτό το έργο πρωτοβουλίας για τον υπολογιστή PDP-7 (αργότερα - για τον PDP-11) ήταν είτε ένα σύστημα αρχείων, είτε ένα παιχνίδι υπολογιστή, είτε ένα σύστημα προετοιμασίας κειμένου ή και τα δύο. Είναι σημαντικό, ωστόσο, ότι από την αρχή το έργο, το οποίο τελικά μετατράπηκε σε λειτουργικό σύστημα, επινοήθηκε ως ένα περιβάλλον λογισμικού για συλλογική χρήση. Ο συγγραφέας της πρώτης έκδοσης του Unix είναι ο Ken Thompson, ωστόσο, μια μεγάλη ομάδα εργαζομένων (D. Ritchie, B. Kernigan, R. Pike και άλλοι) συμμετείχε στη συζήτηση του έργου και στη συνέχεια στην υλοποίησή του . Κατά τη γνώμη μας, αρκετές τυχερές συνθήκες της γέννησης του Unix καθόρισαν την επιτυχία αυτού του συστήματος για πολλά χρόνια ακόμα.

Για τους περισσότερους από τους ανθρώπους στην ομάδα όπου γεννήθηκε το Unix, αυτό το λειτουργικό σύστημα ήταν «το τρίτο σύστημα». Υπάρχει η άποψη (βλ., για παράδειγμα) ότι ένας προγραμματιστής συστήματος επιτυγχάνει υψηλά προσόντα μόνο όταν ολοκληρώνει το τρίτο του έργο: το πρώτο έργο είναι ακόμα "φοιτητικό", ο δεύτερος προγραμματιστής προσπαθεί να συμπεριλάβει όλα όσα δεν λειτούργησαν στο πρώτο και ως αποτέλεσμα αποδεικνύεται πολύ δυσκίνητο και μόνο στο τρίτο επιτυγχάνεται η απαραίτητη ισορροπία των επιθυμιών και των δυνατοτήτων. Είναι γνωστό ότι πριν από τη γέννηση του Unix, η ομάδα Bell Labs συμμετείχε (μαζί με μια σειρά από άλλες εταιρείες) στην ανάπτυξη του MULTICS OS. Το τελικό προϊόν της MULTICS (η Bell Labs δεν συμμετείχε στα τελευταία στάδια ανάπτυξης) φέρει όλα τα χαρακτηριστικά ενός «δεύτερου συστήματος» και δεν χρησιμοποιείται ευρέως. Θα πρέπει να σημειωθεί, ωστόσο, ότι πολλές θεμελιωδώς σημαντικές ιδέες και αποφάσεις γεννήθηκαν σε αυτό το έργο, και ορισμένες έννοιες που πολλοί θεωρούν ότι γεννήθηκαν στο Unix στην πραγματικότητα προέρχονται από το έργο MULTICS.

Το λειτουργικό σύστημα Unix ήταν ένα σύστημα που δημιουργήθηκε «για μένα και για τους φίλους μου». Το Unix δεν ήταν έτοιμο να κατακτήσει την αγορά και να ανταγωνιστεί κανένα προϊόν. Οι ίδιοι οι προγραμματιστές του λειτουργικού συστήματος Unix ήταν χρήστες του και οι ίδιοι αξιολόγησαν την καταλληλότητα του συστήματος στις ανάγκες τους. Χωρίς την πίεση των συνθηκών της αγοράς, μια τέτοια αξιολόγηση θα μπορούσε να είναι εξαιρετικά αντικειμενική.

Το Unix ήταν ένα σύστημα που φτιάχτηκε από προγραμματιστές για προγραμματιστές. Αυτό καθόρισε την κομψότητα και την εννοιολογική αρμονία του συστήματος - αφενός, και από την άλλη - την ανάγκη κατανόησης του συστήματος για έναν χρήστη Unix και την αίσθηση επαγγελματικής ευθύνης για έναν προγραμματιστή που αναπτύσσει λογισμικό για το Unix. Και καμία μεταγενέστερη προσπάθεια δημιουργίας του "Unix for Dummies" δεν κατάφερε να απαλλάξει το Unix OS από αυτήν την αρετή.

Το 1972-73. Ο Ken Thompson και ο Dennis Ritchie έγραψαν μια νέα έκδοση του Unix. Ειδικά για το σκοπό αυτό, ο D. Ritchie δημιούργησε τη γλώσσα προγραμματισμού C, η οποία πλέον δεν είναι απαραίτητη. Πάνω από το 90% του κώδικα Unix είναι γραμμένο σε αυτή τη γλώσσα και η γλώσσα έχει γίνει αναπόσπαστο μέρος του λειτουργικού συστήματος. Το γεγονός ότι το κύριο μέρος του λειτουργικού συστήματος είναι γραμμένο σε γλώσσα υψηλού επιπέδου καθιστά δυνατή την εκ νέου μεταγλώττιση του στους κωδικούς οποιασδήποτε πλατφόρμας υλικού και είναι η περίσταση που καθόρισε την ευρεία χρήση του Unix.

Κατά την ίδρυση της Unix, η αντιμονοπωλιακή νομοθεσία των ΗΠΑ εμπόδισε την AT&T να εισέλθει στην αγορά λογισμικού. Επομένως, το λειτουργικό σύστημα Unix δεν ήταν εμπορικό και διανεμήθηκε ελεύθερα, κυρίως στα πανεπιστήμια. Εκεί, η ανάπτυξή του συνεχίστηκε και διεξήχθη πιο ενεργά στο Πανεπιστήμιο της Καλιφόρνια στο Μπέρκλεϋ. Σε αυτό το πανεπιστήμιο, δημιουργήθηκε η ομάδα Berkeley Software Distribution, η οποία ασχολήθηκε με την ανάπτυξη ενός ξεχωριστού κλάδου του OS - BSD Unix. Σε όλη τη μετέπειτα ιστορία, το mainstream Unix και το BSD Unix εξελίχθηκαν παράλληλα, εμπλουτίζοντας επανειλημμένα το ένα το άλλο.

Καθώς το λειτουργικό σύστημα Unix εξαπλώθηκε, οι εμπορικές εταιρείες ενδιαφέρθηκαν όλο και περισσότερο για αυτό, οι οποίες άρχισαν να κυκλοφορούν τις δικές τους εμπορικές εκδόσεις αυτού του λειτουργικού συστήματος. Με την πάροδο του χρόνου, ο «κύριος» κλάδος του Unix από την AT&T έγινε εμπορικός και δημιουργήθηκε μια θυγατρική του Unix System Laboratory για την προώθηση του. Ο κλάδος του BSD Unix διχαλώθηκε με τη σειρά του σε εμπορικό BSD και Free BSD. Διάφορα εμπορικά και δωρεάν συστήματα που μοιάζουν με Unix έχουν χτιστεί πάνω από τον πυρήνα του AT&T Unix, αλλά περιλαμβάνουν χαρακτηριστικά δανεισμένα από το BSD Unix καθώς και πρωτότυπα χαρακτηριστικά. Παρά την κοινή πηγή, οι διαφορές μεταξύ των μελών της οικογένειας Unix συσσωρεύτηκαν και τελικά έκαναν τη μεταφορά εφαρμογών από ένα λειτουργικό σύστημα τύπου Unix σε ένα άλλο εξαιρετικά δύσκολο. Με πρωτοβουλία των χρηστών του Unix, υπήρξε μια κίνηση για την τυποποίηση του Unix API. Αυτή η κίνηση υποστηρίχθηκε από τον Διεθνή Οργανισμό Προτύπων ISO και οδήγησε στην εμφάνιση του προτύπου POSIX (Portable Operation System Interface Execution), το οποίο βρίσκεται ακόμη υπό ανάπτυξη και είναι το πιο έγκυρο πρότυπο για το ΛΣ. Ωστόσο, το να γίνουν οι προδιαγραφές POSIX επίσημο πρότυπο είναι μια μάλλον αργή διαδικασία και αποτυγχάνει να καλύψει τις ανάγκες των προμηθευτών λογισμικού, γεγονός που οδήγησε στην εμφάνιση εναλλακτικών βιομηχανικών προτύπων.

Με τη μετάβαση του AT&T Unix στο Nowell, το όνομα αυτού του λειτουργικού συστήματος άλλαξε σε Unixware και τα δικαιώματα για το εμπορικό σήμα Unix μεταβιβάστηκαν στην κοινοπραξία X / Open. Αυτή η κοινοπραξία (τώρα το Open Group) ανέπτυξε τη δική της (ευρύτερη από το POSIX) προδιαγραφή συστήματος, γνωστή ως Single Unix Specification. Η δεύτερη έκδοση αυτού του προτύπου κυκλοφόρησε πρόσφατα, πολύ καλύτερα ευθυγραμμισμένη με το POSIX.

Τέλος, ορισμένες εταιρείες που παράγουν τις δικές τους εκδόσεις του Unix σχημάτισαν την κοινοπραξία Open Software Foundation (OSF), η οποία κυκλοφόρησε τη δική τους έκδοση του Unix, OSF/1, βασισμένη στον μικροπυρήνα Mach. Το OSF κυκλοφόρησε επίσης τις προδιαγραφές του συστήματος OSF/1, οι οποίες χρησίμευσαν ως βάση για τις εταιρείες-μέλη του OSF να κυκλοφορήσουν τα δικά τους συστήματα Unix. Αυτά τα συστήματα περιλαμβάνουν το SunOS από τη Sun Microsystems, το AIX από την IBM, το HP/UX από τη Hewlett-Packard, το DIGITAL UNIX από την Compaq και άλλα.

Αρχικά, τα συστήματα Unix αυτών των εταιρειών βασίζονταν ως επί το πλείστον στο BSD Unix, αλλά τώρα τα περισσότερα σύγχρονα βιομηχανικά συστήματα Unix βασίζονται στη χρήση (κατόπιν άδειας) του πυρήνα AT&T Unix System V Release 4 (S5R4), αν και κληρονομούν ορισμένα χαρακτηριστικά του BSD Unix. Δεν αναλαμβάνουμε την ευθύνη για τη σύγκριση εμπορικών συστημάτων Unix, καθώς οι συγκρίσεις αυτού του είδους που εμφανίζονται περιοδικά σε έντυπη μορφή συχνά παρέχουν εντελώς αντίθετα αποτελέσματα.

Η Nowell πούλησε το Unix στην Santa Crouse Operations, η οποία παρήγαγε το δικό της προϊόν Unix, SCO Open Server. Ο SCO Open Server βασίστηκε σε μια παλαιότερη έκδοση του πυρήνα (System V Release 3), αλλά ήταν εξαιρετικά διορθωμένος και εξαιρετικά σταθερός. Η Santa Crouse Operations ενσωμάτωσε το προϊόν της με την AT&T Unix και κυκλοφόρησε το Open Unix 8, αλλά στη συνέχεια πούλησε το Unix στην Caldera, τον ιδιοκτήτη του "κλασικού" Unix σήμερα (τέλη 2001).

Η Sun Microsystems ξεκίνησε την εισαγωγή της στον κόσμο του Unix με το SunOS, βασισμένο στον πυρήνα BSD. Ωστόσο, στη συνέχεια το αντικατέστησε με ένα σύστημα Solaris βασισμένο στο S5R4. Αυτήν τη στιγμή διανέμεται η έκδοση 8 αυτού του λειτουργικού συστήματος (υπάρχει επίσης η έκδοση 9-beta). Το Solaris τρέχει στην πλατφόρμα SPARC (επεξεργαστές RISC που κατασκευάζονται σύμφωνα με τις προδιαγραφές Sun) και την Intel-Pentium.

Η Hewlett-Packard προσφέρει το HP-UX OS. v.11 στην πλατφόρμα PA-RISC. Το HP-UX βασίζεται στο S5R4, αλλά περιέχει πολλά χαρακτηριστικά που δίνουν την προέλευσή του από το BSD Unix. Φυσικά, το HP-UX θα είναι διαθέσιμο και στην πλατφόρμα Intel-Itanium.

Η IBM κυκλοφορεί με το AIX OS, η τελευταία έκδοση μέχρι σήμερα είναι 5L (θα συζητηθεί αργότερα). Η IBM δεν ανακοίνωσε την «γενεαλογία» του AIX, είναι κυρίως πρωτότυπη ανάπτυξη, αλλά οι πρώτες εκδόσεις έφεραν σημάδια προέλευσης από το FreeBSD Unix. Τώρα, ωστόσο, το AIX μοιάζει περισσότερο με το S5R4. Το AIX ήταν αρχικά διαθέσιμο στην πλατφόρμα Intel-Pentium, αλλά στη συνέχεια (σύμφωνα με τη γενική πολιτική της IBM) δεν υποστηρίζονταν πλέον σε αυτήν την πλατφόρμα. Το AIX τρέχει επί του παρόντος σε διακομιστές IBM RS/6000 και σε άλλες πλατφόρμες υπολογιστών που βασίζονται σε PowerPC (συμπεριλαμβανομένων των υπερυπολογιστών της IBM).

Το DIGITAL UNIX της DEC ήταν η μόνη εμπορική εφαρμογή του OSF/1. Το DIGITAL UNIX OS λειτουργούσε σε διακομιστές Alpha RISC της DEC. Όταν η DEC εξαγοράστηκε από την Compaq το 1998, η Compaq απέκτησε διακομιστές Alpha και DIGITAL UNIX. Η Compaq σκοπεύει να αποκαταστήσει την παρουσία της στην αγορά των διακομιστών Alpha και, από αυτή την άποψη, αναπτύσσει εντατικά ένα λειτουργικό σύστημα για αυτούς. Το τρέχον όνομα αυτού του λειτουργικού συστήματος είναι Tru64 Unix (η τρέχουσα έκδοση είναι 5.1A), συνεχίζει να βασίζεται στον πυρήνα OSF/1 και έχει πολλές δυνατότητες του BSD Unix.

Αν και τα περισσότερα εμπορικά συστήματα Unix βασίζονται σε έναν μόνο πυρήνα και συμμορφώνονται με τις απαιτήσεις POSIX, το καθένα έχει τη δική του διάλεκτο API και οι διαφορές μεταξύ των διαλέκτων είναι αθροιστικές. Αυτό οδηγεί στο γεγονός ότι η μεταφορά βιομηχανικών εφαρμογών από το ένα σύστημα Unix σε ένα άλλο είναι δύσκολη και απαιτεί τουλάχιστον εκ νέου μεταγλώττιση, και συχνά επίσης διόρθωση του πηγαίου κώδικα. Μια προσπάθεια να ξεπεραστεί η «σύγχυση» και να γίνει ένα ενιαίο λειτουργικό σύστημα Unix για όλους έγινε το 1998 από μια συμμαχία SCO, IBM και Sequent. Αυτές οι εταιρείες ενώθηκαν στο έργο Monterey για να δημιουργήσουν ένα ενιαίο λειτουργικό σύστημα βασισμένο στο Unixware, το οποίο ανήκε εκείνη την εποχή στην SCO, την IBM AIX και το DYNIX OS της Sequent. (Η Sequent είναι πρωτοπόρος στην παραγωγή υπολογιστών NUMA - ασύμμετρος πολυεπεξεργαστής - και το DYNIX είναι το Unix για τέτοιους υπολογιστές). Το λειτουργικό σύστημα Monterey επρόκειτο να λειτουργήσει στην πλατφόρμα Intel-Pentium 32 bit, στην πλατφόρμα PowerPC 64 bit και στη νέα πλατφόρμα Intel-Itanium 64 bit. Σχεδόν όλοι οι ηγέτες στον κλάδο του υλικού και του ενδιάμεσου λογισμικού έχουν δηλώσει την υποστήριξή τους για το έργο. Ακόμη και εταιρείες που έχουν τους δικούς τους κλώνους Unix (εκτός της Sun Microsystems) έχουν ανακοινώσει ότι θα υποστηρίζουν το Monterey μόνο σε πλατφόρμες Intel. Οι εργασίες για το έργο φάνηκε να πηγαίνουν καλά. Το Monterey OS ήταν από τα πρώτα που απέδειξε την απόδοσή του σε Intel-Itanium (μαζί με τα Windows NT και Linux) και το μόνο που δεν μιμήθηκε την αρχιτεκτονική Intel-Pentium 32-bit. Ωστόσο, στο τελικό στάδιο του έργου, συνέβη ένα μοιραίο γεγονός: η SCO πούλησε το τμήμα Unix της. Ακόμη νωρίτερα, η Sequent έγινε μέρος της IBM. Ο «διάδοχος» όλων των χαρακτηριστικών του Monterey OS είναι το IBM AIX v.5L OS. Ωστόσο, όχι ακριβώς όλα. Η πλατφόρμα Intel-Pentium δεν αποτελεί στρατηγική εστίαση για την IBM και το AIX δεν είναι διαθέσιμο σε αυτήν την πλατφόρμα. Και επειδή άλλοι ηγέτες στον κλάδο των υπολογιστών δεν συμμερίζονται (ή δεν συμμερίζονται πλήρως) τη θέση της IBM, η ιδέα ενός κοινού λειτουργικού συστήματος Unix δεν έγινε ποτέ πραγματικότητα.

Αν πρόσφατα ξεκινήσατε να μαθαίνετε Linux και να νιώθετε άνετα σε αυτό το τεράστιο σύμπαν, τότε πιθανότατα έχετε συναντήσει πολύ τον όρο Unix. Ακούγεται πολύ παρόμοιο με το Linux, αλλά τι σημαίνει; Πιθανότατα αναρωτιέστε ποια είναι η διαφορά μεταξύ unix και linux. Η απάντηση σε αυτή την ερώτηση εξαρτάται από το τι καταλαβαίνετε από αυτές τις λέξεις. Μετά από όλα, καθένα από αυτά μπορεί να ερμηνευτεί με διαφορετικούς τρόπους. Σε αυτό το άρθρο, θα εξετάσουμε ένα απλοποιημένο ιστορικό του Linux και του Unix για να σας βοηθήσουμε να κατανοήσετε τι είναι και πώς σχετίζονται. Όπως πάντα, μπορείτε να κάνετε ερωτήσεις ή να προσθέσετε περισσότερες πληροφορίες στα σχόλια.

Το Unix ξεκίνησε την ιστορία του στα τέλη της δεκαετίας του 1960 και στις αρχές της δεκαετίας του 1970 στο AT&T Bell Labs στις Ηνωμένες Πολιτείες. Μαζί με το MIT και την General Electric, η Bell Labs άρχισε να αναπτύσσει ένα νέο λειτουργικό σύστημα. Ορισμένοι ερευνητές ήταν δυσαρεστημένοι με την ανάπτυξη αυτού του λειτουργικού συστήματος. Απομακρύνθηκαν από την εργασία στο κύριο έργο και άρχισαν να αναπτύσσουν το δικό τους λειτουργικό σύστημα. Το 1970, αυτό το σύστημα ονομάστηκε Unix και δύο χρόνια αργότερα ξαναγράφηκε εντελώς στη γλώσσα προγραμματισμού C.

Αυτό επέτρεψε στο Unix να διανεμηθεί και να μεταφερθεί σε διάφορες συσκευέςκαι υπολογιστικές πλατφόρμες.

Καθώς το Unix συνέχισε να εξελίσσεται, η AT&T άρχισε να το αδειοδοτεί για πανεπιστημιακή χρήση καθώς και για εμπορικούς σκοπούς. Αυτό σήμαινε ότι δεν μπορούσαν όλοι, όπως τώρα, να αλλάξουν και να διανείμουν ελεύθερα τον κώδικα του λειτουργικού συστήματος Unix. Σύντομα, άρχισαν να εμφανίζονται πολλές εκδόσεις και παραλλαγές του λειτουργικού συστήματος Unix, σχεδιασμένες να επιλύουν διάφορα προβλήματα. Το πιο γνωστό από αυτά ήταν το BSD.

Το Linux είναι παρόμοιο με το Unix σε λειτουργικότητα και δυνατότητες, αλλά όχι στη βάση κώδικα. Αυτό το λειτουργικό σύστημα συναρμολογήθηκε από δύο έργα. Το πρώτο είναι το έργο GNU που αναπτύχθηκε από τον Richard Stallman το 1983, το δεύτερο είναι ο πυρήνας Linux που γράφτηκε από τον Linus Torvalds το 1991.

Ο στόχος του έργου GNU ήταν να δημιουργήσει ένα σύστημα παρόμοιο, αλλά ανεξάρτητο από το Unix. Με άλλα λόγια, ένα λειτουργικό σύστημα που δεν περιέχει κώδικα Unix που θα μπορούσε να αναδιανεμηθεί ελεύθερα και να τροποποιηθεί χωρίς περιορισμούς, όπως το ελεύθερο λογισμικό. Δεδομένου ότι ο δωρεάν πυρήνας Linux δεν μπορούσε να τρέξει μόνος του, το έργο GNU συγχωνεύτηκε με τον πυρήνα Linux και γεννήθηκε το λειτουργικό σύστημα Linux.

Το Linux σχεδιάστηκε υπό την επίδραση του συστήματος Minix, απόγονο του Unix, αλλά όλος ο κώδικας γράφτηκε από την αρχή. Σε αντίθεση με το Unix, το οποίο χρησιμοποιήθηκε σε διακομιστές και μεγάλα mainframes διαφόρων επιχειρήσεων, το Linux σχεδιάστηκε για να χρησιμοποιείται σε οικιακός υπολογιστήςμε απλούστερο υλικό.

Σήμερα, το Linux τρέχει σε περισσότερες πλατφόρμες από οποιοδήποτε άλλο λειτουργικό σύστημα, συμπεριλαμβανομένων διακομιστών, ενσωματωμένων συστημάτων, μικροϋπολογιστών, μόντεμ, ακόμη και κινητών τηλεφώνων. Τώρα η διαφορά μεταξύ linux και unix θα εξεταστεί με περισσότερες λεπτομέρειες.

Τι είναι το Unix

Ο όρος Unix μπορεί να αναφέρεται σε τέτοιες έννοιες:

  • Το αρχικό λειτουργικό σύστημα που αναπτύχθηκε από την AT&T Bell Labs από το οποίο αναπτύσσονται άλλα λειτουργικά συστήματα.
  • Εμπορικό σήμα, γραμμένο με κεφαλαία γράμματα. Το UNIX ανήκει στο The Open Group, το οποίο ανέπτυξε το Single UNIX Specification, ένα σύνολο προτύπων για λειτουργικά συστήματα. Μόνο εκείνα τα συστήματα που συμμορφώνονται με τα πρότυπα μπορούν νόμιμα να ονομάζονται UNIX. Η πιστοποίηση δεν είναι δωρεάν και απαιτεί από τους προγραμματιστές να πληρώσουν για τη χρήση αυτού του εμπορικού σήματος.
  • Όλα τα λειτουργικά συστήματα είναι εγγεγραμμένα με το όνομα Unix. Επειδή πληρούν τα προαναφερθέντα πρότυπα. Αυτά είναι τα AIX, A/UX, HP-UX, Inspur K-UX, Reliant UNIX, Solaris, IRIX, Tru64, UnixWare, z/OS και OS X - ναι, ακόμη και αυτά που τρέχουν σε υπολογιστές Apple.

Τι είναι το Linux

Ο όρος Linux αναφέρεται μόνο στον πυρήνα. Ένα λειτουργικό σύστημα δεν θα ήταν πλήρες χωρίς περιβάλλον επιφάνειας εργασίας και εφαρμογές. Δεδομένου ότι οι περισσότερες εφαρμογές αναπτύχθηκαν και αναπτύσσονται τώρα στο πλαίσιο του έργου GNU, το πλήρες όνομα του λειτουργικού συστήματος είναι GNU/Linux.

Πολλοί άνθρωποι χρησιμοποιούν τώρα τον όρο Linux για να αναφερθούν σε όλες τις διανομές που βασίζονται στον πυρήνα του Linux. Αυτή τη στιγμή, η νεότερη έκδοση του πυρήνα Linux είναι η 4.4, η έκδοση 4.5 είναι υπό ανάπτυξη. Η επαναρίθμηση των εκδόσεων του πυρήνα από 3.x σε 4.x έγινε πριν από λίγο καιρό.

Το Linux είναι ένα λειτουργικό σύστημα που μοιάζει με Unix που συμπεριφέρεται όπως το Unix αλλά δεν περιέχει τον κώδικά του. Τα λειτουργικά συστήματα που μοιάζουν με Unix αναφέρονται συχνά ως Un*x, *NIX και *N?X ή ακόμα και Unixoid. Το Linux δεν έχει πιστοποίηση Unix και το GNU σημαίνει GNU όχι Unix, επομένως το Mac OS X είναι περισσότερο Unix από το Linux από αυτή την άποψη. Παρόλα αυτά, ο πυρήνας Linux και το λειτουργικό σύστημα GNU Linux μοιάζουν πολύ με το Unix στη λειτουργικότητα, εφαρμόζοντας τις περισσότερες από τις αρχές της φιλοσοφίας του Unix. Είναι κώδικας αναγνώσιμος από τον άνθρωπο, που αποθηκεύει τη διαμόρφωση του συστήματος σε ξεχωριστά αρχεία κειμένου και χρησιμοποιεί μικρά εργαλεία γραμμής εντολών, ένα γραφικό κέλυφος και έναν διαχειριστή συνεδρίας.

Είναι σημαντικό να σημειωθεί ότι δεν έχουν λάβει όλα τα συστήματα τύπου Unix πιστοποίηση UNIX. Σε ένα συγκεκριμένο πλαίσιο, όλα τα λειτουργικά συστήματα που βασίζονται στο UNIX ή τις ιδέες του ονομάζονται UNIX-like, είτε διαθέτουν πιστοποιητικό UNIX είτε όχι. Επιπλέον, μπορεί να είναι εμπορικά και δωρεάν.

Ελπίζω τώρα να έχει γίνει πιο σαφές πώς το unix διαφέρει από το linux. Αλλά ας πάμε ακόμη παραπέρα και ας συνοψίσουμε.

Βασικές διαφορές

  • Το Linux είναι ένα δωρεάν και ανοιχτού κώδικα λειτουργικό σύστημα, αλλά το αρχικό Unix δεν είναι, εκτός από ορισμένα από τα παράγωγά του.
  • Το Linux είναι ένας κλώνος του αρχικού Unix, αλλά δεν περιέχει τον κώδικά του.
  • Η κύρια διαφορά μεταξύ unix και linux είναι ότι το Linux είναι μόνο ένας πυρήνας, ενώ το Unix ήταν και είναι ένα πλήρες λειτουργικό σύστημα.
  • Το Linux σχεδιάστηκε για προσωπικούς υπολογιστές. Και το Unix εστιάζει κυρίως σε μεγάλους σταθμούς εργασίας και διακομιστές.
  • Σήμερα, το Linux υποστηρίζει περισσότερες πλατφόρμες από το Unix.
  • Το Linux υποστηρίζει περισσότερους τύπους συστημάτων αρχείων από το Unix.

Όπως μπορείτε να δείτε, η σύγχυση συνήθως προέρχεται από το γεγονός ότι το linux έναντι του unix μπορεί να σημαίνει εντελώς διαφορετικά πράγματα. Όποιο και αν είναι το νόημα, το γεγονός παραμένει ότι το Unix ήρθε πρώτο και το Linux ήρθε αργότερα. Το Linux γεννήθηκε από την επιθυμία για ελευθερία λογισμικού και φορητότητα, εμπνευσμένο από την προσέγγιση Unix. Είναι ασφαλές να πούμε ότι είμαστε όλοι υπόχρεοι στο κίνημα του ελεύθερου λογισμικού, γιατί ο κόσμος θα ήταν πολύ χειρότερος χωρίς αυτό.

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΕΠΙΣΤΗΜΗΣ ΤΗΣ ΡΩΣΙΑΣ

ΟΜΟΣΠΟΝΔΙΑ

ΟΜΟΣΠΟΝΔΙΑΚΟΣ ΟΡΓΑΝΙΣΜΟΣ ΓΙΑ ΤΗΝ ΕΚΠΑΙΔΕΥΣΗ

ΚΡΑΤΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ

ΑΝΩΤΕΡΗ ΕΠΑΓΓΕΛΜΑΤΙΚΗ ΕΚΠΑΙΔΕΥΣΗ

Κρατικό Πανεπιστήμιο Μηχανικής Ραδιοφωνίας του Ταγκανρόγκ

Πειθαρχία "Πληροφορική"

"Λειτουργικό σύστημα UNIX"

Συμπλήρωσε: Orda-Zhigulina D.V., gr. Ε-25

Έλεγχος: Vishnevetsky V.Yu.

Taganrog 2006


Εισαγωγή

Τι είναι το Unix 3

Πού να αποκτήσετε δωρεάν Unix 7

Κύριο μέρος. (Περιγραφή του Unix)

1. Βασικές έννοιες του Unix 8

2. Σύστημα αρχείων 9

2.1 Τύποι αρχείων 9

3. Διερμηνέας εντολών 11

4. Πυρήνας UNIX 12

4.1 Γενική οργάνωση του παραδοσιακού πυρήνα UNIX 13

4.2 Κύριες λειτουργίες του πυρήνα 14

4.3 Αρχές αλληλεπίδρασης με τον πυρήνα 15

4.4 Αρχές χειρισμού διακοπών 17

5. Έλεγχος I/O 18

5.1 Αρχές του συστήματος I/O Buffering 19

5. 2 Κλήσεις συστήματος για έλεγχο εισόδου/εξόδου 21

6. Διεπαφές και σημεία εισόδου προγραμμάτων οδήγησης 23

6.1 Αποκλεισμός προγραμμάτων οδήγησης 23

6.2 Προγράμματα οδήγησης χαρακτήρων 24

6. 3 προγράμματα οδήγησης ροής 25

7. Εντολές και βοηθητικά προγράμματα 25

7. 1 Οργάνωση ομάδας στο UNIX OS 26

7.2 Ανακατεύθυνση I/O και σωληνώσεις 26

7. 3 Ενσωματωμένες εντολές, βιβλιοθήκη και χρήστη 26

7.4 Προγραμματισμός γλώσσας εντολών 27

8. Εργαλεία GUI 27

8.1 Αναγνωριστικά χρηστών και ομάδες χρηστών 30

8.2 Προστασία αρχείων 32

8.3 Υποσχόμενα λειτουργικά συστήματα που υποστηρίζουν το περιβάλλον UNIX OS 33

συμπέρασμα

Κύριες διαφορές μεταξύ Unix και άλλων λειτουργικών συστημάτων 36

Εφαρμογές του Unix 37


Εισαγωγή

Τι είναι το Unix

Ο όρος Unix και το όχι αρκετά ισοδύναμο UNIX χρησιμοποιούνται με διαφορετικές έννοιες. Ας ξεκινήσουμε με τον δεύτερο από τους όρους, ως τον απλούστερο. Με λίγα λόγια, το UNIX (σε αυτή τη μορφή) είναι ένα σήμα κατατεθέν που ανήκει αρχικά στην AT&T Corporation, το οποίο έχει αλλάξει χέρια εδώ και πολλά χρόνια και είναι πλέον ιδιοκτησία ενός οργανισμού που ονομάζεται Open Group. Το δικαίωμα χρήσης του ονόματος UNIX επιτυγχάνεται με ένα είδος «έλεγχου για ψείρες» - περνώντας δοκιμές συμμόρφωσης με τις προδιαγραφές κάποιου λειτουργικού συστήματος αναφοράς (Single Unix Standard - το οποίο σε αυτή την περίπτωση μπορεί να μεταφραστεί ως το Single Standard στο Unix). Αυτή η διαδικασία δεν είναι μόνο περίπλοκη, αλλά και πολύ δαπανηρή, και επομένως μόνο μερικά από τα τρέχοντα λειτουργικά συστήματα έχουν υποβληθεί σε αυτήν, και όλα είναι ιδιόκτητα, δηλαδή αποτελούν ιδιοκτησία ορισμένων εταιρειών.

Μεταξύ των εταιρειών που έχουν κερδίσει το δικαίωμα στο όνομα UNIX και στη συνέχεια προγραμματιστές / δοκιμαστές και το αίμα (ακριβέστερα, το δολάριο) των ιδιοκτητών, μπορούμε να αναφέρουμε τα εξής:

Ήλιος με το SunOS του (πιο γνωστό στον κόσμο ως Solaris).

Η IBM, η οποία ανέπτυξε το σύστημα AIX.

Η Hewlett-Packard είναι ο ιδιοκτήτης του συστήματος HP-UX.

Το IRIX είναι το λειτουργικό σύστημα της SGI.

Επιπλέον, το σωστό όνομα UNIX ισχύει για συστήματα:

Το True64 Unix, που αναπτύχθηκε από την DEC, με την εκκαθάριση του οποίου πέρασε στην Compaq, και τώρα, μαζί με το τελευταίο, έχει γίνει ιδιοκτησία της ίδιας Hewlett-Packard.

Το UnixWare ανήκει στην SCO (προϊόν της συγχώνευσης της Caldera και της Santa Cruz Operation).

Όντας ιδιόκτητα, όλα αυτά τα συστήματα πωλούνται για πολλά χρήματα (ακόμα και με τα αμερικανικά πρότυπα). Ωστόσο, αυτό δεν είναι το κύριο εμπόδιο για την εξάπλωση του ίδιου του UNIX. Επειδή το κοινό τους χαρακτηριστικό είναι δεσμευτικό για ορισμένες πλατφόρμες υλικού: το AIX εκτελείται σε διακομιστές IBM και σταθμούς εργασίας με επεξεργαστές Power, το HP-UX - στο δικό του HP-PA (Αρχιτεκτονική ακριβείας ) μηχανές , IRIX - σε σταθμούς γραφικών από SGI, που φέρουν επεξεργαστές MIPS, True64 Unix - σχεδιασμένο για επεξεργαστές Alpha (δυστυχώς, το νεκρό Bose) Μόνο το UnixWare εστιάζει στη "δημοκρατική" πλατφόρμα υπολογιστή και το Solaris υπάρχει σε εκδόσεις για δύο αρχιτεκτονικές - το δικό του, Sparc, και ακόμα το ίδιο PC, που ωστόσο δεν συνέβαλε πολύ στην επικράτηση τους -λόγω της σχετικά αδύναμης υποστήριξης για τα νέα περιφερειακά PC.

Έτσι, το UNIX είναι κατά κύριο λόγο μια νομική έννοια. Όμως ο όρος Unix έχει μια τεχνολογική ερμηνεία. Αυτή είναι η κοινή ονομασία που χρησιμοποιείται από τη βιομηχανία της πληροφορικής για ολόκληρη την οικογένεια λειτουργικών συστημάτων, είτε προέρχεται από την "αρχική" εταιρεία UNIX AT & T, είτε αναπαράγει τις λειτουργίες της "από την αρχή", συμπεριλαμβανομένων των δωρεάν λειτουργικών συστημάτων όπως Linux, FreeBSD και άλλα BSD, δεν έχει ποτέ εκτεθεί καμία επαλήθευση για τη συμμόρφωση με το πρότυπο Single Unix. Αυτός είναι ο λόγος που συχνά ονομάζονται Unix-like.

Χρησιμοποιείται επίσης ευρέως ο όρος "συμβατά με POSIX συστήματα", ο οποίος είναι κοντινός σε σημασία, ο οποίος ενώνει μια οικογένεια λειτουργικών συστημάτων που αντιστοιχούν στο σύνολο προτύπων με το ίδιο όνομα. Τα ίδια τα πρότυπα POSIX (Portable Operation System Interface based on uniX) αναπτύχθηκαν με βάση τις πρακτικές που υιοθετήθηκαν στα συστήματα Unix, και ως εκ τούτου τα τελευταία είναι όλα, εξ ορισμού, συμβατά με το POSIX. Ωστόσο, αυτά δεν είναι εντελώς συνώνυμα: η συμβατότητα με τα πρότυπα POSIX διεκδικείται από λειτουργικά συστήματα που σχετίζονται μόνο έμμεσα με το Unix (QNX, Syllable) ή δεν σχετίζονται καθόλου (έως τα Windows NT/2000/XP).

Για να διευκρινίσουμε το ζήτημα της σχέσης μεταξύ UNIX, Unix και POSIX, πρέπει να εμβαθύνουμε λίγο στην ιστορία. Στην πραγματικότητα, η ιστορία αυτού του ζητήματος συζητείται λεπτομερώς στο αντίστοιχο κεφάλαιο του βιβλίου "Free Unix: Linux, FreeBSD and Others" (προσεχώς από την BHV-Petersburg) και σε άρθρα για την ιστορία των συστημάτων Linux και BSD.

Το λειτουργικό σύστημα Unix (ακριβέστερα, η πρώτη του έκδοση) αναπτύχθηκε από υπαλλήλους της Bell Labs (τμήμα της AT & T) το 1969-1971. Οι πρώτοι συγγραφείς του - Ken Thompson και Dennis Ritchie - το έκαναν αποκλειστικά για τους δικούς τους σκοπούς, ιδίως για να μπορέσουν να διασκεδάσουν με το αγαπημένο τους παιχνίδι StarTravel. Και για διάφορους νομικούς λόγους, η ίδια η εταιρεία δεν μπορούσε να το χρησιμοποιήσει ως εμπορικό προϊόν. Ωστόσο, η πρακτική εφαρμογή του Unix βρέθηκε αρκετά γρήγορα. Πρώτον, χρησιμοποιήθηκε στα εργαστήρια Bell για την προετοιμασία διαφόρων ειδών τεχνικής τεκμηρίωσης (συμπεριλαμβανομένου του διπλώματος ευρεσιτεχνίας). Και δεύτερον, το σύστημα επικοινωνίας UUCP (Unix to Unix Copy Program) βασίστηκε στο Unix.

Ένας άλλος τομέας όπου χρησιμοποιήθηκε το Unix στη δεκαετία του '70 και στις αρχές της δεκαετίας του '80 του περασμένου αιώνα αποδείχθηκε αρκετά ασυνήθιστη. Συγκεκριμένα, στα κείμενα πηγής, διανεμήθηκε μεταξύ επιστημονικών ιδρυμάτων που διεξάγουν εργασίες στον τομέα της Επιστήμης των Υπολογιστών. Ο σκοπός μιας τέτοιας διάδοσης (δεν ήταν εντελώς δωρεάν με τη σημερινή έννοια, αλλά στην πραγματικότητα αποδείχθηκε πολύ φιλελεύθερη) ήταν: εκπαίδευση και έρευνα στο παραπάνω γνωστικό πεδίο.

Το πιο διάσημο είναι το σύστημα BSD Unix, που δημιουργήθηκε στο Πανεπιστήμιο του Μπέρκλεϋ της Καλιφόρνια. Το οποίο, σταδιακά απελευθερώνοντας τον εαυτό του από τον ιδιόκτητο κώδικα του αρχικού Unix, τελικά, μετά από δραματικά σκαμπανεβάσματα (που περιγράφονται λεπτομερώς εδώ), οδήγησε σε σύγχρονα δωρεάν συστήματα BSD - FreeBSD, NetBSD και άλλα.

Ένα από τα πιο σημαντικά αποτελέσματα της δουλειάς των πανεπιστημιακών χάκερ ήταν (1983) η εισαγωγή υποστήριξης για το πρωτόκολλο TCP/IP στο Unix, το οποίο βασιζόταν στο τότε δίκτυο ARPANET (και το οποίο έγινε το θεμέλιο του σύγχρονου Διαδικτύου). Αυτό ήταν προϋπόθεση για την κυριαρχία του Unix σε όλους τους τομείς που σχετίζονται με τον Παγκόσμιο Ιστό. Και αυτή αποδείχθηκε ότι ήταν η επόμενη πρακτική εφαρμογή αυτής της οικογένειας λειτουργικών συστημάτων - τότε δεν υπήρχε πλέον καμία ανάγκη να μιλάμε για ένα μόνο Unix. Διότι, όπως αναφέρθηκε προηγουμένως, διαχώρισε τους δύο κλάδους του - προερχόμενους από το αρχικό UNIX (με την πάροδο του χρόνου, έλαβε το όνομα System V) και το σύστημα προέλευσης Berkeley. Από την άλλη πλευρά, το System V αποτέλεσε τη βάση εκείνων των διαφόρων ιδιόκτητων UNIX που, στην πραγματικότητα, είχαν το νόμιμο δικαίωμα να διεκδικήσουν αυτό το όνομα.

Η τελευταία περίσταση - η διακλάδωση του άλλοτε μεμονωμένου λειτουργικού συστήματος σε πολλές γραμμές που σταδιακά χάνουν τη συμβατότητά τους - ήρθε σε σύγκρουση με έναν από τους ακρογωνιαίους λίθους της ιδεολογίας του Unix: τη φορητότητα του συστήματος μεταξύ διαφορετικών πλατφορμών και τις εφαρμογές του από ένα σύστημα Unix σε αλλο. Τι έφερε στη ζωή τις δραστηριότητες διαφόρων ειδών οργανισμών τυποποίησης, οι οποίες τελείωσαν στο τέλος με τη δημιουργία του συνόλου προτύπων POSIX, το οποίο αναφέρθηκε προηγουμένως.

Ήταν τα πρότυπα POSIX στα οποία βασίστηκε ο Linus Torvalds, δημιουργώντας «από την αρχή» (δηλαδή, χωρίς τη χρήση προϋπάρχοντος κώδικα) το λειτουργικό του σύστημα - Linux. Και, έχοντας κατακτήσει γρήγορα και επιτυχώς τους παραδοσιακούς τομείς εφαρμογής των συστημάτων Unix (ανάπτυξη λογισμικού, επικοινωνίες, Διαδίκτυο), τελικά άνοιξε ένα νέο γι 'αυτούς - πλατφόρμες χρηστών επιτραπέζιων υπολογιστών γενικής χρήσης. Αυτό είναι που το έκανε δημοφιλές μεταξύ των ανθρώπων - μια δημοτικότητα που ξεπερνά αυτή όλων των άλλων συστημάτων Unix συνδυαστικά, τόσο ιδιόκτητα όσο και δωρεάν.

Επιπλέον, θα μιλήσουμε για εργασία σε συστήματα Unix με την ευρεία έννοια της λέξης, χωρίς να λάβουμε υπόψη κανενός είδους εμπορικά σήματα και άλλα νομικά προβλήματα. Αν και τα κύρια παραδείγματα που σχετίζονται με τις μεθόδους εργασίας θα ληφθούν από το πεδίο των δωρεάν υλοποιήσεών τους - Linux, σε μικρότερο βαθμό FreeBSD, και ακόμη λιγότερο - από άλλα συστήματα BSD.

Πού μπορώ να αποκτήσω δωρεάν Unix;

Βάση δεδομένων FreeBSD - www.freebsd.org;

Μπορείτε να μεταβείτε στη διεύθυνση www.sco.com


Κύριο μέρος. (Περιγραφή του Unix)

1. Βασικές έννοιες του Unix

Το Unix βασίζεται σε δύο βασικές έννοιες: "διαδικασία" και "αρχείο". Οι διαδικασίες είναι η δυναμική πλευρά του συστήματος, είναι υποκείμενα. και αρχεία - στατικά, αυτά είναι τα αντικείμενα των διεργασιών. Σχεδόν ολόκληρη η διεπαφή μεταξύ των διεργασιών που αλληλεπιδρούν με τον πυρήνα και μεταξύ τους μοιάζει με τη σύνταξη / ανάγνωση αρχείων. Αν και πρέπει να προσθέσετε πράγματα όπως σήματα, κοινόχρηστη μνήμη και σηματοφόρους.

Οι διαδικασίες μπορούν χονδρικά να χωριστούν σε δύο τύπους - εργασίες και δαίμονες. Μια εργασία είναι μια διαδικασία που κάνει τη δουλειά της, προσπαθώντας να την ολοκληρώσει το συντομότερο δυνατό και να την ολοκληρώσει. Ο δαίμονας περιμένει τα γεγονότα που πρέπει να επεξεργαστεί, επεξεργάζεται τα γεγονότα που έχουν συμβεί και περιμένει ξανά. συνήθως τελειώνει με τη σειρά μιας άλλης διεργασίας, τις περισσότερες φορές σκοτώνεται από τον χρήστη δίνοντας την εντολή "kill process_number". Υπό αυτή την έννοια, αποδεικνύεται ότι μια διαδραστική εργασία που επεξεργάζεται την είσοδο του χρήστη μοιάζει περισσότερο με δαίμονα παρά με εργασία.

2. Σύστημα αρχείων

Στο παλιό Unix "s, είχαν αντιστοιχιστεί 14 γράμματα στο όνομα, στα νέα αυτός ο περιορισμός αφαιρέθηκε. Στον κατάλογο, εκτός από το όνομα του αρχείου, υπάρχει και το αναγνωριστικό inode του - ένας ακέραιος αριθμός που καθορίζει τον αριθμό του μπλοκ στο οποίο καταγράφονται τα χαρακτηριστικά του αρχείου Μεταξύ αυτών: αριθμός χρήστη - ο κάτοχος του αρχείου· ομάδες αριθμών Αριθμός αναφορών στο αρχείο (δείτε παρακάτω) Ημερομηνία και ώρα δημιουργίας, τελευταία τροποποίηση και τελευταία πρόσβαση στο αρχείο Χαρακτηριστικά πρόσβασης Χαρακτηριστικά πρόσβασης περιέχει τον τύπο του αρχείου (βλ. παρακάτω), τα χαρακτηριστικά της αλλαγής των δικαιωμάτων κατά την εκκίνηση (βλ. παρακάτω) και τα δικαιώματα πρόσβασης σε αυτό για τον ιδιοκτήτη, τον συμμαθητή και άλλους για ανάγνωση, εγγραφή και εκτέλεση. Το δικαίωμα διαγραφής ενός αρχείου καθορίζεται από το δικαίωμα εγγραφής στον υπερκείμενο κατάλογο.

Κάθε αρχείο (αλλά όχι ένας κατάλογος) μπορεί να είναι γνωστό με πολλά ονόματα, αλλά πρέπει να βρίσκονται στο ίδιο διαμέρισμα. Όλοι οι σύνδεσμοι προς το αρχείο είναι ίσοι. το αρχείο διαγράφεται όταν αφαιρεθεί ο τελευταίος σύνδεσμος προς το αρχείο. Εάν το αρχείο είναι ανοιχτό (για ανάγνωση ή/και εγγραφή), τότε ο αριθμός των συνδέσμων σε αυτό αυξάνεται κατά έναν ακόμη. Αυτά είναι πόσα προγράμματα που ανοίγουν ένα προσωρινό αρχείο το διαγράφουν αμέσως, έτσι ώστε αν κολλήσουν, όταν το λειτουργικό σύστημα κλείσει τα αρχεία που ανοίγονται από τη διαδικασία, αυτό το προσωρινό αρχείο θα διαγραφεί από το λειτουργικό σύστημα.

Υπάρχει ένα άλλο ενδιαφέρον χαρακτηριστικό του συστήματος αρχείων: εάν, μετά τη δημιουργία του αρχείου, η εγγραφή σε αυτό δεν ήταν στη σειρά, αλλά σε μεγάλα διαστήματα, τότε δεν εκχωρείται χώρος στο δίσκο για αυτά τα διαστήματα. Έτσι, ο συνολικός όγκος των αρχείων σε ένα διαμέρισμα μπορεί να είναι μεγαλύτερος από τον όγκο του διαμερίσματος και όταν ένα τέτοιο αρχείο διαγράφεται, ελευθερώνεται λιγότερος χώρος από το μέγεθός του.

2.1 Τύποι αρχείων

Τα αρχεία είναι των παρακάτω τύπων:

Τακτικό αρχείο άμεσης πρόσβασης.

κατάλογο (αρχείο που περιέχει ονόματα και αναγνωριστικά άλλων αρχείων).

συμβολικός σύνδεσμος (συμβολοσειρά με το όνομα άλλου αρχείου).

συσκευή μπλοκ (δίσκος ή μαγνητική ταινία).

σειριακή συσκευή (τερματικά, σειριακές και παράλληλες θύρες, οι δίσκοι και οι κασέτες έχουν επίσης διεπαφή σειριακής συσκευής)

με όνομα κανάλι.

Τα ειδικά αρχεία που έχουν σχεδιαστεί για να λειτουργούν με συσκευές βρίσκονται συνήθως στον κατάλογο "/dev". Ακολουθούν μερικά από αυτά (στην υποψηφιότητα του FreeBSD):

tty* - τερματικά, συμπεριλαμβανομένων: ttyv - εικονική κονσόλα.

ttyd - Τερματικό DialIn (συνήθως σειριακή θύρα).

cuaa - Γραμμή DialOut

ttyp - ψευδοτερματικό δικτύου.

tty - το τερματικό με το οποίο σχετίζεται η εργασία.

wd* - σκληροί δίσκοι και οι υποενότητες τους, συμπεριλαμβανομένων: wd - σκληρός δίσκος.

wds - διαμέρισμα αυτού του δίσκου (εδώ ονομάζεται "slice").

wds - τμήμα κατάτμησης.

fd - δισκέτα.

rwd*, rfd* - το ίδιο με wd* και fd*, αλλά με διαδοχική πρόσβαση.

Μερικές φορές απαιτείται ένα πρόγραμμα που εκκινείται από έναν χρήστη να μην έχει τα δικαιώματα του χρήστη που το εκκίνησε, αλλά κάποιου άλλου. Σε αυτήν την περίπτωση, το χαρακτηριστικό αλλαγής δικαιωμάτων ορίζεται στα δικαιώματα του χρήστη - του κατόχου του προγράμματος. (Για παράδειγμα, θα δώσω ένα πρόγραμμα που διαβάζει ένα αρχείο με ερωτήσεις και απαντήσεις και, με βάση αυτά που διάβασε, δοκιμάζει τον μαθητή που ξεκίνησε αυτό το πρόγραμμα. Το πρόγραμμα πρέπει να έχει το δικαίωμα να διαβάσει το αρχείο με απαντήσεις, αλλά ο μαθητής ποιος το εκτόξευσε δεν έπρεπε.) Για παράδειγμα, λειτουργεί το πρόγραμμα passwd, με το οποίο ο χρήστης μπορεί να αλλάξει τον κωδικό πρόσβασής του. Ο χρήστης μπορεί να εκτελέσει το πρόγραμμα passwd, μπορεί να κάνει αλλαγές στη βάση δεδομένων του συστήματος - αλλά ο χρήστης δεν μπορεί.

Σε αντίθεση με το DOS, όπου το πλήρες όνομα αρχείου είναι "drive:pathname" και το RISC-OS, το οποίο είναι "-filesystem-drive:$.path.name" (το οποίο γενικά έχει τα πλεονεκτήματά του), το Unix χρησιμοποιεί διαφανή σημειογραφία με τη μορφή "/ διαδρομή/όνομα». Η ρίζα μετριέται από το διαμέρισμα από το οποίο φορτώθηκε ο πυρήνας του Unix. Εάν χρειάζεται να χρησιμοποιηθεί διαφορετικό διαμέρισμα (και το διαμέρισμα εκκίνησης συνήθως περιέχει μόνο ό,τι χρειάζεται για την εκκίνηση), χρησιμοποιείται η εντολή «mount /dev/partitionfile dir». Ταυτόχρονα, τα αρχεία και οι υποκατάλογοι που ήταν προηγουμένως σε αυτόν τον κατάλογο γίνονται απρόσιτα έως ότου αποσυνδεθεί το διαμέρισμα (φυσικά, όλοι οι κανονικοί άνθρωποι χρησιμοποιούν κενούς καταλόγους για την προσάρτηση κατατμήσεων). Μόνο ο επόπτης έχει το δικαίωμα τοποθέτησης και αποπροσάρτησης.

Κατά την εκκίνηση, κάθε διεργασία μπορεί να αναμένει να έχει τρία ανοιχτά αρχεία για αυτήν, τα οποία γνωρίζει ως τυπική είσοδο stdin στον περιγραφέα 0. τυπική έξοδος stdout στον περιγραφέα 1. και τυπική έξοδος stderr στον περιγραφέα 2. Όταν είναι συνδεδεμένος, όταν ο χρήστης εισάγει όνομα χρήστη και κωδικό πρόσβασης και ξεκινά το κέλυφος, και τα τρία κατευθύνονται στο /dev/tty. αργότερα, οποιοδήποτε από αυτά μπορεί να ανακατευθυνθεί σε οποιοδήποτε αρχείο.

3. Διερμηνέας εντολών

Το Unix έρχεται σχεδόν πάντα με δύο κελύφη, το sh (κέλυφος) και το csh (ένα κέλυφος τύπου C). Εκτός από αυτά, υπάρχουν επίσης bash (Bourne), ksh (Korn) και άλλα. Χωρίς να υπεισέλθω σε λεπτομέρειες, ακολουθούν οι γενικές αρχές:

Όλες οι εντολές εκτός από την αλλαγή του τρέχοντος καταλόγου, τη ρύθμιση των μεταβλητών περιβάλλοντος (περιβάλλον) και τις δηλώσεις δομημένου προγραμματισμού είναι εξωτερικά προγράμματα. Αυτά τα προγράμματα βρίσκονται συνήθως στους καταλόγους /bin και /usr/bin. Προγράμματα διαχείρισης συστήματος - στους καταλόγους /sbin και /usr/sbin.

Η εντολή αποτελείται από το όνομα του προγράμματος που θα ξεκινήσει και τα ορίσματα. Τα ορίσματα διαχωρίζονται από το όνομα της εντολής και μεταξύ τους με κενά και καρτέλες. Ορισμένοι ειδικοί χαρακτήρες ερμηνεύονται από το ίδιο το κέλυφος. Οι ειδικοί χαρακτήρες είναι " " ` ! $ ^ * ? | & ; (τι άλλο;).

Μπορείτε να δώσετε πολλές εντολές στην ίδια γραμμή εντολών. Οι ομάδες μπορούν να χωριστούν. (διαδοχική εκτέλεση εντολών), & (ασύγχρονη ταυτόχρονη εκτέλεση εντολών), | (σύγχρονη εκτέλεση, το stdout της πρώτης εντολής θα τροφοδοτηθεί στο stdin της δεύτερης).

Μπορείτε επίσης να λάβετε τυπική είσοδο από ένα αρχείο συμπεριλαμβάνοντας το "αρχείο" (το αρχείο θα μηδενιστεί) ή το ">>αρχείο" (η καταχώρηση θα γραφτεί στο τέλος του αρχείου) ως ένα από τα ορίσματα.

Εάν χρειάζεστε πληροφορίες για οποιαδήποτε εντολή, εκδώστε την εντολή "man command_name". Αυτό θα εμφανιστεί στην οθόνη μέσω του προγράμματος "περισσότερα" - δείτε πώς να το διαχειριστείτε στο Unix σας με την εντολή "man more".

4. Πυρήνας UNIX

Όπως κάθε άλλο λειτουργικό σύστημα πολλών χρηστών που προστατεύει τους χρήστες ο ένας από τον άλλο και προστατεύει τα δεδομένα συστήματος από οποιονδήποτε μη προνομιούχο χρήστη, το UNIX διαθέτει έναν ασφαλή πυρήνα που διαχειρίζεται τους πόρους του υπολογιστή και παρέχει στους χρήστες ένα βασικό σύνολο υπηρεσιών.

Η ευκολία και η αποτελεσματικότητα των σύγχρονων εκδόσεων του λειτουργικού συστήματος UNIX δεν σημαίνει ότι ολόκληρο το σύστημα, συμπεριλαμβανομένου του πυρήνα, έχει σχεδιαστεί και δομηθεί με τον καλύτερο δυνατό τρόπο. Το λειτουργικό σύστημα UNIX έχει εξελιχθεί με τα χρόνια (είναι το πρώτο λειτουργικό σύστημα στην ιστορία που συνεχίζει να κερδίζει δημοτικότητα σε μια τόσο ώριμη ηλικία - για περισσότερα από 25 χρόνια). Φυσικά, οι δυνατότητες του συστήματος αυξήθηκαν και, όπως συμβαίνει συχνά σε μεγάλα συστήματα, οι ποιοτικές βελτιώσεις στη δομή του λειτουργικού συστήματος UNIX δεν συμβαδίζουν με την ανάπτυξη των δυνατοτήτων του.

Ως αποτέλεσμα, ο πυρήνας των πιο σύγχρονων εμπορικών εκδόσεων του λειτουργικού συστήματος UNIX είναι ένας μεγάλος, όχι πολύ καλά δομημένος μονόλιθος. Για το λόγο αυτό, ο προγραμματισμός σε επίπεδο πυρήνα UNIX συνεχίζει να είναι τέχνη (εκτός από την καθιερωμένη και κατανοητή τεχνολογία για την ανάπτυξη προγραμμάτων οδήγησης εξωτερικών συσκευών). Αυτή η έλλειψη δυνατότητας κατασκευής στην οργάνωση του πυρήνα του UNIX δεν ικανοποιεί πολλούς. Εξ ου και η επιθυμία για μια πλήρη αναπαραγωγή του περιβάλλοντος του UNIX OS με μια εντελώς διαφορετική οργάνωση του συστήματος.

Λόγω της μεγαλύτερης επικράτησης, ο πυρήνας του UNIX System V συζητείται συχνά (μπορεί να θεωρηθεί παραδοσιακός).

4.1 Γενική οργάνωση του παραδοσιακού πυρήνα UNIX

Ένα από τα κύρια επιτεύγματα του λειτουργικού συστήματος UNIX είναι ότι το σύστημα έχει την ιδιότητα της υψηλής κινητικότητας. Το νόημα αυτής της ποιότητας είναι ότι ολόκληρο το λειτουργικό σύστημα, συμπεριλαμβανομένου του πυρήνα του, είναι σχετικά εύκολο να μεταφερθεί σε διαφορετικές πλατφόρμες υλικού. Όλα τα μέρη του συστήματος, εκτός από τον πυρήνα, είναι εντελώς ανεξάρτητα από τη μηχανή. Αυτά τα στοιχεία είναι γραμμένα προσεκτικά σε C και η μεταφορά τους σε μια νέα πλατφόρμα (τουλάχιστον στην κατηγορία υπολογιστών 32-bit) απαιτεί μόνο επαναμεταγλώττιση. πηγαίος κώδικαςστους κωδικούς υπολογιστή προορισμού.

Φυσικά, τα μεγαλύτερα προβλήματα σχετίζονται με τον πυρήνα του συστήματος, ο οποίος αποκρύπτει πλήρως τις ιδιαιτερότητες του υπολογιστή που χρησιμοποιείται, αλλά εξαρτάται από αυτό. Ως αποτέλεσμα ενός στοχαστικού διαχωρισμού των εξαρτημάτων που εξαρτώνται από τη μηχανή και των ανεξάρτητων από μηχανή στοιχείων του πυρήνα (προφανώς, από την άποψη των προγραμματιστών λειτουργικών συστημάτων, αυτό είναι το υψηλότερο επίτευγμα των προγραμματιστών του παραδοσιακού πυρήνα του UNIX OS), έγινε είναι δυνατό να επιτευχθεί ότι το κύριο μέρος του πυρήνα δεν εξαρτάται από τα αρχιτεκτονικά χαρακτηριστικά της πλατφόρμας στόχου, είναι γραμμένο εξ ολοκλήρου σε C και χρειάζεται μόνο επαναμεταγλώττιση για να μεταφερθεί σε μια νέα πλατφόρμα.

Ωστόσο, ένα σχετικά μικρό μέρος του πυρήνα εξαρτάται από τη μηχανή και είναι γραμμένο σε ένα μείγμα C και της γλώσσας συναρμολόγησης του επεξεργαστή στόχου. Κατά τη μεταφορά ενός συστήματος σε μια νέα πλατφόρμα, αυτό το τμήμα του πυρήνα πρέπει να ξαναγραφτεί χρησιμοποιώντας γλώσσα assembly και λαμβάνοντας υπόψη τα ειδικά χαρακτηριστικά του υλικού προορισμού. Τα ειδικά για τη μηχανή μέρη του πυρήνα είναι καλά απομονωμένα από το κύριο μέρος ανεξάρτητο από τη μηχανή, και με καλή κατανόηση του σκοπού κάθε εξαρτήματος που εξαρτάται από τη μηχανή, η επανεγγραφή του ειδικού τμήματος της μηχανής είναι ως επί το πλείστον μια τεχνική εργασία (αν και απαιτεί υψηλή δεξιότητες προγραμματισμού).

Το τμήμα του παραδοσιακού πυρήνα UNIX που αφορά τη μηχανή περιλαμβάνει τα ακόλουθα στοιχεία:

προώθηση και προετοιμασία του συστήματος σε χαμηλό επίπεδο (μέχρι στιγμής εξαρτάται από τα χαρακτηριστικά του υλικού).

πρωτογενής επεξεργασία εσωτερικών και εξωτερικών διακοπών.

διαχείριση μνήμης (στο τμήμα που σχετίζεται με τις δυνατότητες υποστήριξης υλικού εικονικής μνήμης).

εναλλαγή περιβάλλοντος διαδικασίας μεταξύ των λειτουργιών χρήστη και πυρήνα.

στοχεύστε συγκεκριμένα τμήματα της πλατφόρμας των προγραμμάτων οδήγησης συσκευών.

4.2 Κύριες λειτουργίες του πυρήνα

Οι κύριες λειτουργίες του πυρήνα του UNIX OS περιλαμβάνουν τις ακόλουθες:

(α) Αρχικοποίηση συστήματος - λειτουργία εκκίνησης και spin-up. Ο πυρήνας παρέχει ένα εργαλείο εκκίνησης που φορτώνει ολόκληρο τον πυρήνα στη μνήμη του υπολογιστή και ξεκινά τον πυρήνα.

(β) Διαχείριση διεργασιών και νημάτων - η λειτουργία δημιουργίας, τερματισμού και παρακολούθησης υπαρχουσών διεργασιών και νημάτων ("διαδικασίες" που εκτελούνται σε κοινόχρηστη εικονική μνήμη). Επειδή το UNIX είναι ένα λειτουργικό σύστημα πολλαπλών διεργασιών, ο πυρήνας παρέχει την κοινή χρήση του χρόνου του επεξεργαστή (ή των επεξεργαστών σε συστήματα πολλαπλών επεξεργαστών) και άλλων πόρων υπολογιστή μεταξύ των διεργασιών που εκτελούνται για να δώσει την εμφάνιση ότι οι διεργασίες εκτελούνται πραγματικά παράλληλα.

(γ) Η διαχείριση της μνήμης είναι μια συνάρτηση της αντιστοίχισης της σχεδόν απεριόριστης εικονικής μνήμης των διεργασιών στη φυσική RAM του υπολογιστή, η οποία έχει περιορισμένο μέγεθος. Το αντίστοιχο στοιχείο πυρήνα παρέχει κοινή χρήση των ίδιων περιοχών της μνήμης RAM από διάφορες διεργασίες που χρησιμοποιούν εξωτερική μνήμη.

(δ) Διαχείριση αρχείων - λειτουργία που υλοποιεί την αφαίρεση του συστήματος αρχείων - ιεραρχίες καταλόγων και αρχείων. Τα συστήματα αρχείων UNIX υποστηρίζουν διάφορους τύπους αρχείων. Ορισμένα αρχεία ενδέχεται να περιέχουν δεδομένα ASCII, άλλα θα αντιστοιχούν σε εξωτερικές συσκευές. Το σύστημα αρχείων αποθηκεύει αρχεία αντικειμένων, εκτελέσιμα αρχεία και ούτω καθεξής. Τα αρχεία συνήθως αποθηκεύονται σε εξωτερικές συσκευές αποθήκευσης. Η πρόσβαση σε αυτά παρέχεται μέσω του πυρήνα. Υπάρχουν διάφοροι τύποι οργάνωσης συστημάτων αρχείων στον κόσμο του UNIX. Οι σύγχρονες εκδόσεις του λειτουργικού συστήματος UNIX υποστηρίζουν ταυτόχρονα τους περισσότερους τύπους συστημάτων αρχείων.

(ε) Εγκαταστάσεις επικοινωνίας - μια λειτουργία που παρέχει τη δυνατότητα ανταλλαγής δεδομένων μεταξύ διεργασιών που εκτελούνται μέσα στον ίδιο υπολογιστή (IPC - Inter-Process Communications), μεταξύ διεργασιών που εκτελούνται σε διαφορετικούς κόμβους ενός τοπικού ή ευρέος δικτύου δεδομένων, καθώς και μεταξύ διεργασιών και προγράμματα οδήγησης εξωτερικών συσκευών.

(στ) Διασύνδεση προγραμματισμού - μια συνάρτηση που παρέχει πρόσβαση στις δυνατότητες του πυρήνα από την πλευρά των διεργασιών του χρήστη με βάση τον μηχανισμό των κλήσεων συστήματος, διατεταγμένων με τη μορφή βιβλιοθήκης συναρτήσεων.

4.3 Αρχές αλληλεπίδρασης με τον πυρήνα

Σε οποιοδήποτε λειτουργικό σύστημα, υποστηρίζεται κάποιος μηχανισμός που επιτρέπει στα προγράμματα των χρηστών να έχουν πρόσβαση στις υπηρεσίες του πυρήνα του λειτουργικού συστήματος. Στα λειτουργικά συστήματα του πιο διάσημου σοβιετικού υπολογιστή BESM-6, τα αντίστοιχα μέσα επικοινωνίας με τον πυρήνα ονομάζονταν extracodes, στα λειτουργικά συστήματα της IBM ονομάζονταν μακροεντολές συστήματος κ.ο.κ. Στο UNIX, αυτές οι εγκαταστάσεις ονομάζονται κλήσεις συστήματος.

Το όνομα δεν αλλάζει την έννοια, που είναι ότι για την πρόσβαση στις λειτουργίες του πυρήνα του λειτουργικού συστήματος χρησιμοποιούνται "ειδικές οδηγίες" του επεξεργαστή, κατά την εκτέλεση των οποίων εμφανίζεται ένα ειδικό είδος εσωτερικής διακοπής του επεξεργαστή, μεταφέροντάς τον στον λειτουργία πυρήνα (στα περισσότερα σύγχρονα λειτουργικά συστήματα αυτός ο τύπος διακοπής ονομάζεται trap - trap). Κατά την επεξεργασία τέτοιων διακοπών (αποκωδικοποίηση), ο πυρήνας του λειτουργικού συστήματος αναγνωρίζει ότι η διακοπή είναι στην πραγματικότητα ένα αίτημα προς τον πυρήνα από το πρόγραμμα χρήστη για την εκτέλεση ορισμένων ενεργειών, επιλέγει τις παραμέτρους της κλήσης και την επεξεργάζεται και στη συνέχεια εκτελεί μια "επιστροφή από τη διακοπή ", επαναλαμβάνοντας την κανονική εκτέλεση του προγράμματος χρήστη .

Είναι σαφές ότι οι συγκεκριμένοι μηχανισμοί για την αύξηση των εσωτερικών διακοπών που ξεκινούν από το πρόγραμμα χρήστη διαφέρουν σε διαφορετικές αρχιτεκτονικές υλικού. Δεδομένου ότι το λειτουργικό σύστημα UNIX επιδιώκει να παρέχει ένα περιβάλλον στο οποίο τα προγράμματα των χρηστών μπορούν να είναι πλήρως κινητά, απαιτήθηκε ένα πρόσθετο επίπεδο για την απόκρυψη των λεπτομερειών του συγκεκριμένου μηχανισμού για την αύξηση των εσωτερικών διακοπών. Αυτός ο μηχανισμός παρέχεται από τη λεγόμενη βιβλιοθήκη κλήσεων συστήματος.

Για τον χρήστη, η βιβλιοθήκη κλήσεων συστήματος είναι μια κανονική βιβλιοθήκη προ-υλοποιημένων λειτουργιών του συστήματος προγραμματισμού C. Κατά τον προγραμματισμό σε C, η χρήση οποιασδήποτε συνάρτησης από τη βιβλιοθήκη κλήσεων συστήματος δεν διαφέρει από τη χρήση οποιασδήποτε εγγενούς ή βιβλιοθήκης συνάρτησης C. Ωστόσο, μέσα σε οποιαδήποτε λειτουργία μιας συγκεκριμένης βιβλιοθήκης κλήσεων συστήματος περιέχει κώδικα που είναι, γενικά, συγκεκριμένος για μια δεδομένη πλατφόρμα υλικού.

4.4 Αρχές χειρισμού διακοπών

Φυσικά, ο μηχανισμός που χρησιμοποιείται στα λειτουργικά συστήματα για τον χειρισμό εσωτερικών και εξωτερικών διακοπών εξαρτάται κυρίως από το είδος της υποστήριξης υλικού για τον χειρισμό διακοπών που παρέχεται από μια συγκεκριμένη πλατφόρμα υλικού. Ευτυχώς, τώρα (και εδώ και αρκετό καιρό) μεγάλοι κατασκευαστές υπολογιστών έχουν συμφωνήσει de facto στους βασικούς μηχανισμούς διακοπής.

Μιλώντας όχι πολύ με ακρίβεια και συγκεκριμένα, η ουσία του μηχανισμού που υιοθετείται σήμερα είναι ότι κάθε πιθανή διακοπή του επεξεργαστή (είτε πρόκειται για εσωτερική είτε για εξωτερική διακοπή) αντιστοιχεί σε κάποια σταθερή διεύθυνση φυσικής RAM. Τη στιγμή που επιτρέπεται στον επεξεργαστή να διακόψει λόγω της παρουσίας μιας εσωτερικής ή εξωτερικής αίτησης διακοπής, υπάρχει μια μεταφορά υλικού ελέγχου στο φυσικό κελί RAM με την αντίστοιχη διεύθυνση - συνήθως η διεύθυνση αυτού του κελιού ονομάζεται "διακοπή vector" (συνήθως, αιτήματα για εσωτερική διακοπή, δηλαδή αιτήματα που προέρχονται απευθείας από τον επεξεργαστή ικανοποιούνται αμέσως).

Η δουλειά του λειτουργικού συστήματος είναι να τοποθετήσει στα κατάλληλα κελιά της μνήμης RAM τον κώδικα προγράμματος που παρέχει την αρχική επεξεργασία της διακοπής και εκκινεί την πλήρη επεξεργασία.

Βασικά, το λειτουργικό σύστημα UNIX ακολουθεί μια γενική προσέγγιση. Στο διάνυσμα διακοπής που αντιστοιχεί στην εξωτερική διακοπή, δηλ. διακοπή από κάποια εξωτερική συσκευή, περιέχει εντολές που ορίζουν το επίπεδο εκτέλεσης του επεξεργαστή (το επίπεδο εκτέλεσης καθορίζει σε ποιες εξωτερικές διακοπές θα πρέπει να ανταποκριθεί αμέσως ο επεξεργαστής) και μεταπηδούν στο πρόγραμμα χειρισμού πλήρους διακοπής στο κατάλληλο πρόγραμμα οδήγησης συσκευής. Για μια εσωτερική διακοπή (για παράδειγμα, μια διακοπή που ξεκινά από το πρόγραμμα χρήστη όταν λείπει η απαιτούμενη σελίδα εικονικής μνήμης στην κύρια μνήμη, όταν εμφανίζεται μια εξαίρεση στο πρόγραμμα χρήστη, κ.λπ.) ή μια διακοπή χρονοδιακόπτη, το διάνυσμα διακοπής περιέχει ένα μεταβείτε στο αντίστοιχο πρόγραμμα πυρήνα UNIX.

5. Έλεγχος I/O

Παραδοσιακά, το UNIX OS διακρίνει τρεις τύπους οργάνωσης I/O και, κατά συνέπεια, τρεις τύπους προγραμμάτων οδήγησης. Το Block I/O προορίζεται κυρίως για εργασία με καταλόγους και κανονικά αρχεία του συστήματος αρχείων, τα οποία στο βασικό επίπεδο έχουν δομή μπλοκ. Σε επίπεδο χρήστη, είναι πλέον δυνατή η εργασία με αρχεία αντιστοιχίζοντάς τα απευθείας σε τμήματα εικονικής μνήμης. Αυτή η δυνατότητα θεωρείται το ανώτερο επίπεδο του μπλοκ I/O. Στο χαμηλότερο επίπεδο, το block I/O υποστηρίζεται από προγράμματα οδήγησης μπλοκ. Το Block I/O υποστηρίζεται επίσης από προσωρινή αποθήκευση συστήματος.

Η είσοδος/έξοδος χαρακτήρων χρησιμοποιείται για άμεσες (χωρίς buffering) ανταλλαγές μεταξύ του χώρου διευθύνσεων του χρήστη και της αντίστοιχης συσκευής. Η κοινή υποστήριξη πυρήνα σε όλα τα προγράμματα οδήγησης χαρακτήρων είναι να παρέχει λειτουργίες για τη μεταφορά δεδομένων μεταξύ των χώρων διευθύνσεων χρήστη και πυρήνα.

Τέλος, το stream I/O είναι παρόμοιο με το χαρακτήρα I/O, αλλά λόγω της δυνατότητας συμπερίληψης ενδιάμεσων μονάδων επεξεργασίας στη ροή, έχει πολύ μεγαλύτερη ευελιξία.

5.1 Αρχές του συστήματος I/O Buffering

Ο παραδοσιακός τρόπος μείωσης των επιβαρύνσεων κατά την εκτέλεση ανταλλαγών με εξωτερικές συσκευές μνήμης που έχουν δομή μπλοκ είναι η αποθήκευση μπλοκ I/O στην προσωρινή μνήμη. Αυτό σημαίνει ότι οποιοδήποτε μπλοκ μιας εξωτερικής συσκευής μνήμης διαβάζεται πρώτα από όλα σε κάποιο buffer της κύριας περιοχής μνήμης, που ονομάζεται προσωρινή μνήμη συστήματος στο UNIX OS, και από εκεί αντιγράφεται πλήρως ή εν μέρει (ανάλογα με τον τύπο ανταλλαγής) στο τον αντίστοιχο χώρο χρήστη.

Οι αρχές οργάνωσης του παραδοσιακού μηχανισμού προσωρινής αποθήκευσης είναι, πρώτον, ότι ένα αντίγραφο των περιεχομένων του μπλοκ διατηρείται στην προσωρινή μνήμη συστήματος έως ότου καταστεί απαραίτητο να αντικατασταθεί λόγω έλλειψης buffers (μια παραλλαγή του αλγορίθμου LRU χρησιμοποιείται για οργανώσει την πολιτική αντικατάστασης). Δεύτερον, κατά την εγγραφή οποιουδήποτε μπλοκ μιας εξωτερικής συσκευής μνήμης, εκτελείται μόνο μια ενημέρωση (ή σχηματισμός και πλήρωση) της προσωρινής μνήμης προσωρινής αποθήκευσης. Η πραγματική ανταλλαγή με τη συσκευή γίνεται είτε με το σκάσιμο του buffer λόγω της αντικατάστασης των περιεχομένων του είτε με την έκδοση μιας ειδικής κλήσης συστήματος συγχρονισμού (ή fsync), η οποία υποστηρίζεται ειδικά για την βίαιη ώθηση ενημερωμένων προσωρινών προσωρινής μνήμης στην εξωτερική μνήμη.

Αυτό το παραδοσιακό σχήμα προσωρινής αποθήκευσης ήρθε σε σύγκρουση με τα εργαλεία διαχείρισης εικονικής μνήμης που αναπτύχθηκαν στις σύγχρονες εκδόσεις του λειτουργικού συστήματος UNIX, και ειδικότερα με τον μηχανισμό για την αντιστοίχιση αρχείων σε τμήματα εικονικής μνήμης. Επομένως, το System V Release 4 εισήγαγε ένα νέο σχήμα buffering, το οποίο χρησιμοποιείται επί του παρόντος παράλληλα με το παλιό σχήμα.

Η ουσία του νέου σχήματος είναι ότι σε επίπεδο πυρήνα, ο μηχανισμός για την αντιστοίχιση αρχείων σε τμήματα εικονικής μνήμης αναπαράγεται στην πραγματικότητα. Αρχικά, να θυμάστε ότι ο πυρήνας του UNIX τρέχει πράγματι στη δική του εικονική μνήμη. Αυτή η μνήμη έχει μια πιο περίπλοκη, αλλά ουσιαστικά την ίδια δομή με την εικονική μνήμη του χρήστη. Με άλλα λόγια, η εικονική μνήμη του πυρήνα είναι τμήμα-σελίδα και, μαζί με την εικονική μνήμη των διεργασιών του χρήστη, υποστηρίζεται από ένα κοινό υποσύστημα διαχείρισης εικονικής μνήμης. Συνεπάγεται, δεύτερον, ότι σχεδόν κάθε συνάρτηση που παρέχεται από τον πυρήνα στους χρήστες μπορεί να παρέχεται από ορισμένα στοιχεία του πυρήνα σε άλλα στοιχεία του πυρήνα. Ειδικότερα, αυτό ισχύει και για τη δυνατότητα αντιστοίχισης αρχείων σε τμήματα εικονικής μνήμης.

Το νέο σχήμα buffering στον πυρήνα του UNIX βασίζεται κυρίως στο γεγονός ότι δεν μπορείτε να κάνετε σχεδόν τίποτα ιδιαίτερο για να οργανώσετε την buffering. Όταν μία από τις επεξεργασίες χρήστη ανοίγει ένα αρχείο που δεν έχει ανοίξει μέχρι τότε, ο πυρήνας σχηματίζει ένα νέο τμήμα και συνδέει το αρχείο που ανοίγει με αυτό το τμήμα. Μετά από αυτό (ανεξάρτητα από το αν η διαδικασία χρήστη θα λειτουργήσει με το αρχείο στην παραδοσιακή λειτουργία χρησιμοποιώντας τις κλήσεις συστήματος ανάγνωσης και εγγραφής ή θα συνδέσει το αρχείο με το τμήμα εικονικής μνήμης), σε επίπεδο πυρήνα, η εργασία θα γίνει με το τμήμα του πυρήνα στο οποίο είναι προσαρτημένο το αρχείο στους πυρήνες επιπέδου. Η κύρια ιδέα της νέας προσέγγισης είναι ότι εξαλείφεται το χάσμα μεταξύ της διαχείρισης εικονικής μνήμης και της προσωρινής αποθήκευσης σε όλο το σύστημα (αυτό θα έπρεπε να είχε γίνει εδώ και πολύ καιρό, καθώς είναι προφανές ότι η κύρια αποθήκευση στο λειτουργικό σύστημα θα πρέπει να πραγματοποιηθεί από το στοιχείο διαχείρισης εικονικής μνήμης).

Γιατί να μην εγκαταλείψουμε τον παλιό μηχανισμό προσωρινής αποθήκευσης; Το θέμα είναι ότι το νέο σχήμα προϋποθέτει την παρουσία κάποιας συνεχούς διευθυνσιοδότησης μέσα στο αντικείμενο εξωτερικής μνήμης (πρέπει να υπάρχει ένας ισομορφισμός μεταξύ των αντιστοιχισμένων και των αντιστοιχισμένων αντικειμένων). Ωστόσο, κατά την οργάνωση συστημάτων αρχείων, το UNIX OS είναι αρκετά δύσκολο να εκχωρηθεί εξωτερική μνήμη, κάτι που ισχύει ιδιαίτερα για τους i-nodes. Επομένως, ορισμένα μπλοκ εξωτερικής μνήμης πρέπει να θεωρούνται απομονωμένα και γι' αυτά αποδεικνύεται πιο κερδοφόρο να χρησιμοποιούν το παλιό σχήμα προσωρινής αποθήκευσης (αν και μπορεί στις αυριανές εκδόσεις του UNIX να είναι δυνατή η πλήρης μετάβαση σε ένα ενοποιημένο νέο σχήμα).

5. 2 Το σύστημα καλεί για έλεγχο I/O

Για να έχει πρόσβαση (δηλαδή, να μπορεί να εκτελεί επόμενες λειτουργίες I/O σε) οποιοδήποτε είδος αρχείου (συμπεριλαμβανομένων των ειδικών αρχείων), μια διεργασία χρήστη πρέπει πρώτα να συνδεθεί στο αρχείο χρησιμοποιώντας μία από τις κλήσεις συστήματος ανοιχτής, δημιουργίας, επανάληψης ή διοχέτευσης.

Η ακολουθία ενεργειών της ανοιχτής κλήσης συστήματος (όνομα διαδρομής, λειτουργία) είναι η εξής:

αναλύεται η συνοχή των παραμέτρων εισόδου (που σχετίζονται κυρίως με τις σημαίες της λειτουργίας πρόσβασης αρχείου).

να εκχωρήσει ή να εντοπίσει χώρο για έναν περιγραφέα αρχείου στην περιοχή δεδομένων διεργασίας συστήματος (u-area).

Στην περιοχή σε όλο το σύστημα, ο υπάρχων χώρος εκχωρείται ή βρίσκεται για να φιλοξενήσει τον περιγραφέα αρχείου συστήματος (δομή αρχείου).

Το αρχείο του συστήματος αρχείων αναζητείται για ένα αντικείμενο που ονομάζεται "pathname" και δημιουργείται ή βρίσκεται ένας περιγραφέας αρχείου σε επίπεδο συστήματος αρχείων (vnode σε όρους UNIX V System 4).

το vnode είναι συνδεδεμένο με τη δομή του αρχείου που σχηματίστηκε προηγουμένως.

Οι κλήσεις συστήματος open και creat είναι (σχεδόν) λειτουργικά ισοδύναμες. Οποιοδήποτε υπάρχον αρχείο μπορεί να ανοίξει με την κλήση συστήματος δημιουργίας και οποιοδήποτε νέο αρχείο μπορεί να δημιουργηθεί με την ανοιχτή κλήση συστήματος. Ωστόσο, όσον αφορά την κλήση συστήματος δημιουργίας, είναι σημαντικό να τονίσουμε ότι, στη φυσική της χρήση (για τη δημιουργία αρχείου), αυτή η κλήση συστήματος δημιουργεί μια νέα καταχώρηση στον αντίστοιχο κατάλογο (σύμφωνα με το δεδομένο όνομα διαδρομής) και επίσης δημιουργεί και προετοιμάζει κατάλληλα έναν νέο i-node.

Τέλος, η κλήση συστήματος dup (διπλότυπο - αντίγραφο) οδηγεί στο σχηματισμό ενός νέου περιγραφέα για ένα ήδη ανοιχτό αρχείο. Αυτή η κλήση συστήματος ειδικά για το UNIX έχει αποκλειστικό σκοπό την ανακατεύθυνση I/O.) Η εκτέλεσή του συνίσταται στη δημιουργία ενός νέου ανοιχτού περιγραφέα αρχείου στην περιοχή u του χώρου συστήματος της διαδικασίας χρήστη, που περιέχει τον πρόσφατα σχηματισμένο περιγραφέα αρχείου (ακέραιος), αλλά αναφέρεται στην ήδη υπάρχουσα δομή αρχείου σε όλο το σύστημα και περιέχει τα ίδια σημάδια και σημαίες που αντιστοιχούν σε ανοιχτό δείγμα αρχείου.

Άλλες σημαντικές κλήσεις συστήματος είναι οι κλήσεις συστήματος ανάγνωσης και εγγραφής. Η κλήση συστήματος ανάγνωσης εκτελείται ως εξής:

ο περιγραφέας του καθορισμένου αρχείου βρίσκεται στον πίνακα αρχείων σε όλο το σύστημα και καθορίζεται εάν η πρόσβαση από τη δεδομένη διαδικασία στο δεδομένο αρχείο στην καθορισμένη λειτουργία είναι νόμιμη.

για κάποιο (σύντομο) χρονικό διάστημα, έχει ρυθμιστεί ένα κλείδωμα συγχρονισμού στον vnode αυτού του αρχείου (τα περιεχόμενα του περιγραφέα δεν πρέπει να αλλάζουν σε κρίσιμες στιγμές της λειτουργίας ανάγνωσης).

Η πραγματική ανάγνωση εκτελείται χρησιμοποιώντας τον παλιό ή νέο μηχανισμό αποθήκευσης στην προσωρινή μνήμη, μετά τον οποίο τα δεδομένα αντιγράφονται για να γίνουν διαθέσιμα στο χώρο διευθύνσεων του χρήστη.

Η λειτουργία εγγραφής λειτουργεί με τον ίδιο τρόπο, αλλά αλλάζει τα περιεχόμενα του buffer pool buffer.

Η κλήση συστήματος κλεισίματος αναγκάζει το πρόγραμμα οδήγησης να τερματίσει τη σύνδεση με την αντίστοιχη διαδικασία χρήστη και (στην περίπτωση του πιο πρόσφατου κλεισίματος συσκευής) ορίζει τη σημαία "χωρίς οδηγό" σε όλο το σύστημα.

Τέλος, μια άλλη «ειδική» κλήση συστήματος ioctl υποστηρίζεται για ειδικά αρχεία. Αυτή είναι η μόνη κλήση συστήματος που παρέχεται για ειδικά αρχεία και δεν παρέχεται για άλλα είδη αρχείων. Στην πραγματικότητα, η κλήση συστήματος ioctl σάς επιτρέπει να επεκτείνετε αυθαίρετα τη διεπαφή οποιουδήποτε προγράμματος οδήγησης. Οι παράμετροι ioctl περιλαμβάνουν έναν κωδικό λειτουργίας και έναν δείκτη σε κάποια περιοχή της μνήμης διεργασιών χρήστη. Όλη η ερμηνεία του opcode και των σχετικών συγκεκριμένων παραμέτρων γίνεται από το πρόγραμμα οδήγησης.

Φυσικά, δεδομένου ότι τα προγράμματα οδήγησης έχουν σχεδιαστεί κυρίως για τον έλεγχο εξωτερικών συσκευών, ο κωδικός προγράμματος οδήγησης πρέπει να περιέχει τα κατάλληλα μέσα για τον χειρισμό διακοπών από τη συσκευή. Η κλήση προς τον χειριστή μεμονωμένων διακοπών στο πρόγραμμα οδήγησης προέρχεται από τον πυρήνα του λειτουργικού συστήματος. Ομοίως, ένα πρόγραμμα οδήγησης μπορεί να δηλώσει μια είσοδο "timeout" στην οποία ο πυρήνας έχει πρόσβαση όταν παρέλθει ο χρόνος που είχε προηγουμένως διαταχθεί από το πρόγραμμα οδήγησης (αυτός ο έλεγχος χρονισμού είναι απαραίτητος κατά τη διαχείριση λιγότερο έξυπνων συσκευών).

Το γενικό σχήμα της οργάνωσης διεπαφής των προγραμμάτων οδήγησης φαίνεται στο Σχήμα 3.5. Όπως δείχνει αυτό το σχήμα, όσον αφορά τις διεπαφές και τη διαχείριση σε όλο το σύστημα, υπάρχουν δύο τύποι προγραμμάτων οδήγησης - χαρακτήρας και μπλοκ. Από την άποψη της εσωτερικής οργάνωσης, ξεχωρίζει ένας άλλος τύπος οδηγών - οδηγοί ροής. Ωστόσο, όσον αφορά την εξωτερική διεπαφή τους, τα προγράμματα οδήγησης ροής δεν διαφέρουν από τα προγράμματα οδήγησης χαρακτήρων.

6. Διεπαφές και σημεία εισόδου προγραμμάτων οδήγησης

6.1 Αποκλεισμός προγραμμάτων οδήγησης

Τα προγράμματα οδήγησης μπλοκ έχουν σχεδιαστεί για να εξυπηρετούν εξωτερικές συσκευές με δομή μπλοκ (μαγνητικούς δίσκους, ταινίες, κ.λπ.) και διαφέρουν από άλλα στο ότι αναπτύσσονται και εκτελούνται με χρήση προσωρινής αποθήκευσης συστήματος. Με άλλα λόγια, τέτοια προγράμματα οδήγησης λειτουργούν πάντα μέσω της ομάδας προσωρινής αποθήκευσης συστήματος. Όπως μπορείτε να δείτε στην Εικόνα 3.5, οποιαδήποτε πρόσβαση ανάγνωσης ή εγγραφής σε ένα πρόγραμμα οδήγησης μπλοκ περνά πάντα από προεπεξεργασία, η οποία συνίσταται στην προσπάθεια εύρεσης ενός αντιγράφου του επιθυμητού μπλοκ στο buffer pool.

Εάν ένα αντίγραφο του απαιτούμενου μπλοκ δεν βρίσκεται στο χώρο αποθήκευσης buffer ή εάν για κάποιο λόγο είναι απαραίτητο να αντικατασταθούν τα περιεχόμενα κάποιας ενημερωμένης προσωρινής μνήμης, ο πυρήνας UNIX καλεί τη διαδικασία στρατηγικής του αντίστοιχου προγράμματος οδήγησης μπλοκ. Η στρατηγική παρέχει μια τυπική διεπαφή μεταξύ του πυρήνα και του προγράμματος οδήγησης. Με τη χρήση υπορουτίνων βιβλιοθήκης που προορίζονται για εγγραφή προγραμμάτων οδήγησης, η διαδικασία στρατηγικής μπορεί να οργανώσει ουρές ανταλλαγών με τη συσκευή, για παράδειγμα, προκειμένου να βελτιστοποιήσει την κίνηση των μαγνητικών κεφαλών στο δίσκο. Όλες οι ανταλλαγές που εκτελούνται από το πρόγραμμα οδήγησης μπλοκ πραγματοποιούνται με μνήμη buffer. Η επανεγγραφή των απαραίτητων πληροφοριών στη μνήμη της αντίστοιχης διαδικασίας χρήστη πραγματοποιείται από προγράμματα πυρήνα που διαχειρίζονται buffers

6.2 Προγράμματα οδήγησης χαρακτήρων

Τα προγράμματα οδήγησης χαρακτήρων έχουν σχεδιαστεί κυρίως για να εξυπηρετούν συσκευές που επικοινωνούν συμβολοσειρές χαρακτήρων χαρακτήρα προς χαρακτήρα ή μεταβλητού μήκους. Χαρακτηριστικό παράδειγμα συσκευής χαρακτήρων είναι ένας απλός εκτυπωτής που δέχεται έναν χαρακτήρα ανά ανταλλαγή.

Τα προγράμματα οδήγησης χαρακτήρων δεν χρησιμοποιούν προσωρινή αποθήκευση συστήματος. Αντιγράφουν απευθείας δεδομένα από τη μνήμη διεργασίας χρήστη για λειτουργίες εγγραφής ή στη μνήμη διεργασίας χρήστη για λειτουργίες ανάγνωσης, χρησιμοποιώντας τα δικά τους buffer.

Θα πρέπει να σημειωθεί ότι είναι δυνατή η παροχή μιας διεπαφής χαρακτήρων για μια συσκευή μπλοκ. Σε αυτήν την περίπτωση, το πρόγραμμα οδήγησης μπλοκ χρησιμοποιεί τα πρόσθετα χαρακτηριστικά της διαδικασίας στρατηγικής, η οποία επιτρέπει την πραγματοποίηση της ανταλλαγής χωρίς τη χρήση προσωρινής αποθήκευσης συστήματος. Για ένα πρόγραμμα οδήγησης που διαθέτει διεπαφές μπλοκ και χαρακτήρων, δημιουργούνται δύο ειδικά αρχεία στο σύστημα αρχείων, το μπλοκ και ο χαρακτήρας. Με κάθε κλήση, ο οδηγός λαμβάνει πληροφορίες σχετικά με τη λειτουργία στην οποία χρησιμοποιείται.

6. 3 προγράμματα οδήγησης ροής

Ο κύριος σκοπός του μηχανισμού ροών είναι να αυξήσει το επίπεδο αρθρωτής και ευελιξίας των προγραμμάτων οδήγησης με πολύπλοκη εσωτερική λογική (αυτό ισχύει κυρίως για προγράμματα οδήγησης που εφαρμόζουν προηγμένα πρωτόκολλα δικτύου). Η ιδιαιτερότητα τέτοιων προγραμμάτων οδήγησης είναι ότι το μεγαλύτερο μέρος του κώδικα προγράμματος δεν εξαρτάται από τις δυνατότητες της συσκευής υλικού. Επιπλέον, είναι συχνά επωφελής ο συνδυασμός τμημάτων του κώδικα προγράμματος με διαφορετικούς τρόπους.

Όλα αυτά οδήγησαν στην εμφάνιση μιας αρχιτεκτονικής ροής προγραμμάτων οδήγησης, τα οποία είναι ένας αμφίδρομος αγωγός μονάδων επεξεργασίας. Στην αρχή του αγωγού (πιο κοντά στη διαδικασία χρήστη) βρίσκεται η κεφαλίδα ροής, στην οποία έχει πρόσβαση κυρίως ο χρήστης. Στο τέλος του αγωγού (πιο κοντά στη συσκευή) βρίσκεται το κανονικό πρόγραμμα οδήγησης συσκευής. Ένας αυθαίρετος αριθμός μονάδων επεξεργασίας μπορεί να βρίσκεται στο κενό, καθεμία από τις οποίες έχει σχεδιαστεί σύμφωνα με την απαιτούμενη διεπαφή ροής.

7. Εντολές και βοηθητικά προγράμματα

Όταν εργάζονται διαδραστικά σε περιβάλλον UNIX OS, χρησιμοποιούν διάφορα βοηθητικά προγράμματα ή εξωτερικές εντολές της γλώσσας του κελύφους. Πολλά από αυτά τα βοηθητικά προγράμματα είναι τόσο περίπλοκα όσο το ίδιο το κέλυφος (και, παρεμπιπτόντως, το ίδιο το κέλυφος είναι ένα από τα βοηθητικά προγράμματα που μπορούν να κληθούν από τη γραμμή εντολών).

7. 1 Οργάνωση ομάδας σε UNIX OS

Για να δημιουργήσετε μια νέα εντολή, πρέπει απλώς να ακολουθήσετε τους κανόνες του προγραμματισμού C. Κάθε καλά διαμορφωμένο πρόγραμμα C ξεκινά την εκτέλεσή του με την κύρια συνάρτηση. Αυτή η συνάρτηση "ημι-συστήματος" έχει μια τυπική διεπαφή, η οποία είναι η βάση για την οργάνωση εντολών που μπορούν να κληθούν στο περιβάλλον του κελύφους. Οι εξωτερικές εντολές εκτελούνται από τον διερμηνέα φλοιού χρησιμοποιώντας μια δέσμη κλήσεων συστήματος διχάλας και μία από τις επιλογές exec. Οι παράμετροι της κλήσης συστήματος exec περιλαμβάνουν ένα σύνολο συμβολοσειρών κειμένου. Αυτό το σύνολο συμβολοσειρών κειμένου μεταβιβάζεται ως είσοδος στην κύρια συνάρτηση του προγράμματος που εκτελείται.

Πιο συγκεκριμένα, η κύρια συνάρτηση λαμβάνει δύο παραμέτρους - argc (ο αριθμός των συμβολοσειρών κειμένου που πρέπει να περάσουν) και argv (ένας δείκτης σε μια σειρά δεικτών σε συμβολοσειρές κειμένου). Ένα πρόγραμμα που ισχυρίζεται ότι το χρησιμοποιεί ως εντολή φλοιού πρέπει να έχει μια καλά καθορισμένη εξωτερική διεπαφή(οι παράμετροι εισάγονται συνήθως από το τερματικό) και πρέπει να ελέγχει και να αναλύει σωστά τις παραμέτρους εισόδου.

Επίσης, για να συμμορφώνεται με το στυλ φλοιού, ένα τέτοιο πρόγραμμα δεν θα πρέπει να παρακάμπτει από μόνο του τα αρχεία που αντιστοιχούν σε τυπική είσοδο, τυπική έξοδο και τυπικό σφάλμα. Η εντολή μπορεί στη συνέχεια να ανακατευθυνθεί I/O με τον συνήθη τρόπο και μπορεί να συμπεριληφθεί σε αγωγούς.

7.2 Ανακατεύθυνση I/O και σωληνώσεις

Όπως μπορείτε να δείτε από την τελευταία πρόταση της προηγούμενης παραγράφου, δεν χρειάζεται να κάνετε κάτι ιδιαίτερο για να ενεργοποιήσετε την ανακατεύθυνση I/O και τη διοχέτευση κατά τον προγραμματισμό εντολών. Αρκεί απλώς να αφήσετε ανέγγιχτους τους τρεις αρχικούς περιγραφείς αρχείων και να εργαστείτε σωστά με αυτά τα αρχεία, δηλαδή να εξάγετε ένα αρχείο με περιγραφικό stdout, να εισαγάγετε δεδομένα από το αρχείο stdin και να εκτυπώσετε μηνύματα σφάλματος στο αρχείο stderror.

7. 3 Ενσωματωμένες εντολές, βιβλιοθήκη και χρήστη

Οι ενσωματωμένες εντολές αποτελούν μέρος του κώδικα προγράμματος του κελύφους. Εκτελούνται ως υπορουτίνες διερμηνέα και δεν μπορούν να αντικατασταθούν ή να επαναπροσδιοριστούν. Η σύνταξη και η σημασιολογία των ενσωματωμένων εντολών ορίζονται στην αντίστοιχη γλώσσα εντολών.

Οι εντολές της βιβλιοθήκης αποτελούν μέρος του λογισμικού συστήματος. Αυτό είναι ένα σύνολο εκτελέσιμων προγραμμάτων (βοηθητικά προγράμματα) που παρέχονται με το λειτουργικό σύστημα. Τα περισσότερα από αυτά τα προγράμματα (όπως vi, emacs, grep, find, make κ.λπ.) είναι εξαιρετικά χρήσιμα στην πράξη, αλλά η συζήτησή τους ξεφεύγει από το αντικείμενο αυτού του μαθήματος (υπάρχουν ξεχωριστά χοντρά βιβλία).

Μια εντολή χρήστη είναι κάθε εκτελέσιμο πρόγραμμα που οργανώνεται σύμφωνα με τις απαιτήσεις που ορίζονται στο. Έτσι, οποιοσδήποτε χρήστης του UNIX OS μπορεί να επεκτείνει το ρεπερτόριο των εξωτερικών εντολών της γλώσσας εντολών του επ' αόριστον (για παράδειγμα, μπορείτε να γράψετε τον δικό σας διερμηνέα εντολών).

7.4 Προγραμματισμός γλώσσας εντολών

Οποιαδήποτε από τις αναφερόμενες παραλλαγές της γλώσσας κελύφους μπορεί, καταρχήν, να χρησιμοποιηθεί ως γλώσσα προγραμματισμού. Μεταξύ των χρηστών UNIX, υπάρχουν πολλοί άνθρωποι που γράφουν αρκετά σοβαρά προγράμματα στο κέλυφος. Για προγραμματισμό, είναι καλύτερο να χρησιμοποιείτε γλώσσες προγραμματισμού (C, C++, Pascal, κ.λπ.) αντί για γλώσσες εντολών.


8. Εργαλεία GUI

Αν και πολλοί επαγγελματίες προγραμματιστές UNIX σήμερα προτιμούν να χρησιμοποιούν παραδοσιακά μέσα αλληλεπίδρασης με το σύστημα που βασίζονται σε γραμμή, η ευρεία χρήση σχετικά φθηνών, έγχρωμων τερματικών γραφικών υψηλής ανάλυσης έχει οδηγήσει στο γεγονός ότι όλες οι σύγχρονες εκδόσεις του λειτουργικού συστήματος UNIX υποστηρίζουν γραφικές διεπαφές χρήστη με το σύστημα και παρέχονται στους χρήστες εργαλεία για την ανάπτυξη γραφικών διεπαφών με τα προγράμματα που αναπτύσσουν. Από τη σκοπιά του τελικού χρήστη, τα εργαλεία γραφικής διεπαφής που υποστηρίζονται σε διάφορες εκδόσεις του λειτουργικού συστήματος UNIX και σε άλλα συστήματα (για παράδειγμα, MS Windows ή Windows NT), είναι περίπου το ίδιο στυλ.

Πρώτον, σε όλες τις περιπτώσεις, υποστηρίζεται ένας τρόπος λειτουργίας πολλαπλών παραθύρων με οθόνη τερματικού. Ανά πάσα στιγμή, ο χρήστης μπορεί να δημιουργήσει ένα νέο παράθυρο και να το συσχετίσει με το επιθυμητό πρόγραμμα που λειτουργεί με αυτό το παράθυρο όπως με ένα ξεχωριστό τερματικό. Τα Windows μπορούν να μετακινηθούν, να αλλάξουν μέγεθος, να κλείσουν προσωρινά κ.λπ.

Δεύτερον, σε όλες τις σύγχρονες ποικιλίες της γραφικής διεπαφής, υποστηρίζεται ο έλεγχος του ποντικιού. Στην περίπτωση του UNIX, συχνά αποδεικνύεται ότι το κανονικό πληκτρολόγιο τερματικού χρησιμοποιείται μόνο κατά τη μετάβαση στην παραδοσιακή διεπαφή γραμμής (αν και στις περισσότερες περιπτώσεις τουλάχιστον ένα παράθυρο τερματικού εκτελεί ένα από τα κελύφη της οικογένειας κελύφους).

Τρίτον, μια τέτοια διάδοση του στυλ εργασίας "ποντικιού" είναι δυνατή μέσω της χρήσης εργαλείων διεπαφής που βασίζονται σε εικονογράμματα (εικονίδια) και μενού. Στις περισσότερες περιπτώσεις, ένα πρόγραμμα που εκτελείται σε ένα παράθυρο προτρέπει τον χρήστη να επιλέξει μια λειτουργία που εκτελεί είτε εμφανίζοντας ένα σύνολο συμβολικών εικόνων πιθανών λειτουργιών (εικονιδίων) στο παράθυρο είτε προσφέροντας ένα μενού πολλαπλών επιπέδων. Σε κάθε περίπτωση, για περαιτέρω επιλογή, αρκεί να ελέγξετε τον κέρσορα του αντίστοιχου παραθύρου με το ποντίκι.

Τέλος, οι σύγχρονες γραφικές διεπαφές είναι «φιλικές προς το χρήστη», παρέχοντας τη δυνατότητα άμεσης λήψης διαδραστικής βοήθειας για κάθε περίσταση. (Ίσως θα ήταν πιο ακριβές να πούμε ότι το καλό στυλ προγραμματισμού GUI είναι αυτό που παρέχει στην πραγματικότητα τέτοιες συμβουλές.)

Μετά την απαρίθμηση όλων αυτών των κοινών χαρακτηριστικών των σύγχρονων εργαλείων GUI, μπορεί να προκύψει ένα φυσικό ερώτημα: Εάν υπάρχει μια τέτοια ομοιομορφία στον τομέα των γραφικών διεπαφών, τι ιδιαίτερο έχουν οι διεπαφές γραφικών στο περιβάλλον UNIX; Η απάντηση είναι αρκετά απλή. Ναι, ο τελικός χρήστης πραγματικά σε οποιοδήποτε σημερινό σύστημα ασχολείται με περίπου το ίδιο σύνολο χαρακτηριστικών διεπαφής, αλλά σε διαφορετικά συστήματα αυτά τα χαρακτηριστικά επιτυγχάνονται με διαφορετικούς τρόπους. Ως συνήθως, το πλεονέκτημα του UNIX είναι η διαθεσιμότητα τυποποιημένων τεχνολογιών που σας επιτρέπουν να δημιουργείτε εφαρμογές για φορητές συσκευές με γραφικές διεπαφές.

8. Αρχές προστασίας

Δεδομένου ότι το λειτουργικό σύστημα UNIX από την αρχή του συλλήφθηκε ως ένα λειτουργικό σύστημα πολλών χρηστών, το πρόβλημα της εξουσιοδότησης της πρόσβασης διαφόρων χρηστών στα αρχεία του συστήματος αρχείων ήταν πάντα σχετικό σε αυτό. Η εξουσιοδότηση πρόσβασης αναφέρεται σε ενέργειες συστήματος που επιτρέπουν ή αρνούνται την πρόσβαση ενός συγκεκριμένου χρήστη σε ένα δεδομένο αρχείο, ανάλογα με τα δικαιώματα πρόσβασης του χρήστη και τους περιορισμούς πρόσβασης που έχουν οριστεί για το αρχείο. Το σύστημα εξουσιοδότησης πρόσβασης που χρησιμοποιείται στο λειτουργικό σύστημα UNIX είναι τόσο απλό και βολικό και ταυτόχρονα τόσο ισχυρό που έχει γίνει το de facto πρότυπο των σύγχρονων λειτουργικών συστημάτων (τα οποία δεν προσποιούνται ότι είναι συστήματα με προστασία πολλαπλών επιπέδων).

8.1 Αναγνωριστικά χρηστών και ομάδες χρηστών

Κάθε διεργασία που εκτελείται στο UNIX σχετίζεται με ένα πραγματικό αναγνωριστικό χρήστη, ένα αποτελεσματικό αναγνωριστικό χρήστη και ένα αποθηκευμένο αναγνωριστικό χρήστη. Όλα αυτά τα αναγνωριστικά ορίζονται χρησιμοποιώντας την κλήση συστήματος setuid, η οποία μπορεί να εκτελεστεί μόνο σε λειτουργία υπερχρήστη. Ομοίως, κάθε διεργασία έχει τρία αναγνωριστικά ομάδας χρηστών που σχετίζονται με αυτήν - πραγματικό αναγνωριστικό ομάδας, αποτελεσματικό αναγνωριστικό ομάδας και αποθηκευμένο αναγνωριστικό ομάδας. Αυτά τα αναγνωριστικά ορίζονται από την προνομιακή κλήση συστήματος setgid.

Όταν ένας χρήστης συνδέεται στο σύστημα, το πρόγραμμα σύνδεσης ελέγχει ότι ο χρήστης είναι συνδεδεμένος και γνωρίζει τον σωστό κωδικό πρόσβασης (αν έχει οριστεί), δημιουργεί μια νέα διαδικασία και ξεκινά το κέλυφος που απαιτείται για αυτόν τον χρήστη σε αυτό. Αλλά πριν το κάνετε αυτό, το login ορίζει τα αναγνωριστικά χρήστη και ομάδας για τη διαδικασία που δημιουργήθηκε πρόσφατα χρησιμοποιώντας τις πληροφορίες που είναι αποθηκευμένες στα αρχεία /etc/passwd και /etc/group. Μόλις συσχετιστούν τα αναγνωριστικά χρήστη και ομάδας με μια διεργασία, ισχύουν περιορισμοί πρόσβασης στα αρχεία σε αυτήν τη διαδικασία. Μια διεργασία μπορεί να έχει πρόσβαση ή να εκτελέσει ένα αρχείο (αν το αρχείο περιέχει ένα εκτελέσιμο πρόγραμμα) μόνο εάν οι περιορισμοί πρόσβασης του αρχείου της το επιτρέπουν. Τα αναγνωριστικά που σχετίζονται με μια διεργασία μεταβιβάζονται στις διεργασίες που δημιουργεί, υπό τους ίδιους περιορισμούς. Ωστόσο, σε ορισμένες περιπτώσεις μια διεργασία μπορεί να αλλάξει τα δικαιώματά της χρησιμοποιώντας τις κλήσεις συστήματος setuid και setgid και μερικές φορές το σύστημα μπορεί να αλλάξει αυτόματα τα δικαιώματα μιας διεργασίας.

Σκεφτείτε, για παράδειγμα, την ακόλουθη κατάσταση. Το αρχείο /etc/passwd δεν είναι εγγράψιμο από κανέναν εκτός από τον υπερχρήστη (ο υπερχρήστης μπορεί να γράψει σε οποιοδήποτε αρχείο). Αυτό το αρχείο, μεταξύ άλλων, περιέχει κωδικούς πρόσβασης χρήστη και κάθε χρήστης επιτρέπεται να αλλάξει τον κωδικό πρόσβασής του. Διαθέσιμος ειδικό πρόγραμμα/bin/passwd, που αλλάζει τους κωδικούς πρόσβασης. Ωστόσο, ο χρήστης δεν μπορεί να το κάνει αυτό ακόμη και με αυτό το πρόγραμμα, επειδή δεν επιτρέπεται η εγγραφή στο αρχείο /etc/passwd. Σε ένα σύστημα UNIX, αυτό το πρόβλημα επιλύεται ως εξής. Ένα εκτελέσιμο αρχείο μπορεί να ορίζει ότι όταν εκτελείται, θα πρέπει να ορίζονται αναγνωριστικά χρήστη ή/και ομάδας. Εάν ένας χρήστης ζητήσει την εκτέλεση ενός τέτοιου προγράμματος (χρησιμοποιώντας την κλήση συστήματος exec), τότε το αναγνωριστικό χρήστη της αντίστοιχης διεργασίας ορίζεται στο αναγνωριστικό του κατόχου του εκτελέσιμου αρχείου ή/και στο αναγνωριστικό ομάδας αυτού του κατόχου. Συγκεκριμένα, όταν εκτελείται το πρόγραμμα /bin/passwd, η διαδικασία θα έχει ένα αναγνωριστικό root και το πρόγραμμα θα μπορεί να γράψει στο αρχείο /etc/passwd.

Τόσο για το User ID όσο και για το ID ομάδας, το πραγματικό ID είναι το αληθινό ID και το αποτελεσματικό ID είναι το ID της τρέχουσας εκτέλεσης. Εάν το τρέχον αναγνωριστικό χρήστη ταιριάζει με τον υπερχρήστη, τότε αυτό το αναγνωριστικό και το αναγνωριστικό ομάδας μπορούν να επαναφερθούν σε οποιαδήποτε τιμή με τις κλήσεις συστήματος setuid και setgid. Εάν το τρέχον αναγνωριστικό χρήστη είναι διαφορετικό από το αναγνωριστικό υπερχρήστη, τότε η εκτέλεση των κλήσεων συστήματος setuid και setgid προκαλεί την αντικατάσταση του τρέχοντος αναγνωριστικού με το αληθινό αναγνωριστικό (χρήστης ή ομάδα, αντίστοιχα).

8.2 Προστασία αρχείων

Όπως συνηθίζεται σε ένα λειτουργικό σύστημα πολλών χρηστών, το UNIX διατηρεί έναν ενιαίο μηχανισμό για τον έλεγχο της πρόσβασης σε αρχεία και καταλόγους συστημάτων αρχείων. Οποιαδήποτε διεργασία μπορεί να έχει πρόσβαση σε ένα συγκεκριμένο αρχείο εάν και μόνο εάν τα δικαιώματα πρόσβασης που περιγράφονται με το αρχείο αντιστοιχούν στις δυνατότητες αυτής της διαδικασίας.

Η προστασία αρχείων από μη εξουσιοδοτημένη πρόσβαση στο UNIX βασίζεται σε τρία γεγονότα. Πρώτον, κάθε διαδικασία που δημιουργεί ένα αρχείο (ή κατάλογο) συσχετίζεται με κάποιο μοναδικό αναγνωριστικό χρήστη (UID - User Identifier) ​​στο σύστημα, το οποίο μπορεί περαιτέρω να αντιμετωπιστεί ως το αναγνωριστικό του κατόχου του αρχείου που δημιουργήθηκε πρόσφατα. Δεύτερον, κάθε διαδικασία που προσπαθεί να αποκτήσει πρόσβαση σε ένα αρχείο έχει ένα ζεύγος αναγνωριστικών που σχετίζονται με αυτό, τον τρέχοντα χρήστη και τα αναγνωριστικά ομάδας. Τρίτον, κάθε αρχείο αντιστοιχεί μοναδικά στον περιγραφέα του - i-node.

Κάθε i-node που χρησιμοποιείται στο σύστημα αρχείων αντιστοιχεί πάντα μοναδικά σε ένα και μόνο ένα αρχείο. Ο κόμβος I περιέχει πολλές διαφορετικές πληροφορίες (οι περισσότερες από αυτές είναι διαθέσιμες στους χρήστες μέσω των κλήσεων συστήματος stat και fstat), και μεταξύ αυτών των πληροφοριών υπάρχει ένα τμήμα που επιτρέπει στο σύστημα αρχείων να αξιολογήσει τα δικαιώματα πρόσβασης μιας δεδομένης διαδικασίας σε ένα δεδομένο αρχείο στην απαιτούμενη λειτουργία.

Οι γενικές αρχές προστασίας είναι οι ίδιες για όλες τις υπάρχουσες παραλλαγές του συστήματος: Οι πληροφορίες i-node περιλαμβάνουν το UID και το GID του τρέχοντος κατόχου του αρχείου (αμέσως μετά τη δημιουργία του αρχείου, τα αναγνωριστικά του τρέχοντος κατόχου του ορίζονται σε το αντίστοιχο τρέχον αναγνωριστικό της διαδικασίας δημιουργού, αλλά μπορεί αργότερα να αλλάξει με τις κλήσεις συστήματος chown και chgrp) . Επιπλέον, μια κλίμακα αποθηκεύεται στο i-node του αρχείου, η οποία υποδεικνύει τι μπορεί να κάνει ο χρήστης - ο κάτοχός του με το αρχείο, τι μπορούν να κάνουν με το αρχείο οι χρήστες που ανήκουν στην ίδια ομάδα χρηστών με τον κάτοχο και τι άλλοι μπορεί να κάνει με τους χρήστες αρχείων. Οι μικρές λεπτομέρειες εφαρμογής σε διαφορετικές εκδόσεις του συστήματος διαφέρουν.

8.3 Μελλοντικά λειτουργικά συστήματα που υποστηρίζουν το περιβάλλον UNIX OS

Ένας μικροπυρήνας είναι το μικρότερο βασικό τμήμα ενός λειτουργικού συστήματος, που χρησιμεύει ως βάση για αρθρωτές και φορητές επεκτάσεις. Φαίνεται ότι τα περισσότερα λειτουργικά συστήματα επόμενης γενιάς θα έχουν μικροπυρήνες. Ωστόσο, υπάρχουν πολλές διαφορετικές απόψεις σχετικά με τον τρόπο οργάνωσης των υπηρεσιών του λειτουργικού συστήματος σε σχέση με τον μικροπυρήνα: πώς να σχεδιάζετε προγράμματα οδήγησης συσκευών ώστε να είναι όσο το δυνατόν πιο αποτελεσματικά, αλλά να διατηρείτε τις λειτουργίες του προγράμματος οδήγησης όσο το δυνατόν πιο ανεξάρτητες από το υλικό. εάν οι λειτουργίες εκτός πυρήνα πρέπει να εκτελούνται στο χώρο του πυρήνα ή στο χώρο χρήστη. αν αξίζει να κρατήσουμε τα προγράμματα των υπαρχόντων υποσυστημάτων (για παράδειγμα, UNIX) ή είναι καλύτερα να τα πετάξουμε όλα και να ξεκινήσουμε από την αρχή.

Η έννοια του μικροπυρήνα εισήχθη σε ευρεία χρήση από το Next, του οποίου το λειτουργικό σύστημα χρησιμοποιούσε τον μικροπυρήνα Mach. Ο μικρός, προνομιακός πυρήνας αυτού του λειτουργικού συστήματος, γύρω από τον οποίο έτρεχαν τα υποσυστήματα σε λειτουργία χρήστη, θεωρητικά υποτίθεται ότι παρέχει πρωτοφανή ευελιξία και σπονδυλωτότητα του συστήματος. Αλλά στην πράξη, αυτό το πλεονέκτημα αποκλείστηκε κάπως από την παρουσία ενός μονολιθικού διακομιστή που υλοποιεί το λειτουργικό σύστημα UNIX BSD 4.3, ο οποίος επέλεξε να αναδιπλώσει τον μικροπυρήνα Mach. Ωστόσο, η εξάρτηση από το Mach κατέστησε δυνατή τη συμπερίληψη εργαλείων ανταλλαγής μηνυμάτων και ορισμένων αντικειμενοστρεφών λειτουργιών υπηρεσίας στο σύστημα, βάσει των οποίων ήταν δυνατή η δημιουργία μιας κομψής διεπαφής τελικού χρήστη με γραφικά εργαλεία για διαμόρφωση δικτύου, διαχείριση συστήματος και ανάπτυξη λογισμικού.

Το επόμενο λειτουργικό σύστημα μικροπυρήνα ήταν τα Windows NT της Microsoft, όπου το βασικό πλεονέκτημα της χρήσης ενός μικροπυρήνα ήταν ότι δεν ήταν μόνο η σπονδυλωτή αλλά και η φορητότητα. (Σημειώστε ότι δεν υπάρχει συναίνεση σχετικά με το εάν το NT θα έπρεπε πράγματι να θεωρείται λειτουργικό σύστημα μικροπυρήνα.) Το NT σχεδιάστηκε για να χρησιμοποιείται σε συστήματα μεμονωμένων και πολλαπλών επεξεργαστών που βασίζονται σε Επεξεργαστές Intel, Mips και Alpha (και αυτά που ακολουθούν). Εφόσον τα προγράμματα που γράφτηκαν για συστήματα συμβατά με DOS, Windows, OS/2 και Posix έπρεπε να εκτελούνται σε NT, η Microsoft χρησιμοποίησε την εγγενή αρθρωτή προσέγγιση της προσέγγισης του μικροπυρήνα για να δημιουργήσει ένα συνολικό πλαίσιο NT που δεν μιμείται κανένα υπάρχον λειτουργικό σύστημα. Κάθε λειτουργικό σύστημα προσομοιώνεται ως ξεχωριστή μονάδα ή υποσύστημα.

Πιο πρόσφατα, οι αρχιτεκτονικές λειτουργικών συστημάτων μικροπυρήνα ανακοινώθηκαν από τη Novell/USL, το Open Software Foundation (OSF), την IBM, την Apple και άλλους. Ένας από τους κύριους ανταγωνιστές της NT στα λειτουργικά συστήματα μικροπυρήνα είναι το Mach 3.0, ένα σύστημα που δημιουργήθηκε στο Πανεπιστήμιο Carnegie Mellon και το οποίο τόσο η IBM όσο και η OSF έχουν αναλάβει να εμπορευματοποιήσουν. (Το Next χρησιμοποιεί επί του παρόντος το Mach 2.5 ως βάση για το NextStep, αλλά εξετάζει επίσης προσεκτικά το Mach 3.0.) Ένας άλλος ανταγωνιστής είναι ο μικροπυρήνας Chorus 3.0 της Chorus Systems, που επιλέχθηκε από την USL ως βάση για νέες υλοποιήσεις του λειτουργικού συστήματος UNIX. Ορισμένοι μικροπυρήνες θα χρησιμοποιηθούν στο SpringOS της Sun, τον αντικειμενοστραφή διάδοχο του Solaris (αν, φυσικά, η Sun ολοκληρώσει το SpringOS). Υπάρχει μια προφανής τάση για μετάβαση από τα μονολιθικά σε συστήματα μικροπυρήνων (αυτή η διαδικασία δεν είναι απλή: η IBM έκανε ένα βήμα πίσω και εγκατέλειψε τη μετάβαση στην τεχνολογία μικροπυρήνων). Παρεμπιπτόντως, αυτό δεν είναι καθόλου νέα για την QNX Software Systems και την Unisys, που κυκλοφορούν επιτυχημένα λειτουργικά συστήματα μικροπυρήνων εδώ και αρκετά χρόνια. Το QNX OS έχει ζήτηση στην αγορά σε πραγματικό χρόνο και το CTOS της Unisys είναι δημοφιλές στον τραπεζικό τομέα. Και τα δύο συστήματα χρησιμοποιούν επιτυχώς την αρθρωτή δομή που είναι εγγενής στα λειτουργικά συστήματα μικροπυρήνων.


συμπέρασμα

Οι κύριες διαφορές μεταξύ Unix και άλλων λειτουργικών συστημάτων

Το Unix αποτελείται από έναν πυρήνα με προγράμματα οδήγησης και βοηθητικά προγράμματα (προγράμματα εξωτερικά του πυρήνα). Εάν πρέπει να αλλάξετε τη διαμόρφωση (προσθήκη συσκευής, αλλαγή θύρας ή διακοπή), τότε ο πυρήνας ανακατασκευάζεται (επανασυνδέεται) από μονάδες αντικειμένων ή (για παράδειγμα, στο FreeBSD) από πηγές. Αυτό δεν είναι απολύτως αληθές. Ορισμένες παράμετροι μπορούν να διορθωθούν χωρίς ανακατασκευή. Υπάρχουν επίσης μονάδες πυρήνα με δυνατότητα φόρτωσης.

Σε αντίθεση με το Unix, στα Windows (αν δεν διευκρινίζεται ποιο, τότε εννοούμε τα 3.11, 95 και NT) και OS / 2, κατά τη φόρτωση, συνδέουν πραγματικά προγράμματα οδήγησης εν κινήσει. Ταυτόχρονα, η συμπαγής Ο συναρμολογημένος πυρήνας και η επαναχρησιμοποίηση του κοινού κώδικα είναι μια τάξη μεγέθους μικρότερη από. Επιπλέον, εάν η διαμόρφωση του συστήματος είναι αμετάβλητη, ο πυρήνας Unix μπορεί να γραφτεί στη ROM και να εκτελεστεί _not_booted_ στη μνήμη RAM χωρίς επανεργασία (χρειάζεται μόνο να αλλάξετε το αρχικό τμήμα του το BIOS) Η συμπαγής κώδικας είναι ιδιαίτερα σημαντική, επειδή ο πυρήνας και τα προγράμματα οδήγησης δεν φεύγουν ποτέ, η φυσική μνήμη δεν εναλλάσσεται σε δίσκο.

Το Unix είναι το πιο πολυπλατφορμικό λειτουργικό σύστημα. Το WindowsNT προσπαθεί να το μιμηθεί, αλλά μέχρι στιγμής δεν έχει πετύχει - αφού εγκατέλειψε το MIPS και το POWER-PC, το W "NT παρέμεινε μόνο σε δύο πλατφόρμες - την παραδοσιακή i * 86 και την DEC Alpha. Φορητότητα προγραμμάτων από μία έκδοση του Unix Ένα πρόχειρο γραμμένο πρόγραμμα, το οποίο δεν λαμβάνει υπόψη τις διαφορές στις υλοποιήσεις Unix, κάνει αδικαιολόγητες υποθέσεις όπως "ο ακέραιος πρέπει να είναι τέσσερα byte", μπορεί να απαιτεί σοβαρή επανεπεξεργασία, αλλά εξακολουθεί να είναι πολλές τάξεις μεγέθους ευκολότερη από τη μεταφορά από OS/2 σε NT, για παράδειγμα.

Εφαρμογές του Unix

Το Unix χρησιμοποιείται τόσο ως διακομιστής όσο και ως σταθμός εργασίας. Στην υποψηφιότητα διακομιστή, ανταγωνίζονται τα MS WindowsNT, Novell Netware, IBM OS/2 Warp Connect, DEC VMS και λειτουργικά συστήματα mainframe. Κάθε σύστημα έχει τη δική του περιοχή εφαρμογής στην οποία είναι καλύτερο από άλλα.

Το WindowsNT είναι για διαχειριστές που προτιμούν μια φιλική προς το χρήστη διεπαφή από την εξοικονόμηση πόρων και την υψηλή απόδοση.

Netware - για δίκτυα όπου απαιτούνται υπηρεσίες αρχείων και εκτυπωτών υψηλής απόδοσης και άλλες υπηρεσίες δεν είναι τόσο σημαντικές. Το κύριο μειονέκτημα είναι ότι είναι δύσκολο να εκτελεστούν εφαρμογές σε διακομιστή Netware.

Το OS / 2 είναι καλό όπου χρειάζεστε έναν "ελαφρύ" διακομιστή εφαρμογών. Απαιτεί λιγότερους πόρους από το NT, είναι πιο ευέλικτο στη διαχείριση (αν και μπορεί να είναι πιο δύσκολο να ρυθμιστεί) και το multitasking είναι πολύ καλό. Η εξουσιοδότηση και η διαφοροποίηση των δικαιωμάτων πρόσβασης δεν υλοποιούνται σε επίπεδο λειτουργικού συστήματος, κάτι που υπερπληρώνεται από την υλοποίηση σε επίπεδο διακομιστών εφαρμογών. (Ωστόσο, συχνά άλλα λειτουργικά συστήματα κάνουν το ίδιο). Πολλοί σταθμοί FIDOnet και BBS βασίζονται στο OS/2.

Το VMS είναι ένας ισχυρός, σε καμία περίπτωση κατώτερος από τον διακομιστή εφαρμογών του Unix (και από πολλές απόψεις ανώτερος από αυτόν), αλλά μόνο για τις πλατφόρμες VAX και Alpha της DEC.

Mainframes - για εξυπηρέτηση πολύ μεγάλου αριθμού χρηστών (της τάξης πολλών χιλιάδων). Αλλά η εργασία αυτών των χρηστών συνήθως οργανώνεται με τη μορφή όχι αλληλεπίδρασης πελάτη-διακομιστή, αλλά με τη μορφή κεντρικού-τερματικού. Το τερματικό σε αυτό το ζεύγος δεν είναι μάλλον πελάτης, αλλά διακομιστής (Internet World, N3 για το 1996). Τα πλεονεκτήματα των mainframes περιλαμβάνουν υψηλότερη ασφάλεια και ανοχή σφαλμάτων, και τα μειονεκτήματα είναι η τιμή που αντιστοιχεί σε αυτές τις ιδιότητες.

Το Unix είναι καλό για τον έμπειρο (ή πρόθυμο να είναι) διαχειριστής, γιατί απαιτεί γνώση των αρχών λειτουργίας των διεργασιών που συμβαίνουν σε αυτό. Το πραγματικό multitasking και η κοινή χρήση σκληρής μνήμης εξασφαλίζουν υψηλή αξιοπιστία του συστήματος, αν και η απόδοση του Unix στις υπηρεσίες αρχείων και εκτύπωσης είναι κατώτερη από το Netware.

Η έλλειψη ευελιξίας στην παραχώρηση δικαιωμάτων πρόσβασης χρήστη σε αρχεία σε σύγκριση με το WindowsNT καθιστά δύσκολη την οργάνωση της πρόσβασης ομάδας σε επίπεδο _at_the_file_system_ στα δεδομένα (ακριβέστερα, σε αρχεία), η οποία, κατά τη γνώμη μου, αντισταθμίζεται από την ευκολία υλοποίησης, που σημαίνει λιγότερο υλικό απαιτήσεις. Ωστόσο, εφαρμογές όπως ο SQL Server λύνουν το πρόβλημα της ομαδικής πρόσβασης στα δεδομένα από μόνες τους, επομένως η δυνατότητα άρνησης πρόσβασης σε ένα _file_ σε συγκεκριμένο χρήστη, που λείπει στο Unix, είναι σαφώς περιττή κατά τη γνώμη μου.

Σχεδόν όλα τα πρωτόκολλα στα οποία βασίζεται το Διαδίκτυο αναπτύχθηκαν υπό το Unix, και συγκεκριμένα η στοίβα πρωτοκόλλων TCP/IP επινοήθηκε στο Πανεπιστήμιο του Μπέρκλεϋ.

Η ασφάλεια του Unix, όταν διαχειρίζεται σωστά (και πότε δεν είναι;), δεν είναι σε καμία περίπτωση κατώτερη από τη Novell ή από τα WindowsNT.

Μια σημαντική ιδιότητα του Unix που το φέρνει πιο κοντά στα mainframes είναι η πολυτερματική του ικανότητα, πολλοί χρήστες μπορούν ταυτόχρονα να εκτελούν προγράμματα στον ίδιο μηχάνημα Unix. Εάν δεν χρειάζεται να χρησιμοποιήσετε γραφικά, μπορείτε να τα βγάλετε πέρα ​​με φθηνά τερματικά κειμένου (εξειδικευμένα ή βασισμένα σε φθηνούς υπολογιστές) συνδεδεμένα σε αργές γραμμές. Σε αυτό, μόνο το VMS το ανταγωνίζεται. Τα τερματικά γραφικών X μπορούν επίσης να χρησιμοποιηθούν όταν υπάρχουν παράθυρα διεργασιών που εκτελούνται σε διαφορετικά μηχανήματα στην ίδια οθόνη.

Στην υποψηφιότητα σταθμών εργασίας, το Unix ανταγωνίζεται τα MS Windows*, IBM OS/2, Macintosh και Acorn RISC-OS.

Windows - για όσους εκτιμούν τη συμβατότητα έναντι της αποτελεσματικότητας. για όσους είναι έτοιμοι να αγοράσουν μεγάλη ποσότητα μνήμης, χώρο στο δίσκο και megahertz. για όσους τους αρέσει να μην εμβαθύνουν στην ουσία, κάντε κλικ στα κουμπιά στο παράθυρο. Είναι αλήθεια ότι αργά ή γρήγορα πρέπει ακόμα να μελετήσετε τις αρχές του συστήματος και των πρωτοκόλλων, αλλά τότε θα είναι πολύ αργά - η επιλογή έχει γίνει. Ένα σημαντικό πλεονέκτημα των Windows πρέπει επίσης να αναγνωριστεί ως η ικανότητα κλοπής ενός σωρού λογισμικού.

OS/2 - για τους λάτρεις του OS/2. :-) Παρόλο που, σύμφωνα με ορισμένες αναφορές, το OS / 2 αλληλεπιδρά καλύτερα από άλλα με τα mainframes και τα δίκτυα IBM.

Macintosh - για γραφικά, εκδοτικά και μουσικά έργα, καθώς και για όσους αγαπούν μια σαφή, όμορφη διεπαφή και δεν θέλουν (δεν μπορούν) να κατανοήσουν τις λεπτομέρειες του συστήματος.

Το RISC-OS, που αναβοσβήνει στη ROM, σας επιτρέπει να μην χάνετε χρόνο για την εγκατάσταση του λειτουργικού συστήματος και την επαναφορά του μετά από αποτυχίες. Επιπλέον, σχεδόν όλα τα προγράμματα που υπάγονται σε αυτό χρησιμοποιούν πόρους πολύ οικονομικά, επομένως δεν χρειάζονται εναλλαγή και λειτουργούν πολύ γρήγορα.

Το Unix λειτουργεί τόσο σε υπολογιστές όσο και σε ισχυρούς σταθμούς εργασίας με επεξεργαστές RISC· πραγματικά ισχυρά συστήματα CAD και συστήματα γεωγραφικών πληροφοριών είναι γραμμένα κάτω από το Unix. Η επεκτασιμότητα του Unix, λόγω της πολυπλατφορμικής φύσης του, είναι μια τάξη μεγέθους ανώτερη από οποιοδήποτε άλλο λειτουργικό σύστημα, σύμφωνα με ορισμένους συγγραφείς.


Βιβλιογραφία

1. Σχολικό βιβλίο Kuznetsova S.D. "Λειτουργικό σύστημα UNIX" 2003;

2. Polyakov A.D. "UNIX 5th Edition σε x86, ή μην ξεχνάτε το ιστορικό";

3. Karpov D.Yu. "UNIX" 2005;

4. Fedorchuk A.V. Unix Mastery, 2006

5. Υλικό ιστότοπου http://www.citforum.ru/operating_systems/1-16;

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΕΠΙΣΤΗΜΗΣ ΤΗΣ ΡΩΣΙΚΗΣ ΟΜΟΣΠΟΝΔΙΑΣ ΟΜΟΣΠΟΝΔΙΑΚΟΣ ΟΡΓΑΝΙΣΜΟΣ ΓΙΑ ΤΗΝ ΕΚΠΑΙΔΕΥΣΗ ΚΡΑΤΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΑΝΩΤΕΡΗΣ ΕΠΑΓΓΕΛΜΑΤΙΚΗΣ ΕΚΠΑΙΔΕΥΣΗΣ
mob_info