Είναι συμβατό με το Linux POSIX;

Is Linux Posix Compliant



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

Εν ολίγοις, το POSIX [1] κάνει ακριβώς αυτό για συστήματα που μοιάζουν με UNIX και UNIX (ανατρέξτε στο άρθρο του Zak H [4] για μια πιο λεπτομερή ιστορία σχετικά με αυτό το θέμα). Ορίζει τις διεπαφές ανταλλαγής, τους μηχανισμούς κλήσης και τα δεδομένα που μεταφέρονται για το λογισμικό, αλλά αφήνει την εσωτερική εφαρμογή στον προγραμματιστή ή τον συντηρητή του λογισμικού. Ο στόχος είναι να ενοποιηθούν όλα τα διάφορα πιρούνια UNIX και συστήματα που μοιάζουν με UNIX με τέτοιο τρόπο ώστε διαφορετικές υλοποιήσεις λογισμικού να αλληλεπιδρούν μεταξύ τους. Το κύριο πλεονέκτημα του POSIX είναι να διαθέτει μια δεσμευτική τεκμηρίωση για αυτά τα στοιχεία - διεπαφές, μηχανισμούς και δεδομένα - διαθέσιμη σε γραπτή μορφή.







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



Τι σημαίνει ο όρος POSIX;

Το POSIX είναι συντομογραφία για φορητή διεπαφή λειτουργικού συστήματος. Όπως εξηγήθηκε εν συντομία παραπάνω, το POSIX είναι το όνομα μιας συλλογής προτύπων που απαιτούνται για τη διατήρηση της συμβατότητας μεταξύ των λειτουργικών συστημάτων. Όπως αναφέρεται στο [1], το [ορίζει] τη διεπαφή προγραμματισμού εφαρμογών (API), μαζί με τα κελύφη της γραμμής εντολών και τις διεπαφές βοηθητικών προγραμμάτων, για συμβατότητα λογισμικού με παραλλαγές του Unix και άλλων λειτουργικών συστημάτων. Η πρώτη έκδοση του POSIX δημοσιεύθηκε το 1988. Έκτοτε, το POSIX επεκτείνεται και ενημερώνεται συνεχώς από την Ομάδα Αναθεώρησης των Κοινών Προτύπων του inστιν (επίσης γνωστή απλώς ως The Austin Group) [7].



Από το 2021, το πρότυπο POSIX περιέχει τα ακόλουθα μέρη:





  1. Βασικές Υπηρεσίες (Ενσωματώνει το πρότυπο ANSI C) (IEEE std 1003.1-1988)-Δημιουργία και έλεγχος διαδικασίας, σήματα, λειτουργίες αρχείων και καταλόγου, σωλήνες, βιβλιοθήκη C, διεπαφή και έλεγχος θύρας εισόδου/εξόδου, ενεργοποιητές διεργασίας
  1. Επεκτάσεις (Συμβολικοί σύνδεσμοι)
  2. Επεκτάσεις σε πραγματικό χρόνο και I/O (IEEE Std 1003.1b-1993)-Προγραμματισμός προτεραιότητας, Σήματα σε πραγματικό χρόνο, Ρολόγια και χρονοδιακόπτες, Σημασιογράφοι, Μετάδοση μηνυμάτων, Κοινή μνήμη, Ασύγχρονη και Σύγχρονη είσοδος/έξοδος, Διασύνδεση κλειδώματος μνήμης
  3. Επεκτάσεις νήματος (IEEE Std 1003.1c-1995)-Δημιουργία νήματος, έλεγχος και εκκαθάριση, προγραμματισμός νήματος, συγχρονισμός νήματος, χειρισμός σήματος
  4. Περισσότερες επεκτάσεις σε πραγματικό χρόνο
  5. Επεκτάσεις ασφαλείας (Λίστες ελέγχου πρόσβασης)
  1. Shell και βοηθητικά προγράμματα (IEEE Std 1003.2-1992)-Διερμηνέας εντολών, βοηθητικά προγράμματα

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

Τα τελευταία χρόνια έχουν προστεθεί επεκτάσεις στην επεξεργασία σε πραγματικό χρόνο. Η τρέχουσα έκδοση κυκλοφόρησε στις αρχές του 2018 [3]. Οι συντάκτες του SibylFS [5] έχουν επίσης δημοσιεύσει πολλούς σχολιασμούς στο πρότυπο POSIX για τον προσδιορισμό λογικής και αλληλεπιδράσεων υψηλότερης τάξης.



Τι σημαίνει να είσαι συμβατός με POSIX;

Ο όρος συμβατός με POSIX σημαίνει ότι ένα λειτουργικό σύστημα πληροί όλα τα κριτήρια POSIX. Ένα λειτουργικό σύστημα μπορεί να εκτελεί εγγενώς προγράμματα UNIX ή μια εφαρμογή μπορεί να μεταφερθεί από το σύστημα UNIX σε άλλο σύστημα. Η μεταφορά μιας εφαρμογής από το UNIX στο λειτουργικό σύστημα προορισμού είναι εύκολη ή τουλάχιστον ευκολότερη από ό, τι αν δεν υποστηρίζει POSIX. Για να είστε ασφαλείς, ένα λειτουργικό σύστημα θα πρέπει να έχει επιτύχει επιτυχώς την πιστοποίηση POSIX [2]. Αυτό το βήμα επιτυγχάνεται (με κόστος) περνώντας μια αυτοματοποιημένη δοκιμή πιστοποίησης. Μπορείτε να βρείτε την αντίστοιχη δοκιμαστική σουίτα εδώ [11].

Από το 2021, η λίστα λειτουργικών συστημάτων με πιστοποίηση POSIX περιέχει AIX από IBM, HP-UX από HP, IRIX από SGI, EulerOS [6] από Huawei, Mac OS X από Apple (από 10.5 Leopard), Solaris και QNX Neutrino από Oracle, το K-UX της Inspur [11] και το INTEGRITY OS σε πραγματικό χρόνο από το Green Hills Software [15]. Προς το παρόν δεν είναι σαφές εάν οι νεότερες εκδόσεις των τριών διαδόχων της Solaris, OpenSolaris, Illumos και OpenIndiana, ταξινομούνται επίσης ως πλήρως συμβατές με POSIX. Αυτά τα λειτουργικά συστήματα ήταν συμβατά με το POSIX μέχρι το POSIX 2001.

Άλλα λειτουργικά συστήματα που θεωρούνται ως συνήθως (αλλά όχι πλήρως) συμβατά με το POSIX περιλαμβάνουν Android, BeOS, FreeBSD, Haiku, Linux (βλ. Παρακάτω) και VMWare ESXi. Για τα Microsoft Windows, το Cygwin παρέχει ένα περιβάλλον ανάπτυξης και λειτουργίας σε μεγάλο βαθμό συμβατό με POSIX.

Είναι συμβατό με το Linux POSIX;

Ο όρος Linux αναφέρεται σε ολόκληρο το λειτουργικό σύστημα Linux, ανεξαρτήτως γεύσης, όπως το Debian GNU/Linux, το RedHat Linux, το Linux Mint, το Ubuntu Linux, το Fedora και το CentOS, για παράδειγμα. Για την ακρίβεια, το Linux είναι απλώς το όνομα του πυρήνα που είναι το βασικό συστατικό αυτού του δωρεάν λειτουργικού συστήματος.

Όπως περιέγραψε ο Linus Torvalds στο βιβλίο Just For Fun [8], για να αναπτύξει τον πυρήνα του Linux, ζήτησε ένα αντίγραφο του προτύπου POSIX. Αυτό τον βοήθησε να εφαρμόσει τους ίδιους μηχανισμούς που χρησιμοποιούνται στα εμπορικά συστήματα UNIX. Επιπλέον, αυτό του επέτρεψε να συνδέσει τον πυρήνα Linux με τα εργαλεία GNU που ακολουθούσαν κυρίως την ίδια προσέγγιση. Για να είμαστε δίκαιοι, το λογισμικό σε ένα σύστημα Linux συνεισφέρει από μια ποικιλία πηγών που σέβονται το πρότυπο POSIX, αλλά που μερικές φορές εφαρμόζουν και τις δικές τους έννοιες. Ταυτόχρονα, ωστόσο, αυτό δείχνει επίσης την ποικιλομορφία που αποτελεί το Linux ως λειτουργικό σύστημα.

Ένα παράδειγμα αυτού είναι ο τρόπος με τον οποίο γράφονται τα ορίσματα της γραμμής εντολών. Τα επιχειρήματα με δύο παύλες (π.χ., –help) είναι συμβάσεις GNU, ενώ οι εντολές POSIX δεν χρησιμοποιούν ποτέ ορίσματα δύο παύλων, αλλά αντίθετα μόνο ένα (π.χ., -help). Από την αρχή, το Linux σχεδιάστηκε με γνώμονα το GNU και γι 'αυτό οι εντολές περιέχουν το στυλ GNU

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

Προς το παρόν, το Linux δεν διαθέτει πιστοποίηση POSIX λόγω υψηλού κόστους, εκτός από τις δύο εμπορικές διανομές Linux Inspur K-UX [12] και Huawei EulerOS [6]. Αντ 'αυτού, το Linux θεωρείται ως επί το πλείστον συμβατό με POSIX.

Αυτή η εκτίμηση οφείλεται στο γεγονός ότι οι μεγάλες διανομές Linux ακολουθούν την Linux Standard Base (LSB) αντί του POSIX [9]. Το LSB στοχεύει στην ελαχιστοποίηση των διαφορών μεταξύ μεμονωμένων διανομών Linux [14]. Αυτό αναφέρεται στη δομή του συστήματος λογισμικού, συμπεριλαμβανομένου του προτύπου ιεραρχίας συστήματος αρχείων (FHS) που χρησιμοποιείται στον πυρήνα του Linux. Το LSB βασίζεται στις προδιαγραφές POSIX, στις Προδιαγραφές Ενιαίου UNIX (SUS) [10], και σε πολλά άλλα ανοιχτά πρότυπα, αλλά τα επεκτείνει σε ορισμένους τομείς.

Οι διανομές Linux που βασίζονται σε LSB περιλαμβάνουν το RedHat Linux, το Debian GNU/Linux (2002-2015) και το Ubuntu (μέχρι το 2015), για να αναφέρουμε μερικά.

Αναπτύσσοντας έχοντας κατά νου το POSIX

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

Σύνδεσμοι και αναφορές

Σας ευχαριστώ

Ο συγγραφέας θα ήθελε να ευχαριστήσει τους Axel Beckert και Veit Schiele για τη βοήθεια και τις συμβουλές τους κατά την προετοιμασία αυτού του άρθρου.