• Aloha!



    Hello and welcome to this web page. My name is malcom and I'm a student of Computer Science in Rome.

    As you will found browsing these pages I'm a compulsive nerd programmer; my only cure and big hobby is making programs.. computers, mobile devices, web apps really don't care. This the reason because you could found this site very annonying; "normal" don't like these things.

    Ok don't worry, I've a solution; instead of reading boring tech articles you can take a look to my photo albums...
    Feel free to browse around, there are 1 other users currently online with you (and if I'm not wrong I've served 162 users today.)
  • Projects

    My main application platform is Mac OS X (and iPhone too). However you could found some web apps (mainly php) and some other things... something usefull, something marked as inutility.

    MAC APPLICATIONS
    • Nemo (USENet Reader)
    • LightMe (Switch on/off your LCD)
    • PDFMerge (Merge your pdf files)
    • ExifShopper (EXIF data manager)


    OPENSOURCE
    • OFAPI (phpBB XML-RPC)
    • OFAPI Framework (Cocoa and Java)
  • Picturegrid

Mar 20 2008

E allora ditelo che non ne potete fare a meno…

Posted by malcom.mac

Ora probabilmente passerò per quello che deve sempre lamentarsi contro Apple. E ultimamente, lo devo ammettere, è capitato proprio questo. Ma non me ne vogliate, il fatto è che per giustificare certe azioni ci vorrebbero degli argomenti abbastanza solidi. E alla fine mi sta pure bene che esista un iTunes App Store e che bisogna usare, volenti o nolenti, per forza quello; magari può starmi anche bene che Jobs abbia assunto ormai quell’arroganza senza precedenti (“chi usa più quel linguaggio obsoleto che è Java?” - “il device ha bisogno di qualcosa di molto meglio dell’attuale Flash Player di Adobe”) che ricorda qualche fanatico storico.
Quello che mi preoccupa è invece come le persone, magari anche quelle che masticano di informatica come pane quotidiano, riescano a giustificare certe scelte solo perchè stiamo parlando di Apple.
E finalmente arrivo al punto.

Nel nostro caro iPhone non possono girare applicazioni in multitasking. Motivazione (semi)ufficiale: renderebbe il telefono troppo lento e diminuirebbe le prestazioni della batteria.
Ora per chi fa a cazzotti con questi termini, parliamo di multitasking quando un sistema operativo permette di eseguire più programmi contemporaneamente (ovvero in background; non è una lezione di sistemi operativi quindi mi fermo qui, chi vuole divertirsi può trovare di più su questo stesso sito oppure su wikipedia).

Dunque non possono esserci programmi di terze parti che lavorano in background; quindi quando si passa da una applicazione ad un’altra la precedente viene immediatamente chiusa.
Quindi ad occhio sembrerebbe che le potenzialità del nostro device siano abbastanza limitate e non in grado di supportare un pieno multitasking. E’ una motivazione abbastanza curiosa, soprattuto alla luce del fatto che questo genere di tecnologia (teorizzata già negli anni cinquanta, giusto per dare qualche cenno storico) faceva già la sua comparsa ai tempi dell’AmigaOS 1.0 (anno domini 1985, ma comunque già presente in UNIX da prima ancora) e uno dei primi processori a supportare il multitasking fu, nel 1982, l’80286 (il 286 appunto, 6MHz).
Come già detto il multitasking era già supportato da UNIX ancora prima (prima in modalità cooperativa e poi preventiva) e già un Macintosh serie LC del ‘90 supportava benissimo questa modalità con una distribuzione Unix creata da Apple (parliamo di MkLinux); tutto questo per non parlare della vastità di hardware supportato (si parte dagli Intel, passando ai Motorola fino ai MIPS).

Hardware come questo montava all’epoca una CPU con frequenza da 16 a 180MHz, una RAM da 2Mb a 32Mb e storage da 40Mb a un paio di GB.
L’hardware dell’iPhone è il seguente (qui per la CPU e qui per la RAM):
- 620MHz di CPU
- 128Mb di RAM
- da 4GB a 16GB di storage (a seconda di quanto sborsate)

Per quanto riguarda la CPU stessa è palese la possibilità di far girare più di un programma alla volta, tutto questo anche considerando le normali differenze tra un processore desktop (PPC/x86) e un ARM. Non venitemi a dire ora che è più catorcio del processore Motorola montato sull’LC III che ho casa….

D’altro canto la velocità di CPU non è un fattore critico per la creazione di uno scheduler per il multitasking: ci possono essere centinaia di applicazioni che girano sulla CPU più scassata purchè una sola di solo lavori a pieno regime. In altre parole non basterebbe neanche la CPU più potente per far girare due applicazioni se entrambe richiedessero la piena potenza di calcolo del processore stesso.
E se dobbiamo dirci la verità non credo che un programma di IM, una sveglia o qualcosa di simile che possa essere fatto girare sull’iPhone possa pregiudicare le prestazioni generali (e in generale quelle che non vanno sono solo dei casi particolari non utilizzati dal grande pubblico).

La RAM stessa montata è davvero tanta; 128mb sono, ad esempio, il minimo richiesto da Mac OS X 10.3 (Panther) per essere funzionante, multitasking chiavi-in-mano.
C’è poi il discorso dello swap, che entra in gioco quando ci sono molti processi attivi; generalmente questa attività risulta molto dispendiosa sia in termini di tempo (consideriamo che l’accesso al disco comporta tempi di attesa infinitamente volte più lunghi rispetto a quelli del processore) che di consumo (ovviamente parlando di hard disk parliamo di parti meccaniche in movimento).
Questi fattori tuttavia non risulterebbero essere critici per l’iPhone dove si lavora con gli hard disk a stato solido (per capirci le memory flash): non c’è infatti il ritardo di seek dovuto alla calibrazione delle testine (l’accesso è anche 1000 volte più veloce) e quindi l’operazione di swap sarebbe più immediata e meno dispendiosa (e anche se vogliamo considerare il limite fisico di riscrittura di una memory flash di certo questa sarà l’ultimo dei nostri problemi: nel migliore dei casi il nostro iPhone sarà già un pezzo di plastica da riciclare prima ancora che la memoria abbia finito i suoi giorni).

L’ultimo problema che si può opporre alla scelta di supportare più applicazioni simultaneamente è il consumo di batteria; più applicazioni contemporaneamente fanno si che le prestazioni (e quindi il feedback utente) per il device sia compromesso.

Per risolvere questo genere di problema ci sono diverse strade:

- l’utente può benissimo chiudere il processo. Ovviamente qui scatta l’idea che l’utente sia stupido e sprovveduto o che non voglia preoccuparsi di questi dettagli.
- il sistema può diminuire la priorità dei processi in background cosicchè non utilizzino larghe porzioni di tempo CPU.
- la stessa Apple potrebbe, nel suo controllo preventivo di inserimento nel nostro fatidico store, controllare che l’applicazioni possa girare senza creare troppi problemi in background; in questo modo farebbe felice anche il sottoscritto che troverebbe in questa sorta di cappa di controllo il primo motivo valido a favore del consumatore.

Per farla breve il sottoscritto pensa che probabilmente il multitasking farà parte dell’SDK in un momento successivo al rilascio della finale (o contestuale se vogliamo essere positivi) poichè non ci sono ragioni abbastanza valide per opporsi se non, magari, il fatto che questa scelta derivi da un retaggio del vecchio iPhone pre-sdk.
Il resto sono le solite giustificazioni che si danno alla cricca di Jobs per qualunque scelta, anche quella palesemente più immotivata; per ora, anche con l’arrivo dei software di terze parti, la piattaforma del device risulta più limitata del solito, e tutto questo non va certo a favore di chi la va ad usare.
[tags]No Multitasking on iPhone, iPhone multitasking[/tags]

Filed under : Programmazione | 7 Comments »