GNU/Linux >> Linux Esercitazione >  >> Linux

Kernel Linux vs. Kernel Mac

Sia il kernel Linux e il kernel macOS sono basati su UNIX. Alcune persone dicono che macOS è "linux", altri dicono che entrambi sono compatibili a causa delle somiglianze tra i comandi e la gerarchia del file system.

Oggi voglio mostrare un po' di entrambi, mostrando le differenze e le somiglianze tra il kernel Linux e il kernel Mac, come ho menzionato in precedenti articoli sul kernel Linux.

Kernel di macOS

Nel 1985, Steve Jobs lasciò la Apple a causa di un disaccordo con il CEO John Sculley e il consiglio di amministrazione di Apple. Ha quindi fondato una nuova società di computer chiamata NeXT. Jobs voleva che un nuovo computer (con un nuovo sistema operativo) venisse rilasciato rapidamente. Per risparmiare tempo, il team NeXT ha utilizzato il kernel Carnegie Mellon Mach e parti della base di codice BSD per creare il sistema operativo NeXTSTEP .

NeXT non è mai diventato un successo finanziario, in parte a causa dell'abitudine di Jobs di spendere soldi come se fosse ancora in Apple. Nel frattempo, Apple ha tentato senza successo di aggiornare il proprio sistema operativo in diverse occasioni, anche collaborando con IBM. Nel 1997, Apple ha acquistato NeXT per $ 429 milioni . Come parte dell'accordo, Steve Jobs tornato ad Apple e NeXTSTEP è diventato la base di macOS e iOS.

kernel Linux

A differenza di macOS kernel, Linux non è stato creato come parte di un'impresa commerciale. Invece, è stato creato nel 1991 dallo studente di informatica Linus Torvalds. In origine, il kernel è stato scritto secondo le specifiche del computer di Linus perché voleva sfruttare il suo nuovo processore 80386.

Linus pubblicò il codice per il suo nuovo kernel sul web nell'agosto 1991. Presto ricevette suggerimenti su codice e risorse in tutto il mondo. L'anno successivo, Orest Zborowski ha portato il sistema X Windows su Linux, dandogli la possibilità di supportare un'interfaccia utente grafica.

Risorse del kernel MacOS

Il kernel di macOS è ufficialmente noto come XNU. L'acronimo sta per "XNU is Not Unix". Secondo la pagina Github ufficiale di Apple, XNU è "un kernel ibrido che combina il kernel Mach sviluppato alla Carnegie Mellon University con i componenti FreeBSD e C++ per i driver".

La parte del codice del sottosistema BSD è "normalmente implementata come server dello spazio utente nei sistemi di microkernel". La parte Mach è responsabile del lavoro di basso livello come multitasking, memoria protetta, gestione della memoria virtuale, supporto per il debug del kernel e I/O della console.

Mappa di MacOS:il cuore di tutto si chiama Darwin; e al suo interno abbiamo utilità di sistema separate e il kernel XNU, che è composto in parte dal kernel Mach e dal kernel BSD.

A differenza di Linux, questo kernel è suddiviso in quello che chiamano kernel ibrido, consentendo a una parte di interrompersi per la manutenzione, mentre un'altra continua a funzionare. In diversi dibattiti questo ha anche aperto la questione del fatto che un kernel ibrido è più stabile; se una delle sue parti si ferma, l'altra può riavviarla.

Risorse del kernel Linux

Mentre il kernel macOS combina le capacità di un microkernel con Mach e un kernel monolitico come BSD, Linux è solo un kernel monolitico. Un kernel monolitico è responsabile della gestione di CPU, memoria, comunicazione tra processi, driver di dispositivo, file system e chiamate ai servizi di sistema. Cioè, fa tutto senza suddivisioni.

Ovviamente, questo ha già suscitato molte discussioni anche con lo stesso Linus e altri sviluppatori, i quali affermano che un kernel monolitico è più suscettibile di errori oltre ad essere più lento; ma Linux è l'opposto di questo ogni anno e può essere ottimizzato come kernel ibrido. Inoltre, con l'aiuto di RedHat , il kernel ora include una Live Patch che consente la manutenzione in tempo reale senza necessità di riavvio.

Differenze tra il kernel MacOS (XNU) e Linux

  1. Il kernel macOS (XNU) esiste da più tempo di Linux ed era basato su una combinazione di due basi di codice ancora più vecchie. Questo pesa a favore, per stabilità e storia.
  2. D'altra parte, Linux è più recente, scritto da zero e utilizzato su molti altri dispositivi; tanto da essere presente in tutti i 500 migliori tra i migliori supercomputer e nel supercomputer nordamericano di recente inaugurazione.

​Nell'ambito del sistema, non abbiamo un gestore di pacchetti tramite la riga di comando nel terminale macOS.

L'installazione dei pacchetti in formato .pkg – come BSD – avviene tramite questa riga di comando, se non tramite la GUI:

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

NOTA: MacOS .pkg è totalmente diverso da BSD .pkg!

Non pensare che macOS supporti i programmi BSD e viceversa. Non supporta e non si installa. Puoi avere un comando equivalente ad apt in macOS, in 2 opzioni: 

Installazione di HomebrewMacPort.   Alla fine, avrai la seguente sintassi:$ brew install PACKAGE

$ port install PACKAGE

Ricorda che non tutti i programmi/pacchetti disponibili per Linux o BSD saranno nelle porte MacOS .

Compatibilità

In termini di compatibilità, non c'è molto da dire; il core Darwin e il kernel Linux sono distinti come confrontare il kernel di Windows NT con il kernel BSD. I driver scritti per Linux non funzionano su macOS e viceversa. Devono essere compilati in anticipo; Curiosamente, Linux ha una serie di demoni macOS, incluso il server di stampa CUPS!

Ciò che abbiamo in comune compatibilità sono, infatti, strumenti terminali come i pacchetti GNU Utils o Busybox, quindi non abbiamo solo BASH ma anche gcc, rm, dd, top, nano, vim, ecc. E questo è intrinseco a tutte le applicazioni basate su UNIX. Inoltre, abbiamo l'architettura delle cartelle del filesystem, cartelle comuni comuni per il root in /, / lib, / var, / etc, / dev e così via .

Conclusione

macOS e Linux hanno le loro somiglianze e differenze, proprio come BSD rispetto a Linux. Ma poiché si basano su UNIX, condividono schemi che li rendono familiari all'ambiente. Coloro che usano Linux e migrano pro macOS o viceversa avranno familiarità con una serie di comandi e funzionalità.

La differenza più evidente sarebbe l'interfaccia grafica, il cui problema sarebbe una questione di adattamento personale.


Linux
  1. Il ciclo di vita dei test del kernel Linux

  2. Installa Linux Kernel 4.12 in openSUSE

  3. Linux:esegui applicazioni Mac Os X su Linux?

  4. Linux:un kernel contaminato in Linux?

  5. dd prestazioni su Mac OS X rispetto a Linux

Kernel Linux e le sue funzioni

comando sysctl in Linux

Cosa fare in caso di panico del kernel Linux

Come modificare l'indirizzo MAC in Linux

Aggiorna il kernel Linux di CentOS 8

Guida completa alla registrazione di Linux