Gängige CPUs für Smartphones, Laptops und sogar Desktop-PCs haben eine variable Taktrate. Wenn der Scheduler feststellt, dass er Leerlaufzeit hat, kann er die Taktrate verringern und erneut erhöhen, wenn mehr Prozesse um die CPU-Zeit konkurrieren.
Für batteriebetriebene Geräte optimierte CPUs bestehen in der Regel aus vielen Funktionskomponenten, die jeweils über eine eigene Uhr verfügen (Beispiel: ARM Cortex A8 ). Wenn eine Komponente im Leerlauf ist, kann das Betriebssystem sie ausschalten (oder die Uhrzeit reduzieren), wodurch Strom gespart wird. Beispielsweise kann bei vielen Multicore-CPUs (z. B. bei High-End-Mobilgeräten) jeder Kern separat ein- oder ausgeschaltet werden. ARM ist besonders gut in diesem Spiel, was einer der Gründe ist, warum die meisten Smartphones ARM-CPUs haben.
Das Variieren der Taktrate oder das Ausschalten der Uhr elektronischer Komponenten wird als Energieverwaltung bezeichnet . Es ist in der Regel ein komplexer Teil des Schreibens und Optimierens eines Betriebssystems für ein batteriebetriebenes Gerät, wobei viele Abhängigkeiten vom genauen Hardwaremodell abhängen.
Was für die CPU gilt, gilt auch für Peripheriegeräte. Das hintergrundbeleuchtete Display ist beispielsweise ein Hauptverbraucher von Strom auf einem Smartphone, gefolgt vom Radio. Das CPU-Betriebssystem kann eine Rolle bei der Energieverwaltung von Peripheriegeräten spielen. Sekundärchips führen auch eine eigene Firmware aus, die auch die Energieverwaltung durchführt.
Anwendungen tragen dazu bei, den Stromverbrauch niedrig zu halten: Sie müssen dem Betriebssystem ermöglichen, seine Aufgabe zu erfüllen. Das Schlimmste, was eine Anwendung tun kann, ist das Abrufen - Ausführen einer Schleife wie while (not_ready()) {}
. Selbst das Einführen einer kleinen Verzögerung wie in while (not_ready()) {usleep(100);}
hilft nicht weiter, da der Prozessor nicht genügend Zeit hat, um in den Energiesparmodus zu wechseln, oder wenn dies der Fall ist, bedeutet jedes unfruchtbare Aufwecken Energieverschwendung. Daher müssen die Betriebssystem-APIs so konzipiert sein, dass Anwendungen niemals abfragen müssen, sondern stattdessen einen Ereignismechanismus abonnieren und inaktiv bleiben können, bis sie über ein relevantes Ereignis informiert werden. Anwendungen wiederum müssen solche Mechanismen nutzen, sodass sich das Design des gesamten Software-Stacks auf den Stromverbrauch auswirkt.
Mit dem Intel Powertop- Dienstprogramm können Sie Informationen darüber abrufen, was für den Stromverbrauch Ihres PCs verantwortlich ist . Smartphones können in der Regel auch feststellen, wie viel Strom Anwendungen verbraucht haben. Die genaue Berücksichtigung des Stromverbrauchs nach Anwendung ist schwierig: Wenn eine Komponente für zwei Anwendungen aufwacht, kann die Weckzeit einer von ihnen etwas willkürlich oder keiner von beiden zugeordnet werden. Der Stromverbrauch von Peripheriegeräten lässt sich auch nicht immer leicht an die zuständige Anwendung verfolgen.
Ein RAM-Chip weiß nicht, welche seiner Bits Daten eines aktiven Prozesses speichern, daher kann er auf diese Weise nicht selektiv ausgeschaltet werden. Der Stromverbrauch eines Prozesses hängt nicht von der Menge des verwendeten Speichers ab (außer insofern, als die RAM-Zugriffe Strom verbrauchen, aber die Wiederverwendung des gleichen Speichers oder die Verwendung unterschiedlicher RAM-Bereiche keinen Unterschied hinsichtlich des Stromverbrauchs macht).
Wie Sie zweifellos wissen, verwaltet das Betriebssystem eine Vielzahl von Listen. Zwei dieser Listen sind die Bereitschaftsliste und die Timerliste. Die Bereitschaftsliste gibt an, welche Aufgaben / Threads zur Ausführung bereit sind. Die Timer-Liste identifiziert die Aufgaben / Threads, die sich in einem blockierten Zustand mit einer Zeitüberschreitung befinden.
Stellen Sie sich vor, das Betriebssystem verfügt über eine leere Bereitschaftsliste. Das heißt, es sind keine Aufgaben mehr ausgeführt werden können (es befindet sich im Ruhezustand). Einige Prozessoren (wie z. B. der x86) verfügen über eine Stopp-Anweisung, die das Betriebssystem aufrufen kann, um den Prozessor anzuhalten, bis er von einem externen Interrupt (z. B. einem Tick-Interrupt) geweckt wird. Während dieser Zeit verbraucht es weniger Strom. Diese Technik kann durch einen Blick auf die Timer-Liste weiter verbessert werden. Wenn Sie im Leerlauf sind und wissen, dass eine Aufgabe, sobald sie von einem Timer-Tick aufwacht, 100 Ticks entfernt ist, kann die Tick-Rate vorübergehend so geändert werden, dass sie beispielsweise 100-mal langsamer ist. Auf diese Weise kann der Prozessor über einen längeren Zeitraum noch weniger Energie verbrauchen, da er nicht bis zu 100 Tick-Interrupts warten muss.
Sobald der externe Interrupt eintrifft, muss die Tick-Rate neu berechnet werden. Wenn der externe Interrupt eine Aufgabe vorbereitet hat, wird die Tick-Rate wieder normal. Wenn nicht, muss die Anzahl der zu schlafenden Zecken zusammen mit der neuen (verlangsamten) Zeckenrate neu berechnet werden.
Hoffe das hilft.
quelle
Um die anderen Antworten zu ergänzen:
Ihre Frage betrachtet iOS und Android als Betriebssysteme, aber das "Betriebssystem" ist nur ein Teil davon.
Sowohl Android als auch iOS sind Frameworks und enthalten viele Teile, die nicht Teil des eigentlichen Betriebssystems sind, aber aktiv zur Reduzierung des Stromverbrauchs beitragen.
Mit Android by Design können die Anwendungsentwickler beispielsweise ihren Status speichern, wenn sie ausgeblendet sind, sodass Prozesse beendet werden können, wenn sie nicht aktiv verwendet werden. Auf diese Weise wird die Anzahl der bereitgestellten Threads reduziert und das Herunterfahren des Kerns und die Reduzierung der Taktrate ermöglicht.
Es gibt Funktionen im "Betriebssystem", die die adaptive Helligkeit, den WLAN-Ruhezustand, Bereinigungsthreads, das Pooling von Zeitplänen, LED-Anzeigen, das Standby-Verhalten von Mobiltelefonen und andere Aspekte festlegen, die den Stromverbrauch drastisch beeinflussen.
Darüber hinaus haben einige mobile Plattformen intensiv an der Optimierung ihres CPU / GPU-Nutzungsverhältnisses gearbeitet, da die GPU besser an Grafiken angepasst ist und eine relativ neue Ergänzung der mobilen Landschaft darstellt, auf die immer mehr grafikbezogene Teile des Betriebssystems umsteigen Die GPU, die die Arbeit von der CPU löscht und die Verwendung von CPU-Leistungsoptimierungen ermöglicht (und in vielen Fällen auch das Gesamtsystem beschleunigt).
quelle