Startseite | Kontakt und Admin | SITEMAP | Haftungsausschluss

APRS

APRS

Amateur Packet Reporting System

mehr ...

Runtastic

Runtastic

mehr ...

Remote Control

Remote Control

mehr ...

Windows

Windows

mehr ...

Multitasking

Multitasking

Multitasking bei den mobilen Betriebssystemen Android und iOS

mehr ...

Android APPs und Widgets

Android APPs und Widgets

Selected Android Maps

mehr ...

Android Tablets and Smartphones

Android Tablets and Smartphones

mehr ...

Galaxy S2

Galaxy S2

mehr ...

Google

Google

Ein kurzer Ueberblick über die Firmengeschichte

mehr ...

Netzwerktechnik

Netzwerktechnik

mehr ...
Sie sind hier: Startseite » Technik » Multitasking

MULTITASKING: Android und iOS


"Multitasking ist die Fähigkeit eines Betriebssystems, mehrere Aufgaben gleichzeitig auszuführen"

Sowohl Android als auch iOS unterstützen das Multitasking. Beide mobilen Betriebssysteme bieten präemptives Multitasking. Dies ist der heutiger Standard, wie ein Betriebssystem arbeitet, indem es nach einer bestimmten Zeit einen Prozess zugunstern eines andern suspendiert. Tatsächlich laufen auf der System-Ebene viele Prozesse (quasi) gleichzeitig. Alle Android Apps und einige von Apple bereitgestellten Anwendungen wie Musik-Player, VOIP und Lokalisierung operieren klar im Multitasking.

Prinzipschema

Einordnung des Betriebssystems
Die Anwendungen oder Apps sind Programme, die eine oder mehrere spezielle Funktionen ausführen. Beispiele sind etwa Bildbearbeitung, Geocaching oder soziale Netzwerke. Wichtig ist hier die Benutzerschnittstelle oder das User Interface. Die Apps können System-Apps sein für allgemeine Anwendungen wie eMail. Die überwiegende Mehrzahl sind aber 'Third-party' Apps. Letztere können die System-Apps oder System-Services temporär aufrufen. Der Programmierer muss also nicht 'das Rad immer neu erfinden'.
Das Betriebssystem ist die zentrale Komponente eines Smartphones, Tablets oder Computers. Es besteht aus einem Kern (Kernel), der u.A. für die Zuteilung von Speicher und Rechenzeit an die Anwendungen zuständig ist. Immer sind auch Systemanwendungen wie etwa Telefonfunktionen, Musik-Player oder Navigationsfunktionen integriert. Betriebssysteme sind recht umfangreich und deshalb auf einen längerfristigen Einsatz ausgelegt.
Die Hardware umfasst im wesentlichen den Rechner, Speicher (RAM) und Peripheriegeräte wie etwa das Display, den GPS-Empfänger und weitere Sensoren.
Die vom Betriebssystem unterstützte Hardware-Palette kann extrem schmal sein (Apple iOS mit wenigen Versionen) oder extrem breit (Android mit inzwischen mehreren Tausend unterschiedlichen Geräten).
Die Hardware ist generell sehr kurzlebig.

Speicher als Systemlimitation
Android und iOS sind mobile Betriebssysteme und arbeiten mit begrenztem Speicher (zurzeit etwa 1 GB). Sie haben keine Festplatte. Dies bedeutet, kein Auslagerungs-Speicher (Swap file) ist vorhanden. Begrenzter Speicher und kein Swap bedingen den Verzicht auf den Luxus von scheinbar unendlichem Speicher, wie dies ein modernes System mit Swap hat. Speicherverbrauch ist somit eine entscheidende Systemlimitation. Wie die meisten Systeme, behelfen sich die Smartphones und Tablets mit einem sog. Out of Memory - Mechanismus durch das Schliessen von Anwendungen (Apps), die zuviel Speicher benötigen.

Android

Android unterstützt seit der Version 2.2 echtes Multitasking, wie wir es von Linux, Windows oder vom MacOS gewohnt sind. Das System ist weitgehend offen. Man kann z.B. Videos und Musik ohne spezielle Software direkt in den Speicher (oder die Speicherkarte) überspielen. Stärken sind Flash, Widgets , Integration von Internetdienste und die Möglichkeit der Hersteller, produktspezifische Benutzeroberflächen als Differenzierungsmerkmal zu realisieren.

Android wurde von Anfang an als Multitasking-System konzipiert. Die Struktur basiert auf dem offenen Linux-Kernel.
Wenn eine laufende (active running) App für den Benutzer auf dem Bildschirm nicht oder nur teilweise sichtbar ist, wird sie suspendiert. Beispiel: Tastatureingabe. Die App bleibt im Speicher und pausiert. Falls nun das System mehr Speicher benötigt, wird diejenige App, die am längsten nicht verwendet worden ist, beendet. Dies geschieht vom Benutzer unbemerkt im Hintergrund.

Wichtig: Der Status der App wird gespeichert (state-saving), sodass die App – falls sie wieder in den Vordergrund kommt (resume) genau gleich weiter funktioniert, wie wenn sie nicht beendet worden wäre.

Prinzipschema Android Multitasking

Android Multitasking

Eine App im Background benötigt eine Service-Komponente, um wieder aktiv werden zu können. Bei Android ist ein Service (Dienst) wie eine kleine App, die ohne ein Benutzer-Interface im Hintergrund läuft. Zur App verhält sich der Service ähnlich einer Client/Server-Beziehung. So können beispielsweise Uploads durch den Service weitergeführt werden, auch wenn die entsprechende App sich im Hintergrund befindet.
Anders als Apps werden die Services nicht suspendiert oder beendet (ausser in extremen Situationen, wo sehr wenig Speicher zur Verfügung steht). Welche Prozesse und Dienste aktiv sind ist unter den Einstellungen sichtbar (Bild rechts)

Android's Funktion 'Bundles', kann also den Status von Apps sichern. Der 'OOM Killer' (Out of Memory) speichert Anwendungen im Hintergrund und ist in der Lage, sie in der zuletzt verwendeten Reihenfolge zu stoppen. Wenn der Benutzer wieder auf seine Anwendung schaltet, die suspendiert wurde, lädt Bundels den Zustand der Anwendung wieder. Der ganze Prozess geschieht nahtlos. Da Android diesen 'state-saving framework' aufweist, ist Multitasking möglich, auch auf einem Gerät mit begrenzter Speicherkapazität und ohne Swap (Ein/Auslagerung von Programmsegmenten).

Android 'Multitask Bar'
Die sog. Android 'Multitask Bar' (Bild links) gibt dem Benutzer das Gefühl, dass er durch das 'Wegwischen' von Ikons Apps stoppen und Speicher freigeben kann. Diese Ikons zeigen jedoch nur die kürzlich ausgeführten Apps. Nichts anderes. Es ist keine Garantie, dass diese Apps überhaupt aktiv sind. Jegliche 'Task Managers' und 'Task Killers' sind für den einwandfreien Betrieb von Android absolut unnötig - ja sogar hinderlich. Das System verhindert, dass wichtige Prozesse wie File-Upload oder Navigation versehentlich durch den Benutzer beendet werden.

Die Service-Komponente der App läuft (vom Benutzer unbemerkt) im Hintergrund weiter. Dies macht Android bei den mobilen Betriebssystemen einzigartig und zukunftssicher.

Real Multitasking

Beispiele von Android Multitasking:

1 Test
(siehe nebenstehendes Abbildung)
- Ein 'On-screen'-Video läuft auf dem Startbildschirm 'Tests'.
- Im Hintergrund analysiert die App 'Diagnosis' rund 30 System-Parameter. Hier auf dem Bild auch die CPU-Belastung in Realtime von aktuell 31%.
- Der Live- Hintergrund ist aktiv (Sterne bewegen sich um das Zentrum der Galaxy)
- Das Widget 'Round Battery' zeigt den aktuellen Akku-Stand an
- Dazu noch etwas 'Windows-Look' und 'iPhone Notification' (aktuell nicht sichtbar)

2 Meine Kurzvideos auf YouTube

3 .... mehr durch Klick auf die nachstehenen Links:

iOS

Apple hat mit der Version iOS 4.0 eine eigene Version von Multitasking eingeführt. Damit können grundsätzlich nicht mehrere Anwendungen (Apps) parallel ausgeführt werden. Laufende Apps (sichtbar im Vordergrund) werden bei einem Wechsel zu einer anderen Anwendung suspendiert, wobei wichtige, von Apple ausgewählte Dienste im Hintergrund weiter genutzt werden können.

Das iOS ist komplizierter als es scheint
Das Multitasking im iOS (ab Version 4) ist ähnlich wie bei Android. Apps im Hintergrund werden auch hier suspendiert. Sie bleiben im Speicher, werden aber 'eingefroren' bzw. gehen zu 'sleep'. Kein Code wird ausgeführt ! Benötigt das System mehr Speicher, wird der Status der App gespeichert (state-saving) und die App anschliessend beendet. Wenn wieder gestartet, (im Vordergrund) hat die App auch wieder den gleichen Zustand wie vor der Beendigung.
Apple nennt dies 'Fast App Switching'.

Die Hintergrund-Verarbeitung ist jedoch sehr verschieden von Android.
Es gibt keine Services. Die Programmierer müssen also keine Client/Server-Architektur berücksichtigen, falls sie Hintergrunddienste benötigen. Die Hintergrundprozesse müssen bestimmten Regeln folgen. Wenn eine App lediglich ihren Job beenden will, bevor sie suspendiert wird, beantragt sie vom System eine limitierte Zeit* (ca. 5 sec), um im Hintergrund Daten zu sichern. Für einen längeren File-Upload kann eine extra Zeit von max. 10 Minuten beantragt werden. Ist der Uploaded beendet oder ist die limitierte Zeit aufgebraucht, wird die App wie alle andern Hintergrund-Prozesse suspendiert oder bei Memory-Bedarf ohne Benachrichtigung aus dem RAM entfernt.
Die Zeit zur begrenzten Ausführung der App nennt Apple 'Task Completion'

Falls eine App definitiv über längere Zeit im Hintergrund arbeiten soll, muss sie entweder ausdrücklich bewilligt werden (System-Apps), oder Benachrichtigungen (Notification) verwenden.
System-Anwendungen sind:
- Hintergrund-Musik (Bewilligung, dauerhaft im Hintergrund zu arbeiten)
- Voice over IP oder VOIP (Suspendiert bis eine Netzwerkaktivität erfolgt)
- Hintergrund-Lokalisierung (entweder definitiv erlaubt, um im Hintergrund zu laufen wie eine Navigations-App, die konstante Daten benötigt - oder App-Neustart bei Positionsänderung etwa alle 500 bis 1000 m).
- Integrierte Apps (interne wie z.B. Email, Kiosk, etc.)

In allen andern Fällen müssen die Apps den 'Push Notification Service' (APNs) von Apple verwenden. Dies ist eine Art Timer (wie eine Kalender-Benachrichtigung). Die App gibt Ereignisse und Zeit dem System in die Warteschlange.
Der 'Push Notification Service' erfolgt auf einem externen Server. Beispiel: Twitter kann nicht im Hintergrund nach neuen Nachrichten abfragen. Dies erledigt der Server, welcher via Apple den Benutzer orientiert.
Mit 'Local Notification' kann dem Betriebssysem iOS -ohne einen externen Server- die Anweisung gegeben werden, dem Benutzer eine Benachrichtigung zu einem späteren Zeitpunkt anzuzeigen.

Diese Massnahmen geben dem Benutzer den Eindruck, dass es sich um ein echtes Multitasking OS handelt wie etwa Android, MacOS oder Windows.

iOS Task Bar

Die iOS 'Multitask Bar' zeigt (mit wenigen Ausnahmen, siehe oben) nur die kürzlich benutzten Apps und nicht wie vielfach fälschlicherweise angenommen, die laufenden Apps im Hintergrund. In dieser Beziehung sind sich Android und iOS gleich. Der Benutzer hat -auch hier- keinen Einfluss auf die Batterielebensdauer. Er hat auch keinen Einfluss auf die Speicherbelegung. Das macht das iOS selbst.
Beim Drücken der Home-Taste wird die laufende (aktive) App in den Background-Status gesetzt und kurz danach suspendiert. Sie bleibt normalerweise 'eingefroren' im Speicher und braucht keine Batterieleistung.

* Aus dem aktuellen Programmier-Guide:
When the user presses the Home button to quit the app, the 'applicationWillTerminate' method of the app delegate is called and the app has approximately 5 seconds to clean up and exit before it is terminated and moved back to the not-running state.

Jailbreak
Mittels 'jailbreaking' kann man sich Apps aus andern Quellen laden.
Beispiel ist die App Quasar, mit der man Apps in separaten Fenstern ausführen kann. Aber Achtung: Das Multitasking funktioniert nur bei ausgewählten Anwendungen und nicht generell wie bei Android.

Um das Prinzip von iOS zu verstehen, muss man die verschiedenen States (Zustände) einer App betrachten:
- Not running
Die App ist entweder noch nicht gestartet worden oder wurde vom System (iOS) beendet
- Inactive
Die App befindet sich -vorübergehend- im Vordergrund, hat aber keine Aktivität.
- Active
Dies ist der Normalzustand. Die App befindet sich im Vordergrund (sichtbar auf dem Display) und interagiert mit dem Benutzer oder Systemaktivitäten.
- Background
Die App verbleibt noch für einige Zeit (5 sec) im Hintergrund. Sie kann in dieser Zeit Daten speichern oder iOS Services aufrufen, bevor sie suspendiert wird. In Ausnahmefällen (z.B. für längere Uploads) kann diese Zeit verlängert werden. Die App wird dann aber definitiv suspendiert.
- Suspended
Die App führt keinen Code mehr aus. Sie bleibt aber im RAM-Speicher, ausser das System benötigt zusätzlichen Speicherplatz. Die App wird dann vom System ohne Benachrichtigung ausgelagert.

Das iOS kontrolliert also alle Aktivitäten der Apps zentral. Grundsätzlich können keine Apps längerfristig im Hintergrnd aktiv sein. Um wichtige Funktionen wie etwa Musik, VOIP (Skype), Navigation (Lokalisierung) dennoch zu ermöglichen, sind zentrale Apps und Services (nach Version 3.2) implementiert worden.

__________________________________________________________________
Um beim Beispiel APRS zu bleiben, hat der Entwickler folgende Möglichkeiten zur Realisierung eines dauernden Trackings:

- mit dem 'Foreground-only location service'
Dieser Service sollte nur dann verwendet werden, wenn keine andere App in den Vordergrund kommt, was sehr unwahrscheinlich ist. Der Daten-Update wird dann unterbrochen ! Solche APRS-App gibt es. Sie sind aber unbrauchbar.
Weiterer Nachteil: Der Akkuverbrauch ist sehr hoch (Display/GSM/GPS)

- mit dem von Apple empfohlenen 'Significant-change location service'
Mit diesem Service werden Positionsdaten erst dann der App zur Verfügung gestellt, wenn der Standort beträchtlich ändert. Falls die App 'suspended' ist, wird sie gestartet und mit neuen Daten versorgt. Dies geschieht mit diesem Service in der Folge automatisch.

- mit dem 'Background location service'
Dies funktioniert ähnlich wie der 'Foreground location services' mit dem Unterschied, dass der Daten-Update nicht unterbrochen wird. Die App wird zwar vom iOS suspendiert und kann keine Positionen mehr übertragen. Bei Standortänderungen wird die App wieder 'aufgeweckt' und führt Code aus.

In den letzteren beiden Fällen erscheint es für den Benutzer der App wie wenn diese in echtem Multitasking ausgeführt würde. Dies ist jedoch nicht der Fall. Die App kann beispielsweise keine APRS-Meldungen empfangen, solange sie suspendiert ist.

iOS vs. Android

Die Unterschiede zwischen Android und iOS sind für den Benutzer nicht offensichtlich. Durch Marketing-Slogans und technische Massnahmen wie den laufenden Ausbau der Systemdienste hat es Apple verstanden, die Systemschwächen von iOS zu verbergen. Es wird aber der Zeitpunkt kommen, wo sich das iOS dem Systemvergleich mit Android, Linux, später Tizen und ev. Windows 8 stellen muss.

Unterschiede - illustriert anhand eines Beispiels
APRS ist eine Anwendung für Amateurfunker, die es erlaubt, in Echtzeit die eigene, aktuelle Position öffentlich ins Internet zu senden.
Die Android App APRSdroid sendet die Positionen kontinuierlich mittels eines Hintergrund-Prozesses aus. Die Funktion SmartBeaconing© erlaubt es zudem, die Position noch genauer anhand eines speziellen Algorithmus zu bestimmen. Positionen werden dann bei Richtungsänderungen öfters gesendet als ohne. Die App kontrolliert laufend den eigenen Standort aufgrund laufend empfangener GPS-Daten. Ausserdem können Meldungen von andern Stationen empfangen werden.
Unter iOS 4.x ist eine analoge Funktion nicht möglich. Entweder läuft eine App im Vordergrund. Dann wird sie aber z.B. durch einen Telefonanruf unterbrochen und suspendiert (eingefroren). iOS erlaubt einer 'Third-party'-App nicht, im Hintergrund aktiv zu sein. Das System ist grundsätzlich dafür nicht konzipiert. Die App Ham Tracker behilft sich damit, dass sie nach dem Aussenden einer Positionsmeldung einen Systemdienst des iOS aufruft ('Significant-change location service'). Die App wird dann suspendiert und darf keinen Code mehr ausführen bis sie wieder vom iOS 'aufgeweckt' wird. Analog funktionieren die Navis unter iOS. Systemtechnisch ist dies ein 'Murks'. Dieser Workaround ist aber recht sauber implementiert, sodass der Benutzer dies kaum wahrnimmt.

Wieso macht Apple im Vergleich zu Android soviele Restriktionen bei der Implementation von Hintergrund-Anwendungen ?

Apple begründet dies (und alle Fachpublikationen wiederholen dies folgsam) mit der Batterielebensdauer. Dieses Argument ist aber nur der kleinste Teil der Wahrheit.
Für Anwendungsapplikationen von Drittanwendern ist die Prozessorbelastung im Vergleich zu den System-Apps vernachlässigbar gering. Was viel mehr zählt sind die vielen Anwendungen wie Facebook, Twitter, Messaging, Werbung, die regelmässig abgefragt werden müssen. Dies ist ein Grund, wieso Apple den 'Push Notification Service' (PNS) für Hintergrund-Updates vorschreibt. . Letzlich ist aber der Benutzer für den extensiven Batterieverbrauch selbst verantwortlich.

Natürlich will man damit auch die Community bei der Stange halten und die Kontrolle von Apple über geladene Apps, Musiktitel, etc. behalten (Stichwort Jailbreak)

Kompatibilität
Würde Apple einen unbeschränkten Hintergrunddienst zulassen, müssten alle Apps, die einen Hintergrunddienst aufweisen, neu geschrieben werden mit einer Client/Server-Architektur analog wie Android. App-Entwickler müssten verschiedene Apps unterhalten, solche 'vor iPhone OS4' ohne Multitasking und solche mit neuem, 'echtem' Multitasking. Ein solcher Aufwand wäre enorm und würde Apple's Argument einer einheitlichen Platform arg ins Wanken bringen. Zugeben, dass man nicht, wie behauptet, technologisch Jahre im Vorsprung, sondern Jahre im Rückstand ist, wird Apple nie. Nicht zuletzt würde der Patentkrieg mit Android weiter angefacht werden.

In diesem Dilemma hat Apple die Optionen, das System wie jetzt weiter zu optimieren oder aber eine abgemagerte Version des Mac OS einzuführen. Bereits heute hat man einige Funktionen, darunter auch der Push Notification Service auf dem MacOS 'Mountain Lion' implementiert.

Damit hätte Cook den 'Kühlschrank/Toaster' selbst gebaut und der Spott in Richtung Microsoft würde sich gegen ihn selbst wenden.

Die Zeit für Apple wird langsam eng. Bei Smartphones ist ein Betrieb mit iOS noch problemlos möglich. Mit dem explosionsartigen Aufkommen von Tablets (auch mit Tastatur) wird ein echtes Multitasking zwingend. Jedes low-cost Netbook kann Multitasking ! Ueberall auf YouTube sieht man Multi-screen Anwendungen auf 'jailbroken' iPhones/iPads.

The Truth

Zusammenfassung:

Sind Android und iOS multitaskfähige mobile Operatingsysteme gemäss obenstehender Definition ?

Android:

eindeutig ja

iOS:

ja
für Systemanwendungen wie etwa Musik, Skype und Navigation

nein für beinahe alle iPhone/iPad-Apps. Sie werden falls nicht im Vordergrund sichtbar, nach kurzer Zeit 'eingefroren' und müssen via das 'System Framework' mit lokalen Service-Push oder 'Server-Push' (APNs) reaktiviert werden. Ausserdem darf nur eine App im Vordergrund aktiv sein.

Bleibt noch die Frage:
Warum hat Apple kein echtes Multitasking realisiert ?
Das Prinzip war doch schon mindestens 40 Jahre bekannt und von bedeutenden Firmen jahrzentelang erfolgreich angewendet worden. Mit dem MacIntosh war das Know-how sogar im eigenen Hause vorhanden ! Eigentlich völlig unverständlich !

Ohne Insiderwissen kann man über die Gründe nur spekulieren:
- War der Zeitdruck zur Realisierung eines 'innovativen' iPhones so gross, dass man nur schnell und einfach ein Betriebssystem zurechtgeschneidert hat ? Wurde man vom Erfolg zu sehr überrascht. Damals wäre noch Zeit für einen Redesign gewesen.
- Fehlendes konzeptionelles Denken ? Fehlende Voraussicht für zukünftige Innovationen ? Bei Entwicklungsbeginn des iOS war ein Produkt wie etwa das heutige iPad nicht eimal in der Vorstellungwelt der führenden Kräfte.
- Firmenkulturelle Blockaden ?
Autoritärer Führungsstil, mangelndes Teamwork, Ignoranz, Abteilungsdenken ?
"Den Konflikt mit Samsung hatte massgeblich der im Herbst verstorbene Apple- Gründer Steve Jobs losgetreten. Er hielt das Android-Betriebssystem, auf das auch Samsung setzt, für eine dreiste Kopie von Apples iPhone-Plattform iOS. In der Biografie von Walter Isaacson drohte er deshalb an einer Stelle einen «Atomkrieg» gegen Android an"

Vermutlich eine Kombination von allem.

Der 'harte Kern' der iPhone/iPad-Benutzer besteht aus sog. Technik-Freaks. Sie holen das Letzte aus ihren Geräten heraus. Sie werden aber behindert durch Restriktionen von Apple und durch das iOS-Betriebssystem, welches konzeptionell nicht für Multitasking von Dritt-Apps ausgelegt ist - und folgedessen nicht zukunftssicher ist. Ein -mindestens teilweisen- Umstieg auf Android und später auf Tizen ist absehbar, falls Apple seine Strategie nicht grundsätzlich ändert.


Tizen
(später)

Das Open-Source-Projekt Tizen befindet sich noch im Entwicklungsstadium, finanziert durch eine Partnerschaft zwischen Intel, Samsung, der Linux Foundation und andern.
Samsung wird Tizen sicher bei TV's, Auto-Elektronik und bei einem Teil der Smartphones/Tablets einsetzen.

Tizen soll plattformunabhängig und portabel sein und seinen Schwerpunkt u.a. auf HTML5 setzen. Verschiedene Android-Apps sind bereits auf Tizen demonstriert worden (siehe YouTube)



Windows Phone
(später)

Interessant durch:
- Einheitliche Plattform für PC's und Tablets
- Schneller Browser
- Kompatibilität (Hardware, Software, Apps)
Das Multiprocessing bei Windows Phone 7.x sucht man vergeblich.
Es scheint aber, dass Microsoft die gleichen Probleme wie Apple hat und im Zeitdruck kein echtes Multitasking zustande gebracht hat.
- Task werden nur eingefroren, laufen also nicht parallel
- Skype in der heutigen Version muss im Vordergrund sein, um überhaupt zu funktionieren

Warten wir also 'Apollo', bzw. die Variante Windows 8 ab

08.06.2012 HB9CZV

Freitag, 3. April 2015
Viadi

Super App !

Montag, 31. Dezember 2012
Windows 8

Der Link führt zu meinem Vortrag im Januar 2013

Anmelden

Zugriffe heute: 1 - gesamt: 3045.