A seguito dell’annuncio da parte di Apple del rilascio di Grand Central Dispatch come software open source, vari ambienti si sono interessati alla tecnologia e tra questi vi sono gli sviluppatori di FreeBSD: il team di supporto al sistema operativo ha mostrato un primo port nel corso dell’EuroBSDCon 2009 di Cambridge e pare che la versione definitiva sarà integrata nel sistema operativo con il rilascio di FreeBSD 8.1.
In passato i costruttori di chip per computer miglioravano le prestazioni aumentando la velocità di clock del processore. Il sistema aveva però un inconveniente: si generava più calore e si utilizzava più energia; è questo uno dei motivi che ha spinto l’industria a passare a chip con più core (nuclei) di elaborazione, un sistema che permette di incrementare le prestazioni, consumando di meno. Tutti i Mac recenti hanno un processore Intel multicore, ed è proprio il numero di core che determina l’incremento di prestazioni nei moderni processori.
Grand Central Dispatch, per brevità GCD, è un insieme di tecnologie presenti in Snow Leopard in grado di sfruttare il multicore e assegnare compiti a più core e processori. Con GCD i thread (compiti) vengono gestiti dal sistema operativo, non dalle singole applicazioni.
I programmi compatibili con GCD possono distribuire automaticamente le operazioni tra tutti i core disponibili e sfruttare le potenzialità massime di qualsiasi sistema, dai Mac mini dual-core fino ai Mac Pro 8-core. Senza GCD, un applicativo che necessita di 20 thread quando funziona al massimo della sua capacità può predisporre 20 thread e consumare le relative risorse anche quando non è attivo. Al contrario, GCD può liberare le risorse quando non sono usate, contribuendo a mantenere il sistema più reattivo.
Il lavoro richiesto per eseguire il porting di eventi e framework GCD verso altri sistemi operativi è più complesso rispetto a molti altri pacchetti open-source di alto livello, poiché GCD richiede l’integrazione nel kernel (il nucleo del sistema operativo che gestisce i processi, la memoria e altro hardware).
Molti software UNIX sono per loro natura portabili tra Mac OS X, Linux e BSD ma alcune rilevanti differenze nel kernel tra i sistemi rendono il porting di tecnologie di basso livello (quelle da integrare nel kernel, ad esempio) complesse da effettuare. In particolare, Mac OS X utilizza un kernel che è un ibrido tra Mach e BSD: il porting di GCD su FreeBSD richiede modifiche e adeguamenti per funzionare in un sistema con kernel più tradizionale, senza il layer Mach, ricorrendo ad esempio ai semafori POSIX anziché ai semafori Mach.
Lo sforzo effettuato dal team FreeBSD consentirà ora di semplificare il porting su sistemi Unix e Unix-like, inclusi OpenBSD, NetBSD, Linux e Solaris Oltre al supporto del kernel, GCD richiede modifiche ai compilatori (i tool che trasformano i linguaggi di programmazione di alto livello in linguaggio macchina). Apple ha messo a disposizione un compilatore opensource denominato Clang e la tecnologia LLVM grazie alle quali il porting di GCD verso altri sistemi è reso ancora più semplice.
La tecnologia GCD è molto ambita nei settori della ricerca; secondo MacResearch, un sito che illustra l’uso di tecnologie Apple nel campo della ricerca scientifica, è probabile che altri sistemi Unix incorporeranno GCD, anche come strumento a linea di comando.
[A cura di Mauro Notarianni]