Sistemi Operativi per Ubiquitous Computing

Universita degli studi di Napoli
FedericoII
Facoltà di Scienze MM FF NN
Corso di laurea in informatica
Studenti:
Bonaiuto Bruna 566/316
Capano Fabrizio 566/1334
Seminario
Sistemi Operativi embedded
I sistemi operativi per sistemi di
elaborazione incorporati seguono i principi
classici dei SO ma devono tener conto di
particolari aspetti:
Memoria limitata
Velocità della cpu
Schermi di piccole dimensioni
Sistemi Operativi embedded
Memoria limitata
La quantità di memoria di questi dispositivi varia
da qualche mega a qualche decina di mega per
questo motivo i sistemi operativi devono gestire
la memoria in modo efficiente,
assicurandosi
che questa venga rilasciata al gestore della
memoria ogni volta che non è più usata, oppure
implementando tecniche di memoria virtuali.
Inoltre è possibile
realizzare
un kernel
estremamente contenuto che implementi solo i
servizi strettamente necessari.
Sistemi Operativi embedded
Velocità della cpu
Le cpu integrate in questo tipo di sistemi
sono più lente sia a causa della
dimensione ridotta dei dispositivi sia
perché cpu più veloci consumano più
energia. Il sistema operativo deve essere
progettato in modo da non gravare
eccessivamente sulle cpu.
Sistemi Operativi embedded
Schermi ridotti
A causa delle dimensioni dello schermo,
per consentire le diverse operazioni che
ormai sono svolte da questi dispositivi
(come la navigazione in rete, giochi e
molto altro), i sistemi operativi devono
gestire il layout delle immagini in modo
efficiente.
Sistemi Operativi embedded
Palm OS
Symbian OS
Windows CE
Embedded Linux
Java Card
Sistemi Operativi : Palm OS
Sistema
operativo
per
PDA(Personal Digital Assistant).
palmari
Implementato su CPU Motorola a 16 bit
Versione corrente : 5.2 con supporto
Bluetooth e 65K colori per PDA/cellulari
multimediali.
Sistemi Operativi : Palm OS
Sistemi Operativi : Palm OS
User Interface
riguarda la gestione dell’I/O grafico, e del
menu.
Memory Management
DB, runtime space, system space, variabili
globali.
Sistemi Operativi : Palm OS
System Management:
eventi, alarms, time, …
Communication Layer
I/O seriale, TCP/IP, Infrared
Association (IrDA).
Data
Sistemi Operativi : Palm OS
User management: SO single user.
Dimensione: v 3.5 richiede circa 1.4
MBytes.
Task Management: una applicazione
per volta con chiamate ad alte
applicazioni. Palm OS è un sistema a
single task guidato dagli eventi.
Power Management: tre stati (sleep,
doze, running)
Sistemi Operativi : Palm OS
Memory Management:
Le applicazioni non sono separate (una
applicazione può causare il crash del
sistema).
Il file system tradizionale è sostituito da
un insieme di database gestiti da un
Database Manager
Sistemi Operativi : Palm OS
La memoria è separata in:
• Dynamic heap:
dimensione tra 64Kb e 256Kb
e serve a contenere le variabili globali, lo stack,
e la memoria allocata dinamicamente durante
l’uso.
• Storage: contiene dati permanenti (DB, files)
che non vanno cancellati allo spegnimento.
Sistemi Operativi: Palm OS –
Sviluppo SW
Sviluppo del Software in C e C++.
Esiste un Palm Emulator per sviluppare e
fare il test delle applicazioni prima di
eseguirle su Palm OS.
Sistemi Operativi: Symbian OS
• Creato come SO per telefonia mobile.
• Attualmente sviluppato da Symbian.
• Usato in cellulari NOKIA e Sony Ericsson e
su
diversi
processori
(anche
in
emulazione).
• Caratteristiche: multi-tasking, real-time
pre-emptive.
Sistemi Operativi : Symbian OS
Sistemi Operativi : Symbian OS
• User management: SO single user.
• Task Management: microkernel realtime, multitasking con scheduling preemptive e con priorità.
Sistemi Operativi : Symbian OS
• Memory User interface: con interfaccia
standard: grafica, suoni e tastiera.
• Management: MMU con spazi di indirizzi
separati per applicazioni.
Sistemi Operativi : Symbian OS
• Sviluppo del Software in C++, Java e OPL
(Basic-like).
• Esiste un Simulatore per sviluppare e fare
il test delleapplicazioni prima di eseguirle
su Symbian OS
Sistemi Operativi: Windows CE
• Windows CE è una versione di Windows
sviluppata per sistemi mobili.
• Il sistema va configurato per la specifica
piattaforma (PDA, cellulare, altro) su cui
deve essere usato. Basato su memoria
ROM.
• Ha l’interfaccia tipica di Windows adattata
per i display dei sistemi mobili.
Sistemi Operativi:
Windows CE – Configurazione
Sistemi Operativi: Windows CE
• User management: SO single user.
• Task Management: Fino a 32 processi e
un numero elevato di thread (limitato dalla
memoria disponibile)
Sistemi Operativi: Windows CE
• User Interface: icone, dialog boxes,
menu, suoni (approccio alla Windows)
• Memory
Management:
memoria
protetta con 32 MB per processo, heap per
file system, registry e object store (fino a
256 MB).
Sistemi Operativi: Windows CE
• Dimensione: da 400 Kb (kernel) a 3 MB
(sistema completo) fino a 8 MB.
• Security: Crittografia con una libreria per
gestire i dati memorizzati in sicurezza.
Memorizzazione sicura con smart card.
• Ambienti Software: Visual C++, Visual
Basic.
Sistemi Operativi: Embedded Linux
• Versione di Linux per sistemi di elaborazione
•
•
•
incorporati.
Architettura a microkernel. Funzioni e
compilabili nel kernel o generabili come
separati da caricare dinamicamente.
Ampia gamma di protocolli e servizi
networking.
Configurabile e scalabile da un orologio
multiprocessore.
servizi
moduli
per il
ad un
Sistemi Operativi: Embedded Linux
• User management: SO multi user.
• Task Management: Multitasking con
scheduler
preemptive
e
real-time
(opzionale). Supporto per multiprocessori.
Sistemi Operativi: Embedded Linux
• User Interface: basata su X-Window.
• Memory Management: gestione alla
Linux con MMU e memoria virtuale.
• Dimensione: da 200 Kb (kernel) a circa
10 MB.
Sistemi Operativi: Embedded Linux
• Linguaggi: C, C++, Java
• Driver, utility, protocolli e programmi client
e server
Internet.
disponibili
per
connessioni
Sistemi Operativi: Embedded Linux
sviluppo
• I
primi sistemi embedded venivano scritti
diretamente in linguaggio macchina
al fine di
sfruttare al massimo le prestazioni dell’hardware
sottostante .
• Il passaggio a linguaggi a più alto livello di
astrazione ma pur sempre dotati di costrutti vicini
allo strato hardware, come il C, ha permesso di
incrementare notevolmente la portabilità del
software delegandone le difficoltà al compilatore.
Questo tipo di approccio ha consentito ai produttori
di sviluppare moduli di crescente complessità per
l’implementazione di funzionalità di file-system, di
connettività in rete e di interfacciamento grafico.
Sistemi Operativi:
Embedded Linux & Real Time
• Un sistema operativo in tempo reale può
essere descritto come un insieme di servizi
di sistema messi a disposizione dello
sviluppatore congiuntamente ad uno
schedulatore di task che sia flessibile e
non richieda troppe risorse sia in termini di
occupazione di memoria che di velocità di
esecuzione.
Sistemi Operativi:
Embedded Linux & Real Time
•
•
Aspetti che caratterizzano un RTOS:
Deve essere multithread, ossia deve consentire
l’esecuzione di più attività concorrenti e deve
disporre di un meccanismo che permetta di
assegnare una priorità ereditaria ad ogni thread.
Inoltre deve essere possibile arrestare e
riprendere ciascun thread in qualunque istante,
compatibilmente con la risoluzione temporale del
sistema.
Questa
caratteristica,
detta
preempibilità, permette di rispondere ‘in tempo
reale’
agli
eventi
critici
sospendendo
immediatamente i compiti meno importanti a
vantaggio di quelli essenziali alla missione del
sistema.
Java Card
• Java Card è un ambiente per lo sviluppo di
applicazioni su smart card (es., la SIM di
un cellulare) in Java.
• Permette lo sviluppo di servizi e codice
indipendenti dalla piattaforma e permette
card multi-applicazione.
Java Card
Attualmente sono disponibili molti modelli di
SmartCard per le applicazioni più disparate. La
maggior parte di questi però sono incompatibili
fra loro a causa delle diversità degli ambienti
d’esecuzione di cui sono dotati. L’ambiente
JavaCard permette di standardizzare l’ambiente
d’esecuzione, e quindi permette la realizzazione
d’applicazioni per SmartCard portabili.
Java Card
Attualmente la tecnologia delle SmartCard ha
ormai raggiunto un alto livello d’affidabilità, ma
sono molteplici le metodologie di progetto e
d’implementazioni
attualmente
disponibili.
Questo dipende principalmente dalla mancanza
di uno standard per l’ambiente d’esecuzione
della SmartCard. In pratica, un’applicazione
sviluppata per una certa SmartCard non può
quasi mai essere utilizzata per un’altra
SmartCard.
Java Card
La miglior soluzione disponibile per la
standardizzazione dell’ambiente d’esecuzione è
l’ambiente
JavaCard,
proposto
da
SUN
Microsystems.
L’implementazione
di
quest’ambiente prevede l’inserimento di un
interprete Java standardizzato sulla carta e la
creazione di una serie di API Java per l’accesso
alle risorse della carta. In questo modo, è
possibile sviluppare servizi in grado di funzionare
indifferentemente su qualsiasi carta. Questa
soluzione ha anche un altro grande vantaggio:
l’utilizzo del linguaggio Java, un linguaggio di
alto livello ben conosciuto da una moltitudine di
sviluppatori.
Java Card - Tecnologia
Le JavaCard (così sono chiamate le Smartcard
che integrano l’ambiente JavaCard) presentano
una serie di caratteristiche peculiari che le
rendono estremamente competitive rispetto alle
SmartCard. Queste caratteristiche sono le
seguenti:
• Indipendenza dalla piattaforma: un’applicazione
per JavaCard, scritta rispettando le regole
imposte dall’API JavaCard, può essere utilizzata
senza modifiche su JavaCard fornite da
costruttori diversi.
Java Card - Tecnologia
• Supporto a più applicazioni: su una stessa
•
JavaCard possono coesistere diverse applicazioni
(JavaCard Applet) indipendenti fra loro e
selezionabili
singolarmente
in
fase
di
esecuzione;
Caricamento di nuove applicazioni dopo la
consegna: dopo che una JavaCard è stata
consegnata all’utente finale è ancora possibile
procedere al caricamento di nuove applicazioni
attraverso
gli
stessi
terminali
addetti
all’espletamento dei servizi, questo per
soddisfare le nuove necessità espresse
dall’utente;
Java Card - Tecnologia
• Flessibilità:
•
il
linguaggio
utilizzato
per
programmare le JavaCard è un subset del
linguaggio Java, quindi la programmazione può
sfruttare il paradigma della programmazione ad
oggetti;
Compatibilità con gli standard delle SmartCard:
le JavaCard sono compatibili con lo standard ISO
7816, lo standard più diffuso nel campo delle
SmartCard.
Java Card - Tecnologia
L’ambiente JavaCard
è costituito
generalmente da tre tipi diversi di
memoria:
memoria
ROM,
memoria
EEPROM e memoria RAM. Di seguito sono
forniti i dettagli relativi ad ognuno:
Java Card - Memoria
• Memoria ROM: questo tipo di memoria, a
sola lettura, è utilizzato per contenere
tutto il codice che non richiede modifiche,
cioè il sistema operativo della JavaCard.
La dimensione di questo tipo di memoria è
di circa 32 KByte per buona parte delle
JavaCard attualmente in commercio,
mentre la dimensione minima richiesta è
di 24 KByte;
Java Card - Memoria
• Memoria EEPROM: questo tipo di memoria,
riscrivibile elettronicamente, è utilizzato per
contenere le estensioni del JCRE (Java Card
Runtime Environment, l’infrastruttura che
permette il funzionamento della JavaCard)
e le JavaCard Applet (applicazioni sviluppate
esternamente e caricabili sulla JavaCard). La
dimensione di questo tipo di memoria è di
minimo circa 16 KByte.
Java Card - Memoria
• Memoria RAM: questo tipo di memoria,
denominato anche volatile, è utilizzato per
contenere l’heap e lo stack necessari per
l’esecuzione, quindi le variabili e gli oggetti
temporanei creati durante l’esecuzione delle
JavaCard Applet. La dimensione di questo tipo di
memoria è di circa un KByte per buona parte
delle JavaCard attualmente in commercio,
mentre la dimensione minima richiesta è di 500
Byte.
Java Card - Conclusioni
E’ importante notare che le configurazioni
hardware descritte precedentemente sono
compatibili con la maggior parte delle
SmartCard utilizzate attualmente. Questo
implica che l’ambiente JavaCard potrebbe
essere adottato sulla maggioranza degli
hardware attualmente disponibili.
Conclusioni
• Palm OS è semplice, compatto, ma non
implementa il multitasking e meccanismi
di security.
• Symbian OS è più complesso, ma più
generale e multitasking.
• Windows CE supporta configurazioni
flessibili e usa crittografia per la security.
Conclusioni
• Embedded Linux offre l’interfaccia di
programmazione avanzata di Linux è
consente la portabilità del codice.
• Java fornisce un ambiente per la
standardizzazione delle applicazioni sulle
smart card