Apple Darwin
Da Wikipedia, l'enciclopedia libera.
Darwin |
|
---|---|
OpenDarwin con il desktop environment GNOME |
|
Sviluppatore: | Apple Computer |
Famiglia SO: | BSD |
Modello del sorgente: | Libero |
Ultima versione: | 9.0 / 26 ottobre 2007 |
Tipo di kernel: | XNU (basato su kernel Mach) |
Licenza: | Libero APSl |
Stadio di sviluppo: | in produzione |
Sito web: | developer.apple.com/darwin |
Darwin è un sistema operativo libero che utilizza il kernel XNU. La prima versione venne presentata nel 2000 da Apple Computer e tuttora viene sviluppato dalla società con la collaborazione con gli sviluppatori che aderiscono al progetto OpenDarwin. Darwin è il cuore del sistema operativo Mac OS X.
All'uscita di ogni nuova release di Mac OS X, Apple ne pubblica il sorgente sulla sua pagina dedicata al progetto.
Indice |
[modifica] Modello del Kernel

Come molti kernel moderni Darwin segue un approccio ibrido, contenendo caratteristiche sia di un microkernel che di un kernel monolitico. Difatti segue un approccio da microkernel per quanto riguarda la gestione dei servizi ma integra nello stesso microkernel ampie porzioni del sistema operativo per ridurre i tempi morti dovuti al passaggio di contesto. Questo approccio misto consente di rendere il sistema operativo più reattivo e veloce ma nel contempo lo rende più sensibile ad errori di programmazione del kernel.
La maggior parte del codice viene eseguito al di fuori del kernel in modo da rendere lo sviluppo rapido e veloce. I singoli componenti sono scritti e testati in modo indipendente, difatti risulta più semplice testare una piccola porzione di codice piuttosto che analizzare il funzionamento di un modulo immerso in centinaia di migliaia di righe di codice appartenenti ad altri moduli. Inoltre questo approccio rende il sistema operativo meno sensibile a fallimenti dei singoli driver.
Il kernel viene chiamato XNU, e può essere considerato una derivazione del kernel Mach 3.0 con rilevanti aggiunte del FreeBSD 5.x.
[modifica] Mach
Il nucleo del kernel XNU, Mach fornisce la gestione dei processi, il passaggio dei messaggi (utilizzati nella comunicazione interprocesso), la memoria virtuale e la protezione della memoria, la gestione dei processi real-time, il supporto al debugging del kernel e I/O da console. Mach inoltre gestisce la presenza di più binari in modo da poter gestire nativamente la presenza di più architetture hardware come i processori PowerPC o i processori X86.
[modifica] BSD
Le porzioni di codice BSD integrate forniscono le API POSIX (BSD system calls) il modello di gestione dei processi, i livelli base di sicurezza e le relative policy, l'user id, la gestione dei permessi, la gestione della rete, il Virtual file system (incluso la strato di journaling), la crittografia, le UNIX System V IPC e molte primitive.
[modifica] I/O Kit
È un framework per la scrittura di driver progettato con un sottoinsieme di C++. È stato progettato seguendo i dettami della programmazione orientata agli oggetti in modo da consentire la scrittura di driver velocemente e con poco codice. Il framework gestisce il SMP e multitread gestisce la sicurezza, permette il caricamento dinamico dei driver, gestisce le periferiche hot-plug ed autoconfiguranti.
La maggioranza dei driver sono scritti per essere eseguiti nello spazio utente in modo da migliorare la sicurezza del sistema. Il fallimento di un driver eseguito nello spazio utente non è in grado di bloccare il kernel.
[modifica] Protezione delle risorse condivise
Per consentire un funzionamento sicuro su macchine multiprocessore l'accesso alle risorse condivise (file, strutture dati, ecc) sono serializzati in modo da impedire ai processi di modificare la stessa risorsa nello stesso tempo. Le operazioni atomiche, spinlock, sezioni critiche, sistemi a mutua esclusione e gestione serializzata sono i possibili metodi per impedire accessi pericolosi a strutture condivise. Come Linux e FreeBSD Darwin implementa sistemi a mutua esclusione (mutex) a grana fine per ottenere elevate prestazioni nei sistemi multiprocessore.
[modifica] Processori supportati
Attualmente Darwin può utilizzare computer basati su processori X86 (Intel o AMD) o PowerPC in configurazione a singolo processore o multiprocessore.
[modifica] Sviluppo e distribuzione
[modifica] Controllo della qualità
Come molti sistemi operativi moderni Darwin utilizza un debugger integrato nel kernel per aiutare gli sviluppatori ad individuare gli errori nel codice.
[modifica] Licenza
Nel giugno 2003 Apple rilasciò Darwin 7.0 sotto licenza Apple Public Source License, versione 2.0 del 6 agosto 2003, considerata dalla FSF una licenza di software libero non compatibile con la GNU GPL, sconsigliata se si sta scrivendo un nuovo programma ma non sconsiglia l'utilizzo di programmi sotto questa licenza.
[modifica] Versione
La tabella sottostante mostra la data delle varie versioni di Darwin e la relativa versione di Mac OS X:
Data | Versione Darwin | Versione Mac OS X |
---|---|---|
5 aprile 2000 | Darwin 1.0 | |
13 aprile 2000 | Darwin 1.0.2 | |
13 aprile 2001 | Darwin 1.3.1 | Mac OS X 10.0 to 10.0.4 |
2 ottobre 2001 | Darwin 1.4.1 | Mac OS X 10.1 |
Darwin 5.1 | Mac OS X 10.1.1 | |
Darwin 5.2 | Mac OS X 10.1.2 | |
Darwin 5.3 | Mac OS X 10.1.3 | |
Darwin 5.4 | Mac OS X 10.1.4 | |
Darwin 5.5 | Mac OS X 10.1.5 | |
23 settembre 2002 | Darwin 6.0.1 | Mac OS X 10.2 |
28 ottobre 2002 | Darwin 6.0.2 | Mac OS X 10.2 |
Darwin 6.1 | Mac OS X 10.2.1 | |
Darwin 6.2 | Mac OS X 10.2.2 | |
Darwin 6.3 | Mac OS X 10.2.3 | |
Darwin 6.4 | Mac OS X 10.2.4 | |
Darwin 6.5 | Mac OS X 10.2.5 | |
Darwin 6.6 | Mac OS X 10.2.6 | |
Darwin 6.7 | Mac OS X 10.2.7 | |
Darwin 6.8 | Mac OS X 10.2.8 | |
24 ottobre 2003 | Darwin 7.0 | Mac OS X 10.3 |
Darwin 7.1 | Mac OS X 10.3.1 | |
Darwin 7.2 | Mac OS X 10.3.2 | |
Darwin 7.3 | Mac OS X 10.3.3 | |
Darwin 7.4 | Mac OS X 10.3.4 | |
Darwin 7.5 | Mac OS X 10.3.5 | |
Darwin 7.6 | Mac OS X 10.3.6 | |
Darwin 7.7 | Mac OS X 10.3.7 | |
Darwin 7.8 | Mac OS X 10.3.8 | |
15 aprile 2005 | Darwin 7.9 | Mac OS X 10.3.9 |
29 aprile 2005 | Darwin 8.0 | Mac OS X 10.4 |
16 maggio 2005 | Darwin 8.1 | Mac OS X 10.4.1 |
12 giugno 2005 | Darwin 8.2 | Mac OS X 10.4.2 |
31 ottobre 2005 | Darwin 8.3 | |
10 gennaio 2006 | Darwin 8.4 | Mac OS X 10.4.4 |
14 febbraio 2006 | Darwin 8.5 | Mac OS X 10.4.5 |
3 aprile 2006 | Darwin 8.5 | Mac OS X 10.4.6 |
8 agosto 2006 | Darwin 8.6 | Mac OS X 10.4.7 |
Darwin 8.8 | Mac OS X 10.4.8 | |
Darwin 8.9 | Mac OS X 10.4.9 | |
Darwin 9.0 | Mac OS X 10.5 |
Si noti che le versioni saltano dalla 1.4.1 alla 5.1. Si presume che ciò sia stato fatto per continuare la numerazione del NEXTSTEP (Il NEXTSTEP arrivò fino alla versione 3.3 mentre OpenStep viene considerato la versione 4.0):
[modifica] Collegamenti esterni
[modifica] Informazioni generali
- (EN) Apple's Darwin Developer Site
- (EN) Apple Darwin Releases (contiene i sorgenti del kernel)
- (EN) Mac OS Forge community development site
- (EN) Hexley, the Darwin mascot
- (EN) Sito del progetto GNU-Darwin
[modifica] Documentazione
Accesso Directory · Accesso Portachiavi · Acquisizione Immagine · Aggiornamento Software · Amministratore ODBC · Anteprima · Assistente Migrazione · Automator · BOMArchiveHelper · Calcolatrice · Chess · Classic · Configurazione MIDI Audio · Connessione Internet · Console · Crash Reporter · Dashboard · Dictionary · DigitalColor Meter · DiskImageMounter · Dock · DVD Player · Exposé · Finder · Gestione NetInfo · Grapher · iCal · iChat · Installer · Istantanea · iSync · Jar Launcher · Libro Font · Mail · Monitoraggio Attività · Photo Booth · Preferenze di Sistema · Promemoria · QuickTime Player · Rubrica Indirizzi · Safari · Scambio Documenti Bluetooth · Script Editor · Sherlock · Spotlight · System Profiler · Terminale · TextEdit · Utility Amministrazione AirPort · Utility ColorSync · Utility Configurazione Stampante · Utility Disco · Utility Network · Visore Aiuto · VoiceOver · X11
AU Lab · CHUD Tools · Core Image Fun House · Dashcode · FileMerge · Help Indexer · Icon Composer · Interface Builder · PackageMaker · Pixie · Property List Editor · Quartz Composer · Repeat After Me · USB Prober · Xcode
AppleShare IP Migration · Fibre Channel Utility · Gateway Setup Assistant · Open Directory · MySQL Manager · QuickTime Broadcaster · QuickTime Streaming Server · RAID Admin · Server Admin · Workgroup Manager · Xgrid
AppleScript · Aqua · Audio Units · Bonjour · Boot Camp · Bundle · Cambio utente rapido · Carbon · Cartelle smart · Cocoa · Core Audio · Core Data · Core Foundation · Core Image · CoreServices · Core Video · Darwin · Exposé · Inkwell · JavaScriptCore · Keychain · KWQ · NetInfo · OpenGL · Pixlet · plist · Quartz (Quartz 2D, Quartz Compositor, Quartz Extreme)· QuickTime · Rosetta · Universal binary · WebCore · WebKit · XNU