Introduzione a Darwin di Rob Braun traduzione di Pietro Leone
Prefazione alla traduzione italiana
Il Mac OS X sta riscuotendo commenti e critiche non sempre lodevoli quanto meriterebbe,
abbiamo ritenuto corretto prendere un articolo apparso su Daemon News e tradurlo per far chiarezza su una parte di questo nuovo sistema operativo.
Per chi desideri leggerlo in lingua originale, ecco il link: Introduction to Darwin pubblicato su Deamon News nel mese di ottobre 2000.
Articolo
Ultimamente c'è stato molto interesse nei confronti di Darwin e
del MacOSX, ma essi sono stati trattati dalla comunità del BSD
come niente di più di una curiosità. La maggior parte delle
persone con cui ho parlato a riguardo di Darwin o non sanno cosa sia
oppure dicono: "Ah, sì, è il MacOSX, vero?" Questo articolo è
una breve introduzione a Darwin, sui motivi della sua importanza
e su come egli differisca dal resto dei sistemi operativi BSD.
Darwin è il cuore del MacOSX, cuore che deriva dal FreeBSD e dal
Mach. Questa è la definizione che gli è stata attribuita su
tutto il web, ma cosa ciò effettivamente significa? Darwin
deriva dalla versione 3.0 di Mach e dalla 3.2 di FreeBSD,
amalgamati 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.
Quale è la differenza fra Darwin e MacOSX?
Il 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 elimini l'interfaccia grafica e tutti i
relativi programmi e le librerie dal OSX, avrai Darwin.
I sorgenti di tutto ciò che sta alla base di Darwin sono stati
rilasciati sotto la licenza APSL (Apple Public Source License).
Perché una persona dovrebbe voler lavorare su Darwin? È
controllato dalla Apple ed è parte di un prodotto commerciale,
quindi perché investire in esso il tuo tempo ed i tuoi
sforzi?
Vi sono dei vantaggi e degli svantaggi nel lavorare su
un progetto controllato da una compania commerciale. Uno dei
grandi vantaggi è che vi sono molte persone che lavorano al
progetto a tempo pieno. Uno degli svantaggi è che se la tua idea per il miglioramento
non è gradita, non sarà accettata né sviluppata. Comunque questo modello
di sviluppo non è molto diverso da quello che attualmente
utilizza BSD. C'è un gruppo di sviluppatori ed i cambiamenti
all'archivio dei sorgenti deve essere approvato da uno o più di
essi. Se non fai parte di questo team di programmatori che sviluppano il sistema ed essi
non gradiscono la tua idea essi hanno il diritto di non implementarla o di non aggiungere
il codice che eventualmente hai già scritto. Quindi non c'è molta
differenza rispetto al lavorare su uno degli altri sistemi BSD.
La più ovvia ragione per cui la gente vuole utilizzare Darwin è
quella di avere una prima impressione del MacOSX prima del suo
rilascio. Questo può includere lo sviluppo di driver od anche
semplicemente giocarci ed abituarsi alle sue
idiosincrasie prima di dover lavorare con MacOSX. Questo per la
gente è il motivo più comune per utilizzare Darwin.
Inoltre Darwin è 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 dovrete più
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.
Quindi, che cosa distingue Darwin dagli altri BSD?
Quale è la nicchia di Darwin nel mondo dei sistemi BSD?
Il neonato 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.
Ho detto precedentemente che Darwin deriva da un unione in stile
NeXT di Mach e FreeBSD. 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.
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. Io non sono un programmatore
"orientato agli oggetti", ma trovo che lo IOKit sia molto interessante.
Quindi possiamo riassumere la relazione fra tutti questi
differenti componenti in poche parole, Mach fornisce l'ambiente
per la memoria virtuale e molto del codice di partenza specifico
della macchina, IOKit 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.
In effetti la parte dell'ambiente che l'utente vede è molto
simile agli altri BSD, avrai ancora /etc, /bin/sh e tutto ciò
che ti sia 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. Personalmente trovo che
l'interfaccia di NetInfo sia confusa e di difficile utilizzo,
quindi ho scelto una configurazione di Darwin priva di NetInfo.
Darwin è un BSD con molte deviazioni dal design tradizionale,
queste sono sia la sua forza sia la sua debolezza, anche se non
utilizzi Darwin, puoi, però, imparare molto anche solamente
seguendone l'evoluzione.
La prova definitiva per Darwin come un sistema operativo a sè
stante non è molto distante nel futuro, molti suoi attuali
utilizzatori lo considerano come un'anteprima di MacOSX, quanto
si sarà evoluto Darwin quando MacOSX verrà rilasciato?
Per maggiori informazioni su Darwin, vedi Darinfo.
Darwin può essere scaricato dal sito della Apple.
|