La storia di MacOS è un po 'più complicata. Ero molto interessato a questo verso la fine degli anni '90 poiché Mach era stato lanciato in tutto il mondo come un modo più veloce di costruire un sistema Unix.
L'origine del kernel è un po 'più complicata.
Tutto inizia con AT&T che distribuisce gratuitamente il loro sistema operativo ad alcune università. Questo Unix è stato ampiamente migliorato in Berkeley e divenne la base per le variazioni BSD di Unix e incorporò diverse nuove innovazioni come il "Fast File System" (UFS), introdusse collegamenti simbolici e API socket. AT&T andò per la propria strada e costruì System V allo stesso tempo.
Nel frattempo, la ricerca è proseguita 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 "cercapersone" 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 provenisse da Mach, e in seguito fu adottato da BSD, o se Mach si limitò a fare da pioniere dell'idea e BSD aggiunse 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 il thread, mmap, funzionalità di passaggio dei messaggi ma rimaneva un kernel monolitico, tutti i servizi erano in esecuzione in modalità kernel.
A quel tempo Rick Rashid (ora alla Microsoft) e Avie Tevanian (ora alla Apple) avevano escogitato una nuova idea che poteva accelerare Unix. L'idea era di utilizzare la chiamata di sistema mmap per trasferire 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 lanciata come un vantaggio dei micro kernel, anche se la funzionalità potesse essere isolata da un micro kernel.
I parametri di riferimento 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 a funzionare per anni. Questo è ciò che utilizzavano i sistemi operativi NeXTSTEP.
Nel frattempo alla CMU, il lavoro è proseguito su Mach e alla fine hanno realizzato l'idea 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 in quanto tutti gli interessanti server a livello utente utilizzavano il codice AT&T e quindi venivano considerati gravati, quindi è rimasto un prodotto di ricerca.
In quel periodo il team di Jolitz aveva effettuato un porting di 4.3+ BSD sull'architettura 386 e pubblicato i propri sforzi di porting su DrDobbs. 386BSD non è stato attivamente mantenuto ed è emerso un gruppo per mantenere e far avanzare 386BSD, il team di NetBSD. I combattimenti interni al gruppo NetBSD hanno causato la prima divisione e FreeBSD è stato formato da questo. All'epoca NetBSD voleva concentrarsi sull'avere un BSD multipiattaforma e FreeBSD voleva concentrarsi sull'avere un Unix che funzionava alla grande su piattaforme x86. Poco dopo, NetBSD si è diviso nuovamente a causa di alcune altre controversie e questo ha portato alla creazione di OpenBSD.
Un fork di BSD 4.3 per piattaforme x86 è stato commercializzato con una società chiamata BSDi, e vari membri del team Berkeley originale hanno lavorato lì e hanno mantenuto buoni rapporti con il team BSD presso l'Università.
AT&T non si è divertito e ha avviato la causa AT&T contro BSDi, che è stata successivamente ampliata per far causa anche all'Università. La causa riguardava BSDi utilizzando il codice proprietario di AT&T che non era stato riscritto da Berkeley. Ciò ha rallentato BSD rispetto al sistema operativo Linux emergente.
Sebbene le cose non andassero bene per gli imputati, a un certo punto qualcuno si rese conto che SystemV aveva incorporato grossi pezzi di codice BSD sotto la licenza BSD e AT&T non aveva adempiuto ai propri obblighi nella licenza. È stato raggiunto un accordo in cui AT&T non avrebbe dovuto ritirare il proprio prodotto dal mercato e l'Università ha accettato di elaborare qualsiasi codice che potesse ancora basarsi sul codice AT&T.
L'università ha quindi rilasciato due versioni di BSD 4.4 ingombro e 4.4 lite. La versione limitata si avviava ed eseguiva, ma conteneva il codice AT&T. La versione Lite non conteneva alcun codice di AT&T ma non funzionava.
I vari sforzi di BSD hanno ripreso il loro lavoro sulla nuova versione 4.4 Lite e hanno avuto un sistema di avvio in pochi mesi.
Nel frattempo, il micro kernel Mach 3.0 non è stato molto utile senza nessuno dei server di destinazione dell'utente.
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 questo fosse chiamato "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 realizzato. NeXT aveva ancora un kernel monolitico. La FSF stava ancora cercando di far costruire Mach, e non volendo toccare il codice BSD o contribuire a nessuno degli sforzi di BSD open source, continuavano a caricarsi con una visione del kernel scarsamente specificata e stavano annegando i protocolli RPC per conto proprio kernel. Il micro kernel sembrava perfetto sulla carta, ma si rivelò troppo ingegnerizzato e rese tutto più lento.
A questo punto abbiamo anche avuto il dibattito Linus vs Andy su micro-kernel vs kernel monolitici e il mondo ha iniziato a rendersi conto che era impossibile aggiungere tutti quei cicli extra a un micro kernel e ancora arrivare davanti a un kernel monolitico ben progettato .
Apple non aveva ancora acquisito NeXTSTEP, ma stava anche iniziando a esaminare 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 questo si chiamasse "mklinux".
Quando Apple acquistò NeXT ciò che avevano in mano era una fondazione Unix relativamente vecchia, una Unix basata 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 terra dell'utente, e non sorprende che l'area utente di MacOS sia stata aggiornata alle ultime versioni disponibili su BSD.
Ad un certo punto Apple ha cambiato il suo Mach da 2,5 a 3,0, ma ha deciso di non seguire l'approccio micro-kernel e ha invece mantenuto tutto in corso. Non sono mai stato in grado di confermare se Apple ha usato Lites, assunto l'hacker scandinavo o se hanno adottato 4.4 lite come sistema operativo. Sospetto che lo abbiano fatto, ma ero già passato a Linux e avevo smesso di tracciare il mondo BSD / Mach.
Si vociferava alla fine degli anni '90 che Avie alla Apple cercasse di assumere Linus (che era già famoso a questo punto) per lavorare sul suo bambino, ma Linus scelse 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: