Vari /

Il multitasking nei dispositivi mobile

Il multitasking nei dispositivi mobile

19 Maggio 2011 Carlo Bongiovanni
SoloTablet
Carlo Bongiovanni
share
Tutti vorremmo un tablet od uno smartphone col multitasking, ma bisogna sapere che esistono diversi significati e diverse implementazioni del multitasking.

Se pensiamo a come il multitasking è stato implementato nei computers, siamo forzati a credere che nei nuovi dispositivi mobili venga usato lo stesso modello. A grandi linee sul desktop. se usiamo un'applicazione, questa viene caricata in memoria usando la CPU di cui ha bisogno per fare il suo lavoro. Se interviene un altro programma che acquista priorità, prenderà possesso delle risorse e le lascerà al programma che era prima in esecuzione quando verrà usato nuovamente.

L'implementazione di WIndows Mobile:

Il sistema operativo mobile di Microsoft intendeva rendere le cose semplici per l'utente portandolo a controllare le applicazioni aperte e le stesse risorse. Se un programma non veniva usato per un po' e il sistema necessitava della sua memoria per le altre applicazioni, avrebbe chiuso i programmi non utilizzati e rilasciato le loro risorse affinchè venissero usate dagli altri programmi. Sfortunatamente a volte, l'azione di rilasciare risorse per altre applicazioni richiedeva più risorse di quante ne fossero disponibili al momento, portando il dispositivo a laggare (bloccarsi) per un periodo da un secondo a indefinito.

Lo sviluppo sul multitasking di Android è iniziato nel lontano 2003, già prima della successiva acquisizione di Google avvenuta nel 2005, ed il metodo in cui è implementato è simile a come originariamente funzionava Windows. La maniera in cui gestisce i processi per liberare memoria è leggermente più elaborata che semplicemente fermare il processo meno usato di recente. Android usa un set di regole per decidere l'importanza dei processi e tra questi scegliere il primo che dovrà essere terminato. Inoltre i servizi che eseguono le applicazioni sono progettati per essere sempre attivi. In questa maniera Android non termina mai la memoria, e tutte le applicazioni che l'utente esegue continueranno sempre la loro esecuzione.

Quindi c'è l'implementazione del multitasking da parte di Apple iOS. Inizialmente questo sistema operativo non lo supportava. Questo faceva si che si avessero ottime performances poichè il processore e la RAM erano completamente disponibili all'applicazione eseguita in foreground. Questo rendeva difficile che le applicazioni potessero essere eseguite in maniera contemporanea in background. Quindi, con iOS 4, Apple ha implementato un nuovo tipo di multitasking. Le applicazioni che necessitano di funzionalità particolari possono registrarsi nel sistema in modo che venga mantenuto un thread (un sotto-processo del programma) per l'applicazione per sempre (o fino a quando non viene terminato). Questi threads hanno funzionalità limitate e possono solo riprodurre audio, registrarlo, recuperare la posizione dagli strumenti del dispositivo (accellerometro, GPS) e trasmettere traffico voce. In tutti gli altri casi, quando si preme sul pulsante Home, le applicazioni di iOS 4 vengono sospese e restano inerti fino a quando non vengono riutilizzate. Nello stato di suspend tali applicazioni non usano processore, ma occupano parte della memoria. iOS si occuperà di terminare le applicazioni sospese da più tempo qualora avesse bisogno di più memoria.

Inizialmente Windows Phone 7 utilizzava lo stesso schema delle prime versioni di iOS di Apple, in cui non si offriva multitasking per le applicazioni di terze parti. Poco dopo aver navigato fuori da un'applicazione terza, questa viene terminata per poter reclamare le risorse che prima utilizzava e occupava. Ovviamente alcune applicazioni native hanno sempre avuto un completo multitasking, sia su Windows Phone 7 che sulle prime versioni di iOS. I vantaggi di questo approccio sono una durata della batteria più lunga, e migliori performances per le applicazioni eseguite. Con il recente aggiornamento alla release Mango di WIndows phone 7 è cambiato tutto ed il multitasking sarà più un incrocio tra quello che succede su Apple iOS 4 e su Android.

Con Mango, se gli sviluppatori vogliono che le loro applicazioni possano essere eseguite in background, devono creare degli "Agenti di Background". Tali agenti avranno accesso solo ad una parte del processore e della RAM mentre sono in esecuzione durante l'alimentazione a batteria. Alcune applicazioni potranno essere eseguite per 15 secondi ogni mezz'ora, per attività come la sincronizzazione dei dati. Una caratteristica interessante è che questi agenti saranno meno limitati quando il dispositivo si troverà connesso all'alimentazione da rete elettrica. Insomma, quando il sistema è collegato alla presa di corrente i programmi potranno usare più potenza e tempi di download dei dati più lunghi.

Il motivo per cui il multitasking viene implementato in maniera così differente è la necessità di trovare un bilanciamento tra l'avere delle buone performance di sistema ed una durata della batteria più lunga, permettendo anche l'esecuzione di funzionalità nei momenti in cui l'utente non sta interagendo con il dispositivo.

Da una parte ci sono sistemi che richiedono molto dall'utente perchè il sistema esegua in maniera fluida, dall'altra ci sono sistemi che sono più limitati e più semplici per l'utente, ma che sono altrettanto più complessi da gestire per gli sviluppatori.


Quale sistema pensate possa essere meglio, e fino a quale livello di compromesso si può arrivare per aumentare le possibilità dei processori e la capacità delle memorie?

 

Fonti:
Tidbits
Multitasking the Android Way

comments powered by Disqus

Sei alla ricerca di uno sviluppatore?

Cerca nel nostro database


EiS Srl

Operiamo in ambito ICT come System Integrator presentando un’offerta costruita ad...

Vai al profilo

Synesthesia srl

Synesthesia si occupa di Information Technology da oltre un decennio. Diamo vita alle...

Vai al profilo

NBF Soluzioni Informatiche s.r.l. - Shopping Plus

NBF Soluzioni Informatiche s.r.l. opera nel mondo dell’Information Tecnology ed...

Vai al profilo

MG SoftDroid

Programmatore neofita, realizza App Android indirizzate agli studi prevalentemente...

Vai al profilo