Både Linuxkärnan och macOS-kärnan är UNIX-baserade. Vissa säger att macOS är ”Linux”, andra säger att båda är kompatibla på grund av likheter mellan kommandon och filsystemhierarkin.

I dag vill jag visa lite av båda, visa skillnaderna och likheterna mellan Linuxkärnan & Mac-kärnan som jag nämnde i tidigare artiklar om Linuxkärnan.

Innehållsförteckning

Kärnan i macOS

I år 1985 lämnade Steve Jobs Apple på grund av en oenighet med vd John Sculley och Apples styrelse. Han grundade då ett nytt datorföretag kallat NeXT. Jobs ville att en ny dator (med ett nytt operativsystem) skulle släppas snabbt. För att spara tid använde NeXT-teamet Carnegie Mellon Mach-kärnan och delar av BSD-kodbasen för att skapa operativsystemet NeXTSTEP.

NeXTSTEP desktop operating system

NeXT blev aldrig någon ekonomisk succé, delvis på grund av Jobs vana att spendera pengar som om han fortfarande var kvar på Apple. Under tiden försökte Apple utan framgång uppdatera sitt operativsystem vid flera tillfällen och samarbetade till och med med IBM. 1997 köpte Apple NeXT för 429 miljoner dollar. Som en del av affären återvände Steve Jobs till Apple och NeXTSTEP blev grunden för macOS och iOS.

Linuxkärnan

Till skillnad från macOS-kärnan skapades Linux inte som en del av ett kommersiellt företag. Istället skapades den 1991 av datastudenten Linus Torvalds. Ursprungligen skrevs kärnan enligt specifikationerna för Linus dator eftersom han ville dra nytta av sin nya 80386-processor.

Linus lade ut koden för sin nya kärna på webben i augusti 1991. Snart fick han förslag på kod och resurser över hela världen. Året därpå portade Orest Zborowski X Windows System till Linux och gav det möjlighet att stödja ett grafiskt användargränssnitt.

Resurser för MacOS-kärnan

MacOS-kärnan är officiellt känd som XNU. Akronymen står för ”XNU is Not Unix”. Enligt Apples officiella Github-sida är XNU ”en hybridkärna som kombinerar Mach-kärnan som utvecklats vid Carnegie Mellon University med FreeBSD- och C++-komponenter för drivrutinerna”.

Den del av koden som utgör BSD-subsystemet är ”normalt implementerad som servrar i användarutrymmet i mikrokärnsystem”. Mach-delen ansvarar för arbete på låg nivå som multitasking, skyddat minne, hantering av virtuellt minne, stöd för felsökning i kärnan och konsol-I/O.

macos kernel resources

Karta över MacOS: Hjärtat i allting kallas Darwin, och inom det har vi separata systemverktyg och XNU-kärnan, som till viss del består av Mach-kärnan och av BSD-kärnan.

Till skillnad från Linux är denna kärna uppdelad i vad de kallar hybridkärnan, vilket gör det möjligt för en del av den att stanna för underhåll, medan en annan fortsätter att fungera. I flera debatter öppnade detta också frågan om att en hybridkärna är mer stabil; om en av dess delar stannar kan den andra starta den igen.

Linuxkärnans resurser

Men medan macOS-kärnan kombinerar möjligheterna hos en mikrokärna med Mach och en monolitisk kärna som BSD, är Linux bara en monolitisk kärna. En monolitisk kärna ansvarar för att hantera CPU, minne, kommunikation mellan processer, enhetsdrivrutiner, filsystem och systemtjänstanrop. Det vill säga, den gör allt utan underavdelningar.

Oppenbarligen har detta redan väckt mycket diskussion även hos Linus själv och andra utvecklare, som hävdar att en monolitisk kärna är mer mottaglig för fel förutom att den är långsammare; men Linux är motsatsen till detta varje år, och kan optimeras som en hybridkärna. Dessutom innehåller kärnan med hjälp av RedHat nu en Live Patch som möjliggör underhåll i realtid utan att det krävs någon omstart.

Skillnader mellan MacOS Kernel (XNU) och Linux

  1. MacOS-kärnan (XNU) har funnits längre än Linux och baserades på en kombination av två ännu äldre kodbaser. Detta talar för stabilitet och historia.
  2. Däremot är Linux nyare, skrivet från grunden och används på många andra enheter; så mycket att det finns i alla 500 bästa bland de bästa superdatorerna och i den nyligen invigda nordamerikanska superdatorn.

I systemets omfattning har vi ingen pakethanterare via kommandoraden i macOS-terminalen.

Installationen av paketen i .pkg-format – såsom BSD – sker via denna kommandorad, om inte via GUI:

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

NOTAT: MacOS .pkg skiljer sig helt från BSD .pkg!

Trosta inte att macOS stödjer BSD-program och vice versa. Det stöder inte och installerar inte. Du kan ha ett kommando som motsvarar apt i macOS, under 2 alternativ:

Installation av Homebrewor MacPorts. I slutändan får du följande syntax: $ brew install PACKAGE

$ port install PACKAGE

Håll i minnet att inte alla program/paket som finns tillgängliga för Linux eller BSD kommer att finnas i MacOS Ports.

Kompatibilitet

Inom kompatibilitet finns det inte mycket att säga; Darwinkärnan och Linuxkärnan är lika skilda som att jämföra Windows NT-kärnan med BSD-kärnan. Drivrutiner som är skrivna för Linux fungerar inte på macOS och vice versa. De måste kompileras i förväg; märkligt nog har Linux en rad macOS-demoner, bland annat utskriftsservern CUPS!

Vad vi har gemensamt när det gäller kompatibilitet är faktiskt terminalverktyg som GNU Utils-paket eller Busybox, så vi har inte bara BASH utan också gcc, rm, dd, top, nano, vim, etc. Och detta är inneboende i alla UNIX-baserade tillämpningar. Dessutom har vi filsystemets mapparkitektur, gemensamma mappar som är gemensamma för root i /, / lib, / var, / etc, / dev och så vidare.

Slutsats

macOS och Linux har sina likheter och skillnader, precis som BSD jämfört med Linux. Men eftersom de är baserade på UNIX har de gemensamma mönster som gör dem bekanta med miljön. De som använder Linux och migrerar pro macOS eller vice versa kommer att vara bekanta med ett antal kommandon och funktioner.

Den mest slående skillnaden skulle vara det grafiska gränssnittet, vars problem skulle vara en fråga om personlig anpassning.


LinuxAndUbuntu hosting is sponsored by massiveGRID