A Linux kernel és a macOS kernel is UNIX-alapú. Egyesek szerint a macOS “linux”, mások szerint a parancsok és a fájlrendszer-hierarchia hasonlósága miatt mindkettő kompatibilis.

A mai napon mindkettőből szeretnék egy kicsit bemutatni, bemutatva a Linux kernel & Mac kernel közötti különbségeket és hasonlóságokat, ahogy azt a korábbi Linux kernel cikkekben említettem.

Tartalomjegyzék

A macOS kernele

1985-ben Steve Jobs elhagyta az Apple-t, mivel nem értett egyet John Sculley vezérigazgatóval és az Apple igazgatótanácsával. Ezután egy új számítógépes céget alapított NeXT néven. Jobs egy új számítógépet akart (új operációs rendszerrel), amelyet gyorsan ki akart adni. Hogy időt takarítson meg, a NeXT csapata a Carnegie Mellon Mach kernelét és a BSD kódbázis egyes részeit használta fel a NeXTSTEP operációs rendszer létrehozásához.

NeXTSTEP asztali operációs rendszer

A NeXT soha nem lett pénzügyi siker, részben Jobs azon szokása miatt, hogy úgy költekezett, mintha még mindig az Apple-nél lenne. Eközben az Apple többször is sikertelenül próbálkozott operációs rendszerének frissítésével, még az IBM-mel is társult. 1997-ben az Apple 429 millió dollárért megvásárolta a NeXT-et. Az üzlet részeként Steve Jobs visszatért az Apple-hez, és a NeXTSTEP lett a macOS és az iOS alapja.

Linux kernel

A macOS kernellel ellentétben a Linux nem egy kereskedelmi vállalkozás részeként jött létre. Ehelyett 1991-ben hozta létre Linus Torvalds számítógépes diák. A kernelt eredetileg Linus számítógépének specifikációi szerint írta, mert ki akarta használni az új 80386-os processzorának előnyeit.

Linus 1991 augusztusában tette közzé új rendszermagjának kódját az interneten. Hamarosan világszerte kapott kód- és erőforrásjavaslatokat. A következő évben Orest Zborowski átültette az X Windows rendszert Linuxra, így az képes volt grafikus felhasználói felület támogatására.

MacOS kernel erőforrások

A macOS kernel hivatalosan XNU néven ismert. A betűszó az “XNU is Not Unix” rövidítése. Az Apple hivatalos Github-oldala szerint az XNU “egy hibrid kernel, amely a Carnegie Mellon Egyetemen kifejlesztett Mach kernelt kombinálja a FreeBSD-vel és az illesztőprogramok C++ komponenseivel”.

A kód BSD alrendszeri része “általában a mikrokerneles rendszerekben felhasználói térbeli kiszolgálóként valósul meg”. A Mach rész felelős az olyan alacsony szintű munkákért, mint a multitasking, a védett memória, a virtuális memóriakezelés, a kernel hibakeresés támogatása és a konzol I/O.

macos kernel erőforrások

A MacOS térképe: mindennek a szívét Darwinnak hívják; és ezen belül vannak külön rendszer segédprogramok és az XNU kernel, amelyet részben a Mach kernel, részben a BSD kernel alkot.

A Linuxszal ellentétben ez a kernel fel van osztva, amit ők hibrid kernelnek hívnak, ami lehetővé teszi, hogy az egyik része leálljon karbantartás miatt, míg a másik tovább működik. Ez több vitában is felvetette azt a kérdést, hogy a hibrid kernel stabilabb; ha az egyik része leáll, a másik újra tudja indítani.

Linux kernel erőforrásai

Míg a macOS kernel a Mach és a BSD-hez hasonló monolitikus kernel képességeit egyesíti, addig a Linux csak egy monolitikus kernel. Egy monolitikus kernel felelős a CPU, a memória, a folyamatok közötti kommunikáció, az eszközillesztők, a fájlrendszer és a rendszerszolgáltatási hívások kezeléséért. Vagyis mindent alosztályok nélkül csinál.

Nyilván ez már magával Linusszal és más fejlesztőkkel is sok vitát váltott ki, akik azt állítják, hogy egy monolitikus kernel amellett, hogy lassabb, sokkal hibaérzékenyebb is; a Linux azonban ennek minden évben az ellenkezője, és hibrid kernelként optimalizálható. Ráadásul a RedHat segítségével a kernel ma már Live Patch-et is tartalmaz, amely lehetővé teszi a valós idejű karbantartást, újraindítás nélkül.

A MacOS kernel (XNU) és a Linux közötti különbségek

  1. A macOS kernel (XNU) régebb óta létezik, mint a Linux, és két még régebbi kódbázis kombinációján alapul. Ez a stabilitás és a történelem miatt mellettünk szól.
  2. A Linux viszont újabb, a semmiből íródott és sok más eszközön is használják; olyannyira, hogy a legjobbak közül mind az 500 legjobb szuperszámítógépben és a nemrég felavatott észak-amerikai szuperszámítógépben is jelen van.

A rendszer hatókörében nincs csomagkezelő a parancssoron keresztül a macOS termináljában.

A .pkg formátumú csomagok telepítése – mint például a BSD – ezen a parancssoron keresztül történik, ha nem a GUI-n keresztül:

$ sudo installer -pkg /path/to/package.pkg -target /

Figyelem: A MacOS .pkg teljesen más, mint a BSD .pkg!

Ne gondoljuk, hogy a macOS támogatja a BSD programokat és fordítva. Nem támogatja és nem telepíti. Az apt-nek megfelelő parancsod van macOS-ben, 2 opció alatt:

A Homebrewor MacPorts telepítése. A végén a következő szintaxist kapod:$ brew install PACKAGE

$ port install PACKAGE

Ne feledd, hogy nem minden Linuxra vagy BSD-re elérhető program/csomag lesz a MacOS Portsban.

Kompatibilitás

A kompatibilitás szempontjából nem sok mindent lehet mondani; a Darwin mag és a Linux kernel annyira különbözik egymástól, mintha a Windows NT kernelt a BSD kernellel hasonlítanánk össze. A Linuxra írt meghajtók nem futnak a macOS-en és fordítva. Előzetesen le kell fordítani őket; Érdekes módon a Linuxnak van egy sor macOS démonja, köztük a CUPS nyomtatási szerver!

A közös kompatibilitásunk valójában a termináleszközök, mint a GNU Utils csomagok vagy a Busybox, így nemcsak a BASH, hanem a gcc, rm, dd, top, nano, vim stb. is. És ez minden UNIX-alapú alkalmazás velejárója. Ezen kívül megvan a fájlrendszer mappák architektúrája, a root közös mappái a /, / lib, / var, / etc, / dev, és így tovább.

Következtetés

macOS és a Linux között vannak hasonlóságok és különbségek, akárcsak a BSD a Linuxhoz képest. De mivel a UNIX-on alapulnak, közösek a mintáik, amelyek ismertté teszik őket a környezetben. Azok, akik Linuxot használnak és áttérnek pro macOS-re vagy fordítva, számos parancsot és funkciót ismerni fognak.

A legszembetűnőbb különbség a grafikus felület lenne, amelynek problémája személyes alkalmazkodás kérdése lenne.


A LinuxAndUbuntu tárhelyét a massiveGRID

szponzorálja.