Oprogramowanie jest napisane przez wielu programistów o różnych środowiskach. Algorytmy ogólne są dostępne na podstawie bezpłatnej licencji lub zostały naukowo opublikowane, a także mogą być dostępne za darmo do celów studiów. Powoduje to różne implementacje i wersje oprogramowania, które pasują do różnych potrzeb. Konieczna jest standaryzacja interfejsów i formatów danych, aby te różne implementacje zarówno wymienne i modułowe.
Krótko mówiąc, POSIX [1] robi dokładnie to dla systemów UNIX i UNIX (w artykule Zak H [4], aby uzyskać bardziej szczegółową historię na ten temat). Definiuje interfejsy wymiany, wywołujące mechanizmy i przesyłane dane dla oprogramowania, ale pozostawia wewnętrzną implementację dla programistów lub opiekunów oprogramowania. Celem jest ujednolicenie wszystkich różnych widelców UNIX i systemów podobnych do UNIX w taki sposób, aby różne implementacje oprogramowania mogły wchodzić w interakcje. Główną zaletą POSIX jest posiadanie dokumentacji wiążącej dla tych komponentów - interfejsów, mechanizmów i danych - dostępne w formie pisemnej.
System operacyjny, który podąża za standardem POSIX w całości, jest klasyfikowany jako zgodny z POSIX. W tym artykule wyjaśniamy, co oznacza POSIX, ustalamy, czy Linux należy do tej kategorii, i wymienia, które komponenty Linux muszą być wykluczone z tej klasyfikacji.
Co oznacza termin POSIX?
POSIX jest skrótem dla przenośnego interfejsu systemu operacyjnego. Jak krótko wyjaśniono powyżej, POSIX to nazwa zbioru standardów wymaganych do utrzymania kompatybilności między systemami operacyjnymi. Jak stwierdzono w [1], „[IT] definiuje interfejs programowania aplikacji (API), wraz z powłokami wiersza poleceń i interfejsami użytkami, dla kompatybilności oprogramowania z wariantami UNIX i innych systemów operacyjnych.„Pierwsza wersja POSIX została opublikowana w 1988 roku. Od tego czasu POSIX był stale rozszerzany i aktualizowany przez grupę rewizji standardów Austin Common Standards (znaną również jako grupa Austin) [7].
Od 2021 r. Standard POSIX zawiera następujące części:
Standard jest regularnie sprawdzany w celu odzwierciedlenia zmian technicznych i ulepszeń. Czasami może to potrwać kilka lat przed opublikowaniem nowej wersji, a zmiany zostaną włączone. Może to być niekorzystne, ale jest to zrozumiałe, biorąc pod uwagę zakres standardu.
W ostatnich latach dodano rozszerzenia przetwarzania w czasie rzeczywistym. Obecna wersja została wydana na początku 2018 r. [3]. Autorzy SibylFS [5] opublikowali również wiele adnotacji do standardu POSIX w celu określenia logiki i interakcji wyższego rzędu.
Co oznacza bycie zgodnym z POSIX?
Termin „zgodny z POSIX” oznacza, że system operacyjny spełnia wszystkie kryteria POSIX. System operacyjny może uruchomić programy UNIX natywnie lub aplikacja może być przeniesiona z systemu UNIX do innego systemu. Przenoszenie aplikacji z UNIX do docelowego systemu operacyjnego jest łatwe lub przynajmniej łatwiejsze, niż jeśli nie obsługuje POSIX. Aby być po bezpiecznej stronie, system operacyjny powinien pomyślnie osiągnąć certyfikat POSIX [2]. Ten krok jest osiągnięty (kosztem), zdając zautomatyzowany test certyfikacyjny. Odpowiedni pakiet testowy można znaleźć tutaj [11].
Od 2021 r. Lista systemów operacyjnych certyfikowanych przez POSIX zawiera AIX z IBM, HP-UX z HP, Irix z SGI, Euleros [6] z Huawei, Mac OS X z Apple (od 10.5 Leopard), Solaris i Qnx Neutrino z Oracle, K-UX INSPUR [11] oraz integralność systemu operacyjnego w czasie rzeczywistym z Green Hills Software [15]. Obecnie nie jest jasne, czy nowsze wersje trzech następców Solaris, OpenSolaris, Illumos i OpenIndiana, są również klasyfikowane jako w pełni zgodne z POSIX. Te systemy operacyjne były zgodne z POSIX do POSIX 2001.
Inne systemy operacyjne, które są postrzegane jako głównie (ale nie w pełni) zgodne z POSIX, obejmują Android, BEOS, FreeBSD, Haiku, Linux (patrz poniżej) i VMware ESXI. W przypadku Microsoft Windows Cygwin zapewnia w dużej mierze zgodne z Posx środowisko rozwoju i środowiska wykonawczego.
Jest zgodny z Linuksem POSIX?
Termin „Linux” odnosi się do całego systemu operacyjnego Linux, niezależnie od smaku, takiego jak Debian GNU/Linux, Redhat Linux, Linux Mint, Ubuntu Linux, Fedora i Centos, na przykład. Mówiąc dokładniej, Linux to tylko nazwa jądra, które jest głównym składnikiem tego bezpłatnego systemu operacyjnego.
Jak opisał Linus Torvalds w książce „Just For Fun” [8], aby opracować jądro Linux, poprosił o kopię standardu POSIX. Pomogło mu to wdrożyć te same mechanizmy stosowane w komercyjnych systemach UNIX. Ponadto pozwoliło mu to połączyć jądro Linux z narzędziami GNU, które głównie zastosowały to samo podejście. Szczerze mówiąc, oprogramowanie w systemie Linux jest wkładane z różnych źródeł, które szanują standard POSIX, ale czasami wdrażają własne koncepcje. Jednocześnie jednak pokazuje to również różnorodność, która składa się z Linuksa jako system operacyjny.
Jednym z przykładów jest sposób, w jaki pisane są argumenty wiersza poleceń. Argumenty z dwiema kresami (e.G., „-Help”) są konwencjami GNU, podczas gdy polecenia POSIX nigdy nie używają argumentów z dwoma Dashami, ale tylko jednego singla (e.G., "-pomoc"). Od samego początku Linux został zaprojektowany z myślą o GNU i dlatego polecenia zawierają styl GNU
argumenty. Aby osiągnąć zgodność POSIX, dodano argumenty w stylu POSIX krok po kroku. Mimo to ostateczna decyzja jest podejmowana przez dewelopera. Na dzień dzisiejszy większość poleceń akceptuje zarówno krótkie, jak i długie argumenty, a nawet argumenty bez żadnych pól, na przykład polecenie „Znajdź”, na przykład. Szczerze mówiąc, nie ma spójności między poleceniami w jednym systemie, co może być problemem, gdy zamierzasz użyć tego samego polecenia w innym systemie opartym na Unixie, szczególnie podczas przełączania między Linux, OS X i Solaris.
Na razie Linux nie jest certyfikowana z powodu wysokich kosztów, z wyjątkiem dwóch komercyjnych dystrybucji Linux Inspur K-Ux [12] i Huawei Euleros [6]. Zamiast tego Linux jest postrzegany jako głównie zgodny z POSIX.
Ta ocena wynika z faktu, że główne rozkłady Linuksa są zgodne z podstawą Linux Standard (LSB) zamiast POSIX [9]. LSB ma „zminimalizować różnice między poszczególnymi rozkładami Linuksa” [14]. Odnosi się to do struktury systemu oprogramowania, w tym standardu hierarchii systemu plików (FHS) używanego w jądrze Linux. LSB opiera się na specyfikacji POSIX, pojedynczej specyfikacji UNIX (SUS) [10] i kilku innych otwartych standardach, ale także rozszerza je na niektórych obszarach.
Dystrybucje Linux oparte na LSB obejmują Redhat Linux, Debian Gnu/Linux (2002-2015) i Ubuntu (do 2015 r.), Aby wymienić kilka.
Rozwijanie z myślą o POSIX
Aby bardziej szczegółowo zrozumieć POSIX, zalecamy uzyskanie kopii standardu POSIX i odczytanie go w całości. Możesz uzyskać książkę ze strony internetowej Open Group. Wymaga to opłaty rejestracyjnej, ale zapewnia pełny dostęp do tego cennego zasobu. Standardy pomagają, ponieważ pozwalają opracowywać oprogramowanie w taki sposób, że zachowuje się w ten sam sposób na wszystkich platformach UNIX.
Linki i referencje
Dziękuję
Autor chciałby podziękować Axel Beckert i Veit Schiele za pomoc i porady podczas przygotowywania tego artykułu.