POSIX - POSIX
Status | Opublikowany |
---|---|
Rok rozpoczęty | 1988 |
Ostatnia wersja | Standard IEEE 1003.1-2017 2017 |
Organizacja | Austin Group ( IEEE Computer Society , The Open Group , ISO/IEC JTC 1 ) |
Powiązane standardy | ISO / IEC 9945 |
Domena | Interfejsy programowania aplikacji |
Skrót | POSIX |
Strona internetowa | uzyskać |
Interfejs przenośnego systemu operacyjnego ( POSIX ) to rodzina standardów określonych przez IEEE Computer Society w celu zachowania kompatybilności między systemami operacyjnymi . POSIX definiuje zarówno interfejsy programowania aplikacji (API) na poziomie systemu, jak i użytkownika , wraz z powłokami wiersza poleceń i interfejsami narzędzi, dla zgodności oprogramowania (przenośności) z wariantami Unixa i innych systemów operacyjnych. POSIX jest również znakiem towarowym IEEE. POSIX jest przeznaczony do użytku zarówno przez programistów aplikacji, jak i systemów.
Nazwa
Pierwotnie nazwa „POSIX” odnosiła się do IEEE Std 1003.1-1988, wydanej w 1988 roku. Rodzina standardów POSIX jest formalnie oznaczona jako IEEE 1003, a numer normy ISO/IEC to ISO / IEC 9945.
Standardy wyłoniły się z projektu, który rozpoczął się około 1985 roku. Richard Stallman zasugerował IEEE nazwę POSIX (wymawianą jako pahz-icks, a nie jako poh-six ) zamiast dawnej IEEE-IX . Komisja uznała go za łatwiejszy do wymówienia i zapadający w pamięć i dlatego go przyjął.
Przegląd
Unix został wybrany jako podstawa standardowego interfejsu systemowego, częściowo dlatego, że był „neutralny dla producenta”. Jednak istniało kilka głównych wersji Uniksa, więc istniała potrzeba opracowania systemu wspólnego mianownika. Specyfikacje POSIX dla uniksopodobnych systemów operacyjnych pierwotnie składały się z pojedynczego dokumentu dla podstawowego interfejsu programistycznego , ale ostatecznie rozrosły się do 19 oddzielnych dokumentów (POSIX.1, POSIX.2 itd.). Znormalizowany wiersz poleceń użytkownika i interfejs skryptów były oparte na powłoce UNIX System V. Wiele programów, usług i narzędzi na poziomie użytkownika (w tym awk , echo , ed ) zostało również ustandaryzowanych, wraz z wymaganymi usługami na poziomie programu (w tym podstawowe operacje we/wy : plik , terminal i sieć ). POSIX definiuje również standardowe API biblioteki wątków obsługiwane przez większość nowoczesnych systemów operacyjnych. W 2008 roku większość części POSIX została połączona w jeden standard (IEEE Std 1003.1-2008 , znany również jako POSIX.1-2008).
Od 2014 roku dokumentacja POSIX jest podzielona na dwie części:
- POSIX.1, 2013 Edition: POSIX Base Definitions, System Interfaces oraz Commands and Utilities (w tym POSIX.1, rozszerzenia dla POSIX.1, Real-time Services, Threads Interface, Real-time Extensions, Security Interface, Network File Access i komunikacji sieciowej między procesami, rozszerzeń przenośności użytkownika, poprawek i rozszerzeń, narzędzi ochrony i kontroli oraz narzędzi systemu wsadowego. To jest POSIX 1003.1-2008 z technicznym sprostowaniem 1.)
- Testowanie zgodności z POSIX: Zestaw testów dla POSIX jest dołączony do standardu: VSX-PCTS lub VSX POSIX Conformance Test Suite .
Rozwój standardu POSIX odbywa się w Austin Group (wspólnej grupie roboczej IEEE, The Open Group i ISO/IEC JTC 1 ).
Wersje
Części przed 1997 r.
Przed 1997 r. POSIX obejmował kilka standardów:
-
POSIX.1 : Usługi podstawowe (zawiera standard ANSI C ) (IEEE Std 1003.1-1988)
- Tworzenie i kontrola procesu
- Sygnały
- Operacje na plikach i katalogach
- Rury
- Biblioteka C (standardowa C)
- Interfejs portu we/wy i sterowanie
- Wyzwalacze procesu
-
POSIX.1b : Rozszerzenia czasu rzeczywistego (IEEE Std 1003.1b-1993, później pojawiające się jako librt — biblioteka rozszerzeń czasu rzeczywistego))
- Planowanie priorytetowe
- Sygnały w czasie rzeczywistym
- Zegary i timery
- Semafory
- Przekazywanie wiadomości
- Pamięć współdzielona
- Asynchroniczne i synchroniczne we/wy
- Interfejs blokowania pamięci
-
POSIX.1c : Rozszerzenia wątków (IEEE Std 1003.1c-1995)
- Tworzenie, kontrola i czyszczenie wątków
- Planowanie wątków
- Synchronizacja wątków
- Obsługa sygnału
-
POSIX.2 : Powłoka i narzędzia (standard IEEE 1003.2-1992)
- Tłumacz poleceń
- Programy użytkowe
Wersje po 1997 roku
Po 1997 roku Austin Group opracowała poprawki POSIX. Specyfikacje są znane pod nazwą Single UNIX Specification , zanim staną się standardem POSIX po formalnym zatwierdzeniu przez ISO.
POSIX.1-2001 (z dwoma TC)
POSIX.1-2001 (lub IEEE Std 1003.1-2001) odpowiada specyfikacji Single UNIX w wersji 3.
Ten standard składał się z:
- Definicje Podstawowe, wydanie 6,
- Interfejsy systemowe i nagłówki, wydanie 6,
- Polecenia i narzędzia, wydanie 6.
IEEE Std 1003.1-2004 obejmował niewielką aktualizację POSIX.1-2001. Zawierała dwie drobne aktualizacje lub erraty, zwane sprostowaniami technicznymi (TC). Jego zawartość jest dostępna w sieci.
POSIX.1-2008 (z dwoma Najlepszymi Współtwórcami)
Specyfikacje podstawowe, wydanie 7 (lub IEEE Std 1003.1-2008 , edycja 2016) są podobne do aktualnej wersji 2017 (stan na 22 lipca 2018).
Ten standard składa się z:
- Definicje Podstawowe, wydanie 7,
- Interfejsy systemowe i nagłówki, wydanie 7,
- Polecenia i narzędzia, wydanie 7,
- objętość uzasadnienia.
POSIX.1-2017
IEEE Std 1003.1-2017 (Revision of IEEE Std 1003.1-2008) - IEEE Standard for Information Technology — Portable Operating System Interface (POSIX(R)) Podstawowe specyfikacje, wydanie 7 jest dostępne w The Open Group lub IEEE i jest, od 22 lipca 2018 r. obowiązuje norma. Pod względem technicznym jest identyczny z POSIX.1-2008 z zastosowanymi sprostowaniami technicznymi 1 i 2. Bezpłatna kopia online może być nadal dostępna.
Kontrowersje
512- vs 1024-bajtowe bloki
POSIX nakazuje 512-bajtowe domyślne rozmiary bloków dla narzędzi df i du , odzwierciedlające typowy rozmiar bloków na dyskach. Kiedy Richard Stallman i zespół GNU wdrażali POSIX dla systemu operacyjnego GNU , sprzeciwili się temu na tej podstawie, że większość ludzi myśli w kategoriach 1024 bajtowych (lub 1 KiB ) bloków. Zmienna środowiskowa POSIX_ME_HARDER została wprowadzona, aby umożliwić użytkownikowi wymuszenie zachowania zgodnego ze standardami. Nazwa zmiennej została później zmieniona na POSIXLY_CORRECT . Ta zmienna jest teraz używana również w wielu innych dziwactwach związanych z zachowaniem.
Systemy operacyjne zorientowane na POSIX
W zależności od stopnia zgodności ze standardami można sklasyfikować systemy operacyjne jako w pełni lub częściowo zgodne z POSIX. Certyfikowane produkty można znaleźć na stronie IEEE.
Certyfikat POSIX
Niektóre wersje następujących systemów operacyjnych posiadają certyfikat zgodności z jednym lub kilkoma różnymi standardami POSIX. Oznacza to, że przeszły automatyczne testy zgodności.
W większości zgodny z POSIX
Poniższe, chociaż nie są oficjalnie certyfikowane jako zgodne z POSIX, są w dużej mierze zgodne:
- Android (dostępny przez Android NDK)
- BeOS (a następnie Haiku )
- Contiki
- Darwin (rdzeń macOS i iOS )
- Dragonfly BSD
- FreeBSD
- iluminaci
- Linux (większość dystrybucji — zobacz Linux Standard Base )
- LynxOS
- MINIX (obecnie MINIX3 )
- MPE/iX
- NetBSD
- Jądro RTOS
- NuttX
- OpenBSD
- OpenSolaris
- PikeOS RTOS dla systemów wbudowanych z opcjonalnymi partycjami PSE51 i PSE52; zobacz partycję (mainframe)
- Redox
- RTEMS – obsługa POSIX API zaprojektowana zgodnie ze standardem IEEE Std. 1003.13-2003 PSE52
- SkyOS
- Sylaba
- VSTa
- VMware ESXi
- VxWorks ( VxWorks jest często używany jako powłoka wokół nie-POSIXowych jąder — tj. TiMOS/SROS )
- Xenix
POSIX dla Microsoft Windows
- Cygwin zapewnia środowisko programistyczne i wykonawcze w dużej mierze zgodne z POSIX dla Microsoft Windows .
- MinGW , rozwidlenie Cygwin , zapewnia środowisko programistyczne mniej zgodne z POSIX i obsługuje kompatybilne aplikacje programowane w C za pośrednictwem Msvcrt , starej biblioteki wykonawczej Visual C firmy Microsoft.
- Podsystem Microsoft POSIX , opcjonalny podsystem Windows zawarty w systemach operacyjnych opartych na Windows NT aż do Windows 2000. POSIX-1 w wersji z 1990 roku, bez wątków i gniazd.
- Interix , pierwotnie OpenNT firmy Softway Systems, Inc., jest uaktualnieniem i zamiennikiem podsystemu Microsoft POSIX, który został zakupiony przez firmę Microsoft w 1999 roku. Początkowo był sprzedawany jako samodzielny produkt dodatkowy, a następnie zawierał go jako składnik w Windows Services for UNIX (SFU) i ostatecznie włączono go jako składnik w systemie Windows Server 2003 R2 i nowszych wersjach systemu operacyjnego Windows pod nazwą „Podsystem dla aplikacji opartych na systemie UNIX” (SUA); później przestarzałe w 2012 (Windows 8) i usunięte w 2013 (2012 R2, 8.1). Umożliwia pełną zgodność z POSIX dla niektórych produktów Microsoft Windows .
- Podsystem Windows dla systemu Linux , znany również jako WSL, to warstwa kompatybilności do uruchamiania binarnych plików wykonywalnych systemu Linux natywnie w systemie Windows 10 przy użyciu obrazu systemu Linux, takiego jak między innymi Ubuntu, Debian lub OpenSUSE, działając jako aktualizacja i zamiennik dla usług systemu Windows dla systemu UNIX. Został wydany w wersji beta w kwietniu 2016 roku. Pierwszą dostępną dystrybucją był Ubuntu.
- UWIN firmy AT&T Research implementuje warstwę POSIX na wierzchu interfejsów API Win32.
- MKS Toolkit , pierwotnie stworzony dla MS-DOS, to pakiet oprogramowania wyprodukowany i utrzymywany przez MKS Inc., który zapewnia środowisko podobne do Uniksa do tworzenia skryptów, łączności i przenoszenia oprogramowania Unix i Linux zarówno na 32-, jak i 64-bitowe systemy Microsoft Windows . Podzbiór tego został zawarty w pierwszym wydaniu Windows Services for UNIX (SFU) w 1998 roku.
- Windows C Runtime Library i Windows Sockets API implementują powszechnie używane funkcje API POSIX dla dostępu do plików, czasu, środowiska i gniazd, chociaż obsługa pozostaje w dużej mierze niekompletna i nie jest w pełni interoperacyjna z implementacjami zgodnymi z POSIX.
POSIX dla OS/2
Głównie środowiska zgodne z POSIX dla OS/2 :
- emx+gcc – w dużej mierze zgodne z POSIX
POSIX dla DOS
Częściowo zgodne z POSIX środowiska dla DOS obejmują:
- emx+gcc – w dużej mierze zgodne z POSIX
- DJGPP – częściowo zgodny z POSIX
- Wielozadaniowy rdzeń DR-DOS za pośrednictwem EMM386 /MULTI – dostępne jest rozszerzenie interfejsu API wątków POSIX
Zgodny dzięki warstwie kompatybilności
Poniższe nie są oficjalnie certyfikowane jako kompatybilne z POSIX, ale są zgodne w dużej mierze ze standardami poprzez implementację obsługi POSIX poprzez jakąś cechę kompatybilności (zwykle biblioteki translacji lub warstwę na jądrze). Bez tych funkcji są one zwykle niezgodne.
- eCos – POSIX jest częścią standardowej dystrybucji i jest używany przez wiele aplikacji. Sekcja „linki zewnętrzne” poniżej zawiera więcej informacji.
- AmigaOS (poprzez bibliotekę ixemul)
- MorphOS (poprzez wbudowaną bibliotekę ixemul)
- OpenVMS (poprzez opcjonalny pakiet POSIX)
- Plan 9 firmy Bell Labs APE — środowisko ANSI/POSIX
- RIOT (poprzez opcjonalny moduł POSIX)
- Symbian OS z PIPS (PIPS to POSIX na Symbianie)
-
Jądro Windows NT podczas korzystania z Microsoft SFU 3.5 lub SUA
- Windows 2000 Server lub Professional z dodatkiem Service Pack 3 lub nowszym . Aby być zgodnym z POSIX, należy aktywować opcjonalne funkcje Windows NT i Windows 2000 Server.
- Windows XP Professional z dodatkiem Service Pack 1 lub nowszym
- Windows Server 2003
- Windows Server 2008 oraz wersje Ultimate i Enterprise systemu Windows Vista
- Windows Server 2008 R2 oraz wersje Ultimate i Enterprise systemu Windows 7
- choć przestarzałe, nadal dostępne dla wersji Windows Server 2012 i Enterprise systemu Windows 8
- Usługi systemowe UNIX działające w systemie z/OS (certyfikat zgodności)
Zobacz też
- Sygnał POSIX
- Wątki POSIX
- Projekt TRON – alternatywne standardy OS do POSIX
- Common User Access – Standardowy interfejs użytkownika
- Interix – w pełni funkcjonalny podsystem środowiska POSIX i Unix dla systemów operacyjnych Microsoft Windows NT
- Biblioteka C POSIX
- System operacyjny czasu rzeczywistego
- Przenośny zestaw znaków , zestaw 103 znaków, który powinien być obsługiwany w dowolnym języku zgodnym z POSIX
Bibliografia
Zewnętrzne linki
- "Strona główna certyfikacji POSIX" . Grupa otwarta/IEEE.