GNU/Linux >> Linux Esercitazione >  >> FreeBSD

Freebsd:da dove viene Mac Os X?

Discutendo con i proprietari di Mac, ho ricevuto diverse versioni da dove proviene Mac OS X. È noto che ha qualche radice in BSD, ma quanto e dove?

Alcuni dicono che Mac OS X abbia un kernel FreeBSD, con tutte le utilità sopra che lo rendono un sistema operativo specifico per Mac. (Non parlo delle app utente qui, solo di tutti gli init , ls , cd , e altri. utility bin? )

Altri dicono che Mac OS X è un kernel Darwin, che è puro Mac e che le utilità del sistema operativo provengono da BSD.

Dov'è la verità?

Risposta accettata:

La storia di MacOS è un po' più contorta. Ero molto interessato a questo alla fine degli anni '90 poiché Mach era stato presentato in tutto il mondo come un modo più veloce per costruire un sistema Unix.

L'origine del kernel è un po' più complicata.

Tutto inizia con AT&T che distribuisce gratuitamente il proprio sistema operativo ad alcune università. Questo Unix è stato ampiamente migliorato a Berkeley ed è diventato la base per le variazioni BSD di Unix e ha incorporato diverse nuove innovazioni come il "Fast File System" (UFS), ha introdotto collegamenti simbolici e l'API socket. AT&T ha proseguito per la propria strada e ha costruito System V allo stesso tempo.

Nel frattempo, la ricerca è continuata e alcune persone hanno adottato il lavoro di BSD come base. Alla CMU, il kernel BSD è stato utilizzato come base per la prototipazione di alcune nuove idee:thread, un'API per controllare il sistema di memoria virtuale (tramite "pager" collegabili - mmap a livello di utente), un sistema di chiamata di procedura remota a livello di kernel e la maggior parte soprattutto l'idea di spostare alcune operazioni a livello di kernel nello spazio utente. Questo è diventato il kernel Mach.

Non sono sicuro al 100% se mmap provenga da Mach e successivamente sia stato adottato da BSD, o se Mach abbia semplicemente aperto la strada all'idea e BSD abbia aggiunto il proprio mmap basato sulle idee di Mach.

Sebbene il kernel Mach fosse descritto come un micro-kernel, fino alla versione 2.5 era semplicemente un sistema che forniva le funzionalità di thread, mmap e passaggio dei messaggi ma rimaneva un kernel monolitico, tutti i servizi erano in esecuzione in modalità kernel.

In quel momento Rick Rashid (ora in Microsoft) e Avie Tevanian (ora in Apple) avevano avuto un'idea nuova che poteva accelerare Unix. L'idea era quella di utilizzare la chiamata di sistema mmap per passare i dati da copiare dallo spazio utente ai "server" che implementano il file system. Questa idea era essenzialmente una variante del tentativo di evitare di fare copie degli stessi dati, ma è stata presentata come un vantaggio dei micro kernel, anche se la funzionalità poteva essere isolata da un micro kernel.

I benchmark di questo sistema Unix più veloce supportato da VM sono ciò che ha spinto le persone di NeXT e FSF a scegliere Mach come base per i loro kernel.

NeXT è andato con il kernel Mach 2.5 (che era basato su BSD 4.2 o 4.3) e GNU non avrebbe effettivamente iniziato il lavoro per anni. Questo è ciò che stavano utilizzando i sistemi operativi NeXTSTEP.

Nel frattempo alla CMU, il lavoro su Mach è continuato e finalmente hanno realizzato la visione di avere più server in esecuzione su un micro kernel con la versione 3.0. Non sono a conoscenza di nessuno in natura in grado di eseguire Mach 3.0 poiché tutti i server interessanti a livello di utente utilizzavano il codice AT&T quindi erano considerati ingombranti, quindi è rimasto un prodotto di ricerca.

In questo periodo il team di Jolitz aveva eseguito un porting di 4.3+ BSD sull'architettura 386 e pubblicato i propri sforzi di porting su DrDobbs. 386BSD non è stato mantenuto attivamente ed è emerso un gruppo per mantenere e portare avanti 386BSD, il team di NetBSD. Le lotte interne all'interno del gruppo NetBSD hanno causato la prima divisione e da questo si è formato FreeBSD. NetBSD all'epoca voleva concentrarsi sull'avere un BSD multipiattaforma e FreeBSD voleva concentrarsi sull'avere un Unix che funzionasse alla grande su piattaforme x86. Poco dopo, NetBSD si è nuovamente diviso a causa di altre controversie e questo ha portato alla creazione di OpenBSD.

Correlati:Mac:è possibile utilizzare un'Apple Time Capsule solo come unità di backup collegata alla rete e non come router?

Un fork di BSD 4.3 per piattaforme x86 è diventato commerciale con una società chiamata BSDi e vari membri del team originale di Berkeley hanno lavorato lì e hanno mantenuto buoni rapporti con il team BSD dell'Università.

AT&T non si è divertita e ha avviato la causa AT&T contro BSDi, che è stata successivamente ampliata per citare in giudizio anche l'Università. La causa riguardava BSDi che utilizzava il codice proprietario di AT&T che non era stato riscritto da Berkeley. Questo ha arretrato BSD rispetto al sistema operativo Linux emergente.

Sebbene le cose non stessero andando bene per gli imputati, a un certo punto qualcuno si è reso conto che SystemV aveva incorporato grandi porzioni di codice BSD sotto la licenza BSD e AT&T non aveva adempiuto ai propri obblighi nella licenza. È stato raggiunto un accordo in base al quale AT&T non avrebbe dovuto ritirare il proprio prodotto dal mercato e l'Università ha accettato di strappare qualsiasi codice che potesse ancora essere basato sul codice AT&T.

L'università ha quindi rilasciato due versioni di BSD 4.4 gravato e 4.4 lite. La versione vincolata si avviava ed eseguiva, ma conteneva codice AT&T. La versione lite non conteneva alcun codice di AT&T ma non funzionava.

I vari sforzi di BSD hanno rifatto il loro lavoro in aggiunta alla nuova versione 4.4 lite e hanno avuto un sistema di avvio in pochi mesi.

Nel frattempo, il microkernel Mach 3.0 non è rimasto molto utile senza nessuno dei server della terra degli utenti.

Uno studente di un'università scandinava (credo, potrei sbagliarmi) è stato il primo a creare un sistema Mach 3.0 completo con un sistema operativo completo basato sulla versione 4.4 lite, credo che si chiamasse "Lites". Il sistema funzionava, ma era lento.

Durante il 1992-1996 e ormai BSD aveva già una chiamata di sistema mmap() così come la maggior parte degli altri sistemi Unix. Il "vantaggio del micro kernel" che non c'era, non è mai stato realmente realizzato. NeXT aveva ancora un kernel monolitico. La FSF stava ancora cercando di convincere Mach a costruire, e non volendo toccare il codice BSD o contribuire a nessuno degli sforzi BSD open source, hanno continuato a caricarsi di una visione del kernel scarsamente specificata e stavano annegando sui protocolli RPC per conto proprio nocciolo. Il micro kernel sembrava fantastico sulla carta, ma si è rivelato essere troppo ingegnerizzato e ha reso tutto più lento.

A questo punto abbiamo avuto anche il dibattito Linus vs Andy sui micro-kernel rispetto ai kernel monolitici e il mondo ha iniziato a rendersi conto che era semplicemente impossibile aggiungere tutti quei cicli extra a un micro kernel e comunque arrivare davanti a un kernel monolitico ben progettato .

Apple non aveva ancora acquisito NeXTSTEP, ma stava anche iniziando a considerare Mach come un potenziale kernel per i loro futuri sistemi operativi. Hanno assunto la Open Software Foundation per portare Linux sul kernel Mach, e questo è stato fatto dai loro uffici di Grenoble, credo che fosse chiamato "mklinux".

Quando Apple ha acquistato NeXT, quello che avevano tra le mani era una base Unix relativamente vecchia, un Unix basato su 4.2 o 4.3 e ormai nemmeno il software libero funzionava bene su quei sistemi. Hanno assunto Jordan Hubbard lontano da FreeBSD per aggiornare il loro stack Unix. Il suo team era responsabile dell'aggiornamento della userland e non sorprende che la userland di MacOS sia stata aggiornata alle ultime versioni disponibili su BSD.

Correlati:Mac – Installazione di Mac OS X Mountain lion Errore iD Apple?

Apple ha cambiato il suo Mach da 2.5 a 3.0 ad un certo punto, ma ha deciso di non seguire l'approccio del micro-kernel e ha invece mantenuto tutto in corso. Non sono mai stato in grado di confermare se Apple ha utilizzato Lites, assunto l'hacker scandinavo o se ha adottato il 4.4 lite come sistema operativo. Sospetto che lo facessero, ma ero già passato a Linux e avevo smesso di tracciare il mondo BSD/Mach.

Alla fine degli anni '90 circolava una voce secondo cui Avie alla Apple avrebbe cercato di assumere Linus (che era già famoso a questo punto) per lavorare su suo figlio, ma Linus ha scelto di continuare a lavorare su Linux.

Storia a parte, questa pagina descrive la userland e il kernel Mach/Unix:

http://developer.apple.com/mac/library/documentation/Darwin/Conceptual/KernelProgramming/Architecture/Architecture.html#//apple_ref/doc/uid/TP30000905-CH1g-CACDAEDC

Ho trovato questo grafico della storia di OSX:


FreeBSD
  1. Da dove viene eseguito uno script di shell?

  2. Cosa si è smarrito+trovato e da dove viene?

  3. Perché Ls -l genera una dimensione diversa da Ls -s?

  4. Dove vengono archiviati i file di Wine?

  5. Dove conserva le sue immagini Cheese?

La mia storia su Linux:da utente Linux a collaboratore

La mia storia di passaggio da Mac a Linux

Perché sono passato da Mac a Linux

Recensione di Zorin OS 12:impara dalla mia esperienza

Migrazione da Apache a Nginx su FreeBSD

Da dove viene il percorso per 169.254.0.0?