Zarówno jądro Linuksa jak i jądro macOS są oparte na systemie UNIX. Niektórzy mówią, że macOS to „linux”, inni, że oba są kompatybilne z powodu podobieństw między komendami i hierarchią systemu plików.
Dzisiaj chcę pokazać trochę obu, pokazując różnice i podobieństwa między jądrem Linux & jądrem Mac, jak wspomniałem w poprzednich artykułach o jądrze Linux.
Table of Contents
Jądro macOS
W 1985 roku Steve Jobs opuścił Apple z powodu braku porozumienia z CEO Johnem Sculleyem i zarządem Apple. Następnie założył nową firmę komputerową o nazwie NeXT. Jobs chciał, aby nowy komputer (z nowym systemem operacyjnym) został szybko wypuszczony na rynek. Aby zaoszczędzić czas, NeXT zespół użył Carnegie Mellon Mach jądro i części bazy kodu BSD do tworzenia systemu operacyjnego NeXTSTEP.
NeXT nigdy nie stał się sukcesem finansowym, w części ze względu na zwyczaj Jobsa wydawania pieniędzy, jakby był jeszcze w Apple. Tymczasem Apple bezskutecznie próbował uaktualnić swój system operacyjny na kilka okazji, nawet partnerstwo z IBM. W 1997 roku Apple kupiło NeXT za 429 milionów dolarów. W ramach transakcji Steve Jobs wrócił do Apple, a NeXTSTEP stał się fundamentem macOS i iOS.
Jądro Linuksa
W przeciwieństwie do jądra macOS, Linux nie został stworzony jako część komercyjnego przedsięwzięcia. Zamiast tego, został stworzony w 1991 roku przez studenta informatyki Linusa Torvaldsa. Pierwotnie, jądro zostało napisane zgodnie ze specyfikacją komputera Linusa, ponieważ chciał on wykorzystać swój nowy procesor 80386.
Linus umieścił kod swojego nowego jądra w sieci w sierpniu 1991 roku. Wkrótce zaczął otrzymywać sugestie dotyczące kodu i zasobów na całym świecie. W następnym roku Orest Zborowski przeportował X Windows System do Linuksa, dając mu możliwość obsługi graficznego interfejsu użytkownika.
Zasoby jądra macOS
Jądro macOS jest oficjalnie znane jako XNU. Akronim ten oznacza „XNU is Not Unix” (XNU to nie Unix). Według oficjalnej strony Apple w Github, XNU jest „hybrydowym jądrem, które łączy w sobie jądro Mach opracowane na Uniwersytecie Carnegie Mellon z FreeBSD i komponentami C++ dla sterowników.”
Część kodu dotycząca podsystemu BSD jest „normalnie implementowana jako serwery przestrzeni użytkownika w systemach mikrokernelowych”. Część Mach jest odpowiedzialna za niskopoziomowe prace, takie jak wielozadaniowość, pamięć chroniona, zarządzanie pamięcią wirtualną, wsparcie debugowania jądra oraz konsolowe I/O.
Mapa macOS: serce wszystkiego nazywa się Darwin; a w jego obrębie mamy oddzielne narzędzia systemowe oraz jądro XNU, które składa się w części z jądra Mach oraz z jądra BSD.
W przeciwieństwie do Linuksa, to jądro jest podzielone na to, co nazywają jądrem hybrydowym, pozwalając jednej jego części zatrzymać się na czas konserwacji, podczas gdy inna kontynuuje pracę. W kilku debatach to również otworzyło kwestię faktu, że jądro hybrydowe jest bardziej stabilne; jeśli jedna z jego części się zatrzyma, druga może ją ponownie uruchomić.
Zasoby jądra Linuksa
Podczas gdy jądro macOS łączy możliwości mikrokernela z Mach i jądra monolitycznego jak BSD, Linux jest po prostu jądrem monolitycznym. Jądro monolityczne jest odpowiedzialne za zarządzanie procesorem, pamięcią, komunikacją międzyprocesową, sterownikami urządzeń, systemem plików i wywołaniami usług systemowych. To znaczy, robi wszystko bez podziałów.
Oczywiście, to już wywołało wiele dyskusji nawet z samym Linusem i innymi deweloperami, którzy twierdzą, że jądro monolityczne jest bardziej podatne na błędy oprócz tego, że jest wolniejsze; ale Linux jest tego przeciwieństwem każdego roku i może być zoptymalizowany jako jądro hybrydowe. Ponadto, z pomocą RedHat, jądro zawiera teraz Live Patch, który pozwala na konserwację w czasie rzeczywistym bez konieczności restartu.
Różnice między jądrem macOS (XNU) i Linux
- Jądro macOS (XNU) istnieje dłużej niż Linux i zostało oparte na połączeniu dwóch jeszcze starszych baz kodowych. To waży na korzyść, dla stabilności i historii.
- Z drugiej strony, Linux jest nowszy, napisany od podstaw i używany na wielu innych urządzeniach; tak bardzo, że jest obecny we wszystkich 500 najlepszych wśród najlepszych superkomputerów i w niedawno zainaugurowanym superkomputerze północnoamerykańskim.
W zakresie systemu, nie mamy menedżera pakietów poprzez wiersz poleceń w terminalu macOS.
Instalacja pakietów w formacie .pkg – takich jak BSD – jest poprzez ten wiersz poleceń, jeśli nie poprzez GUI:
$ sudo installer -pkg /path/to/package.pkg -target /
UWAGA: MacOS .pkg jest zupełnie inny niż BSD .pkg!
Nie myśl, że macOS obsługuje programy BSD i vice versa. Nie wspiera i nie instaluje. Możesz mieć komendę równoważną apt w macOS, pod 2 opcjami:
Instalacja Homebrew lub MacPorts. Na końcu będziesz miał następującą składnię:$ brew install PACKAGE
$ port install PACKAGE
Pamiętaj, że nie wszystkie programy/pakiety dostępne dla Linuksa lub BSD będą w MacOS Ports.
Kompatybilność
W kwestii kompatybilności nie ma wiele do powiedzenia; rdzeń Darwina i jądro Linuksa są tak różne, jak porównanie jądra Windows NT z jądrem BSD. Sterowniki napisane dla Linuksa nie działają na macOS i vice versa. Muszą być wcześniej skompilowane; Co ciekawe, Linux posiada szereg daemonów macOS, w tym serwer wydruku CUPS!
To, co mamy we wspólnej kompatybilności, to w rzeczywistości narzędzia terminalowe, takie jak pakiety GNU Utils lub Busybox, więc mamy nie tylko BASH, ale także gcc, rm, dd, top, nano, vim, itd. I to jest nieodłączny element wszystkich aplikacji opartych na UNIX-ie. Dodatkowo, mamy architekturę folderów systemu plików, wspólne foldery wspólne dla root w /, / lib, / var, / etc, / dev, i tak dalej.
Wnioski
macOS i Linux mają swoje podobieństwa i różnice, tak jak BSD w porównaniu do Linux. Ale ponieważ są one oparte na UNIX, mają wspólne wzorce, które sprawiają, że są znane w środowisku. Ci, którzy używają Linuksa i migrują pro macOS lub odwrotnie, będą zaznajomieni z wieloma komendami i funkcjami.
Najbardziej rzucającą się w oczy różnicą byłby interfejs graficzny, którego problem byłby kwestią osobistej adaptacji.
LinuxAndUbuntu hosting jest sponsorowany przez massiveGRID
.
Dodaj komentarz