iPhone 2.0 SDK: Der „kann kein Multitasking“ Mythos
|
Source: iPhone 2.0 SDK: The No Multitasking Myth Written by: Daniel Eran Dilger
iPhone 2.0 SDK: Der „kann kein Multitasking” Mythos Autor: Daniel Eran Dilger Übersetzung und Adaption: digital express Einige besonders scharfsinninge Marktbeobachter äussern sich mit bösartigen Befürchtungen hinsichtlich Version 2.0 des Software Development Kit (SDK) für das iPhone. Es bestünde angeblich keine Möglichkeit, mehrere Prozesse zeitgleich auszuführen, das iPhone sei somit vergleichbar einem Mac oder Palm Pilot aus der ersten Generation. Gegenüber dem im nächsten Atemzug hochgelobten Windows CE bestünden somit erhebliche Nachteile. Warum das nicht stimmt, lesen Sie hier. Das iPhone ist Unix. Ein guter Anhaltspunkt über die Arbeitsweise des iPhones ergibt sich bei Betrachtung seines Betriebssystems. Das iPhone basiert auf den selben Kernroutinen wie das Mac OS X: Eine Kombination aus Mach und BSD als herkömmliches UNIX Subsystem. Es werden simultane Prozesse und die Mehrbenutzer-Umgebung unterstützt. An dieser Stelle erscheint ein Blick auf das Palm OS sinnvoll, welches ebenfalls auf Grundlage einer Multitasking-Umgebung entwickelt wurde. Palm hat sich jedoch seinerzeit im Rahmen der Verhandlungen mit dem Lizenzgeber Kadak dafür entschieden, lediglich auf der Single-Tasking Variante aufzusetzen. Das rückte den Palm tatsächlich in die Nähe eines Macintosh aus den 80er Jahren: Um eine zweite Anwendung zu starten, musste die erste beendet werden. Dieses Problem ist beim iPhone nicht existent. Apple hat alle Rechte am Kernel und sieht sich auch keiner Notwendigkeit ausgesetzt, das systembedingte Multitasking einzuschränken. Die Möglichkeiten des iPhones wurden schon bei den ersten Werbeclips deutlich: Anruf annehmen, während des Gesprächs das für die Kartendarstellung erforderliche Programm starten und einem Link auf die entsprechende Webseite folgen. Das iPhone klingelt, während der Anwender im Web surft, die Musik läuft im Hintergrund und periodisch werden die E-Mails abgefragt. Das ist Multitasking in Reinkultur. Wie ist es also zu verstehen, wenn Apple in der Dokumentation zum SDK darauf hinweist, „es könne nur eine Anwendung ausgeführt werden”? Für den technisch weniger versierten Leser an dieser Stelle der Hinweis, dass beim iPhone keine mit dem Uralt Mac oder Palm Pilot vergleichbaren Einschränkungen bestehen. iPhone OS X Architecture: the BSD Unix Userland The Egregious Incompetence of Palm Der Mehrprogrammbetrieb auf älteren Macs vor dem Unix-Zeitalter. Die Macs der ersten Stunde hatten nicht die Kapazität, um mehrere Programme zeitgleich auszuführen. Die Anwender haben dies auch recht schnell als ernsthafte Einschränkung erkannt. 1985 hat Andy Hertzfeld mit Entwicklung des „Switcher” die Möglichkeit eröffnet, bestimmte Anwendungen anzuhalten und weitere zu starten. 1987 hat Apple dann mit dem „MultiFinder” eine verbesserte Lösung angeboten, die einen schnellen Wechsel zwischen den Applikationen ermöglichte. Mit einem von UNIX her bekannten klassischen Mehrprogrammbetrieb in geschützten und voneinander abgegrenzten Speicherbereichen hatte dies jedoch noch nichts gemeinsam. Die Prozesse versuchten stattdessen, sich gegenseitig zu koordinieren, im schlimmsten Fall zog jedoch ein abgestürztes Programm alle anderen Prozesse mit sich und es ging kein Weg am Neustart vorbei. Unter UNIX ist dies nicht zwingend der Fall. Der Kernel grenzt die Prozesse zueinander ab, kommt es irgendwo zu einem Problem, bleibt es auch dort. Das einzig verbliebene Risiko besteht darin, dass der Kernelprozess abstürzt – ein Grund, warum es sich hierbei um besonders stabil ausgelegte Routinen handeln muss. Apple weist seine Entwickler deshalb darauf hin, auf die Programmierung von Kernel Erweiterungen nach Möglichkeit zu verzichten. Folklore.org: Macintosh Stories: Switcher Etwas zu können, bedeutet nicht, es zu müssen. Das iPhone basiert auf einer vom Kernel dirigierten Architektur. Allerdings bedeutet dies nicht, dass man den Entwicklern freie Hand lassen sollte, was ihren Einfluss auf die Menge der gleichzeitig im iPhone laufenden Prozesse betrifft. Unter Mac OS X sind viele gleichzeitig laufende Prozesse grundsätzlich kein Problem. Wenn der physikalische Speicher knapp wird, werden per Virtual Memory entsprechende Bereiche auf die Festplatte ausgelagert, bis sie wieder gebraucht werden. Das iPhone verfügt zwar auch über diese Technologie, jedoch nicht über Festplattenspeicher mit reichlich Gigabyte Platz für ausgelagerten Speicher. Das iPhone hat 128 MB RAM, davon werden ca. 11 MB als VRAM genutzt und 19 MB werden permanent vom System benötigt. Nur ca. 76 MB weist das Tool sysctl als freien Speicherbereich aus. Eine Selbstbeschränkung auf wenige Hintergrundprozesse stellt sicher, dass vom Betriebssystem mehr Speicher an die jeweils wichtigste Anwendung zugewiesen wird. Ausserdem ist die Grundauslastung des Prozessors niedriger. Das iPhone ist nicht in erster Linie ein Computer; es ist ein Telefon, ein Web-Browser und ein iPod. Andere Geräte wären froh, das von sich behaupten zu können. furbo.org · What the iPhone specs don’t tell you
Das Problem mit den Hintergrundprozessen. Obwohl das iPhone über mehr als doppelt so viel Speicher verfügt wie ein herkömmliches Smartphone, sind 76 MB freier Speicherplatz ein gefundenes Fressen für Hintergrundprozesse. Neben Speicherplatz schnappen sie auch nach wertvoller Prozessorleistung, die ansonsten für Medienwiedergabe, das Umsetzen der HTML-Inhalte, Telefon und GSM Dienste, VoIP Codierung, E-Mail Dienste, Anrufbereitschaft, SMS-Nachrichten oder andere vorkonfigurierte Dienste zur Verfügung steht. Der Anwender wäre enttäuscht, käme es hierbei zu einem Engpass. Weitere Hintergrundprozesse würden zudem die Temperatur des Prozessors erhöhen und die Stand-By Zeit des Handys, bzw. die Lebensdauer des Akkus senken. Apple zeigt sich verantwortlich gegenüber seinen Anwendern und formuliert seine Empfehlungen in eine Richtung, die den Nutzen des iPhones nicht einschränken, die Temperatur nicht über Gebühr steigern und die Lebensdauer des Handys nicht verkürzen soll. Teil dieser Strategie ist die Entscheidung, den Software-Entwickler an der Installation weiterer Hintergrundprozesse zu hindern. Es wäre unverantwortlich von Apple, Tür und Tor in diese Richtung zu öffnen, um dann vom Anwender in letzter Konsequenz zu erwarten, dass er sich um die richtige Koordinierung der auf dem iPhone installierten Dienste im Rahmen der bestehenden engen Grenzen zu kümmern hat.
iPhone OS X Architecture: the Mach Kernel und RAM Das Problem mit den parallel laufenden Anwendungen. Neben den Hintergrundprozessen kann es auch bei den im Vordergrund laufenden Anwendungen eng werden. Beim iPhone wirkt das Nebeneinander der Programme vollkommen selbstverständlich. Während eines Telefonats lassen sich andere Anwendungen starten. Ein grüner Balken im oberen Bildschirmbereich fungiert dabei als eine Art Hyperlink zurück zur Telefon-Funktion. iTunes kann im Hintergrund einen Song wiedergeben (was leider die Chance erhöht, dass Safari beim Wechsel der Webseiten abstürzt). Und jederzeit kann per Doppelklick auf den Home Button der iTunes Controller aufgerufen werden. Die Beispiele zeigen, dass die überlappenden Bereiche der Programme recht eingeschränkt sind. Dies mit Absicht. Die Einschränkung auf wenige Funktionen lässt den Anwendungen nicht nur maximale Ressourcen, hiervon profitiert auch die Übersichtlichkeit bei der Handhabung. Raketenstart. Es scheint zwar vielversprechend, wenn die auf dem iPhone installierten Anwendungen selbsttätig darüber entscheiden könnten, wie sie mit den verfügbaren Ressourcen umgehen sollen. Das ist es aber nicht. Apple hat sich hingegen für ein Konzept entschieden, wie es auch bei Safari umgesetzt wurde: Wenn der Anwender auf den Home Button klickt, wird die aktive Anwendung mit aktuellem Status gespeichert und beendet. Beim nächsten Start findet man sich dort wieder, wo man zuletzt war. Und weil die Anwendung so schnell hochgefahren wird, ist wird der Wechsel zwischen den Anwendungen nicht als störend empfunden. Auch aus technischer Sicht ist dies vorteilhaft. Eine beendete Anwendung braucht keine Rechenkraft, keine Energie, keinen Speicher. Der Anwender spürt dies über längere Nutzbarkeit und Unabhängigkeit von der Ladestation. Das ist der Grund, warum Apple anordnet, dass „nur eine iPhone Anwendung ausgeführt werden soll, und Drittanbieter Software niemals im Hintergrund laufen darf.” Ausdenken, suggerieren, verrückt machen! Sinnbefreite Blogs wie der originell benannte BoyGenius Report haben die Waffen angelegt und reklamieren für sich Rechte, was die Ausführung eigener Software im Hintergrund anbetrifft. Man ist ausserdem dafür, die eigenen Anwendung nicht jedesmal beenden und neu starten zu müssen. Hört sich alles ganz nett an – aber weiss man wirklich, wovon man redet? Zach Epstein hat seinen Befürchtungen rund um das „kann kein echtes Multitasking” in der Form Ausdruck verliehen, indem er beispielhaft anführt: „Wenn man eine Anwendung wie etwa den AOL Messenger auf dem iPhone bei einem reinkommenden Anruf jedesmal beenden muss, bist du ausgeloggt, verlierst alle ungelesenen Nachrichten und bist am Ende deiner Konversation”. Wie Christopher Cox treffend anmerkt, „übertreibt der Schreiber dieses Beitrags ein wenig […] die Anwendung wird zwar beendet, speichert aber den aktuellen Status und wenn du sie wieder startest, sind deine Nachrichten da […] der AIM Server beendet die Verbindung nicht automatisch, es braucht ein Disconnect Signal. Du kannst also dort weiter machen, wo du aufgehört hast (also kein Re-Connect notwendig).” iPhone SDK Honeymoon Over - No Background Processes?! | The Boy Genius Report Was würde passieren, wenn Apple es nicht besser wüsste? Es ist zwar beruhigend zu wissen, dass die Panik rund um das Multitasking auf fehlende Information und Übertreibung zurück geht. Was wäre aber, wenn es die von Apple eingebauten Beschränkungen nicht gäbe? Eigentlich müßig, darüber nachzudenken. Ein klares Bild ergibt sich allein aus dem Blickwinkel heraus, den man aus der Ecke Microsoft mit WinCE kennt. Dort wurde WinCE zwar als Multitasking Architektur wie UNIX geplant, aufgrund seiner limitierten Möglichkeiten bei der Verwaltung des virtuellen Speichers sind jedoch nur 32 zeitgleich laufende Prozesse möglich, jeder auf einen maximalen Adressbereich von 32 MB beschränkt. Das sind keine guten Voraussetzungen für echtes Multitasking. Aber es kommt noch schlimmer. Hinzu kommt, dass die konzeptionell bedingten Einschränkungen auch die Entwickler daran hindern, ein effizientes Multitasking zu implementieren. WinCE stellt damit unter Beweis, dass der uneingeschränkte Systemzugriff durch die von Fremdanbietern geschriebenen Applikationen und Hintergrundprozesse im Zusammenspiel mit den werkseitig gelieferten Programmen nicht sonderlich gut funktioniert. Das hat mehrere Gründe. Der wichtigste wurde bereits genannt. Mit den Worten von WinCE Enthusiast Chris De Herrera: „Es gibt Fälle, da ziehen die vielen gleichzeitig laufenden Prozesse die Leistung der im Vordergrund befindlichen Anwendung erheblich in den Keller. Das hängt wohl mit dem Aufwand zusammen, den das Betriebssystem beim Bedienen der Hintergrundprozesse betreibt. In diesem Falle empfehle ich einen Neustart.” Es gibt einen weiteren Grund, warum der gleichzeitige Betrieb mehrerer Programme auf einem Handy sinnlos ist: Es gibt zu wenig Platz auf dem Display. Ohne eine adäquate Arbeitsfläche führt sich die Schreibtisch-Metapher mit ihren überlappenden Fenstern und Bedienelementen ad absurdum. Diese simple Erkenntnis hat Microsoft jedoch nicht daran gehindert, eine verkleinerte Nachbildung dessen zu machen, was nur auf dem großen Schirm funktioniert. WinCE Geräte sind hinsichtlich ihrer Bedienerführun derart komplex aufgestellt, dass produktives Arbeiten fast unmöglich ist. Sie stürzen regelmäßig ab und haben schlechte Akkulaufzeiten. Das iPhone ist hingegen so einfach strukturiert, dass man praktisch auf Anhieb und ohne Anleitung damit klar kommt. Es funktioniert einfach. Wenn Apple versucht hätte, ein vom OS X her bekanntes Dock oder verschiebbare Fenster zu integrieren – das iPhone wäre ein tragischer Misserfolg geworden.
The Spectacular Failure of WinCE und Windows Mobile Weniger ist mehr; Mehr erreichen mit weniger. Nicht nur weil das iPhone über einen besseren Multitasking-fähigen Kernel als WinCE verfügt, konnten auch die Ingenieure bei der Entwicklung gegenüber Microsoft erheblich Punkte sammeln. Während sich die Produkte von Microsoft auf dem Papier als Alleskönner darstellen, sieht das in der Praxis ganz anders aus – was sic auch den Verkaufszahlen ablesen lässt. Die bewusst in das iPhone 2.0 SDK implementierten Beschränkungen werden sich hingegen als sehr nützlich für den Anwender erweisen. Weit vor Verfügbarkeit der neuen Software überflügelt das iPhone mit einem Marktanteil von 27% (USA) die Microsoft Produkte. Das iPhone macht zudem heftige 71% Datenverkehr im Segment der mobilen Internet-Geräte aus. Und genau wie beim herkömmlichen PC dürfte es Microsoft schwer fallen, sich von seiner traditionellen Komplexität abzuwenden und etwas auch nur annähernd mit dem iPhone vergleichbares mit WinCE zu realisieren. Windows Mobile Anwendungen werden auf ihr Recht pochen, den Prozessor ganz für sich allein zu beanspruchen - was die Arbeit mit diesen langsamen Geräten zur Geduldsprobe selbst für den überzeugtesten Windows Anhänger macht. Wenn der sich jetzt darüber beschwert, dass sich beim iPhone nicht die selben Probleme finden lassen, dürfte klar werden, warum sich ihm praxisbezogene Reduktion auf das Wesentliche nicht auf Anhieb erschließt.
Apple’s iPhone Vs. Other Mobile Hardware Makers: 5 Revenue Engines Das Apple iPhone im Wettbewerbervergleich: Die Kraft der fünf Profitcenter |






