Passa ai contenuti principali

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


Cosa c'è dietro MacOS X: alcuni dettagli su Darwin
Darwin è 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?
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 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).

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 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.
Il 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.
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

Commenti

Post popolari in questo blog

EDVAC

EDVAC (Electronic Discrete Variable Automatic Computer) L' E lectronic D iscrete V ariable A utomatic C omputer ( EDVAC ) è uno dei primi computer elettronici digitali della storia, uno dei primi computer della storia basato sull'architettura di Von Neumann e uno dei primi computer a programma memorizzato della storia. L' ENIAC era veloce, ma disponeva di pochissimo spazio di archiviazione . Inoltre, per la programmazione doveva essere ricablato , un'operazione che richiedeva da poche ore a giorni interi; era, inoltre, poco affidabile, a causa delle molte valvole tubolari utilizzate, che richiedevano, tra l'altro, moltissima energia e molto spazio per funzionare e generavano molto calore. Il che faceva lievitare costi di gestione.

Colossus

Colossus " Colossus fu il primo elaboratore elettronico al mondo: fu realizzato in Gran Bretagna nel 1943, alla fine della seconda guerra mondiale, dall’intuizione del Dott. Thomas Flowers. Operativo dal 1944 a Bletchley Park, sostituì Heath Robinson, un macchinario più semplice, nel decifrare le comunicazioni criptate della Germania nazista. Entro la fine del conflitto furono costruiti dieci esemplari di Colossus, un “gigante” da 1.600 valvole termoioniche. Il Dott. Flowers aveva concepito il progetto prima della guerra, però il centro di ricerca britannico non era convinto che fosse davvero realizzabile: la tenacia dell’ingegnere, alla lunga, s’è rivelata determinante. " Citazione - Tratta da:   http://www.downloadblog.it/post/16765/colossus-il-primo-elaboratore-elettronico-a-essere-stato-realizzato

MANIAC

Verso la fine della guerra, gli scienziati di Los Alamos stavano utilizzando il primo computer elettronico . John Von Neumann fu il protagonista principale di questo cambiamento, che condusse, poi, allo sviluppo del programma per calcolare il comportamento degli esplosivi nucleari. I calcoli iniziali concernenti la diffusione dei neutroni in un montaggio critico di uranio furono effettuati da Eldred Nelson e da Stanley Frankel , che erano membri del gruppo di Robert Serber presso il Radiation Laboratory dell' università di Berkeley , California, nel 1942.  A Los Alamos  ordinarono lo stesso tipo di macchine che avevano utilizzato in California.