Aby rozwinąć pierwszą odpowiedź na temat POSIX, aby zrozumieć, co oznacza „uniksopodobny”, najpierw należy spróbować zrozumieć, czym dokładnie jest UNIX. Patrząc na dokumentację Open Group , która jest właścicielem znaku towarowego Unix, znajdziesz szczegółowe informacje na temat ewolucji specyfikacji Single UNIX - oto UNIX03 :
Norma produktu UNIX 03 jest znakiem dla systemów zgodnych z wersją 3 specyfikacji Single UNIX. Jest to znacznie ulepszona wersja standardu produktu UNIX 98. Obowiązkowe udoskonalenia obejmują dostosowanie do ISO / IEC 9989: 1999 C Programming Language, IEEE Std 1003.1-2001 i ISO / IEC 9945: 2002. Ten standard produktu obejmuje następujące obowiązkowe standardy produktu: Międzynarodowe wywołania systemowe i biblioteki Rozszerzone V3, Polecenia i narzędzia V4, Język C V2 oraz Międzynarodowe interfejsy terminalowe.
UNIX98 :
Standard produktu UNIX 98 jest znacznie ulepszoną wersją standardu produktu UNIX 95. Obowiązkowe rozszerzenia obejmują (1) interfejsy wątków, (2) rozszerzenie obsługi wielobajtowej (MSE), (3) obsługę dużych plików, (4) dynamiczne łączenie, (5) zmiany w celu usunięcia zależności lub ograniczeń sprzętowych długości danych oraz (6) ) Zmiany w roku 2000. Ponadto uwzględniono następujące opcjonalne ulepszenia: narzędzia do administrowania oprogramowaniem i zestaw interfejsów API do obsługi w czasie rzeczywistym. Ten standard produktu obejmuje następujące obowiązkowe standardy produktu: Międzynarodowe połączenia systemowe i biblioteki Rozszerzone V2, Polecenia i narzędzia V3, Język C, Usługa transportowa (XTI) V2, Gniazda V2 i Międzynarodowe interfejsy terminalowe. Ponadto może być również zgodny ze standardem produktu do administrowania oprogramowaniem.
UNIX95 (mój nacisk):
Niniejszy standard produktu definiuje skonsolidowaną platformę do obsługi szerokiej gamy aplikacji pierwotnie opracowanych dla jednej z systemów operacyjnych, które zostały opracowane na podstawie kodu systemu operacyjnego UNIX i / lub interfejsów pierwotnie opracowanych przez AT&T , oprócz udostępnionych udogodnień według standardu produktu podstawowego. Ma szerszy zakres niż baza. Ten standard produktu obejmuje następujące standardy produktu: Rozszerzone międzynarodowe połączenia systemowe i biblioteki, Polecenia i narzędzia V2, Język C, Usługa transportowa (XTI), Gniazda i Międzynarodowe interfejsy terminalowe.
Wersje serwerowe standardu dodają w niektórych przypadkach serwer internetowy i IPv6.
Widzimy więc, że odniesienie do AT&T Bell Laboratories, a język C jest sednem tego, czym jest UNIX: język C, modułowe narzędzia podstawowe i powłoka oraz sposób, w jaki jądro, system plików i inne kluczowe komponenty systemu operacyjnego zostały zaprojektowane i wdrożone .
Właśnie tam książka The Design of UNIX Operating System autorstwa Maurice J. Bacha staje się nieocenioną lekturą, ponieważ w tym momencie ma ona znaczenie historyczne. Należy oczywiście zauważyć, w jaki sposób jest to związane z innymi wynalazkami, takimi jak język C. C został opracowany przez AT&T Bell do implementacji Uniksa w języku, który może być tak szybki jak asemblacja, ale przenośny na różnych urządzeniach, a wiele POSIX jest rozszerzeniem standardu C.
Jeśli chodzi o samo jądro, często znajduje się schemat koncepcyjny, taki jak ten, który ilustruje, o co tradycyjnie chodziło w jądrze UNIX:
Oto kilka fragmentów klasycznej książki pana Bacha (1986), która omawia podstawy jądra systemu UNIX System V.
Jednak wszystkie [podsystemy i programy aplikacji] korzystają z usług niższego poziomu ostatecznie dostarczanych przez jądro i korzystają z tych usług za pośrednictwem zestawu wywołań systemowych. System V zawiera około 64 wywołań systemowych, z których często używanych jest mniej niż 32. Mają proste opcje, dzięki którym są łatwe w użyciu, ale zapewniają użytkownikowi dużą moc. Zestaw wywołań systemowych i algorytmy wewnętrzne, które je implementują, tworzą jądro jądra [...]
[...] jego dwoma głównymi komponentami są podsystem plików i podsystem procesów.
Pliki są zorganizowane w systemy plików, które są traktowane jako urządzenia logiczne; urządzenie fizyczne, takie jak dysk, może zawierać kilka urządzeń logicznych (systemów plików). Każdy system plików ma superblok opisujący strukturę i zawartość systemu plików, a każdy plik w systemie plików jest opisany przez i-węzeł, który podaje atrybuty pliku. Wywołania systemowe, które manipulują plikami, robią to przez i-węzły. [i pula buforów]
[...] Istnieją dwie wersje i-węzła: kopia dysku, która przechowuje informacje i-węzła, gdy plik nie jest używany, oraz wewnętrzna kopia, która rejestruje informacje o aktywnych plikach.
Wykonywanie procesów użytkownika w systemach UNIX jest podzielone na dwa poziomy: użytkownik i jądro. Gdy proces wykonuje wywołanie systemowe, tryb realizacji procesu zmienia się z trybu użytkownika do trybu jądra : gdy sporządzi i próby systemu operacyjnego do obsługi żądania użytkownika [...]
[...] filozofią systemu UNIX jest dostarczanie prymitywów systemu operacyjnego, które umożliwiają użytkownikom pisanie małych, modułowych programów, które można wykorzystać jako bloki konstrukcyjne do budowania bardziej złożonych programów. Jednym z takich prymitywnych elementów widocznych dla użytkowników powłoki jest możliwość przekierowania we / wy .
[...] Oprócz obsługi wywołań systemowych, jądro zajmuje się ogólną księgowością dla społeczności użytkowników, kontrolowaniem planowania procesów, zarządzaniem przechowywaniem i ochroną procesów w pamięci głównej, przetwarzaniem przerwań, zarządzaniem plikami i urządzeniami oraz dbaniem o błąd systemowy warunki.
Jeśli interesują Cię różne implementacje jądra w systemach operacyjnych typu Unix, możesz także zajrzeć do implementacji FreeBSD (4.4BSD) lub jądra Macha lub spojrzeć na porównanie tych funkcji.
Im więcej wiesz o projekcie UNIX, tym bardziej rozumiesz, co stało się na poniższym diagramie o pochodzeniu UNIX i jego historii . Pan Bach mówi głównie o Systemie V w swojej książce, ale omawia także BSD:
Jest w tym coś więcej niż na pierwszy rzut oka . Na przykład Mac OSX ma certyfikat UNIX03, ale czy widzisz, że jest podłączony do jednego z czystych UNIXów (głównie w kolorze czerwonym)?
Powyżej widać, jak BSD, GNU, Microsoft i różne osoby przyczyniły się do powstania tego wszechświata. Mimo że GNU i ostatecznie Linux nie mają bezpośredniego rodowodu dla UNIX, widać, że GNU stara się przeprojektować w świecie open source narzędzia i oprogramowanie z komercyjnego UNIXa, które zostały zamknięte. Tak więc spojrzenie na utrzymywane oprogramowanie GNU daje pomysł na przykład na początkowe prototypowe aplikacje i biblioteki.
Wojny licencyjne odegrały pewną rolę w ewolucji (i czasami stagnacji) systemu UNIX. Od razu widać, że UNIXy są ustawione zgodnie z typem licencji - zamknięta vs. BSD ( BSD pozwala na zamknięcie kodu źródłowego ... patrz OSX) i GPL, która pozwala Linuxowi i GNU uzupełniać się w świecie copyleft. Oto klasyczna mapa jądra Linuksa opracowana początkowo przez Linusa Torvaldsa, która pokazuje także, jak „jądro” może być w systemie operacyjnym uniksopodobnym:
Wskazuje to na pomysł, że typ projektu „ jądra ” nie jest tym, co czyni standard UNIX ani tym, co definiuje system operacyjny typu unix. Dowodzi tego fakt, że wiele systemów uniksopodobnych może mieć monolityczne jądro lub mikrojądro - monolit był klasycznym typem projektu dla UNIX. W rzeczywistości, nawet w czystych systemach UNIX, HPUX ma monolityczne jądro, podczas gdy AIX używa mikrojądra. Ta debata na temat projektowania dotyczy wydajności i nie jest związana z pochodzeniem ani tożsamością Uniksa. Z drugiej strony istnieje tradycyjne koncepcyjne podejście do świadczenia usług dla oprogramowania, radzenia sobie z systemami plików itp. W systemach operacyjnych typu UNIX / unix.
Wierzę, że takie rozważania dodają kontekst do części twojego pytania dotyczącej systemu operacyjnego.