DI RECENTE ACCOMAZZI...
CERCA
» Ricerca avanzata
MAILING LIST

Se vuoi iscriverti alla mailing list di Luca Accomazzi inserisci qui la tua mail:

Vuoi ricevere i messaggi immediatamente (50 invii / giorno) o in differita e in gruppo
(due invii / giorno)?

» Vuoi saperne di più?

Multitasking

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, l’applicazione cede il processore ad un’altra (Apple suggerisce di cedere il processore ogni sessantesimo di secondo circa). Quello che succede all’interno di Mac, dunque, è che le applicazioni avanzano un pochino e poi cedono il controllo del sistema a una loro coinquilina, molte volte al secondo. L’applicazione in primo piano (quella la cui icona è visibile in alto a destra nella barra dei menu) riceve comunque più spesso l’uso del processore, in modo da poter rispondere speditamente alle richieste dell’utente.
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 un’altra 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.


Multitasking prelazionale e cooperativo

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 dell’informatica, 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 l’intero sistema. Mac OS Xrivedrà anche l’intero 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.


Thread manager

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 l’animazione grafica. In questo caso, si dice che la musica viene eseguita da un thread, mentre il thread principale viene eseguito indipendentemente e gestisce l’interazione con l’utente.
Una applicazione che mostra filmati QuickTime può usare Thread manager per gestire in parallelo il video, il sonoro e l’interazione con l’utente.
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.


Multiprocessing

In questo periodo si comincia a parlare di calcolatori dotati di più processori. Apparentemente è l’uovo 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 all’interno di un personal computer. Per esempio, il sistema operativo Mac si aspetta di venire eseguito sullo stesso processore che sta eseguendo l’applicazione: cambiarlo perché accetti l’uso 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 (l’immagine viene scomposta in quattro parti, vengono lanciati quattro thread, e ciascuno di essi riceve una parte dell’immagine). Un altro esempio: in QuickTime 3.0 e posteriore un processore a parte decomprime le immagini, velocizzando così del 95% l’intero 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.


Questo articolo fa parte di uno dei miei percorsi. Se vuoi saperne di più su questo argomento, visita il resto del percorso cliccando qui.