POSIX
POSIX (ang. Portable Operating System Interface for UNIX) – przenośny interfejs dla systemu operacyjnego Unix.
POSIX to odpowiedź na próby standaryzacji różnych odmian systemu operacyjnego Unix. Prace nad tym standardem rozpoczęto ok. roku 1985, a kierowało nimi stowarzyszenie IEEE, dlatego POSIX znany jest również pod nazwą IEEE 1003. Nad dalszym rozwojem standardu sprawuje pieczę The Open Group we współpracy z IEEE i firmami komputerowymi takimi jak: IBM, Sun Microsystems, Hewlett-Packard, NEC Corporation, Fujitsu, Hitachi. Kolejne edycje standardu wydawane przez The Open Group noszą nazwy Single UNIX Specification, Version x, gdzie x to kolejny numer wersji. Aktualna wersja jest trzecią, a pojawiła się w roku 2001. Od roku 2003 jest to norma międzynarodowa ISO/IEC 9945:2003.
Nazwę „POSIX” zaproponował Richard Stallman[1].
POSIX standaryzuje:
- interfejs programistyczny (API);
- interfejs użytkownika, np. polecenia systemowe takie jak awk, echo, ed;
- właściwości powłoki systemowej.
Zasady te ujęte są w około piętnastu różnych dokumentach.
Implementacje
edytujPOSIX dotyczy przede wszystkim systemów klasy UNIX. Implementacje POSIX zawarte zostały w systemach takich jak Mac OS X 10.5, QNX, BeOS i AtheOS / Syllable. GNU/Linux oraz FreeBSD są w znacznym stopniu lub często nawet w pełni zgodne z tym standardem. Niektóre z dystrybucji Linuksa, np. Linux-FT[2] czy Unifix Linux[3], przeszły pomyślnie procedury testowe i uzyskały świadectwo zgodności. Dla użytkowników Microsoft Windows dostępne są środowiska Cygwin i Interix, które umożliwiają w tym systemie korzystanie z POSIX-owego interfejsu programistycznego.
Rodzina standardów POSIX
edytujP1003.1
- Definiuje interfejs aplikacji tak, aby była ona w pełni przenośna pomiędzy różnymi systemami operacyjnymi.
- Interfejs ten bazuje na modelach systemu UNIX.
- Zawiera zbiór funkcji które są często implementowane jako wywołania systemowe.
P1003.1a
- Zestaw różnych interpretacji, wyjaśnień i rozszerzeń (linki symboliczne).
P1003.1b (poprzednio POSIX.4)
- Rozszerzenia dotyczące systemów czasu rzeczywistego.
- semafory (binarne),
- proces blokowania pamięci,
- pliki mapowane w pamięci i współdzielona pamięć,
- kolejkowanie priorytetowe,
- sygnały w czasie rzeczywistym,
- liczniki czasu (timers),
- komunikacja międzyprocesowa
- synchroniczne operacje wejścia/wyjścia (I/O),
- asynchroniczne operacje wejścia/wyjścia (I/O),
P1003.1c (poprzednio POSIX.4a)
- Dodanie funkcji wspierających wątki (lekkie procesy).
P1003.1d (poprzednio POSIX.4b)
- Kolejne rozszerzenia wspierające systemy czasu rzeczywistego.
P1003.1e (poprzednio POSIX 6)
- Rozszerzenia dotyczące bezpieczeństwa systemu spełniające kryteria bezpieczeństwa opublikowane przez Departament Obrony USA w 'Trusted Computer System Evaluation Criteria' (TCSEC).
P1003.1f (poprzednio POSIX.8), P1003.1g (poprzednio POSIX.12), P1003.1h, P1003.2, P1003.2b, P1003.2c, P1003.2d (poprzednio POSIX.15), P1003.3, P1003.5, P1387 (poprzednio POSIX.7), P1003.9, P1003.10, P1003.11, P1003.13, P1003.14, P1003.16, P1224.2 (poprzednio POSIX.17), POSIX.18, POSIX.19, POSIX.20, POSIX.21, POSIX.0
POSIX.1-2017
edytujBezpłatna kopia online[4]
Koszty
edytujPonieważ IEEE wymaga wysokich opłat za dokumentację POSIX i nie zezwala na jej publikację w Internecie, powstał standard Single UNIX Specification. Jest on otwarty, uwzględnia uwagi od każdego i jest wolnodostępny. Procedury standaryzacyjne i związane z nimi testy PCTS ((ang.) POSIX Conformance Test Suite czyli „Zestaw testów zgodności z POSIX”), są obecnie kosztowne, a implementacja, która przejdzie testy, może uzyskać świadectwo zgodności ze standardem POSIX.