Originariamente pubblicato in data 21/01/2002
A
C
C
O
M
A
Z
Z
I
Mac Lindows
Mac Lindows
Emulatori e simulatori: i programmi quasi magici che permettono a un calcolatore di far girare i programmi creati per un altro.
L’ultimo arrivato sul campo è Lindows: si tratterebbe di un economico sistema operativo di imminente rilascio, basato su Linux (quindi più robusto ed affidabile di Windows), ma in grado di usare anche i programmi scritti per Windows. Per capire come sia possibile, e quali limitazioni incontri una tecnologia del genere, dobbiamo addentrarci in uno dei campi più antichi dell’informatica: gli emulatori e i simulatori.Anche negli anni Cinquanta capitava che i calcolatori invecchiassero e andassero sostituiti con modelli più recenti. Anche allora accadeva che società concorrenti cercassero di introdurre sul mercato calcolatori e sistemi operativi concorrenti con l’hardware, ma compatibili con il software, preesistente. Nasce allora l’arte di ricreare, con programmi e con circuiteria dedicata, dentro a un calcolatore recente un contesto di lavoro che imita quello che caratterizzava un vecchio modello, in modo da poter riutilizzare i programmi che erano stati scritti per il computer precedente.
Un moderno programma applicativo svolge il suo lavoro appoggiandosi al sistema operativo per una gran quantità di compiti. Per esempio, nessun programma di videoscrittura sa disegnare le finestre: quando ha bisogno di crearne una per mostrare un testo al suo interno, il software invia una richiesta al sistema operativo che esegue per suo conto. È questo il motivo per cui possiamo lanciare uno stesso programma sotto Windows 98 e sotto Windows XP; lo vediamo comportarsi nello stesso modo, ma l’aspetto della finestra nella quale vive è differente. Un moderno sistema operativo contiene molte migliaia di capacità su cui gli applicativi possono fare affidamento: i programmatori le chiamano “le API”, acronimo di application programming interfaces. Ogni nuova versione di Windows, dal 95 in su, offre tutte le API della versione precedente e ne aggiunge di nuove, quindi può usare tutti i vecchi programmi e contemporaneamente offre il destro alla scrittura di programmi che non girano sulle versioni precedenti.
Gli emulatori funzionano al meglio quando il calcolatore emulato è molto più vecchio, e quindi molto più lento, di quello che lo emula. Per esempio, MAME (www.mame.net) è un emulatore disponibile per PC e Macintosh che permette di rigiocare praticamente tutti i vecchi videogame da bar. Sventrando i vecchi apparecchi per recuperare una copia del codice, gli appassionati hanno creato una grande libreria di giochi d’epoca scaricabili via Internet. Premendo un tasto sulla tastiera si “inserisce” una monetina, e si parte.
Nel 1994 fece scuola e storia la mossa di Apple Computer, che decise di abbandonare i processori Motorola 68040 usati sino a quel punto dentro i calcolatori Macintosh e di rimpiazzarli con i ben più moderni e performanti PowerPC. Apple riuscì a creare un eccellente emulatore di 68040 che rese compatibili le nuove macchine con la quasi totalità dei programmi creati per il vecchio processore e rese possibile la migrazione. Più di recente la medesima mossa non è commercialmente riuscita ad Intel, che cercava di transitare dalla vecchia architettura Pentium alla più recente Itanium.
La simulazione è più semplice, e quindi anche molto più veloce, quando il processore emulato è uguale al processore da emulare. Per esempio, Virtual PC for Macintosh (www.connectix.com) è un programma che permette ai calcolatori Macintosh di creare un “PC dentro una finestra”, completo di una qualsiasi versione di Windows. Funziona molto bene, ma poiché il processore dei Macintosh è il PowerPC mentre il processore dei PC è lo Intel Pentium, un Macintosh dotato di due processori da 800 MHz ciascuno riesce a sviluppare la velocità di un PC basato su un Pentium da 400 MHz. Questo accade perché ad ogni passo l’emulatore si trova davanti a una istruzione concepita per il Pentium e deve chiedersi: “cosa farebbe un vero Pentium a questo punto?” Esiste anche un “Virtual PC for Windows”: permette a chi possiede un PC di crearne altri, dentro una finestra. è popolare nelle scuole tecniche, dove si insegna agli studenti a installare e configurare i sistemi operativi; e anche tra i programmatori, che hanno bisogno di testare le loro creazioni con tutte le varianti di Windows e preferibilmente senza dover acquistare per questo motivo una mezza dozzina di PC. Le prestazioni in questo caso sono egregie, perché processore emulante ed emulato sono lo stesso.
In modo analogo funziona Wine (www.winehq.com), un programma per Linux che gira esclusivamente quando quel sistema operativo viene montato sopra a un comune PC dotato di Pentium. Wine permette a Linux di far girare la maggior parte dei programmi scritti per Windows perché ricrea le API di Windows: offre cioé a quei software un ambiente di lavoro quanto più possibile irriconoscibile da quello genuino creato da Microsoft.Il programma fa le sue richieste attraverso le API documentate, ottiene risposte sensate e non si rende neppure conto di star girando all’interno di un sistema operativo alieno. Il lavoro di Wine conciste, in sostanza, nell’accettare richieste formulare in linguaggio Windows e nel tradurle nelle richieste equivalenti in linguaggio Linux. Il sistema funziona tutto sommato sorprendentemente bene, con due notevoli eccezioni. I videogiochi non si prestano bene, perché molti di essi fanno affidamento su tempi di risposta delle API che Wine non può garantire; e funzionano male o non funzionano per nulla tutte le applicazioni più importanti prodotte da Microsoft. È come se gli autori avessero fatto di tutto per rendere quei programmi inadatti all’uso sotto Wine... il che, tutto sommato, non può proprio stupirci.