Nel film “Steve Jobs”, scritto da Aaron Sorkin seguendo la biografia di Walter Isaacson e diretto da Danny Boyle, viene suggerito un particolare che in realtà, a memoria del cronista, non ha riscontri storici. Steve Jobs avrebbe pianificato fin dall’inizio della sua avventura con NeXT di farsi comprare da Apple costruendo quel sistema operativo del futuro di cui l’azienda avrebbe avuto un giorno bisogno. Non si riesce a dire se fosse vero o no, però è chiaro che la scelta di avere Unix come “cuore” di NeXT Step è stata strategica per il rientro di Steve Jobs in Apple: NeXT venne comprata da Gil Amelio, ultimo Ceo prima del rientro di Jobs, proprio per le tecnologie del suo sistema operativo, il gruppo di ingegneri del software che lo componeva e ovviamente per avere il Ceo ad interim o iCeo Steve Jobs, che si faceva pagare un dollaro all’anno.
Mac OS X, poi diventato OS X, è il sistema operativo da cui è (ri)partito tutto. Qui il video dell’introduzione al Macworld di San Francisco del 2000 della prima versione preliminare, che un anno e due mesi dopo (fine marzo 2011) diventerà ufficiale e si affiancherà al “vecchio” OS 9, l’ultima incarnazione del precedente sistema operativo di Apple.
Cosa si può dire di Mac OS X? Chi ricorda l’emozione di avere davanti a sé la prima interfaccia Aqua, la strutturazione fantasmagorica e molto più complessa del sistema operativo composto da strati su strati di tecnologie in alcuni casi anche molto lontane, alcuni problemi di gioventù, la comparsa del Terminale, che era poi la strada aperta verso il mondo della shell (la zsh all’epoca, poi l’attuale bash usata di default anche da molte varianti di Linux) e le fondamenta di un sistema capace di dare quelle “spalle larghe” al Mac che poi sono la base anche di iOS, di tvOS e infine di watchOS.
Oggi iOS, il sistema mobile di Apple che sta molto crescendo con i nuovi tablet pro e che alcuni vorrebbero diventasse convergente con OS X o addirittura lo sostituisse del tutto, ha otto anni. Praticamente l’età che aveva Mac OS X quando venne lanciato il primo iPhone nel 2007. Alla base di un sistema operativo divenuto nel tempo uno Unix a tutti gli effetti (Posix e tutto il resto) c’è una scelta architetturale opposta a quella di Linux (nato a ottobre del 1991). Il kernel, cioè il cuore di Linux è monolitico, un unico blocco di codice binario che adempie a tutte le funzioni del sistema operativo nel kernel space (e non nello user space) e solo in modalità supervisor.
Il modello monolitico si differenzia da altre architetture di sistema operativo (come ad esempio l’architettura microkernel), in quanto definisce solo un’interfaccia virtuale di alto livello sopra l’hardware del computer. Un insieme di chiamate di sistema implementano tutti i servizi del sistema operativo: ad esempio la gestione dei processi, la concorrenza e la gestione della memoria. I driver delle periferiche possono essere aggiunti al kernel come moduli.
Invece un microkernel funziona al contrario: richiede la quantità minima di codice necessaria a far funzionare il sistema operativo, con i meccanismi di base che comprendono la gestione a basso livello degli indirizzi di memoria, la gestione dei thread, la comunicazione tra processi. Entrabi i sistemi hanno vantaggi e svantaggi. Linux Torvalds scelse un approccio “puro” al kernel monolitico e fu per un ventennio in polemica con il suo allora professore di sistemi operativi Andrew S. Tanenbaum, una delle menti più lucide del settore dei sistemi operativi e autore di Minix, il sistema operativo basato su microkernel più noto al mondo.
La NeXT di Steve Jobs e poi la Apple di Mac OS X oggi OS X hanno scelto un approccio ibrido: XNU, cioè “X is Not Unix”, sviluppato dal 1996 e una serie di tecnologie che sono gli “eroi” alla base di OS X. C’erano il kernel Mach sviluppato dalla Carnegie Mellon University con dei componenti della versione 4.3 di BSD e le API dell’Objective-C per descrivere il Drivers Kit, cioè il contenitore dei driver per le periferiche hardware. Dalla versione NeXT a quella Apple il passaggio ha visto l’aggiornamento di Mach alla versione 3.0, BSD passata alla versione FreeBSD e Drivers kit è diventato I/O Kit con l’uso in prima battuta di C++.
Nella geometria del kernel di OS X, Mach è la componente a microkernel, molto semplice e basato sull’idea di processi concorrenti (quelli che secondo Torvalds danno instabilità al sistema e che invece secondo Avie Tevanan lo rendono più stabile). Invece la parte Posix, cioè con le chiamate di sistema (le API) standard compatibili con tutti i sistemi Unix, è quella della The Berkeley Software Distribution (BSD). I due sono ibridati e hanno vantaggi e svantaggi comunque diversi da quelli dei suoi due antenati, monolitico e a microkernel puro. Nel tempo le componenti si sono evolute. A partire dalla rivoluzione a 64 bit, che ha visto passare il kernel da K32 e K64 all’attuale modalità a 64 bit pura, con poi l’aggiunta di sistemi per sfruttare al massimo le possibilità offerte da sistemi multiprocessore e da processori multi-core.
Oggi OS X è un sistema forte, maturo, robusto. Apple segue un ciclo di sviluppo della tecnologia che sta cercando di rendere sempre più efficiente e completo il sistema, mentre porta avanti in parallelo altri sistemi basati sul “motore” Unix per smartwatch, televisione, telefoni e tablet. In quindici anni ha fatto una strada incredibile: le prime versioni come Chetaah oggi ci sembrano forse primitive ma chi si ritrovi (o si trovi per la prima volta) a usare un System 6 o successivi si renderà conto di quale salto di qualità siano state le varie versioni di OS X.
Apple prima del rientro di Steve Jobs aveva cercato di sviluppare la sua versione “futuristica” del sistema operativo dei Mac con vari progetti (chiamati Taligent, Copland e Gershwin) che erano però rimasti allo stato embrionale. Con l’acquisizione di NeXT Apple si diede allo sviluppo del progetto “Rhapsody”, che è stato il primo nome in codice di Mac OS X. Nomi in codice (abitudine per uso interno di tutti gli sviluppatori di veriosni diverse del software) che sono diventati talmente popolari con la stampa e il pubblico di appassionati da essere poi convertiti in nomi di prodotti veri e propri. Li rimettiamo qui: dalla prima versione Cheetah (0), a Puma (1), Jaguar (2), Panther (3), Tiger (4), Leopard (5), Snow Leopard (6), Lion (7), Mountain Lion (8), Mavericks (9), Yosemite (10), e l’attuale El Capitan (11). Vedremo a giugno alla WWDC quale sarà il prossimo nome di OS X, che dovrebbe vedere quest’anno un passaggio in avanti di tecnologie più che un semplice rafforzamento come è accaduto con la versione 11 rispetto alla 10, la 6 rispetto alla 5 e la 8 rispetto alla 7.
Concludendo: OS X (la “X” vuol dire “decimo” in numeri romani) è basato sul kernel e le tecnologie che dicevamo sopra, tutte compatibili Posix costruite sul kernel XNU dotato di tutti gli elementi Unix complementari disponibili tramite la shell con interfaccia a riga di comando (CLI). Apple ha realizzato una versione open source chiamata Darwin che contiene tutte le migliorie di basso e medio livello realizzate negli anni. Inoltre, sopra Darwin (e quindi non open source) girano numerosi strati di componenti: da Aqua al Finder per quanto riguardano l’interfaccia grafica (GUI). Per ulteriori dettagli su Mac OS X e sulla sua nascita rimandiamo a questo articolo di Macitynet scritto a 12 anni dalla nascita.