Zowel de Linux kernel als de macOS kernel zijn UNIX-gebaseerd. Sommige mensen zeggen dat macOS “Linux” is, anderen zeggen dat beide compatibel zijn vanwege overeenkomsten tussen commando’s en de hiërarchie van het bestandssysteem.

Vandaag wil ik een beetje van beide laten zien, door de verschillen en overeenkomsten tussen Linux Kernel & Mac kernel te laten zien zoals ik in eerdere Linux kernel artikelen heb vermeld.

Table of Contents

Kernel van macOS

In 1985 verliet Steve Jobs Apple als gevolg van een meningsverschil met CEO John Sculley en Apple’s raad van bestuur. Hij richtte toen een nieuw computerbedrijf op, NeXT genaamd. Jobs wilde een nieuwe computer (met een nieuw besturingssysteem) snel uitbrengen. Om tijd te besparen gebruikte het NeXT-team de Carnegie Mellon Mach-kernel en delen van de BSD-codebase om het NeXTSTEP-besturingssysteem te maken.

NeXTSTEP desktop-besturingssysteem

NeXT is nooit een financieel succes geworden, deels door Jobs’ gewoonte om geld uit te geven alsof hij nog steeds bij Apple werkte. Ondertussen heeft Apple meerdere malen tevergeefs geprobeerd om zijn besturingssysteem te updaten, waarbij het zelfs met IBM in zee is gegaan. In 1997 kocht Apple NeXT voor 429 miljoen dollar. Als onderdeel van de deal keerde Steve Jobs terug naar Apple en NeXTSTEP werd de basis van macOS en iOS.

Linux kernel

In tegenstelling tot de macOS kernel, werd Linux niet gemaakt als onderdeel van een commerciële onderneming. In plaats daarvan werd het in 1991 gemaakt door computerstudent Linus Torvalds. Oorspronkelijk werd de kernel geschreven volgens de specificaties van Linus’ computer, omdat hij gebruik wilde maken van zijn nieuwe 80386-processor.

Linus plaatste de code voor zijn nieuwe kernel in augustus 1991 op het web. Al snel kreeg hij wereldwijd suggesties voor code en bronnen. Het jaar daarop portte Orest Zborowski het X Windows System naar Linux, waardoor het de mogelijkheid kreeg om een grafische gebruikersinterface te ondersteunen.

MacOS kernel resources

De macOS kernel staat officieel bekend als XNU. Het acroniem staat voor “XNU is Not Unix.” Volgens de officiële Github-pagina van Apple is XNU “een hybride kernel die de Mach-kernel, ontwikkeld aan de Carnegie Mellon University, combineert met FreeBSD en C++-componenten voor de stuurprogramma’s.”

Het BSD subsysteem deel van de code is “normaal geïmplementeerd als userspace servers in microkernel systemen”. Het Mach-deel is verantwoordelijk voor werkzaamheden op laag niveau, zoals multitasking, beschermd geheugen, virtueel geheugenbeheer, ondersteuning voor kernel-debugging en console I/O.

macos kernel resources

Map van MacOS: het hart van alles heet Darwin; en daarbinnen hebben we aparte systeemhulpprogramma’s en de XNU-kernel, die in delen is samengesteld door de Mach-kernel en door de BSD-kernel.

In tegenstelling tot Linux, is deze kernel opgesplitst in wat zij noemen de hybride kernel, waardoor een deel ervan kan stoppen voor onderhoud, terwijl een ander deel blijft werken. In verschillende debatten heeft dit ook de vraag doen rijzen of een hybride kernel stabieler is; als een van de delen stopt, kan het andere het weer starten.

Linux kernel resources

Terwijl de macOS kernel de mogelijkheden van een microkernel met Mach en een monolithische kernel zoals BSD combineert, is Linux gewoon een monolithische kernel. Een monolithische kernel is verantwoordelijk voor het beheer van CPU, geheugen, inter-proces communicatie, device drivers, bestandssysteem, en systeem service calls. Dat wil zeggen dat het alles doet zonder onderverdeling.

Hierover is natuurlijk al veel gediscussieerd, zelfs met Linus zelf en andere ontwikkelaars, die beweren dat een monolithische kernel niet alleen trager is, maar ook gevoeliger is voor fouten; maar Linux is elk jaar het tegenovergestelde, en kan worden geoptimaliseerd als een hybride kernel. Bovendien bevat de kernel nu, met de hulp van RedHat, een Live Patch die real-time onderhoud mogelijk maakt zonder dat een reboot nodig is.

Verschillen tussen MacOS Kernel (XNU) en Linux

  1. De macOS kernel (XNU) bestaat al langer dan Linux en is gebaseerd op een combinatie van twee nog oudere codebases. Dit weegt in het voordeel, voor stabiliteit en geschiedenis.
  2. Aan de andere kant is Linux nieuwer, vanaf nul geschreven en gebruikt op vele andere apparaten; zoveel dat het aanwezig is in alle 500 beste onder de beste supercomputers en in de onlangs ingehuldigde Noord-Amerikaanse supercomputer.

In het systeembereik hebben we geen package manager via de opdrachtregel in de macOS terminal.

De installatie van de pakketten in .pkg formaat – zoals BSD – is via deze opdrachtregel, zo niet via de GUI:

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

NOTE: MacOS .pkg is totaal verschillend van BSD .pkg!

Denk niet dat macOS BSD programma’s ondersteunt en vice versa. Het ondersteunt niet en installeert niet. Je kunt een commando equivalent aan apt in macOS, onder 2 opties:

Installeren van Homebrewor MacPorts. Uiteindelijk zult u de volgende syntaxis hebben:$ brew install PACKAGE

$ port install PACKAGE

Bedenk dat niet alle programma’s/pakketten die beschikbaar zijn voor Linux of BSD in MacOS Ports zullen staan.

Compatibiliteit

In termen van compatibiliteit valt er niet veel te zeggen; de Darwin kern en de Linux kernel zijn net zo verschillend als het vergelijken van de Windows NT kernel met de BSD kernel. Drivers geschreven voor Linux draaien niet op macOS en vice versa. Ze moeten vooraf worden gecompileerd; Vreemd genoeg heeft Linux een reeks macOS daemons, waaronder de CUPS printserver!

Wat we aan compatibiliteit gemeen hebben zijn in feite terminalhulpmiddelen zoals GNU Utils pakketten of Busybox, dus we hebben niet alleen BASH maar ook gcc, rm, dd, top, nano, vim, enz. En dit is inherent aan alle UNIX-gebaseerde toepassingen. Daarnaast hebben we het bestandssysteem mappen architectuur, gemeenschappelijke mappen voor root in /, / lib, / var, / etc, / dev, enzovoort.

Conclusie

macOS en Linux hebben hun overeenkomsten en verschillen, net als BSD in vergelijking met Linux. Maar omdat ze gebaseerd zijn op UNIX, delen ze patronen die hen vertrouwd maken met de omgeving. Degenen die Linux gebruiken en pro macOS migreren of vice versa, zullen bekend zijn met een aantal commando’s en functies.

Het meest opvallende verschil zou de grafische interface zijn, waarvan het probleem een kwestie van persoonlijke aanpassing zou zijn.


LinuxAndUbuntu hosting wordt gesponsord door massiveGRID