Często spotykam się z terminem „unix-like” na wielu stronach internetowych.
Nie ma standardu; jest tak, jak się zachowuje.
Ale jeśli miałbym opracować jądro od zera, co sprawiłoby, że uznano by go za „uniksopodobny”?
Zasadniczo, jakie są rzeczy, które tworzą kod napisany jak Unix?
linux
unix-philosophy
brakuje jednego aksonu
źródło
źródło
Odpowiedzi:
Wierzę, że większość „uniksowych” systemów operacyjnych podejmuje bardzo poważny wysiłek, aby zastosować się do standardu POSIX , który jest nadzorowany przez Open Group, która kontroluje również specyfikację Single UNIX, która definiuje „prawdziwy UNIX”. Ten pierwszy jest rdzeniem tego drugiego.
Tak więc istnieje standard określający praktyczne cechy systemów operacyjnych typu unix . Przejrzyj listę „w pełni” i „głównie” zgodnych systemów operacyjnych na końcu artykułu w Wikipedii na temat POSIX.
Istnieje kilka oczywistych powodów, dla których linux w szczególności może nie być uważany za w pełni zgodny ze specyfikacją Single Unix Specification (SUS), ale nie dzieje się tak, ponieważ jakikolwiek system linux jest z nim niekoniecznie kompatybilny. Artykuł w Wikipedii podsumowuje specyfikację w ten sposób:
Odnosi się to oczywiście w szczególności do wielu komponentów użytkownika (takich jak powłoka), które po prostu nie są częścią jądra Linuksa. Więc nie ma mowy, żeby linux.org et. glin. może mieć certyfikat samego jądra - w tym sensie wcale nie jest to system operacyjny. Mogą oczywiście próbować certyfikować jakiś konkretny system za pomocą jądra, ale byłoby to bez znaczenia w świetle ogólnego schematu dystrybucji: jądro i ludzie, którzy go utrzymują, są niezależni od ludzi, którzy utrzymują rdzeń użytkownika (GNU) którzy są niezależni od ludzi, którzy utrzymują rzeczywiste złożone wersje systemu operacyjnego (Debian, Fedora itp.).
Podejrzewam, że Debian lub Fedora sami mogliby zaangażować się w proces certyfikacji (więc np. RedHat Enterprise może stać się „certyfikowanym unixem”), ale rodzi to pytanie, czy tak naprawdę jest to pożądane. Zakładam, że głównym powodem, dla którego systemy SUS są uruchamiane (na skalę komercyjną, nie-konsumenckie), jest oprogramowanie napisane dla takich systemów, co po prostu nie jest niszą linuksową - ludzie, którzy to robią, zapłacą tysiące dolarów za licencję na system operacyjny, w tym wiele wsparcia itp., ponieważ płacą także dziesiątki lub setki tysięcy dolarów za licencję za każde dodatkowe oprogramowanie, które chcą uruchomić w systemie. Z drugiej strony Linux i inne wartości odstające mają na celu osiągnięcie celów projektowych wykraczających poza zwykłą zgodność do celów komercyjnych, i istnieją różne przykłady tego, np. (Zhttp://en.wikipedia.org/wiki/STREAMS ):
Interesujące zakwaterowanie, które podkreśla, że SUS i The Open Group! = Linux,! = BSD itp.
źródło
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 :
UNIX98 :
UNIX95 (mój nacisk):
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.
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.
źródło