Magazine Informatica

Storia dell'Informatica nel mondo: Apple (Parte 5) - Darwin

Creato il 28 agosto 2011 da Aspex

Cosa c'è dietro MacOS X: alcuni dettagli su DarwinStoria dell'Informatica nel mondo: Apple (Parte 5) - DarwinDarwin è il cuore del MacOSX, cuore che deriva dal FreeBSD e dal Mach. Darwin deriva dalla versione 3.0 di Mach e dalla 3.2 di FreeBSD, uniti insieme in uno stile che ricorda molto NeXT. Una variante del suo kernel e delle utilità dell'utente formano il cuore del MacOSX, ma Darwin è un vero e proprio sistema operativo a sè stante: ha un programma di installazione, tutte le normali utilità ed è stato convertito anche XFree86, quindi da tutti i punti di vista Darwin è un sistema operativo completo.
Differenze fra Darwin e MacOSX?Storia dell'Informatica nel mondo: Apple (Parte 5) - DarwinIl primo è la versione a sola linea di comando del secondo, il suo kernel è la versione di sviluppo di quello del MacOSX (senza alcuni driver proprietarii). Se si elimina l'interfaccia grafica e tutti i relativi programmi e le librerie dal OSX, si ha Darwin.I sorgenti di tutto ciò che sta alla base di Darwin sono stati rilasciati sotto la licenza APSL (Apple Public Source License).Storia dell'Informatica nel mondo: Apple (Parte 5) - DarwinDarwin è un BSD che funziona su hardware Macintosh e spesso questa è l'unica scelta ragionevole per le nuove macchine della Apple. La maggior parte dei componenti forniti dall'Apple sono supportati e lo saranno in futuro e non non ci si deve preoccuparti del fatto che l'autore di un determinato driver abbia o meno del tempo libero questo fine-settimana per lavorare sugli errori del programma. Per molte persone questo è un motivo più che valido per utilizzare Darwin: il supporto dell'hardware e l'interazione con MacOSX sono molto utili.La cosa più interessante però è che Darwin mantiene la compatibilità verso BSD, ma con un approccio ai problemi differente. Il sistema operativo BSD è in circolazione oramai da decenni e non ha subito sostanziali cambiamenti ne corso del tempo. C'è, ovviamente, un continuo sviluppo, la conversione verso differenti architetture ed aggiunte di nuove caratteristiche, ma gli aspetti fondamentali non sono stati cambiati. FreeBSD, per esempio, ha fatto un enorme lavoro per supportare i moduli caricabili del kernel, ma è stato fatto molto lentamente ed è stata fatta molta attenzione perchè ciò avesse un impatto minimo sul design del kernel. Darwin ha avuto avanti un approccio molto più radicale, che ha portato a grandi modifiche del design del kernel. Ogni strada percorsa ha i suoi svantaggi ed i suoi meriti ed a questo punto è impossibile dire quale dei due sia il migliore, ma sarà molto interessante osservare le differenze fra i due e la loro evoluzione.Storia dell'Informatica nel mondo: Apple (Parte 5) - DarwinIl kernel della Apple non ha alcuna caratteristica particolare che lo distingua dagli altri BSD, come, OpenBSD, il più sicuro, e NetBSD, il più facilmente portabile su altre architetture. La cosa di Darwin più vicina ad una peculiarità è l'essere il "cuore del MacOSX", ci sono, comunque, grandi differenze fra Darwin e gli altri BSD, sia al livello del kernel, sia a quello della gestione dell'utente.Nonostante l'integrazione con Mach, Darwin non è un sistema operativo dotato di microkernel puro. Tutte le altre porzioni del kernel dividono lo spazio di indirizzamento con Mach. Ciò previene un abbattimento delle prestazioni quando le altre parti devono comunicare con Mach ed permette anche una maggiore integrazione di tutti i componenti.

Storia dell'Informatica nel mondo: Apple (Parte 5) - Darwin

Una schermata di Open Darwin

Oltre ai componenti nel kernel di Mach e BSD, l'interfaccia dei driver funziona tramite un componente chiamato IOKit. Questo è un modello per la creazione di driver orientato agli oggetti, sfortunatamente ciò significa che tutti i driver esistenti per BSD devono essere convertiti per IOKit prima che possano essere utilizzati da Darwin, ma significa anche che verranno fornite molte caratteristiche che attualmente mancano a BSD. Con IOKit, potenzialmente ogni driver, e classe di driver, può essere caricato e rimosso dinamicamente. La natura ad oggetti riduce anche il codice ridondante e semplifica lo sviluppo dei driver. L'interfaccia è stata posta lì apposta per te quindi i nuovi sviluppatori avranno una maggiore facilità a capire cosa è a loro richiesto.Quindi Mach fornisce l'ambiente per la memoria virtuale e molto del codice di partenza specifico della macchina, IOKit fornisce i driver per le varie periferiche e BSD fornisce le interfacce a tutte queste cose, come i file-system, le chiamate di sistema e praticamente tutto ciò di cui hanno bisogno le utilità dell'utente. Questa è ovviamente una grossa semplificazione della relazione fra i diversi componenti, ma dovrebbe fornirti una vaga idea su come interoperino le varie parti.La parte dell'ambiente che l'utente vede è molto simile agli altri BSD, c'è ancora /etc, /bin/sh e tutto ciò che è famigliare su una macchina BSD. Comunque Darwin ha un approccio differente nel gestire tutti i lavori comuni del sistema; come le vecchie macchine NeXT, Darwin utilizza NetInfo per buona parte della configurazione del sistema, del resolver e le informazioni degli utenti. L'obiettivo è quello di centralizzare la base dati delle informazioni per la configurazione della macchina piuttosto che averla sparsa in molti file distribuiti un po' da tutte le parti. Per gli utenti che preferiscono fare le cose nella maniera tradizionale è possibile eliminare i servizi di NetInfo ed utilizzare /etc/passwd, /etc/resolv.conf e così via.  L'interfaccia di NetInfo risulta un po'sia confusa e di difficile utilizzo.Darwin è un BSD con molte deviazioni dal design tradizionale, queste sono sia la sua forza sia la sua debolezza.Fine della quinta parte

Potrebbero interessarti anche :

Ritornare alla prima pagina di Logo Paperblog

Possono interessarti anche questi articoli :

Dossier Paperblog