Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

POSIX

wtorek,

POSIX

POSIX, co jest skrótem od "Portable Operating System Interface", to rodzina standardów określonych przez IEEE (Instytut Inżynierów Elektryków i Elektroników) mających na celu zapewnienie kompatybilności między różnymi systemami operacyjnymi. Standardy POSIX zostały zaprojektowane, aby oprogramowanie napisane dla jednego systemu operacyjnego zgodnego z POSIX było, z niewielkimi modyfikacjami, przenośne na inny system zgodny z tym standardem. Warto wspomnieć, że standard POSIX nie jest statyczny i ewoluuje, a zgodność z nim może różnić się w zależności od wersji standardu i systemu operacyjnego. Ponadto niektóre systemy mogą implementować tylko część standardów POSIX, co oznacza częściową zgodność.

Główne cele i cechy POSIX

Przenośność oprogramowania

Głównym celem POSIX jest ułatwienie przenoszenia oprogramowania między różnymi systemami operacyjnymi. Dzięki standaryzacji interfejsów API, komend i innych zachowań systemu operacyjnego, programiści mogą pisać oprogramowanie, które będzie działać na różnych platformach bez konieczności dokonywania znaczących zmian. Standardy POSIX odegrały kluczową rolę w ujednolicania systemów operacyjnych typu UNIX, co znacznie ułatwiło tworzenie przenośnego i interoperacyjnego oprogramowania.

Zgodność z systemem UNIX

POSIX opiera się na tradycyjnych systemach operacyjnych typu UNIX, standaryzując wiele aspektów tych systemów. Obejmuje to zarówno interfejsy programowania (API) języka C, jak i interfejsy powłoki komend (shell).

Standardy

POSIX definiuje standardy dotyczące wielu aspektów systemu operacyjnego, w tym dotyczące zarządzania procesami, zarządzania plikami, interfejsów programowania aplikacji (API) oraz skryptów powłoki.

Wsparcie dla wielowątkowości

Standardy POSIX obejmują również definicje dotyczące programowania wielowątkowego, co jest istotne dla wydajności i skalowalności współczesnych aplikacji.

Współpraca między systemami

Standardy POSIX ułatwiają współpracę i integrację między różnymi systemami operacyjnymi, co jest szczególnie ważne w środowiskach serwerowych i w chmurze.

Zastosowanie

POSIX jest szeroko stosowany w różnych systemach operacyjnych, w tym w Linuxie, macOS i UNIX. Chociaż Windows nie jest w pełni zgodny z POSIX, oferuje niektóre kompatybilne interfejsy, szczególnie w środowiskach profesjonalnych i serwerowych.

Wymagania POSIX

Standardy POSIX (Portable Operating System Interface) określają szereg wymagań, które system operacyjny musi spełniać, aby być uznany za zgodny z POSIX. Są one szeroko zakrojone i dotyczą różnych aspektów systemu operacyjnego, w tym zarządzania procesami, zarządzania plikami, interfejsów programowania aplikacji (API), obsługi błędów, a także skryptów powłoki. Mają na celu zapewnienie, że oprogramowanie napisane dla jednego systemu zgodnego z POSIX będzie działać z co najwyżej minimalnymi modyfikacjami na innym systemie zgodnym z tym standardem. Poniżej znajdziesz niektóre z wymagań POSIX.

Interfejsy programowania aplikacji (API)

  • Muszą być zaimplementowane standardowe API, które umożliwiają interakcję z systemem operacyjnym, np. tworzenie i zarządzanie procesami, operacje na plikach, obsługa sygnałów, zarządzanie pamięcią i komunikacja międzyprocesowa.
  • API powinny być zgodne z językiem C, co pozwala na szeroką portowalność aplikacji.

Obsługa wielowątkowości

  • System musi zapewniać wsparcie dla programowania wielowątkowego, w tym zarządzania wątkami, synchronizacji i komunikacji między wątkami.

Powłoka systemowa i narzędzia

  • Musi być dostępna standardowa powłoka komend (shell), która obsługuje określony zestaw poleceń i składnię skryptów.
  • Powinien być dostępny standardowy zestaw narzędzi i programów użytkowych.

Zarządzanie procesami

  • System powinien umożliwiać tworzenie, planowanie, kontrolowanie i zakończenie procesów.

System plików i operacje na plikach

  • Musi być obsługiwana standardowa hierarchia systemu plików oraz operacje na plikach, takie jak tworzenie, usuwanie, odczyt, zapis i modyfikacja atrybutów plików.

Obsługa sygnałów

  • System musi obsługiwać sygnały, które są mechanizmem komunikacji i kontroli między procesami.

Obsługa błędów

  • Muszą być dostępne mechanizmy raportowania i obsługi błędów.

Kompatybilność

  • Systemy powinny być w stanie współpracować z innymi systemami zgodnymi z POSIX, np. poprzez sieci i protokoły komunikacyjne.

Dokumentacja

  • Wymagana jest adekwatna dokumentacja funkcji systemowych i interfejsów.

Testy zgodności

  • Istnieją zestawy testów zgodności, które pomagają producentom systemów operacyjnych w weryfikacji zgodności z POSIX.

Kto ustanawia standardy POSIX?

Standardy POSIX (Portable Operating System Interface) są wydawane przez IEEE (Institute of Electrical and Electronics Engineers), konkretnie przez grupę roboczą IEEE Computer Society's POSIX, znanej również jako IEEE 1003. IEEE jest międzynarodową organizacją non-profit skupiającą profesjonalistów z branży technologicznej, która opracowuje i publikuje szeroki zakres standardów dla różnych dziedzin techniki i informatyki. Ponadto The Open Group, organizacja zajmująca się tworzeniem standardów i certyfikacją w dziedzinie IT, także odgrywa znaczącą rolę w rozwijaniu i promowaniu standardów POSIX. Współpracuje ona z IEEE oraz z ANSI (American National Standards Institute) w celu zapewnienia spójności i aktualności standardów POSIX.

Standardy są wynikiem współpracy wielu ekspertów i inżynierów z różnych organizacji i firm, mających na celu stworzenie uniwersalnego zestawu wytycznych dla systemów operacyjnych, co ma na celu ułatwienie kompatybilności, przenośności oprogramowania i interoperacyjności w środowiskach opartych na UNIX i innych podobnych systemach.

Rodzina standardów POSIX

Standardy POSIX, znane również jako IEEE 1003, obejmują serię norm opracowanych, aby zapewnić kompatybilność i przenośność między różnymi systemami operacyjnymi typu Unix. Poniżej znajduje się przegląd niektórych standardów POSIX. Każda z tych rewizji miała na celu aktualizację i rozszerzenie funkcjonalności systemów operacyjnych zgodnie z rosnącymi wymaganiami technologicznymi i ewoluującym krajobrazem informatycznym.

  • POSIX.1 (IEEE Std 1003.1) – jest to podstawowy standard dla systemów operacyjnych typu Unix. Zawiera definicje API dla operacji na systemie plików, zarządzania procesami, sygnałów, i wielu innych funkcji systemowych. POSIX.1 został pierwotnie opublikowany w 1988 roku i od tego czasu był wielokrotnie aktualizowany, w tym w 1990, 2001 (zawierający również Single UNIX Specification), 2004, i 2008.
  • POSIX.1b (IEEE Std 1003.1b-1993) – ten standard, znany również jako POSIX.4, wprowadza wsparcie dla czasu rzeczywistego i programowania wielowątkowego.
  • POSIX.1c (IEEE Std 1003.1c-1995) – rozszerza POSIX.1 o funkcje dotyczące wątków (threads), co jest istotne dla obsługi aplikacji wielowątkowych.
  • POSIX.2 (IEEE Std 1003.2) – standard ten dotyczy narzędzi i interfejsów powłoki (shell). Określa standardowe narzędzia i skrypty powłoki, które powinny być dostępne w systemie.
  • POSIX.1-2001 (IEEE Std 1003.1-2001) – znany również jako POSIX.3, jest to połączenie standardów POSIX.1, POSIX.1b, i POSIX.1c. Zawiera też Single UNIX Specification Version 3.
  • POSIX.1-2008 (IEEE Std 1003.1-2008) – ostatnia duża rewizja standardu, łącząca wszystkie poprzednie wersje POSIX.1, 1b, i 1c oraz Single UNIX Specification Version 4.

Norma ISO/IEC 9945:2003

Norma ISO/IEC 9945:2003 jest międzynarodowym standardem, który odnosi się do serii standardów POSIX (Portable Operating System Interface). Jest to wydanie wspólnie opracowane przez Międzynarodową Organizację Normalizacyjną (ISO) i Międzynarodową Komisję Elektrotechniczną (IEC). Norma ISO/IEC 9945:2003 odgrywa kluczową rolę w standaryzacji systemów operacyjnych, umożliwiając tworzenie bardziej zintegrowanego i przenośnego oprogramowania w środowisku komputerowym, które jest coraz bardziej zróżnicowane i globalne.

Kluczowe punkty normy ISO/IEC 9945:2003

  • Zakres – norma ta obejmuje specyfikacje dotyczące interfejsów systemu operacyjnego, w tym interfejsów API, skryptów powłoki oraz narzędzi użytkowych, zgodnie z tradycyjnymi systemami operacyjnymi typu UNIX.
  • Cele – głównym celem tej normy jest zapewnienie przenośności aplikacji na poziomie źródłowym (source-code level) pomiędzy różnymi systemami operacyjnymi. Standard ma na celu umożliwienie aplikacjom działanie na różnych systemach bez konieczności modyfikacji.
  • Kompatybilność z POSIX – ISO/IEC 9945:2003 jest zgodna z serią standardów POSIX, szczególnie z POSIX.1. Jest to efekt współpracy międzynarodowej, mającej na celu integrację i harmonizację standardów w dziedzinie systemów operacyjnych.
  • Uwzględnienie poprzednich wersji – standard ten integruje i zastępuje kilka wcześniejszych wydań norm ISO dotyczących POSIX, upraszczając i standaryzując dotychczasowe regulacje.
  • Zastosowanie – norma jest wykorzystywana przez producentów systemów operacyjnych do projektowania i aktualizacji swoich produktów w taki sposób, aby były kompatybilne z szerokim zakresem aplikacji i narzędzi. Jest również ważnym odniesieniem dla programistów tworzących oprogramowanie przenośne między systemami.

Niektóre systemy zgodne z POSIX

Oto niektóre systemy operacyjne, które są zgodne z POSIX lub przynajmniej oferują znaczną zgodność.

  • GNU/Linux – większość dystrybucji Linuxa jest w dużym stopniu zgodna z POSIX. Chociaż poszczególne dystrybucje mogą wprowadzać własne rozszerzenia, podstawowa funkcjonalność systemu zazwyczaj przestrzega standardów POSIX.
  • macOS (i wcześniej OS X) – systemy operacyjne firmy Apple dla jej komputerów są certyfikowanymi systemami zgodnymi z POSIX. System macOS bazuje na Darwinie, który jest pochodną BSD, jednego z tradycyjnych odmian systemu Unix.
  • BSD – rodzina systemów BSD (FreeBSD, OpenBSD, NetBSD itp.) również przestrzega standardów POSIX. Są to bezpośrednie potomstwa oryginalnego systemu Unix i są znane z wysokiego stopnia zgodności z POSIX.
  • Solaris – system operacyjny Solaris firmy Oracle (wcześniej Sun Microsystems) jest kolejnym systemem bazującym na Unixie, który jest zgodny z POSIX.
  • AIX – Advanced Interactive eXecutive (AIX) firmy IBM to system operacyjny typu Unix, który również spełnia standardy POSIX.
  • HP-UX – HP-UX (Hewlett Packard Unix) jest kolejnym systemem Unixowym, który jest zgodny z POSIX.
  • Unix – oryginalny Unix oraz jego bezpośrednie pochodne są zgodne z POSIX.

POSIX i Windows

Systemy operacyjne Windows firmy Microsoft z definicji nie są w pełni zgodne z POSIX, ponieważ są oparte na zupełnie innym rdzeniu niż systemy UNIX, z których wywodzi się standard POSIX. Niemniej jednak w różnych wersjach Windows istniały możliwości do zapewnienia pewnego poziomu zgodności z POSIX. Każde z tych rozwiązań ma swoje specyficzne zastosowania i ograniczenia. Obecnie najbardziej zaawansowaną i zintegrowaną opcją dla użytkowników Windows, którzy potrzebują funkcjonalności Unix w środowisku Windows jest WSL. Cygwin i MinGW/MSYS są bardziej odpowiednie dla specyficznych przypadków użycia, takich jak rozwój oprogramowania przenośnego lub uruchamianie poszczególnych narzędzi Unix.

SFU (Services for UNIX) / SUA (Subsystem for UNIX-based Applications)

  • W niektórych starszych wersjach systemu Windows, jak Windows XP i Windows Server 2003, Microsoft oferował „Services for UNIX” (SFU), a później „Subsystem for UNIX-based Applications” (SUA) w Windows Vista i Windows 7.
  • Te narzędzia umożliwiały uruchamianie aplikacji POSIX na systemie Windows i zawierały narzędzia, środowisko powłoki i inne komponenty.

WSL (Windows Subsystem for Linux)

  • W nowszych wersjach Windows Microsoft wprowadził Windows Subsystem for Linux (WSL). WSL pozwala na uruchamianie dystrybucji Linuxa bezpośrednio na Windows, umożliwiając użytkownikom korzystanie z narzędzi, aplikacji i środowisk programistycznych dostępnych w Linuxie.
  • WSL1 emulował jądro Linuxa, natomiast WSL2 wykorzystuje prawdziwe jądro Linuxa w wirtualizowanym środowisku, oferując lepszą wydajność i kompatybilność.

Cygwin

  • Cygwin to niezależne od Microsoftu narzędzie, które dostarcza środowisko podobne do Unix na Windows. Zapewnia ono dużą część standardowego interfejsu POSIX, w tym kompilatory, powłoki i narzędzia Unix.
  • Jest to popularne rozwiązanie dla użytkowników, którzy chcą używać narzędzi Unixowych lub rozwijać aplikacje przenośne na Windows.

MinGW/MSYS

  • MinGW (Minimalist GNU for Windows) i MSYS (Minimal SYStem) to kolejne narzędzia, które zapewniają część funkcjonalności Unix na Windows, głównie poprzez dostarczenie kompilatora GCC i powiązanych narzędzi.
Artykuł: Slackware

Slackware

Artykuł: Virtual Desktop Infrastructure

Virtual Desktop Infrastructure

Artykuł: Wirtualizacja: Overcommitment

Wirtualizacja: Overcommitment

Artykuł: Marc Andreessen

Marc Andreessen

Artykuł: Zakończenie staży

Zakończenie staży

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły