Både Linux-kernen og macOS-kernen er UNIX-baserede. Nogle siger, at macOS er “linux”, andre siger, at begge er kompatible på grund af ligheder mellem kommandoer og filsystemhierarki.

I dag vil jeg vise lidt af begge dele og vise forskellene og lighederne mellem Linux Kernel & Mac kernel, som jeg nævnte i tidligere Linux kernel artikler.

Indholdsfortegnelse

Kernel of macOS

I 1985 forlod Steve Jobs Apple på grund af en uenighed med CEO John Sculley og Apples bestyrelse. Han grundlagde derefter et nyt computerfirma ved navn NeXT. Jobs ønskede, at en ny computer (med et nyt styresystem) skulle udgives hurtigt. For at spare tid brugte NeXT-teamet Carnegie Mellon Mach-kernen og dele af BSD-kodebasen til at skabe NeXTSTEP-operativsystemet.

NeXTSTEP desktop-operativsystem

NeXT blev aldrig en økonomisk succes, hvilket til dels skyldes Jobs’ vane med at bruge penge, som om han stadig var hos Apple. I mellemtiden forsøgte Apple forgæves at opdatere sit styresystem ved flere lejligheder og indgik endda et samarbejde med IBM. I 1997 købte Apple NeXT for 429 millioner dollars. Som en del af handlen vendte Steve Jobs tilbage til Apple, og NeXTSTEP blev grundlaget for macOS og iOS.

Linux-kernen

I modsætning til macOS-kernen blev Linux ikke skabt som en del af en kommerciel virksomhed. Den blev i stedet skabt i 1991 af den computerstuderende Linus Torvalds. Oprindeligt blev kernen skrevet i overensstemmelse med specifikationerne for Linus’ computer, fordi han ønskede at udnytte sin nye 80386-processor.

Linus lagde koden til sin nye kerne ud på nettet i august 1991. Snart modtog han kode- og ressourceforslag verden over. Året efter porterede Orest Zborowski X Windows System til Linux, hvilket gav det mulighed for at understøtte en grafisk brugergrænseflade.

MacOS-kernens ressourcer

MacOS-kernen er officielt kendt som XNU. Akronymet står for “XNU is Not Unix” (XNU er ikke Unix). Ifølge Apples officielle Github-side er XNU “en hybridkerne, der kombinerer Mach-kernen, der er udviklet på Carnegie Mellon University, med FreeBSD- og C++-komponenter til driverne.”

BSD-subsystemets del af koden er “normalt implementeret som userspace-servere i mikrokerne-systemer”. Mach-delen er ansvarlig for arbejde på lavt niveau såsom multitasking, beskyttet hukommelse, forvaltning af virtuel hukommelse, støtte til fejlfinding i kernen og konsol-I/O.

macos-kernens ressourcer

Kort over MacOS: Hjertet i det hele hedder Darwin; og inden for det har vi separate systemværktøjer og XNU-kernen, som er sammensat i dele af Mach-kernen og af BSD-kernen.

I modsætning til Linux er denne kerne opdelt i det, de kalder hybridkernen, hvilket gør det muligt for en del af den at stoppe for vedligeholdelse, mens en anden del fortsætter med at arbejde. I flere debatter åbnede dette også spørgsmålet om, at en hybridkerne er mere stabil; hvis en af dens dele stopper, kan den anden starte den igen.

Linux-kernens ressourcer

Mens macOS-kernen kombinerer mulighederne fra en mikrokerne med Mach og en monolitisk kerne som BSD, er Linux bare en monolitisk kerne. En monolitisk kerne er ansvarlig for styring af CPU, hukommelse, kommunikation mellem processer, enhedsdrivere, filsystem og systemtjenesteopkald. Det vil sige, at den klarer alt uden underopdelinger.

Dette har naturligvis allerede givet anledning til megen diskussion, selv hos Linus selv og andre udviklere, som hævder, at en monolitisk kerne er mere modtagelig for fejl ud over at være langsommere; men Linux er det modsatte hvert år, og kan optimeres som en hybridkerne. Desuden indeholder kernen nu med hjælp fra RedHat en Live Patch, der giver mulighed for vedligeholdelse i realtid, uden at det er nødvendigt at genstarte.

Forskelle mellem MacOS-kernen (XNU) og Linux

  1. MacOS-kernen (XNU) har eksisteret i længere tid end Linux og var baseret på en kombination af to endnu ældre kodebaser. Dette vejer til fordel, for stabilitet og historie.
  2. På den anden side er Linux nyere, skrevet fra bunden og bruges på mange andre enheder; så meget, at det er til stede i alle 500 bedste blandt de bedste supercomputere og i den nyligt indviede nordamerikanske supercomputer.

I systemets omfang har vi ikke en pakkehåndtering via kommandolinjen i macOS-terminalen.

Installationen af pakker i .pkg-format – som BSD – sker via denne kommandolinje, hvis ikke via GUI’en:

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

BEMÆRK: MacOS .pkg er helt anderledes end BSD .pkg!

Tænk ikke, at macOS understøtter BSD-programmer og omvendt. Det understøtter ikke og installerer ikke. Du kan have en kommando der svarer til apt i macOS, under 2 muligheder:

Installation af Homebrewor MacPorts. I sidste ende vil du have følgende syntaks: $ brew install PACKAGE

$ port install PACKAGE

Husk, at ikke alle programmer/pakker, der er tilgængelige til Linux eller BSD, vil være i MacOS Ports.

Kompatibilitet

Med hensyn til kompatibilitet er der ikke meget at sige; Darwin-kernen og Linux-kernen er lige så forskellige, som hvis man sammenligner Windows NT-kernen med BSD-kernen. Drivere, der er skrevet til Linux, kan ikke køre på macOS og omvendt. De skal kompileres på forhånd; pudsigt nok har Linux en række macOS-dæmoner, bl.a. printserveren CUPS!

Det, vi har til fælles i kompatibilitet, er faktisk terminalværktøjer som GNU Utils-pakker eller Busybox, så vi har ikke kun BASH, men også gcc, rm, dd, top, nano, vim osv. Og dette er iboende i alle UNIX-baserede applikationer. Derudover har vi filsystemets mappearkitektur, fælles mapper fælles for root i /, / lib, / var, / etc, / dev osv.

Konklusion

macOS og Linux har deres ligheder og forskelle, ligesom BSD i forhold til Linux. Men fordi de er baseret på UNIX, har de fælles mønstre, der gør dem velkendte i miljøet. De, der bruger Linux og migrerer pro macOS eller omvendt, vil være bekendt med en række kommandoer og funktioner.

Den mest markante forskel vil være den grafiske grænseflade, hvis problem vil være et spørgsmål om personlig tilpasning.


LinuxAndUbuntu hosting er sponsoreret af massiveGRID