Czy jest jakaś podstawowa różnica między Uniksem a Linuksem w projektowaniu i innych aspektach? [Zamknięte]

24

Ciągle czytam to zdanie:

Linux jest systemem uniksopodobnym, ale nie jest to system uniksowy.

Nie wiem, jaka jest prawdziwa różnica między nimi. Wiem, że Linux ma wiele pomysłów od Uniksa, a ich licencje są różne. Poza tym, ponieważ nie jestem ekspertem w żadnym z nich, chcę wiedzieć, czy istnieją podstawowe różnice między nimi w zakresie projektowania lub innych istotnych aspektów.

Gnijuohz
źródło
2
czy mógłbyś wyjaśnić, gdzie to przeczytałeś? wyszukiwarka pokazuje mi Linux Kernel Development (3. wydanie) autorstwa Roberta Love'a, prawda?
komar

Odpowiedzi:

30

System „uniksopodobny” może być w pełni zgodny ze specyfikacją Single UNIX , zbiorczą nazwą standardów, które kwalifikują się jako system uniksowy, ale jednocześnie Unix jest zastrzeżonym znakiem towarowym The Open Group, a dostawcy systemów uniksowych potrzebują aby zarejestrować swoje systemy, aby oficjalnie kwalifikować się jako Unix. Obecnie zarejestrowanymi systemami UNIX 03 są:

  • Apple Inc .: Mac OS X wersja 10.5 Leopard na komputerach Mac z procesorem Intel
  • Apple Inc .: Mac OS X wersja 10.6 Snow Leopard na komputerach Mac z procesorem Intel
  • Fujitsu Limited: system operacyjny Solaris ™ 10 na 64-bitowych platformach SPARC® Fujitsu PRIMEPOWER®
  • Firma Hewlett-Packard: HP-UX 11i V3 wersja B.11.31 lub nowsza na serwerach HP Integrity
  • IBM Corporation: AIX 5L dla wersji POWER V5.2 z 8-2004 lub nowszej wersji z APAR: IY59610, IY60869, IY61405 z VAC 6.0.0.8 lub nowszą wersją w systemach pSeries CHRP
  • IBM Corporation: AIX 5L dla wersji POWER V5.3 z 7-2006 lub nowszej w systemach korzystających z architektury systemu CHRP z procesorami POWER ™
  • IBM Corporation: AIX 6 System operacyjny 6.1.1 z dodatkiem SP1 lub nowszym w systemach korzystających z architektury systemu CHRP z procesorami POWER ™ i 2, 8 lub 128 portowymi kartami asynchronicznymi
  • Oracle Corporation: Oracle Solaris 11 FCS i nowsze wersje na platformach opartych na SPARC, 32-bitowe i 64-bitowe oraz na platformach opartych na X86, 32-bitowe i 64-bitowe
  • Oracle Corporation: Solaris 10 System operacyjny plus łatka 118844-06 dla X86 i nowszych, w 64-bitowych systemach opartych na X86
  • Oracle Corporation: system operacyjny Solaris 10 i na systemach 32-bitowych i 64-bitowych opartych na SPARC
  • Oracle Corporation: system operacyjny Solaris 10 i nowsze, w 32-bitowych systemach opartych na X86

Dostawcy systemów uniksowych typu open source (głównie Linux i FreeBSD) zazwyczaj nie rejestrują się w The Open Group, aby uniknąć kosztów certyfikacji lub, cóż, ponieważ nie znajdują w tym dużej wartości. Teoretycznie jest całkowicie możliwe, że system uniksowy jest technicznie uniksowy, a brakuje mu tylko certyfikacji.

Z drugiej strony Linux Foundation stworzyło Linux Standard Base , standard ISO , starając się ujednolicić Linuksa. Zgodność z POSIX jest sercem zarówno SUS, jak i LSB, utrzymując w pewien sposób połączenie między Unixem a Linuksem.

Systemy uniksowe i podobne do nich są bardziej podobne niż różne, teoretycznie wszystkie popularne odmiany uniksowe, zarejestrowane lub nie, są zgodne z POSIX (pełne lub w większości), więc mają wspólny interfejs programowania, powłoki i narzędzia (i wiele innych rzeczy). IEEE i The Open Group przechowują bezpłatnie dostępną kopię najnowszej wersji, POSIX.1-2008 , w której można znaleźć więcej informacji na temat tego, co właściwie oznacza zgodność z POSIX.

Teraz, oprócz powodów prawnych i technicznych, Linux odziedziczył mantrę „nie Unixową” po swoim związku z GNU , systemem operacyjnym podobnym do Uniksa, zainicjowanym przez Richarda Stallmana. GNU oznacza „GNU nie jest Uniksem”, ponieważ intencją Stallmana było zbudowanie systemu kompatybilnego z Unixem, który byłby darmowy, a aby to zrobić, nie powinien zawierać kodu uniksowego, ponieważ Unix jest zastrzeżony.

Pierwsi programiści Linuksa zaczęli portować narzędzia GNU na Linuksa, a powstały system nazwano GNU / Linux już w 1992 roku . Od dawna istnieje spór o to, czy Linux powinien być nazywany Linux, czy GNU / Linux (ponieważ zawiera kilka części GNU), ale nie ma to znaczenia dla twojego pytania, istotne jest to, że „nie Unix” może po prostu odnosić się do skojarzenia z GNU i nie mają wiele wspólnego z jego wyglądem, w zależności od kontekstu.

Artykuł „Historia Linuksa” na Wikipedii wyjaśnia szczegółowo pochodzenie Linuksa i jego relacje z Unixem (przez Minix i GNU). Powinieneś również poświęcić trochę czasu na przeczytanie odnośników do artykułu, jeśli jesteś zainteresowany uczyć się więcej.

Yannis
źródło
dobra odpowiedź, poczekam i zobaczę, czy wybierz moją jako moją odpowiedź :)
Gnijuohz
8
@Gnijuohz Nie spiesz się z przyjmowaniem odpowiedzi, zawsze pozwól swojemu pytaniu dojrzewać przez dzień lub dwa (lub więcej, jeśli chcesz), możesz uzyskać wspaniałe odpowiedzi od osób, które nie zawracałyby sobie głowy odpowiedzią, gdyby zobaczyły, że już zaakceptowałeś odpowiedź. Akceptacja odpowiedzi zależy wyłącznie od Ciebie, nie musisz nawet akceptować, jeśli żadna z odpowiedzi nie była dla Ciebie pomocna, niezależnie od tego, jak zareagowała na nią społeczność.
yannis,
1
Co ciekawe, podobno najnowsza wersja OS X nie jest „oficjalnie” UNIX-em.
Kris Harper,
@ root45 Tego należy się spodziewać, ponieważ na sprawdzenie zgodności wersji potrzeba trochę czasu.
yannis
@YannisRizos Ah dobrze. To ma sens. Dzięki za informację.
Kris Harper,
4

UNIX to rodzina systemów operacyjnych, a obecnie UNIX jest bardziej marką należącą do The Open Group. Aby system operacyjny był opatrzony marką UNIX, musi przejść testy zgodności, a dla Linuksa oznaczałoby to, że każda dystrybucja (Ubuntu, Debian, Fedora, Red Hat itp.) Musiałaby przejść osobne testy zgodności dla każdej wersji . Jest to jeden z głównych powodów, dla których Linux jest systemem uniksowym, a nie UNIX.

Testy, o których wspomniałem, mają zapewnić zgodność systemu operacyjnego ze specyfikacją Single Unix, która jest obecnie w wersji 4 SUSv4 (Single Unix Specification wersja 4). Ta specyfikacja definiuje zestaw interfejsów API, które muszą być dostępne dla aplikacji, aby system mógł zostać zakwalifikowany do nazwy UNIX.

Raphael
źródło
Czy to dobry standard do naśladowania? Czy autorzy Linuksa próbują?
Job
1
To dobry, choć niekompletny standard. Współpracownicy jądra Linuksa starają się przestrzegać tego standardu, a Linux można nieoficjalnie uznać za system UNIX. Jeśli tworzysz aplikacje zgodne ze standardami Unix, prawdopodobnie zostaną one skompilowane i uruchomione w systemie Linux. Niestety, jak powiedziałem wcześniej, UNIX jest raczej niekompletny w niektórych aspektach, więc systemy operacyjne zapewniają dodatkowe interfejsy API dla niektórych zadań, a to sprawia, że ​​niektóre aplikacje zależą od platformy, ponieważ te dodatkowe interfejsy API są różne.
Raphael
Była dystrybucja o nazwie Linux-FT, która rozpoczęła proces certyfikacji POSIX, ale nic dziwnego, że sponsorom zabrakło pieniędzy. ukuug.org/newsletter/linux-newsletter/linux@uk12/ftinfo.shtml
Dzięki za te informacje! Zastanawiam się, czy ktoś nie próbował kiedykolwiek potwierdzić dystrybucji.
Raphael,
3

Istniejące odpowiedzi już wymieniają niektóre z różnic, których szukasz. Nie będąc ekspertem od jądra Linuksa, dodałbym również, że wiele różnic w projektowaniu / implementacji między GNU / Linux a różnymi Uniksami jest objętych serią wzorców projektowania jądra Linux .

sakisk
źródło
2

„UNIX” to skomplikowana sprawa. Jeśli chodzi o zgodność ze standardami, zarówno Solaris, jak i Mac OS X są „oficjalnie” uniksowe, ale nie musisz tracić dużo czasu, zanim znajdziesz dość duże różnice między nimi. Istnieje świetny schemat, który dokumentuje wydanie różnych odmian systemów operacyjnych UNIX lub UNIX-podobnych oraz ich wpływ na siebie i rozbieżności między nimi.

W wielkim schemacie rzeczy, które wyglądają, chodzą i kwakają jak UNIX, system Linux [*] jest jedną z bardziej konwencjonalnych wersji. Ludzie często odnoszą się do Unices lub * nix i oznaczają „cokolwiek podobnego do UNIX-a”, co prawdopodobnie obejmuje Linuksa. Jednak UNIX jest zastrzeżonym znakiem towarowym z ograniczeniami dotyczącymi jego komercyjnego zastosowania; żadna dystrybucja Linuksa nie spełnia tych ograniczeń.

[*] Ponieważ pytanie to zachęca do podziału semantycznego na włosy, myślę, że w tym przypadku tematem jest wskazanie, że sam Linux jest tylko jądrem, na którym można zbudować system operacyjny. Powszechne jest budowanie systemu podobnego do UNIX-a na Linuksie, do czego został zaprojektowany, i ten system jest zwykle zbudowany z komponentów projektu GNU. W powyższej odpowiedzi „Linux” można odczytywać jako „skrót od„ systemu operacyjnego zawierającego jądro Linux ”.


źródło
@YannisRizos Dodam odniesienie do odpowiedzi, to zdecydowanie jest certyfikowane.
Tak, masz absolutną rację, od systemu Leopard i nowszych Mac OS ma certyfikat UNIX 03, a oto kolejne odniesienie .
yannis,
2

Kiedyś przeczytałem, że Linux jest tym, co dostajesz, gdy bierzesz programistę na PC i prosi go o napisanie systemu operacyjnego Unix, podczas gdy FreeBSD jest tym, co dostajesz, gdy bierzesz programistę Unix i prosi go o stworzenie systemu operacyjnego na PC ... zapomnij o BSD w swoim porównaniu!

Różnice dotyczą głównie jądra, ponieważ aplikacje przestrzeni użytkownika (w tym takie jak ls) są częścią projektu GNU. Oznacza to, że Unix, FreeBSD i Linux wydają się być prawie takie same.

Istnieją jednak różnice, gdy przyjrzysz się uważnie. Układ katalogu będzie inny (ale wiele dystrybucji Linuksa używa własnych, w większości zgodnych, ale nadal różnych układów), systemy plików są różne (Unix używa UFS, FreeBSD używa FFS, Linux używa Ext3, aby być uproszczonym - wszystkie z nich mogą korzystać z portów typowe FS, np. ZFS)

Potem są różnice w podstawowych interfejsach API, Linux da ci interfejs API inotify, aby poinformować cię, kiedy zmieniają się pliki, Mac OSX daje FSEvent , a FreeBSD daje ci kolejkę .

Można więc uznać je za tę samą rodzinę - porównaj system Windows z narzędziami GNU do niego podłączonymi z systemem Linux z tymi samymi narzędziami. Będą tylko pozornie wyglądać tak samo, ale system Unix lub FreeBSD nadal będzie wyglądał porównywalnie. Jeśli przyjrzysz się bliżej, przekonasz się, że aplikacje do przenoszenia między FreeBSD, Unix i Linux są stosunkowo łatwe w porównaniu do przenoszenia do alternatywnych systemów operacyjnych, takich jak Windows.

gbjbaanb
źródło
1

Unix nie jest już pojedynczym systemem operacyjnym. Kiedyś była to implementacja Bell Labs / AT&T, ale teraz jest standardem.

Technicznie Linux jest tylko jądrem. Jądro to można znaleźć w systemach operacyjnych innych niż Unix, najpopularniejszym z nich jest Android. Z drugiej strony istnieje wiele systemów operacyjnych opartych na Linuksie, które są podobne do Uniksa. Większość (jeśli nie wszystkie) korzysta z bibliotek i narzędzi Gnu. Ta kombinacja zapewnia dystrybucję Linuksa Unix API i zgodność (lub niezgodność) ze standardami.

Standard Unix nie wymaga, aby zgodny system był zastrzeżony lub posiadać jakąkolwiek konkretną licencję. BSD, OpenSolaris / Illumos, darwin są przykładami wciąż wolnych od Linuksa implementacji Uniksa.

Systemy zgodne są zazwyczaj, ale nie zawsze, mieszanką zastrzeżonych i otwartych komponentów, podczas gdy Gnu / Linux może być albo w pełni Open Source, albo zawierać własności zastrzeżone.

Jeśli chodzi o zgodność z Uniksem, nie ma większych różnic. Większość dystrybucji Linuksa i implementacji Unixa korzysta z tego samego zestawu komend przy użyciu tego samego zestawu opcji. Znajdziesz jednak wiele rozszerzeń standardowych poleceń, szczególnie po stronie Gnu, gdzie są one nazywane gnuizmami, oraz liczne polecenia, które nie są zdefiniowane przez standardy w pierwszej kolejności (kompilatory, polecenia administracyjne, instalacja, pakowanie, środowisko graficzne). Jest to obszar, w którym można znaleźć wiele rozbieżności, niezgodności, a czasem świętych wojen.

Model programistyczny Gnu / Linux jest zwykle uważany za bardziej „organiczny” i „bazarowy”, podczas gdy inne systemy uniksowe są bardziej „zaprojektowane” i „katedralne”. W zależności od podsystemów różnica nie jest aż tak wyraźna i zależy od osób i / lub firm stojących za nimi.

jlliagre
źródło
1

Linux jest wyposażony w wiele narzędzi, takich jak:

  • System GUI
  • Narzędzia GNU (takie jak cp, mv, ls, date, bash itp.)
  • narzędzia do instalacji i zarządzania
  • Kompilatory GNU C / C ++
  • Redakcja (vi)
  • oraz różne aplikacje (takie jak OpenOffice, Firefox).

Jednak większość systemów operacyjnych UNIX jest uważana za kompletny system operacyjny, ponieważ wszystko pochodzi od jednego źródła lub dostawcy.

Niektóre rzeczy, które udostępniają:

  • GUI, menedżery plików i systemu Windows (KDE, Gnome)
  • Pociski (ksh, csh, bash)
  • Różne aplikacje biurowe, takie jak OpenOffice.org
  • Narzędzia programistyczne (perl, php, python, kompilatory GNU C / C ++)
  • Interfejs POSIX
Billjk
źródło
Linux rozwija się także w oparciu o filozofię uniksową ...
Job
2
Linux to nie tylko jądro, jądro Linux jest, no cóż, jądrem. Linux zwykle odnosi się do pełnego systemu zbudowanego wokół jądra Linux.
yannis,
@Anonimowy - Czasami, jeśli edytujesz i poprawisz swoją odpowiedź, downvoters mogą usunąć głos negatywny. Nie jest to gwarantowane, ale czasami pomaga. (Nie przegłosowałem, po prostu staram się być pomocny) :) Reszta twojej odpowiedzi jest prawidłowa, IMHO, więc pozbycie się rozbieżności może pomóc ci uzyskać jakieś pozytywne głosy / uniknąć dalszych głosów negatywnych.
jmort253
-7

Nie do końca, Linux był w końcu połączoną odwrotną inżynierią Unixa, więc projekt jądra był zgodny z filozofią Kena Thompsona. Sposób na Linuksa wydaje się polegać na jak najwierniejszym naśladowaniu filozofii uniksowej, bez obciążania siebie oryginalnymi myślami.

Samual Johnson
źródło
@YannisRizos Co rozumiesz przez „ale tak naprawdę nie był użyteczny”. AFAIK był w pełni użyteczny, ale ponieważ został napisany w asemblerze PDP, trudno było go przenieść w inne architektury.
sakisk
@ samual-johnson -1 Ponieważ nie tworzysz kopii zapasowej swoich oświadczeń za pomocą odniesień. Po raz pierwszy słyszę o „filozofii Kena Thompsona” (i to Thompson, a nie Thomson).
sakisk
1
@faif Sprawdzając moje referencje, podstawowe jądro, o którym mówiłem, zostało napisane dla GE-645, a nie PDP, więc trudno było nazwać je jądrem Uniksa. Usunąłem komentarz, ponieważ główny punkt i tak dotyczył braku odniesień, a twój komentarz wystarczy, aby przekazać tę wiadomość. - samual, proszę, poświęć trochę czasu, aby poprzeć swoje roszczenia solidnymi referencjami lub zmienić je na coś mniej opartego na opiniach.
yannis
@YannisRizos Ciekawe. Nie słyszałem o GE-645, która według Wikipedii była ulepszoną wersją Multics. Dzięki za informację.
sakisk