Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Proseminar TUM Informatik PalmPilot und Handspring: Technik, Programmierung, Anwendung Aufbau und Struktur von Palm OS, Speichermanagement 08.11.2001 Stefan.

Ähnliche Präsentationen


Präsentation zum Thema: "Proseminar TUM Informatik PalmPilot und Handspring: Technik, Programmierung, Anwendung Aufbau und Struktur von Palm OS, Speichermanagement 08.11.2001 Stefan."—  Präsentation transkript:

1 Proseminar TUM Informatik PalmPilot und Handspring: Technik, Programmierung, Anwendung Aufbau und Struktur von Palm OS, Speichermanagement Stefan Kugele

2 2 / 40 Agenda Palm OS – Philosophie Palm OS – Philosophie Struktur von Palm OS Struktur von Palm OS Veränderungen zu Vorgängerversionen Veränderungen zu Vorgängerversionen Speicherverwaltung Speicherverwaltung — Card — Architektur — RAM, chunks, heap, handles, pointer — Memory Manager — Beispiel Datenbank Datenbank

3 3 / 40 Philosophie von Palm OS Einfachheit Einfachheit Passt in die Westentasche Passt in die Westentasche Mobilität Mobilität Erweiterbarkeit Erweiterbarkeit

4 4 / 40 Wo sind wir? Palm OS – Philosophie Palm OS – Philosophie Struktur von Palm OS Struktur von Palm OS Veränderungen zu Vorgängerversionen Veränderungen zu Vorgängerversionen Speicherverwaltung Speicherverwaltung — Card — Architektur — RAM, chunks, heap, handles, pointer — Memory Manager — Beispiel Datenbank Datenbank

5 5 / 40 Aufbau von Palm OS

6 6 / 40 Wo sind wir? Palm OS – Philosophie Palm OS – Philosophie Struktur von Palm OS Struktur von Palm OS Veränderungen zu Vorgängerversionen Veränderungen zu Vorgängerversionen Speicherverwaltung Speicherverwaltung — Card — Architektur — RAM, chunks, heap, handles, pointer — Memory Manager — Beispiel Datenbank Datenbank

7 7 / 40 Änderungen in Version 2.0 Neue Funktionen Neue Funktionen — TCP/IP support — IEEE Fließkommaberechnung — Neue String-Manipulations-Funktionen Änderungen Änderungen — Verschiedene Dialoge, wie z.B. der System Keyboard Dialog

8 8 / 40 Änderungen in Version 3.0 Neue Funktionen Neue Funktionen — IR Support — Einmalige Geräte ID (nur bei Flash ROM) — MIDI, asynchrone Sound-Wiedergabe Änderungen Änderungen — Dynamic heap wurde auf 96 KB vergrößert — Storage RAM wird nun als ein großer heap implementiert

9 9 / 40 Änderungen in Version 3.5 Neue Funktionen Neue Funktionen — Farbdisplay — Grafische Controls — Sicherheits-Routinen — Command bar enthält Buttons für häufig verwendete Menüeinträge — Größe des dynamic heap richtet sich nach dem verfügbaren Speicher

10 10 / 40 Änderungen in Version 4.0 Neue Funktionen: Neue Funktionen: — Verbesserte Sicherheit: Verschlüsselung von Daten, Passwortschutz — Silent Alarms : Vibration oder LED- Blinken — Unterstützung für Farben — Schnurloser Internet- und -Zugang per Handy

11 11 / 40 Zukunft von Palm OS Wireless connections Wireless connections — Built-in Modems, „always-on“ - Verbindung — Bluetooth Sicherheit Sicherheit — Elektronischer Geldbeutel Grafik & Multimedia Grafik & Multimedia — Höhere Auflösung, bessere Sound- und Video-Wiedergabe Stärkere Batterien, schnellere ARM Mikroprozessoren werden unterstützt Stärkere Batterien, schnellere ARM Mikroprozessoren werden unterstützt

12 12 / 40 Zusammenfassung I Die Ziele sind in der Geschichte der Versionen deutlich zu erkennen: Die Ziele sind in der Geschichte der Versionen deutlich zu erkennen: — Unterstützung von TCP/IP, IrDA, Web — Erhöhung der Sicherheit — Verbessern des ‚Spaßfaktors‘ durch leichtere Bedienung, Farbdisplay — Effizienteres Speichermanagement — Mehr verfügbarer Speicher

13 13 / 40 Wo sind wir? Palm OS – Philosophie Palm OS – Philosophie Struktur von Palm OS Struktur von Palm OS Veränderungen zu Vorgängerversionen Veränderungen zu Vorgängerversionen Speicherverwaltung Speicherverwaltung — Card — Architektur — RAM, chunks, heap, handles, pointer — Memory Manager — Beispiel

14 14 / 40 Hardware - card Ein Speichermodul besteht aus ROM, RAM oder beidem ( card ). Ein Speichermodul besteht aus ROM, RAM oder beidem ( card ). Eine card ist eine logische Konstruktion, die vom OS verwendet wird. Eine card ist eine logische Konstruktion, die vom OS verwendet wird. Ein Gerät kann mehrere cards enthalten (zur Zeit aber nur eine) Ein Gerät kann mehrere cards enthalten (zur Zeit aber nur eine) Für jede card wird vom Palm OS 256 MB Adressraum reserviert Für jede card wird vom Palm OS 256 MB Adressraum reserviert

15 15 / 40 Speicher Architektur 32-bit Architektur mit 8, 16 und 32 bit langen Datentypen 32-bit Architektur mit 8, 16 und 32 bit langen Datentypen Somit stehen 4 GB als Adressraum zur Verfügung  großes Potential für die Zukunft Somit stehen 4 GB als Adressraum zur Verfügung  großes Potential für die Zukunft — Der erste Palm hat weniger als 0.025% des Adressraumes verwendet

16 16 / 40 RAM Der verfügbare RAM wird in zwei logische Bereiche zerteilt: Der verfügbare RAM wird in zwei logische Bereiche zerteilt: — Dynamic RAM Globale Variablen, system-dynamische Allokationen (TCP/IP, IrDA) Globale Variablen, system-dynamische Allokationen (TCP/IP, IrDA) Größe variiert je nach OS, physikalischer Speicher, vorinstallierter Software Größe variiert je nach OS, physikalischer Speicher, vorinstallierter Software — Storage RAM Zum Speichern von persistenten Daten Zum Speichern von persistenten Daten Datenbanken Datenbanken Dynamic RAM Storage RAM

17 17 / 40 Chunks I Alle Daten werden in memory manager chunks abgelegt. Alle Daten werden in memory manager chunks abgelegt. Chunks sind kontinuierliche Speicherbereiche zwischen 1 Byte und etwas weniger als 64 KB. Chunks sind kontinuierliche Speicherbereiche zwischen 1 Byte und etwas weniger als 64 KB. Die API hat keine generelle Beschränkung auf 64 KB. Die API hat keine generelle Beschränkung auf 64 KB.

18 18 / 40 Chunks II Chunks können beweglich und unbeweglich sein: Chunks können beweglich und unbeweglich sein: — ROM-basierte heaps enthalten nur unbewegliche chunks. — RAM-basierte heaps können beide Arten con chunks enthalten; sie sind also entweder dynamic heaps, oder storage heaps.

19 19 / 40 Chunk Struktur I 8 bytes header 8 bytes header — Flags:sizeAdj byte Höherwertige Nibble beinhaltet flags (1 bit wird für freien chunk gesetzt) Höherwertige Nibble beinhaltet flags (1 bit wird für freien chunk gesetzt) Niederwertige Nibble beinhaltet size adjustment bits Niederwertige Nibble beinhaltet size adjustment bits — Size field (3 bytes) — Lock:owner byte Höherwerige Nibble beinhalten den lock count Höherwerige Nibble beinhalten den lock count Niederwerige Nibble beinhalten die owner ID Niederwerige Nibble beinhalten die owner ID — hOffset field (3 bytes) Chunk Daten Chunk Daten

20 20 / 40 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 21 / 40 Heap - Überblick Ein heap ist ein kontinuierlicher Speicherbereich, der chunks enthält. Ein heap ist ein kontinuierlicher Speicherbereich, der chunks enthält. Anwendungen können spezifizieren, ob sie neuen Speicher in dem dynamic oder im storage heap allozieren. Anwendungen können spezifizieren, ob sie neuen Speicher in dem dynamic oder im storage heap allozieren. Heaps werden über eine 16-bit, eindeutige heap ID referenziert. Heaps werden über eine 16-bit, eindeutige heap ID referenziert.

22 22 / 40 Heap Struktur Heap header Heap header — Heap ID, flags, size Master Pointer Table Master Pointer Table — Pointers zu beweglichen chunks Chunks Chunks — Beweglich, frei, gesperrt Heap Terminator Heap Terminator Heap Header Master Pointer Table Heap Terminator Chunk......

23 23 / 40 Handles vs. Pointers Handles referenzieren master pointers Handles referenzieren master pointers Pointer zeigen direkt auf die Daten Pointer zeigen direkt auf die Daten Durch locken des handles bekommt man den pointer Durch locken des handles bekommt man den pointer Heap Header Heap Terminator Chunk Pointer Chunk Handle Master Pointer Table

24 24 / 40 Dynamic Heap I Der gesamte dynamic RAM wird benutzt, um einen einzigen dynamic heap zu erzeugen! Der gesamte dynamic RAM wird benutzt, um einen einzigen dynamic heap zu erzeugen! Als Teil der Bootsequenz wird der dynamic heap reinitialisiert. Als Teil der Bootsequenz wird der dynamic heap reinitialisiert.

25 25 / 40 Dynamic Heap II Globale Daten für Palm OS Globale Daten für Palm OS — Font-Tabellen, Kernelstrukturen, event queue; meistens feste Größe TCP/IP stack TCP/IP stack Anwendungs-UI-Datenstrukturen Anwendungs-UI-Datenstrukturen — Forms, windows, fields, tables, bitmaps,.. Dynamisch zugewiesener Speicher Dynamisch zugewiesener Speicher Anwendungs-Stack Anwendungs-Stack

26 26 / 40 Dynamic Heap III RAM Verwen- dung OS 3.5  4 MB OS 3.5  2MB TCP/IP & IrDA OS > 1 MB TCP/IR & IrDA OS MB TCP/IP OS 2.0/ KB Dynami- scher Bereich 256 KB128 KB96 KB64 KB32 KB System Globals 40 KB  2,5 KB  2.5 KB  2,5 KB TCP/IP stack 32 KB 0 KB Verbleiben- der dynami- scher Platz 184 KB56 KB  36 KB  12 KB

27 27 / 40 Storage Heaps Der restliche – nicht-dynamische Speicher – wird als ein oder mehr storage heap(s) konfiguriert (ab Version 3.X nur ein großer heap ). Der restliche – nicht-dynamische Speicher – wird als ein oder mehr storage heap(s) konfiguriert (ab Version 3.X nur ein großer heap ). Er beinhaltet nicht-flüchtige Daten wie Aufgaben, Adresslisten, Memos,... Er beinhaltet nicht-flüchtige Daten wie Aufgaben, Adresslisten, Memos,... Anwendungen greifen auf ihn zu, indem sie den data oder den ressource manager aufrufen. Anwendungen greifen auf ihn zu, indem sie den data oder den ressource manager aufrufen.

28 28 / 40 Storage Heaps V1.0 & V KB 40 KB 50 KB    

29 29 / 40 Storage Heaps V KB 40 KB 50 KB

30 30 / 40 Storage Heaps V KB 120 KB 50 KB

31 31 / 40 Memory Manager Verwaltet alle Heaps Verwaltet alle Heaps — Dynamic heap — Storage heap — ROM heap Stellt API zur Verfügung um: Stellt API zur Verfügung um: — Allozieren von neuen chunks — Löschen von chunks — Locking, Resizing — Defragmentieren von heaps

32 32 / 40 Verwenden des MM Allozieren: MemHandleNew, MemPtrNew Allozieren: MemHandleNew, MemPtrNew Verwenden: MemHandleLock / MemHandleUnlock Verwenden: MemHandleLock / MemHandleUnlock Größe ändern: MemHandleResize / MemPtrResize Größe ändern: MemHandleResize / MemPtrResize Deallokation: MemHandleFree, MemPtrFree Deallokation: MemHandleFree, MemPtrFree

33 33 / 40 Zusammenfassung II Der Memory Manager verwaltet den gesamten Speicher. Der Memory Manager verwaltet den gesamten Speicher. Dieser ist in dynamic und storage heap unterteilt und enthält chunks, welche beweglich und unbeweglich sein können. (1 byte - <64 KB) Dieser ist in dynamic und storage heap unterteilt und enthält chunks, welche beweglich und unbeweglich sein können. (1 byte - <64 KB) Zugriff nur per API !! Zugriff nur per API !! Handles werden bei beweglichen und Pointer bei unbeweglichen chunks verwendet. Handles werden bei beweglichen und Pointer bei unbeweglichen chunks verwendet.

34 34 / 40 Beispiel aus der API-Doku MemHandleNew Purpose: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 35 / 40 Codebeispiel UInt8 AllocMemory() { UInt8* s; MemhandleSpielfeld = MemHandleNew(100); s=(UInt8*)MemHandleLock(memhandleSpielfeld);... // z.B. Lese-, Schreibzugriffe MemHandleUnlock(memhandleSpielfeld); } UInt8 FreeMemory () { MemHandleFree(memhandleSpielfeld); return 0; } © by Andreas Scholz

36 36 / 40 Datenbanken I Es stehen zwei unterschiedliche Manager zur Verfügung: Es stehen zwei unterschiedliche Manager zur Verfügung: — Data Manager Speichern von Benutzerdaten, Adressen, Memos, etc. — Ressource Manager UI-Elemente von Anwendungen, Bilder, Fonts, oder ähnliches Beide sind sehr ähnlich, außer dass der ressource manager zusätzliche Informationen mitspeichert (+2 Byte) Beide sind sehr ähnlich, außer dass der ressource manager zusätzliche Informationen mitspeichert (+2 Byte)

37 37 / 40 Datenbanken II Jeder record (Datensatz) ist ein chunk. Jeder record (Datensatz) ist ein chunk. Jeder record besitzt eine local ID, die auch im header der DB gesichert wird. Ein Aufrufer bekommt nach Konvertierung der local ID einen handle auf den record zurück. Jeder record besitzt eine local ID, die auch im header der DB gesichert wird. Ein Aufrufer bekommt nach Konvertierung der local ID einen handle auf den record zurück.

38 38 / 40 Datenbanken III Warum kein gewöhnliches Dateisystem? Warum kein gewöhnliches Dateisystem? — Da Daten direkt in der DB geändert werden, müssen sie nicht zuerst in den Speicher zum Ändern geladen werden.  Effizientere Speichernutzung! — Records passen sehr schön in das Speicherkonzept von Palm OS Der DM verwendet den MM zur Allozierung von Speicher (Schichtenmodell) Der DM verwendet den MM zur Allozierung von Speicher (Schichtenmodell)

39 39 / 40 Literatur Palm OS Programmer‘s Companion, Volume1, Juli 2001 Palm OS Programmer‘s Companion, Volume1, Juli 2001 Palm OS Programming Bible Palm OS Programming Bible Vortrag wird unter abgelegt

40 40 / 40 Proseminar Vielen Dank für Euere Aufmerksamkeit


Herunterladen ppt "Proseminar TUM Informatik PalmPilot und Handspring: Technik, Programmierung, Anwendung Aufbau und Struktur von Palm OS, Speichermanagement 08.11.2001 Stefan."

Ähnliche Präsentationen


Google-Anzeigen