View
109
Download
0
Category
Preview:
Citation preview
Proseminar TUM InformatikProseminar TUM Informatik
PalmPilot und Handspring:PalmPilot und Handspring:Technik, Programmierung, AnwendungTechnik, Programmierung, Anwendung
Aufbau und Struktur von Palm OS, Aufbau und Struktur von Palm OS, SpeichermanagementSpeichermanagement
08.11.200108.11.2001
Stefan KugeleStefan Kugele
kugele@in.tum.dekugele@in.tum.de
2 / 40
AgendaAgenda Palm OS – PhilosophiePalm OS – Philosophie
Struktur von Palm OSStruktur von Palm OS
Veränderungen zu VorgängerversionenVeränderungen zu Vorgängerversionen
SpeicherverwaltungSpeicherverwaltung— CardCard— ArchitekturArchitektur— RAM, chunks, heap, handles, pointerRAM, chunks, heap, handles, pointer— Memory ManagerMemory Manager— BeispielBeispiel
DatenbankDatenbank
3 / 40
Philosophie von Palm OSPhilosophie von Palm OS
EinfachheitEinfachheit
Passt in die WestentaschePasst in die Westentasche
MobilitätMobilität
ErweiterbarkeitErweiterbarkeit
4 / 40
Wo sind wir?Wo sind wir? Palm OS – PhilosophiePalm OS – Philosophie
Struktur von Palm OSStruktur von Palm OS
Veränderungen zu VorgängerversionenVeränderungen zu Vorgängerversionen
SpeicherverwaltungSpeicherverwaltung— CardCard— ArchitekturArchitektur— RAM, chunks, heap, handles, pointerRAM, chunks, heap, handles, pointer— Memory ManagerMemory Manager— BeispielBeispiel
DatenbankDatenbank
5 / 40
Aufbau von Palm OSAufbau von Palm OS
6 / 40
Wo sind wir?Wo sind wir? Palm OS – PhilosophiePalm OS – Philosophie
Struktur von Palm OSStruktur von Palm OS
Veränderungen zu VorgängerversionenVeränderungen zu Vorgängerversionen
SpeicherverwaltungSpeicherverwaltung— CardCard— ArchitekturArchitektur— RAM, chunks, heap, handles, pointerRAM, chunks, heap, handles, pointer— Memory ManagerMemory Manager— BeispielBeispiel
DatenbankDatenbank
7 / 40
Änderungen in Version 2.0Änderungen in Version 2.0
Neue FunktionenNeue Funktionen— TCP/IP supportTCP/IP support— IEEE FließkommaberechnungIEEE Fließkommaberechnung— Neue String-Manipulations-FunktionenNeue String-Manipulations-Funktionen
ÄnderungenÄnderungen— Verschiedene Dialoge, wie z.B. der Verschiedene Dialoge, wie z.B. der
System Keyboard DialogSystem Keyboard Dialog
8 / 40
Änderungen in Version 3.0Änderungen in Version 3.0
Neue FunktionenNeue Funktionen— IR SupportIR Support— Einmalige Geräte ID (nur bei Flash ROM)Einmalige Geräte ID (nur bei Flash ROM)— MIDI, asynchrone Sound-WiedergabeMIDI, asynchrone Sound-Wiedergabe
ÄnderungenÄnderungen— Dynamic heap wurde auf 96 KB vergrößertDynamic heap wurde auf 96 KB vergrößert— Storage RAM wird nun als ein großer heap Storage RAM wird nun als ein großer heap
implementiertimplementiert
9 / 40
Änderungen in Version 3.5Änderungen in Version 3.5
Neue FunktionenNeue Funktionen— FarbdisplayFarbdisplay— Grafische ControlsGrafische Controls— Sicherheits-RoutinenSicherheits-Routinen— Command bar enthält Buttons für häufig Command bar enthält Buttons für häufig
verwendete Menüeinträgeverwendete Menüeinträge— Größe des Größe des dynamic heapdynamic heap richtet sich richtet sich
nach dem verfügbaren Speichernach dem verfügbaren Speicher
10 / 40
Änderungen in Version 4.0Änderungen in Version 4.0
Neue Funktionen:Neue Funktionen:— Verbesserte Sicherheit: Verschlüsselung Verbesserte Sicherheit: Verschlüsselung
von Daten, Passwortschutzvon Daten, Passwortschutz— Silent AlarmsSilent Alarms: Vibration oder LED-: Vibration oder LED-
BlinkenBlinken— Unterstützung für 65.000 FarbenUnterstützung für 65.000 Farben— Schnurloser Internet- und eMail-Zugang Schnurloser Internet- und eMail-Zugang
per Handyper Handy
11 / 40
Zukunft von Palm OSZukunft von Palm OS
Wireless connectionsWireless connections— Built-in Modems, „always-on“ E-Mail-Built-in Modems, „always-on“ E-Mail-
VerbindungVerbindung— BluetoothBluetooth
SicherheitSicherheit— Elektronischer GeldbeutelElektronischer Geldbeutel
Grafik & MultimediaGrafik & Multimedia— Höhere Auflösung, bessere Sound- und Höhere Auflösung, bessere Sound- und
Video-WiedergabeVideo-Wiedergabe
Stärkere Batterien, schnellere ARM Stärkere Batterien, schnellere ARM Mikroprozessoren werden unterstütztMikroprozessoren werden unterstützt
12 / 40
Zusammenfassung IZusammenfassung I
Die Ziele sind in der Geschichte der Die Ziele sind in der Geschichte der Versionen deutlich zu erkennen:Versionen deutlich zu erkennen:— Unterstützung von TCP/IP, IrDA, WebUnterstützung von TCP/IP, IrDA, Web— Erhöhung der SicherheitErhöhung der Sicherheit— Verbessern des ‚Spaßfaktors‘ durch Verbessern des ‚Spaßfaktors‘ durch
leichtere Bedienung, Farbdisplayleichtere Bedienung, Farbdisplay— Effizienteres SpeichermanagementEffizienteres Speichermanagement— Mehr verfügbarer SpeicherMehr verfügbarer Speicher
13 / 40
Wo sind wir?Wo sind wir? Palm OS – PhilosophiePalm OS – Philosophie
Struktur von Palm OSStruktur von Palm OS
Veränderungen zu VorgängerversionenVeränderungen zu Vorgängerversionen
SpeicherverwaltungSpeicherverwaltung— CardCard— ArchitekturArchitektur— RAM, chunks, heap, handles, pointerRAM, chunks, heap, handles, pointer— Memory ManagerMemory Manager— BeispielBeispiel
14 / 40
Hardware - Hardware - cardcard
Ein Speichermodul besteht aus ROM, Ein Speichermodul besteht aus ROM, RAM oder beidem (RAM oder beidem (cardcard).).
Eine card ist eine logische Eine card ist eine logische Konstruktion, die vom OS verwendet Konstruktion, die vom OS verwendet wird.wird.
Ein Gerät kann mehrere Ein Gerät kann mehrere cardscards enthalten (zur Zeit aber nur eine)enthalten (zur Zeit aber nur eine)
Für jede Für jede cardcard wird vom Palm OS 256 wird vom Palm OS 256 MB Adressraum reserviertMB Adressraum reserviert
15 / 40
Speicher ArchitekturSpeicher Architektur
32-bit Architektur mit 8, 16 und 32 bit 32-bit Architektur mit 8, 16 und 32 bit langen Datentypenlangen Datentypen
Somit stehen 4 GB als Adressraum zur Somit stehen 4 GB als Adressraum zur Verfügung Verfügung großes Potential für die großes Potential für die ZukunftZukunft— Der erste Palm hat weniger als 0.025% Der erste Palm hat weniger als 0.025%
des Adressraumes verwendetdes Adressraumes verwendet
16 / 40
RAMRAM
Der verfügbare RAM wird in zwei Der verfügbare RAM wird in zwei logische Bereiche zerteilt:logische Bereiche zerteilt:— Dynamic RAMDynamic RAM
Globale Variablen,Globale Variablen,system-dynamischesystem-dynamischeAllokationen (TCP/IP, IrDA)Allokationen (TCP/IP, IrDA)
Größe variiert je nach OS,Größe variiert je nach OS,physikalischer Speicher,physikalischer Speicher,vorinstallierter Softwarevorinstallierter Software
— Storage RAMStorage RAM Zum Speichern von persistenten DatenZum Speichern von persistenten Daten DatenbankenDatenbanken
Dynamic RAM
Storage RAM
17 / 40
Chunks IChunks I
Alle Daten werden in Alle Daten werden in memory manager memory manager chunkschunks abgelegt. abgelegt.
ChunksChunks sind kontinuierliche sind kontinuierliche Speicherbereiche zwischen 1 Byte und Speicherbereiche zwischen 1 Byte und etwas weniger als 64 KB.etwas weniger als 64 KB.
Die API hat keine generelle Die API hat keine generelle Beschränkung auf 64 KB.Beschränkung auf 64 KB.
18 / 40
Chunks IIChunks II
ChunksChunks können beweglich und können beweglich und unbeweglich sein:unbeweglich sein:— ROM-basierte ROM-basierte heapsheaps enthalten nur enthalten nur
unbewegliche unbewegliche chunkschunks..— RAM-basierte RAM-basierte heapsheaps können beide Arten können beide Arten
con con chunkschunks enthalten; sie sind also enthalten; sie sind also entweder entweder dynamic heapsdynamic heaps, oder , oder storage storage heapsheaps..
19 / 40
Chunk Struktur IChunk Struktur I
8 bytes header8 bytes header— Flags:sizeAdjFlags:sizeAdj byte byte
Höherwertige Nibble beinhaltet Höherwertige Nibble beinhaltet flagsflags (1 bit wird (1 bit wird für freien für freien chunkchunk gesetzt) gesetzt)
Niederwertige Nibble beinhaltet Niederwertige Nibble beinhaltet size size adjustmentadjustment bits bits
— Size fieldSize field (3 bytes) (3 bytes)— Lock:ownerLock:owner byte byte
Höherwerige Nibble beinhalten den Höherwerige Nibble beinhalten den lock countlock count Niederwerige Nibble beinhalten die Niederwerige Nibble beinhalten die owner IDowner ID
— hOffset field hOffset field (3 bytes)(3 bytes)
Chunk Chunk DatenDaten
20 / 40
Chunk Struktur II (Header)Chunk Struktur II (Header)
Size (3 bytes)
Flags [7-4] Size [3-0]
Lock count [7-4] Owner ID [3-0]
hOffset (3 bytes)
21 / 40
Heap - ÜberblickHeap - Überblick
Ein Ein heapheap ist ein kontinuierlicher ist ein kontinuierlicher Speicherbereich, der Speicherbereich, der chunkschunks enthält. enthält.
Anwendungen können spezifizieren, Anwendungen können spezifizieren, ob sie neuen Speicher in dem ob sie neuen Speicher in dem dynamicdynamic oder im oder im storage heapstorage heap allozieren. allozieren.
HeapsHeaps werden über eine 16-bit, werden über eine 16-bit, eindeutige eindeutige heap IDheap ID referenziert. referenziert.
22 / 40
Heap StrukturHeap Struktur
Heap headerHeap header— Heap ID, flags, Heap ID, flags,
sizesize
Master Pointer Master Pointer TableTable— PointersPointers zu zu
beweglichen beweglichen chunkschunks
ChunksChunks— Beweglich, frei, Beweglich, frei,
gesperrtgesperrt
Heap TerminatorHeap Terminator
Heap Header
Master Pointer Table
Heap Terminator
Chunk
Chunk
Chunk
Chunk
Chunk
.
.
.
23 / 40
Handles vs. PointersHandles vs. Pointers
HandlesHandles referenzieren referenzieren master pointersmaster pointers
PointerPointer zeigen direkt zeigen direkt auf die Datenauf die Daten
Durch locken des Durch locken des handleshandles bekommt man bekommt man den den pointerpointer
Heap Header
Heap Terminator
Chunk
Chunk
Chunk
.
.
.Pointer
Chunk
Chunk
HandleMaster Pointer Table
24 / 40
Dynamic Heap IDynamic Heap I
Der gesamte Der gesamte dynamic RAMdynamic RAM wird wird benutzt, um benutzt, um eineneinen einzigen einzigen dynamic dynamic heapheap zu erzeugen! zu erzeugen!
Als Teil der Bootsequenz wird der Als Teil der Bootsequenz wird der dynamic heapdynamic heap reinitialisiert. reinitialisiert.
25 / 40
Dynamic Heap IIDynamic Heap II
Globale Daten für Palm OSGlobale Daten für Palm OS— Font-Tabellen, Kernelstrukturen, event Font-Tabellen, Kernelstrukturen, event
queue; meistens feste Größequeue; meistens feste Größe
TCP/IP stackTCP/IP stack
Anwendungs-UI-DatenstrukturenAnwendungs-UI-Datenstrukturen— Forms, windows, fields, tables, bitmaps, ..Forms, windows, fields, tables, bitmaps, ..
Dynamisch zugewiesener SpeicherDynamisch zugewiesener Speicher
Anwendungs-StackAnwendungs-Stack
26 / 40
Dynamic Heap IIIDynamic Heap III
RAMVerwen-
dung
OS 3.5 4 MB
OS 3.5 2MB
TCP/IP & IrDA
OS 3.3-3.0> 1 MB
TCP/IR & IrDA
OS 2.01 MB
TCP/IP
OS 2.0/1.0512 KB
Dynami-scher
Bereich256 KB 128 KB 96 KB 64 KB 32 KB
System Globals
40 KB 40 KB 2,5 KB 2.5 KB 2,5 KB
TCP/IPstack
32 KB 32 KB 32 KB 32 KB 0 KB
Verbleiben-der
dynami-scher Platz
184 KB 56 KB 36 KB 12 KB 12 KB
27 / 40
Storage HeapsStorage Heaps
Der restliche – nicht-dynamische Der restliche – nicht-dynamische Speicher – wird als ein oder mehr Speicher – wird als ein oder mehr storage heap(s)storage heap(s) konfiguriert (ab konfiguriert (ab Version 3.X nur Version 3.X nur ein großer ein großer heapheap).).
Er beinhaltet nicht-flüchtige Daten wie Er beinhaltet nicht-flüchtige Daten wie Aufgaben, Adresslisten, Memos, ...Aufgaben, Adresslisten, Memos, ...
Anwendungen greifen auf ihn zu, Anwendungen greifen auf ihn zu, indem sie den indem sie den datadata oder den oder den ressource manager ressource manager aufrufen.aufrufen.
28 / 40
Storage Heaps V1.0 & V2.0Storage Heaps V1.0 & V2.0
64 KB
40 KB
50 KB
29 / 40
Storage Heaps V2.04Storage Heaps V2.04
64 KB
40 KB
50 KB
30 / 40
Storage Heaps V3.0Storage Heaps V3.0
256 KB
120 KB
50 KB
31 / 40
Memory ManagerMemory Manager
Verwaltet alle HeapsVerwaltet alle Heaps— Dynamic heapDynamic heap— Storage heapStorage heap— ROM heapROM heap
Stellt API zur Verfügung um:Stellt API zur Verfügung um:— Allozieren von neuen Allozieren von neuen chunkschunks— Löschen von Löschen von chunkschunks— Locking, ResizingLocking, Resizing— Defragmentieren von Defragmentieren von heapsheaps
32 / 40
Verwenden des MMVerwenden des MM
Allozieren:Allozieren:MemHandleNew, MemPtrNewMemHandleNew, MemPtrNew
Verwenden:Verwenden:MemHandleLock / MemHandleUnlockMemHandleLock / MemHandleUnlock
Größe ändern:Größe ändern:MemHandleResize / MemPtrResizeMemHandleResize / MemPtrResize
Deallokation:Deallokation:MemHandleFree, MemPtrFreeMemHandleFree, MemPtrFree
33 / 40
Zusammenfassung IIZusammenfassung II
Der Der Memory ManagerMemory Manager verwaltet den verwaltet den gesamten Speicher.gesamten Speicher.
Dieser ist in Dieser ist in dynamicdynamic und und storage storage heapheap unterteilt und enthält unterteilt und enthält chunkschunks, , welche beweglich und unbeweglich welche beweglich und unbeweglich sein können. (1 byte - <64 KB)sein können. (1 byte - <64 KB)
Zugriff nur per API !!Zugriff nur per API !!
HandlesHandles werden bei beweglichen und werden bei beweglichen und PointerPointer bei unbeweglichen bei unbeweglichen chunkschunks verwendet.verwendet.
34 / 40
Beispiel aus der API-DokuBeispiel aus der API-Doku
MemHandleNewPurpose: Allocate a new movable chunk in the dynamic heap
and returns a handle to it.
Prototype: MemHandle MemHandleNew (UInt32 size)
Parameters: -> size The desired size of the chunk
Result: Returns a handle to the new chunk, or 0 if unsuccessful.
Comments: Use this call to allocate dynamic memory. Before you can write data to the memory chunk that MemHandleNew allocates, you must call MemHandleLock to lock the chunk and get a pointer to it.
35 / 40
CodebeispielCodebeispiel
UInt8 AllocMemory() {UInt8 AllocMemory() {
UInt8* s;UInt8* s;MemhandleSpielfeld = MemhandleSpielfeld = MemHandleNewMemHandleNew(100);(100);s=(UInt8*)s=(UInt8*)MemHandleLockMemHandleLock(memhandleSpielfeld);(memhandleSpielfeld);... ... // z.B. Lese-, Schreibzugriffe// z.B. Lese-, SchreibzugriffeMemHandleUnlockMemHandleUnlock(memhandleSpielfeld);(memhandleSpielfeld);
}}
UInt8 FreeMemory () {UInt8 FreeMemory () {
MemHandleFreeMemHandleFree(memhandleSpielfeld);(memhandleSpielfeld);return 0;return 0;
} }
© © by Andreas Scholzby Andreas Scholz
36 / 40
Datenbanken IDatenbanken I
Es stehen zwei unterschiedliche Es stehen zwei unterschiedliche Manager zur Verfügung:Manager zur Verfügung:— Data ManagerData Manager
Speichern von Benutzerdaten, Adressen, Speichern von Benutzerdaten, Adressen, Memos, etc.Memos, etc.
— Ressource ManagerRessource ManagerUI-Elemente von Anwendungen, Bilder, UI-Elemente von Anwendungen, Bilder, Fonts, oder ähnlichesFonts, oder ähnliches
Beide sind sehr ähnlich, außer dass Beide sind sehr ähnlich, außer dass der der ressource managerressource manager zusätzliche zusätzliche Informationen mitspeichert (+2 Byte)Informationen mitspeichert (+2 Byte)
37 / 40
Datenbanken IIDatenbanken II
Jeder Jeder recordrecord (Datensatz) ist ein (Datensatz) ist ein chunkchunk..
Jeder Jeder recordrecord besitzt eine besitzt eine local IDlocal ID, , die auch im die auch im headerheader der DB gesichert der DB gesichert wird.wird.Ein Aufrufer bekommt nach Ein Aufrufer bekommt nach Konvertierung der Konvertierung der local IDlocal ID einen einen handlehandle auf den auf den recordrecord zurück. zurück.
38 / 40
Datenbanken IIIDatenbanken III
Warum kein gewöhnliches Warum kein gewöhnliches Dateisystem?Dateisystem?— Da Daten direkt in der DB geändert Da Daten direkt in der DB geändert
werden, müssen sie nicht zuerst in den werden, müssen sie nicht zuerst in den Speicher zum Ändern geladen werden.Speicher zum Ändern geladen werden. Effizientere Speichernutzung! Effizientere Speichernutzung!
— RecordsRecords passen sehr schön in das passen sehr schön in das Speicherkonzept von Palm OSSpeicherkonzept von Palm OS
Der Der DMDM verwendet den verwendet den MMMM zur zur Allozierung von Speicher Allozierung von Speicher (Schichtenmodell)(Schichtenmodell)
39 / 40
LiteraturLiteratur
www.palm.comwww.palm.com
www.palmos.comwww.palmos.com
Palm OS Programmer‘s Companion, Palm OS Programmer‘s Companion, Volume1, Juli 2001Volume1, Juli 2001
Palm OS Programming BiblePalm OS Programming Bible
Vortrag wird unter www.nafyagets.deVortrag wird unter www.nafyagets.de
abgelegtabgelegt
40 / 40
ProseminarProseminar
Vielen DankVielen Dank
für Euerefür Euere
AufmerksamkeitAufmerksamkeit
Recommended