Palm Os

Introduzione

Windows CE e Java 2 ME sono nati come porting verso piccoli dispositivi di soluzioni per computer desktop; il sistema operativo Palm OS, al contrario, è stato sviluppato esclusivamente per dispositivi palmari. Le linee guida che hanno regolato lo sviluppo di questo sistema operativo sono state concepite tenendo bene in mente quali fossero le caratteristiche dei dispositivi ai quali era destinato.

 

Alcune di queste linee guida sono piuttosto interessanti e sono dovute a considerazioni di carattere pratico sul modo d’uso del palmare. In particolare, un dispositivo palmare è visto come un dispositivo che viene acceso molte volte al giorno per brevi periodi, quindi è opportuno che le applicazioni siano ottimizzate per questo “utilizzo a raffica”.

La velocità dell’applicazione diventa essenziale: l’utente di un PC desktop in genere utilizzerà una applicazione per molto tempo, quindi ha la pazienza di attendere anche 20 secondi per il caricamento della stessa; viceversa è probabile che l’utente di un palmare utilizzi un’applicazione per soli 20 secondi, pertanto il caricamento dell'applicazione deve essere istantaneo.

Analogamente una applicazione per palmare non dovrebbe richiedere un eccessivo input all’utente. Anche se la tecnologia di riconoscimento della scrittura manuale ha compiuto una notevole evoluzione, l’uso del pad non è comodo ed efficiente quanto una tastiera.

Il team di sviluppo di Palm Os ha creato un documento che spiega in dettaglio queste guide linea per lo sviluppo di applicazioni per Palm Os e le ha rese disponibili in un documento intitolato “Palm Os User Interface Guidelines

 

 

Sviluppo e Ciclo di Vita delle Applicazioni

Le applicazioni per Palm Os sono indipendenti dalla piattaforma hardware. Una applicazione per Palm Os viene compilata in un file PRC (Palm Resource File) e scaricata sul dispositivo. Possono essere sviluppate nei linguaggi di programmazione più comini come C, C++,Java, Visual Basic. Il linguaggio di programmazione più usato è il C, con estensioni per chi vuole usare il C++.

Se si usano questi due linguaggi, il sistema operativo fornisce automaticamente alle applicazioni la maggior parte delle funzioni per la gestione della memoria, delle stringhe, disegno sullo schermo. In questo modo non è necessario il linking alle librerie standard del C e del C++. Questo rende le applicazioni molto compatte.

Se invece, si vogliono usare altri linguaggi di programmazione, è necessario un motore runtime (fornito dall’ambiente di sviluppo) che deve essere scaricato sul dispositivo; ovviamente questo fa crescere lo spazio necessario all’applicazione.

 

Il sistema operativo prevede un singolo thread di esecuzione: in risposta alle richieste dell’utente, il sistema operativo congela l’applicazione corrente e lancia in esecuzione la nuova applicazione. Quando l’utente richiede di nuovo l’utilizzo di una applicazione fermata in precedenza, questa riparte esattamente dal punto in cui era stata lasciata. Le applicazioni interagiscono con l’utente e con il sistema operativo utilizzando il modello basato sugli eventi.

 

Tuttavia le applicazioni possono interagire con il sistema anche al di fuori del ciclo degli eventi. Ad esempio, il sistema operativo può chiedere ad un’altra applicazione di eseguire un determinato compito. L’architettura di Palm Os non prevede multitasking quindi, in questo caso, l’applicazione viene lanciata per un breve tempo durante il quale può assolvere al compito richiesto e viene terminata di nuovo. La modalità di esecuzione dell’applicazione viene decisa durante il lancio dell’applicazione mediante un opportuno codice.

 

Lo sviluppo di applicazioni per Palm Os prevede la creazione di una funzione PilotMain che rappresenta il punto di ingresso del programma. Quando il sistema operativo deve eseguire una applicazione chiama la funzione PilotMain e le invia un codice di lancio che specifica se l’applicazione essere eseguita normalmente oppure se deve esseguire un breve compito e terminare immediatamente.

La funzione PilotMain si occupa esclusivamente della ricezione dei codici di lancio e di inviare una risposta adeguata.

Se l’applicazione riceve un codice normal launch, deve eseguita normalmente quindi viene attivato il ciclo degli eventi.

 

 La connettività verso il Pc è vista come un componente essenziale di un palmare basato su Palm Os. Molte applicazioni per Palm Os hanno una corrispondente applicazione su PC di casa. Un conduit è lo strumento software che consente di sincronizzare i dati di una stessa applicazione tra desktop e palmare.  Per garantire la massima flessibilità un conduit viene sviluppato come un plugin del manager della sincronizzazione del sistema operativo (HotSync Manager) che si occupa di sincronizzare i dati della applicazione. A disposizioni degli sviluppatori la Palm mette a disposizione un kit di sviluppo dedicato alla realizzazione dei conduit: il conduit sdk.

 

Memoria e file System

Nell’architettura di un Palm Os la memoria e il file System sono due argomenti strettamente collegati. Contrariamente a quanto visto per Windows CE, il sitema operativo Palm Os non dispone di un File System inteso nel senso tradizionale. I dati sono memorizzati direttamente in blocchi di memoria chiamati record, che sono raggruppati in database. I dati  vengono editati direttamente nella RAM.

 

La RAM viene suddivisa dal sistema operativo in due aree logiche: dynamic RAM e storage RAM. La dynamic RAM viene usata come spazio di lavoro per l’allocazione dinamica ed è equivalente alla RAM installata sui computer desktop. La RAM restante viene utilizzata dal sistema come area di memorizzazione, come un disco rigido.

Entrambe le aree sono sempre alimentate, quindi il contenuto della memoria resta inalterato anche quando il dispositivo viene spento.

La suddivisione della memoria varia in base al quantitativo di RAM fisica installata, dalla versione del sistema operativo e ai requisiti del software preinstallato.

 

L’indirizzamento della memoria avviene a 32 bit. La memorizzazione di dati avviene nei blocchi. Un blocco è un’area contigua di memoria con dimensione che varia tra 1 e 64k.

 

Ogni blocco di memoria è usato per memorizzare dati viene visto come un record in un database implementato dal Palm Os Data Manager. Un database per Palm Os è una lista di blocchi di memoria a cui viene associato un header

 

La gestione della memoria da parte delle applicazione avviene attraverso delle API che consentono l’allocazione di nuovi blocchi, il dispose dei blocchi, il ridimensionamento, il lock e l’unlock dei blocchi.

Inoltre è prevista una funzione che consente il ricompattamento dell’heap quando diventa frammentato.

Queste operazioni di solito vengono compiute in tempi estremamente ridotti, quindi in modo efficiente, perché i dispositivi palmari eseguono questa operazione in memoria RAM che non ha parti meccaniche.

 

Un database è analogo ad un file in un sistema desktop. Come in un file system tradizionale si possono creare, eliminare, aprire e chiudere file allo stesso modo le applicazioni Palm OS possono aprire, creare, chiudere ed eliminare database. La diffrerenza è che un database non è contiguo come un file, ma i record possono essere interfogliati con dati di altri database.

Un’altra differenza sostanziale è che in un sistema desktop i file vengono aperti, le informazioni caricati in memoria ed elaborate. In Palm Os invece i dati vengono elaborati “in place” ovvero nel blocco della memoria RAM in cui sono memorizzati. Questo viene fatto per minimizzare lo spazio per l’elaborazione delle informazioni.

 

Ogni database contiene all’interno del suo header l’elenco di tutti i blocchi che gli appartengono

Il Data Manager è l’entità che si occupa della gestione dei chunk ed espone l’interfaccia per la creazione dei database.

Alcuni blocchi vengono trattati in modo particolare per memorizzare gli elementi dell’interfaccia di un’applicazione, come le immagini, i tipi di carattere, l’aspetto delle finestre di dialogo. Questi blocchi vengono chiamati risorse e vengono gestiti grazie ad un’altra entità che si chiama Resource Manager. Il Resource Manager in genere viene anche utilizzato dalle applicazioni per memorizzare le preferenze dell’utente, la posizione delle finestre etc.

L’approccio alla gestione della memoria risulta essere estremamente efficiente e poco dispersivo grazie alla ridotta memoria disponibile sui dispositivi palmari. Tuttavia potrebbe essere necessario accedere a grandi quantità di dati memorizzati in blocchi di dati più ampi. Il sistema operativo consente di creare un file stream che non ha limitazioni di dimensione come i blocchi e può essere gestito come un file classico (funzioni open, read, write  e seek).

 

Comunicazione

Il sistema operativo Palm Os supporta il protocollo Object Exchange che consente lo scambio di informazioni tra dispositivi. L’entità che si occupa della gestione dello scambio di informazioni è l’Exchange Manager.

L’Exchange Manager è basato su un insieme di librerie che forniscono un livello di trasporto per realizzare effettivamente la comunicazione con il dispositivo remoto. Quando una applicazione chiede all’Exchange Manager di realizzare una comunicazione, l’ Exchange Manager gira la richiesta ad una libreria opportuna.

Attualmente sono prevista librerie per supportare IrDA, SMS e Bluetooth.

Gli elementi che vengono scambiati dall’ Exchange Manager sono chiamati Typed Data Object (o semplicemente Object) e sono un flusso di byte più informazioni addizionali relative al contenuto del flusso. Queste informazioni addizionali possono contenere un id che identifica il creatore, tipi di dati MIME oppure un nome del file.

L’Object può essere in qualsiasi forma, ma di solito è meglio usare tipi di dato standard piuttosto che tipi di dati personalizzati

Per consentire ad una applicazione di ricevere oggetti è necessario registrarla con l’Exchange Manager per il tipo di dati che si vuole ricevere.

Viceversa per l’invio di dati non è necessario registrare l’applicazione, ma si possono inviare automaticamente i dati nelle forme previste dal sistema operativo e l’Exchange Manager invierà i dati alle applicazioni destinate a riceverli

Palm Os rende disponibile anche alcune librerie per servizi di rete. La libreria net fornisce servizi per la comunicazione su reti TCP/IP utilizzando l’astrazione dei socket. La libreria internet sfrutta la libreria net per fornire un’interfaccia verso i protocolli di livello più alto utilizzati per la comunicazione su Internet, come http.

La libreria net fornisce i servizi di rete di base per il flusso di dati: un tipo orientato al flusso basato su tcp e un tipo orientato ai pacchetti basato su udp. Questi due servizi possono essere usati per implementare trasferimento di dati a livello più alto (e-mail, ftp, Web browsing).

L’implementazione di queste librerie fornisce al programmatore che ne vuole fare uso un’interfaccia che rispetta l’astrazione dei socket introdotta nell’UNIX di Berkeley che rappresenta lo standard de facto delle api per applicazioni per Internet. In questo modo è possibile convertire applicazioni per internet esistenti con il minimo cambiamento.

L’Internet Library invece fornisce alle applciazioni Palm OS un modo per accedere facilmente alle informazioni disponibili su internet utilizzando i protocolli http e https. In particolare sono fornite delle funzioni con le quali accedere facilmente ad una pagina Web.

Per quanto riguarda la sicurezza delle comunicazioni, il sistema operativo prevede il supporto del protocollo SSL, per garantire che le informazioni che viaggiano sulla rete siano sicure ed autenticate.

Un’ulteriore libreria dedicata alla comunicazione è la libreria che si occupa di gestire il Telephony Manager con il quale è possibile interfacciare un palmare con i più diffusi servizi di telefonia: chiamate in ingresso, in uscita, servizi di rete, gestione del pin e della sim.

Ci sono funzioni che consentono di gestire chiamate vocali e sms per dispositivi provvisti dell’hardware opportuno.

Un'applicazione che vuole usare questa libreria deve caricarla e ottenere un numero di riferimento. Infatti questa libreria può essere condivisa da più applicazioni e il numero di riferimento serve per far riconoscere una specifica applicazione quando invoca le funzioni esposte dalla libreria.

L’accesso alle funzioni dell’API telefonica può avvenire in modo sincrono o asincrono in base alle esigenze.

Ovviamente per assicurarsi che il dispositivo possa realmente utilizzare queste funzionalità, il Telephony Manager fornisce un insieme di servizi per determinare se una specifica funzionalità è supportata o meno.

 

Cryptography Provider Manager

La soluzione per la gestione della crittografia adottata in Palm Os è analoga a quella adottata in Windows CE. Le operazioni di crittografia vengono realizzate da moduli indipendenti che possono essere sviluppati da produttori di terze parti. La gestione dei moduli viene realizzata dal Cryptography Provider Manager

Il Cryptography Provider Manager è una libreria condivisa che agisce come infrastruttura per i servizi di crittografia. Questi servizi sono divisi in due livelli:

 

In questa visione il CPM è semplicemente il collante tra l’applicazione e l’AP. L’applicazione che utilizza i servizi crittografici può ignorare i dettagli implementativi di queste operazioni.

Il Provider predefinito di Palm Os fornisce