Originariamente pubblicato in data 09/05/1995
A
C
C
O
M
A
Z
Z
I
Multitasking
Multitasking
Multitasking prelazionale e cooperativo, thread, multiprocessing: cosa sono, a cosa servono, come funzionano. In poche e semplici parole.
Ogni utente di Macintosh sa bene che il suo calcolatore può eseguire più applicazioni contemporaneamente. Eppure un Macintosh contiene un solo microprocessore: la sua elettronica di base può far avanzare un solo programma per volta.Che cosa succede, allora, dentro un Mac dove Finder, Microsoft Word e Adobe Photoshop sono aperti? È semplice. Il microprocessore del Mac si divide tra le applicazioni aperte.
Sotto System 7 oppure Mac OS 8 o 9 una applicazione viene eseguita dal processore, in esclusiva. Quando ritiene di aver elaborato abbastanza, lapplicazione cede il processore ad unaltra (Apple suggerisce di cedere il processore ogni sessantesimo di secondo circa). Quello che succede allinterno di Mac, dunque, è che le applicazioni avanzano un pochino e poi cedono il controllo del sistema a una loro coinquilina, molte volte al secondo. Lapplicazione in primo piano (quella la cui icona è visibile in alto a destra nella barra dei menu) riceve comunque più spesso luso del processore, in modo da poter rispondere speditamente alle richieste dellutente.
Il sistema si chiama multitasking cooperativo, e funziona bene: a patto che tutte le applicazioni rispettino le regole. Se una applicazione è men che scrupolosa, le prestazioni del sistema si degradano. A tutti è capitato di non riuscire a passare ad unaltra applicazione mentre quella principale (quella in primo piano) sta lavorando. Se provate ad eseguire un videogioco mentre Microsoft Word è aperto sullo sfondo vi accorgerete che il gioco è rallentato: questo accade perché Word trattiene il processore per un tempo maggiore di quello consigliato.
La prossima versione del sistema operativo Macintosh (Mac OS X) introdurrà il multitasking prelazionale su Macintosh. Prelazionale significa che nel nuovo sistema sarà il sistema operativo a strappare il controllo ad una applicazione, per passarlo alla successiva, a intervalli regolari.
Quando il multitasking è prelazionale si incontrano alcuni vantaggi. Tanto per cominciare, tutte le operazioni possono venire svolte in contemporanea con tutte le altre (per esempio, è possibile continuare a lavorare mentre il calcolatore formatta un dischetto). Il multitasking prelazionale è, inoltre, la base sulla quale potranno venire fondati nuovi miglioramenti architetturali.
Molti utenti Macintosh, anche esperti, pensano che il passaggio dal multitasking cooperativo al multitasking prelazionale renderà il sistema Macintosh più efficiente. Non è così. In uno dei testi sacri dellinformatica, An Introduction to Operating Systems di H. M. Deitel, sta scritto che l'aggiunta del multitasking prelazionale rallenta la machcina, ché deve passare più tempo a eseguire il sistema operativo e meno tempo ad eseguire le applicazioni. (Il testo è stato scritto, come si suol dire, in tempi non sospetti: prima che MacOS e Windows nascessero).
Perché, allora, tanta enfasi sul sistema prelazionale? I vantaggi, in effetti, ci sono: ma sono nascosti. Insieme al sistema prelazionale, Mac OS X introdurrà la protezione della memoria: questo significa che una applicazione che va in crash non potrà bloccare le altre applicazioni, né tantomeno lintero sistema. Mac OS Xrivedrà anche lintero meccanismo delle estensioni al sistema operativo, e i conflitti tra estensioni diverranno un brutto ricordo. Viceversa, tutte le estensioni esistenti non funzioneranno sotto Mac OS X e andranno riscritte daccapo. Gli ingegneri di Apple permetteranno agli utenti di installare le vecchie estensioni, ma chi lo facesse le vedrebbe funzionare solo all'interno di un piccolo numero di programmi -- quelli non rivisti per trarre massimo vantaggio dalle funzionalità di OS X.
Dalla versione 7.5 del sistema operativo Mac, Apple ha introdotto un componente del sistema operativo chiamato Thread manager.
Una applicazione, come abbiamo detto, può sfruttare una fetta del tempo disponibile. Se essa usa Thread Manager, può suddividere ulteriormente questo tempo tra le funzionalità che la compongono, comportandosi come una collezione di mini applicazioni. Per esempio, il mio gioco (Sogni & Spade) usa Thread manager per offrire contemporaneamente una colonna sonora, la sintesi vocale e lanimazione grafica. In questo caso, si dice che la musica viene eseguita da un thread, mentre il thread principale viene eseguito indipendentemente e gestisce linterazione con lutente.
Una applicazione che mostra filmati QuickTime può usare Thread manager per gestire in parallelo il video, il sonoro e linterazione con lutente.
Thread manager, oggi, è molto limitato: un solo thread può fare richieste al sistema operativo o allocare memoria. Questo significa che la maggior parte delle operazioni non possono venire demandate a un thread. Ci si attende che sotto Mac OS X la gestione dei thread divenga più flessibile.
In questo periodo si comincia a parlare di calcolatori dotati di più processori. Apparentemente è luovo di Colombo: per velocizzare il funzionamento di un calcolatore, cosa meglio che aumentare la sua potenza di calcolo? I sistemi operativi moderni, però, sono stati progettati per sfruttare al meglio il singolo microprocessore presente allinterno di un personal computer. Per esempio, il sistema operativo Mac si aspetta di venire eseguito sullo stesso processore che sta eseguendo lapplicazione: cambiarlo perché accetti luso parallelo di più processori ne richiederebbe una totale e radicale riscrittura.
La versione del Thread manager introdotta con Mac OS 7.6 consente di sfruttare (in modo limitato) i processori multipli. La nuova versione permette di assegnare un thread a un processore PowerPC dedicato.
Le limitazioni di Thread manager di cui abbiamo parlato in precedenza (un solo thread, sul processore principale, può parlare al sistema operativo) sono sempre valide. Per questo motivo, le applicazioni di un sistema multiprocessore Mac OS sono limitate, ma pur sempre interessanti. Per esempio, Photoshop potrebbe eseguire un filtro dividendo il lavoro tra più processori (limmagine viene scomposta in quattro parti, vengono lanciati quattro thread, e ciascuno di essi riceve una parte dellimmagine). Un altro esempio: in QuickTime 3.0 e posteriore un processore a parte decomprime le immagini, velocizzando così del 95% lintero processo di proiezione di un filmato.
Mac OS X invece, come Unix e Windows 2000, è un sistema multiprocessore simmetrico": il sistema operativo si accorge di quanti processori esistono a bordo del calcolatore e divide automaticamente il lavoro tra tutti in parti eque.