Η Διεπαφή Φορητότητας Λειτουργικού Συστήματος (Portable Operating System Interface) POSIX, είναι ένα πρότυπο IEEE, το οποίο βοηθάει στην συμβατότητα (compatibility) και στην φορητότητα (portability) ανάμεσα σε λειτουργικά συστήματα.
Θεωρητικά λοιπόν, ο συμμορφωμένος ως προς το POSIX, πηγαίος κώδικας θα έπρεπε να είναι φορητός χωρίς εμφανείς διαφοροποιήσεις.
Στον πραγματικό κόσμο, η μετάβαση των εφαρμογών, συχνά αντιμετωπίζει θέματα τα οποία πηγάζουν από την ιδιαιτερότητα των συστημάτων.
Παρόλα αυτά όμως, η συμμόρφωση με το πρότυπο POSIX, κάνει απλούστερη την μεταφορά των εφαρμογών, κάτι το οποίο συνεπάγεται σε εξοικονόμηση χρόνου και κόστους.
Για αυτό τον λόγο, οι προγραμματιστές θα πρέπει να είναι ενήμεροι σχετικά με τις θεμελιώδης αρχές, αυτού του ευρέως διαδεδομένου και χρησιμοποιημένου πρότυπου.
Ιστορία του POSIX
Οι παλαιότεροι προγραμματιστές, έπρεπε να ξαναγράψουν τον πηγαίο κώδικα των εφαρμογών τους, από το μηδέν (scratch), για κάθε νέο μοντέλο ηλεκτρονικού υπολογιστή.
Όμως το σύστημα της IBM, το System/360 άλλαξε αυτό το γεγονός το 1964, όπου εισήγαγε στην αγορά το λειτουργικό σύστημα OS/360.
Η IBM ξεκίνησε να αξιοποιεί την ίδια αρχιτεκτονική υλικού (hardware architecture), έτσι ώστε να καταστήσει ικανά τα νεότερά της μοντέλα Η/Υ, να χρησιμοποιήσουν το ίδιο λειτουργικό σύστημα.
Η ύπαρξη ενός κοινά χρησιμοποιούμενου λειτουργικού συστήματος σε πολλαπλούς υπολογιστές, έθεσε το πρώτο βήμα για την φορητότητα.
Προς το τέλος της δεκαετίας του 1960, η άφιξη του UNIX, άνοιξε νέες προοπτικές και δυνατότητες.
Η AT&T’s Bell Labs είχε την ευθύνη για την αρχική ανάπτυξη αυτού του νέου λειτουργικού συστήματος και μπορούσε να εκτελείται (τρέχει) σε πολλούς Η/Υ διαφόρων κατασκευαστών.
Όμως το UNIX άρχισε να διαφοροποιείται (forked) σε διάφορες εκδόσεις (flavours), με αποτέλεσμα πέραν του AT&T’s Unix Συστήματος V, να έχουν αναπτυχθεί τοBerkeley Software Distribution (BSD), το Xenix και άλλα, καθιστώντας δύσκολη την μεταφορά (porting) ανάμεσα στις εκδόσεις.
Το αποτέλεσμα ήταν ότι η υποσχόμενη φορητότητα των εφαρμογών, όχι μόνο έπεφτε σε εμπόδια, αλλά αυξάνονταν η δυσκολία του έργου αυτού, λόγω του ότι, κατά τις ακόλουθες, από εκείνη την εποχή, δεκαετίες, η εισαγωγή νέων λειτουργικών συστημάτων, το μόνο που κατορθώθηκε να γίνει πραγματικότητα, ήταν να γίνει ακόμη πιο περίπλοκη η φορητότητα των εφαρμογών ανάμεσα στα λειτουργικά συστήματα και τους κατασκευαστές.
Το πρότυπο POSIX αναπτύχθηκε την δεκαετία του 1980, για να λύσει το ζήτημα της φορητότητας και ορίστηκε βασιζόμενο στο System V and BSD Unix.
Το POSIX δεν ορίζει το λειτουργικό σύστημα, αυτό καθεαυτό, αλλά ορίζει την διεπαφή (API) ανάμεσα στην εφαρμογή και το λειτουργικό σύστημα και για αυτό τον λόγο, οι προγραμματιστές είναι ελεύθεροι να αναπτύξουν δικό τους λειτουργικό σύστημα και εφαρμογές, όπως αυτοί θέλουν, αρκεί να διατηρούνται τα πρότυπα των διεπαφών, ανάμεσά τους.
Επειδή το POSIX είναι ανεξάρτητο του υλικού (hardware), το λειτουργικό σύστημα, ή τον κατασκευαστή του, καθιστά ευκολότερη την φορητότητα των εφαρμογών.
Το πρώτο πρότυπο POSIX εκδόθηκε το 1988, με την επίσημη ονομασία "IEEE Standard 1003.1-1988 Portable Operating System Interface for Computer Environments".
Το 1990, μία διεθνής έκδοση του ίδιου πρότυπου με ελάχιστες τροποποιήσεις, εκδόθηκε ως "ISO/IEC 9945-1:1990 Information technology — Portable Operating System Interface (POSIX) — Part 1: System Application Program Interface (API)".
Αρχικά το πρότυπο POSIX, διαιρέθηκε σε πολλά πρότυπα:
- POSIX.1: Υπηρεσίες Πυρήνα
- POSIX.1b: Επεκτάσεις πραγματικού χρόνου (real-time)
- POSIX.1c: Νηματικές επεκτάσεις (Threads)
- POSIX.2: Κέλυφος και Χρήσιμων Εφαρμογών (Shell & Utilities)
Μετά το 1997, ο Όμιλος Austin, συμμάζεψε όλα τα πρότυπα κάτω από μία ομπρέλα και έκτοτε, οι εκδόσεις POSIX.1-2001 (επίσης γνωστή ως IEEE Std 1003.1-2001), POSIX.1-2004 (επίσης γνωστή ως IEEE Std 1003.1-2004) και η POSIX.1-2008 επίσης γνωστή ως IEEE Std 1003.1-2008) έχουν εκδοθεί.
Παραδείγματα μερικών συστημάτων συμμορφωμένων, ως προς το POSIX πρότυπο,είνατ τα AIX, HP-UX, Solaris, και το MacOS (από την έκδοση 10.5 Leopard και έπειτα). Στον αντίποδα τα συστήματα Android, το FreeBSD, οι διανομές του Linux, το OpenBSD, το VMWare κ.λ.π, ακολουθούν όσο γίνεται το πρότυπο POSIX, αλλά δεν έχουν πιστοποιηθεί.
Τα βασικά του πρότυπου POSIX
Το πρότυπο POSIX.1-2008 ασχολείται με τέσσερις κύριες περιοχές:
- Τόμος Βασικών Ορισμών: Γενικοί όροι, έννοιες και διεπαφών.
- Τόμος Διεπαφών Συστήματος: Ορισμοί λειτουργίας των υπηρεσιών (services) και των υπορουτίνων ενός συστήματος, εμπεριέχοντας τους ορισμούς της φορητότητας, της διαχείρισης λαθών και της επανάκτησης τους.
- Τόμος Κελύφους και Χρήσιμων Εφαρμογών: Ορισμοί διεπαφών οποιασδήποτε εφαρμογής ως προς το κέλυφος και των κοινά χρησιμοποιούμενων προγραμμάτων διατήρησης του λειτουργικού συστήματος.
- Τόμος Ορθολογισμού: Περιέχει πληροφορίες και ιστορικά στοιχεία για επιπρόσθετα ή απορριπτέα χαρακτηριστικά και τους λόγους αυτών των αποφάσεων.
Το πρότυπο, δεν καλύπτει τα ακόλουθα:- Γραφικές διεπαφές
- Διεπαφές βάσεων δεδομένων
- Φορητότητα αντικειμενικού και δυαδικού κώδικα
- Διαμορφώσεις συστήματος
- Θεώρηση εργασιών I/O ή διαθεσιμότητα πόρων.
Μερικές θεμελιώδης οδηγίες, πίσω από τον σχεδιασμό του POSIX είναι οι εξής:- To POSIX δημιουργήθηκε για να είναι ευκολότερη η φορητότητα των εφαρμογών λογισμικού. Συνεπώς δεν αφορά μόνο τα συστήματα UNIX, αλλά και τα Non-UNIX συστήματα, τα οποία όμως δύναται να είναι συμμορφωμένα, ως προς το πρότυπο POSIX.
- Το πρότυπο δεν υπαγορεύει τον τρόπο ανάπτυξης ενός λειτουργικού συστήματος ή εφαρμογών. Ορίζει το συμβόλαιο ανάμεσά τους.
- Ο πηγαίος κώδικας μίας εφαρμογής συμμορφωμένης με το πρότυπο POSIX, θα πρέπει να είναι ικανή να εκτελεστεί (τρέξει) ανάμεσα σε πολλά συστήματα, διότι το πρότυπο ορίζεται στο επίπεδο του πηγαίου κώδικα. Παρόλα αυτά, το πρότυπο δεν εγγυάται την φορητότητα για κανέναν αντικειμενικό ή δυαδικό κώδικα. Έτσι το εκτελέσιμο δυαδικό πρόγραμμα, ενδέχεται να μπορεί ή να μην μπορεί να εκτελεστεί, σε παρόμοιου τύπου Η/Υ, με όμοιο υλικό (hardware) και λειτουργικών συστημάτων. Μόνο η φορητότητα του πηγαίου κώδικα υπαγορεύεται από το πρότυπο.
- Το POSIX είναι γραμμένο με βάση τους όρους του προτύπου της γλώσσας προγραμματισμού C, αλλά οι προγραμματιστές μπορούν να την εφαρμόσουν σε όποια άλλη γλώσσα προγραμματισμού επιθυμούν.
- Το πρότυπο ασχολείται αποκλειστικά με όλα τα θέματα τα οποία εμπλέκονται ανάμεσα σε λειτουργικό σύστημα και εφαρμογές.
- Το πρότυπο διατηρείται συνοπτικό ως προς το μέγεθος και ευρύ, ως προς την σκοπιά του φάσματος της κάλυψης μεγάλου αριθμού συστημάτων.
- Το POSIX σχεδιάστηκε για να απλοποιήσει την φορητότητα, έτσι εξοικονομείται κόστος και χρόνος μακροπρόθεσμα. Όμως, οι εφαρμογές που δεν είναι συμμορφωμένες με το POSIX, ενδέχεται να χρειάζονται σημαντικό χρόνο και σημαντική αρχική επένδυση πόρων.
Ανάπτυξη Εφαρμογών POSIX
- Ο σκοπός του POSIX είναι η βελτίωση της φορητότητας. Όταν ο πηγαίος κώδικας ακολουθεί το πρότυπο, δύναται να μεταγλωττιστεί και να εκτελεστεί (compiled and run) σε έναν άλλο Η/Υ εύκολα. Όμως εάν το POSIX καθοριστεί σαν γενική προϋπόθεση για την ανάπτυξη μιας εφαρμογής, μπορεί να προκαλέσει σύγχυση. Το πλήρες πρότυπο του POSIX, σε αριθμό σελίδων είναι είναι 4000+, με περισσότερες από 1350 διεπαφές. Δεν είναι λογικό να εμπλέκονται όλα. Για τον λόγο αυτό, το κάθε project θα πρέπει να καθορίζει ποία εδάφια του POSIX πρέπει να καλυφθούν, ως προαπαιτούμενο.
- Υπάρχει η δυσνοήση στην κοινότητα της ανάπτυξης εφαρμογών, ότι το πρότυπο POSIX είναι παλιό και άσχετο. Αυτό δεν αληθευέι. Το POSIX είναι μία ζωντανή τεκμηρίωση η οποία ενημερώνεται τακτικά από τον Όμιλο Austin. Οποιοσδήποτε μπορεί να γίνει μέλος του ομίλου και να συμμετέχει στην βελτίωση του πρότυπου. Το πρότυπο χρησιμοποιείται ενεργά σε σύγχρονους διακομιστές (servers), σε σταθμούς εργασίας (workstations), σε routers, σε κινητές συσκευές, σε συστήματα embedded κ.λ.π. Χρησιμοποιείται σε UNIX και Linux Η/Υ.
- Οι προγραμματιστές θα πρέπει να γνωρίζουν ότι το πρότυπο POSIX έχει προβλήματα. Μπορούν να αναφέρουν το όποιο λάθος (bug) αποκαλυφθεί στον Όμιλο Group και θα διερευνηθεί στην επόμενη θεώρηση.
Συμπέρασμα
Το POSIX μπορεί να μοιάζει αποκαρδιωτικό αρχικά, επειδή θα πρέπει οι προγραμματιστές εφαρμογών να γνωρίσουν καλά τα βασικά του, καθώς θα ξεπετάγονται ως προαπαίτηση ανά διαστήματα.
Λόγω του ευρέως φάσματος του πρότυπου, δεν είναι δυνατόν να είναι κανείς εξειδικευμένος σε όλη την τεκμηρίωση του.
Οι προγραμματιστές μπορούν να επικοινωνήσουν με τις κοινότητες των UNIX και Linux, προκειμένου να μάθουν περισσότερα. Οι κοινότητες μπορούν να απαντήσουν σε ερωτήματα και να πληροφορήσουν καλύτερα σε ποιο τμήμα του πρότυπου συσχετίζεται με το επικείμενο project.
Περισσότερη μελέτη:Παραπομπές: