Zum Inhalt springen

Scheduler: Unterschied zwischen den Versionen

6.151 Bytes hinzugefügt ,  7. September 2016
(Erklärung der Arten in die Einleitung, Ändern in eigenen Abschnitt)
Markierungen: Mobile Bearbeitung Mobile Web-Bearbeitung
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Ein '''Scheduler''' ist eine Steuerlogik, die die zeitliche Ausführung von gleichzeitigen Prozessen regelt. Die Logik regelt, welcher Prozess die CPU-Leistung wann und für wie lange verwenden darf. Man kann Scheduler grob in zwei Arten unterteilen: ''unterbrechende'' und ''nicht unterbrechende''<ref>http://de.wikipedia.org/wiki/Prozess-Scheduler</ref><ref>http://www.androidpit.de/de/android/forum/thread/452942/Der-Ultimative-Samsung-Galaxy-S-Flash-Guide-Erklaerungen-Tipps-und-Tricks-Stand-29-10</ref>.
Ein '''Scheduler''' ist eine Steuerlogik, die die zeitliche Ausführung von gleichzeitigen Prozessen, bzw. den Zugriff auf bestimmte Systemressourcen, regelt. Die Logik steuert, welcher Prozess die zur Verfügung stehende Leistung (bspw. die Rechenleistung der CPU) wann und für wie lange verwenden darf. Ein Scheduler kann zum Beispiel den Zugriff auf eine Festplatte ('''I/O Scheduler''') oder auf die CPU regeln, bei letzterem unterscheidet man zusätzlich zwischen zwei Arten: ''unterbrechende'' und ''nicht unterbrechende''.<ref>http://de.wikipedia.org/wiki/Prozess-Scheduler</ref><ref>http://www.androidpit.de/de/android/forum/thread/452942/Der-Ultimative-Samsung-Galaxy-S-Flash-Guide-Erklaerungen-Tipps-und-Tricks-Stand-29-10</ref>


Beim unterbrechenden Scheduler wird der CPU nicht nur einen Prozess zugewiesen, sondern ihr wird auch mitgeteilt, wie lange dieser Prozess die CPU beanspruchen kann. Nach Ablauf dieser Zeit, entzieht der Scheduler diesem Prozess den Zugriff auf die CPU. Im Gegensatz dazu, weist der nicht unterbrechende Scheduler der CPU einen Prozes zu und belässt diese Zuweisung, bis der Prozess die CPU selbstständig wieder freigibt.
Beim unterbrechenden Scheduler wird einem Prozess nicht nur die CPU-Leistung zugewiesen, sondern auch mitgeteilt, wie lange diese beansprucht werden kann. Nach Ablauf dieser Zeit entzieht der Scheduler diesem Prozess den Zugriff auf die CPU und vergibt ihn neu an den nächsten Prozess. Im Gegensatz dazu weist der nicht unterbrechende Scheduler der CPU einen Prozess zu und belässt diese Zuweisung, bis der Prozess die CPU selbstständig wieder freigibt.


== Ändern des Scheduler ==
== Android's I/O Scheduler ==
Geändert werden kann der Scheduler bspw. durch das Flashen eines Custom-[[Kernel]]s. Einige Apps können den Scheduler auch ändern, ohne einen neuen Kernel zu flashen, benötigen zumeist aber auch [[Root]]-Zugriff.<!-- Hier sollte ebenso auch eine Liste der verfügbaren Scheduler mit einer kurzen Beschreibung rein. -->
Der I/O Scheduler steuert den Schreib- sowie Lesezugriff einzelner Prozesse auf den verbauten Speicher (i.d.R. ein Flash-Speicher). Dabei kann dieser die Abarbeitung der in der Warteschlange befindlichen Lese- und Schreibvorgänge verschieden handhaben und bspw. die Lesevorgänge priorisieren und Schreibvorgänge nach hinten stellen oder umgekehrt. Wie die Schreib- und Lesevorgänge abgearbeitet werden kann, je nach Nutzung des Speichers, signifikante Geschwindigkeitseinbußen oder -vorteile haben.<ref>{{Cite web|url = http://www.android-hilfe.de/kernel-fuer-samsung-galaxy-s2/180437-faq-governors-schedulers.html#post2419544|title = <nowiki>[FAQ] Governors & Schedulers - Android-Hilfe.de</nowiki>|accessdate = 2015-03-03}}</ref>


== Einzelnachweise ==
=== Ändern des I/O Scheduler ===
Geändert werden kann der I/O Scheduler bspw. durch das Flashen eines Custom-[[Kernel]]s; einige Apps können ihn zudem auch ändern, ohne einen neuen Kernel zu flashen, benötigen zumeist aber auch [[Root]]-Zugriff.
 
=== Verfügbare I/O Scheduler ===
Wie viele und welche Scheduler im Kernel enthalten sind, und dadurch bspw. durch eine App-Lösung gewählt werden können, hängt stark vom Entwickler des Kernels ab. I.d.R. sind die vom Hersteller des Gerätes installierten Kernel in dieser Hinsicht ''sparsam'' bestückt.
 
==== Noop ====
Der '''Noop''' Scheduler ('''[[Wikipedia:de:Nulloperation|no]]''' [[Wikipedia:de:Nulloperation|'''op'''eration]], deutsch etwa: ''keine Funktion'')<ref>{{Internetquelle|autor = Robert Love|titel = Linux-Kernel-Handbuch: Leitfaden zu Design und Implementierung von Kernel 2.6|url = https://books.google.de/books?id=PAOvoVr-l74C&pg=PA321&dq=Der+Noop-I/O-Scheduler&hl=de&sa=X&ved=0ahUKEwj6qZ6T6dnJAhVCuhQKHUkZC5wQ6AEIIzAA#v=onepage&q=Der%2520Noop-I%252FO-Scheduler&f=false|hrsg = Pearson Deutschland GmbH|datum = 2005-01-01|zugriff = 2015-12-13|sprache = de}}</ref> ist prinzipiell recht einfach, für nicht-mechanische Festplatten (wie Flashspeicher) allerdings sehr effektiv. Er reiht die wartenden Schreib- und Lesevorgänge in eine einfache Warteschlange nach dem ''[[Wikipedia:de:First In – First Out|FIFO]]''-Prinzip (''First in - First Out'') ein. Generell werden Schreib- und Lesevorgänge somit in der Reihenfolge ausgeführt, in welcher sie in die Warteschlange hinein gekommen sind.<ref>{{Cite web|url = http://forum.xda-developers.com/showthread.php?t=1242323|title = <nowiki>[REF] Quasar kernel governors and I/O schedu&hellip; | LG Optimus Black | XDA Forums</nowiki>|accessdate = 2015-03-03}}</ref>
 
==== Anticipatory ====
Aufgrund der Arbeitsweise dieses Schedulers sind Lesevorgänge vergleichsweise langsam. Nach einem abgeschlossenen Lesevorgang geht dieser Scheduler nicht, wie andere, in der Warteschlange weiter und führt den nächsten Lesevorgang aus, sondern verweilt eine kurze Zeit (einige Millisekunden) in der Annahme, dass der gleiche Prozess einen weiteren Lesevorgang ausführen wird. Durch diese Wartezeit verringert sich die Lesegeschwindigkeit bei vielen verschiedenen Prozessen entsprechend, bei vielen Vorgängen des gleichen Prozesses, kann er allerdings Vorteile bringen. Für ein Endgerät, wie einem Android Smartphone, wird dieser Scheduler i.d.R. aufgrund seiner Nachteile nicht verwendet.
 
==== CFQ ====
Der '''C'''ompletely '''F'''air '''Q'''ueuing (kurz '''CFQ''') ist ein ursprünglich für den Linuxkernel entwickelter Scheduler, welcher die Einteilung von Prozessen in bestimmten Klassen ermöglicht:<ref>{{Cite web|url = https://www.thomas-krenn.com/de/wiki/Linux_I/O_Scheduler#CFQ|title = Linux I/O Scheduler – Thomas-Krenn-Wiki|accessdate = 2015-03-03}}</ref>
* '''RT''' ('''R'''eal-'''T'''ime): Prozesse in dieser Klasse erhalten immer bevorzugt und zuerst Zugriff auf das Gerät, weshalb diese Klasse i.d.R. nur durch den [[Root]]-Benutzer gesetzt werden kann, um zu verhindern, dass durch das vermehrte Setzen dieser Klasse das Gerät ständig ausgelastet ist und andere Prozesse keinen Zugriff bekommen.
* '''BE''' ('''B'''est-'''E'''ffort): Erhalten immer dann Zugriff, wenn die Warteschlange RT abgearbeitet ist.
Zudem gibt es noch die '''Idel''' Klasse; Prozesse daraus werden dann ausgeführt, wenn BE und RT abgearbeitet sind. Bei hoher Auslastung kann es allerdings dazu kommen, dass diese Prozesse eine Zeit lang keinen Zugriff auf das Gerät erhalten. BE und RT haben intern wiederum 8 Prioritätslevel, die die Prozesse innerhalb der Klasse einordnen, wobei 7 die geringste Stufe ist.
 
Der Scheduler arbeitet nun nacheinander die einzelnen Warteschlangen nach ihrer Priorität ab, wobei die Zugriffszeit auf das Speichermedium von der Priorität abhängt.
 
==== Deadline ====
Dieser Scheduler versucht eine genaue Start-Zeit für einen Schreib- oder Lesevorgang zu garantieren. Hierfür erhält jeder Prozess eine Ablaufzeit, bis zu welcher der Vorgang abgeschlossen sein soll, wodurch sich errechnen lässt, zu welcher Zeit, welcher Prozess an der Reihe ist. Hierfür verwaltet der Scheduler zwei verschiedene Warteschlangen, jeweils eine für Lese- und Schreibvorgänge. Lesevorgänge werden dabei priorisiert<ref>{{Cite web|url = https://en.wikipedia.org/wiki/Deadline_scheduler|title = Deadline scheduler - Wikipedia, the free encyclopedia|accessdate = 2015-03-03}}</ref>, da die verbundenen Prozesse i.d.R. auf diese warten müssen, um weitere Aufgaben ausführen zu können.
 
==== VR ====
{{Unvollständig|Was macht dieser? --[[Benutzer:Florian|Florian]] ([[Benutzer Diskussion:Florian|Diskussion]]) 22:33, 3. Mär. 2015 (CET)}}
 
==== Simple ====
Wie der Name schon sagt, ist dieser Scheduler extrem einfach gehalten. Er sortiert die Schreib- und Lesevorgänge nicht, sondern führt sie nacheinander aus
 
====Budget Fair Queueing<nowiki/>====
Der Budget Fair Queueing (kurz '''BFQ''') Scheduler basiert grundsätzlich auf dem [[#CFQ|CFQ]], doch anstelle eines bestimmten Zeitkorridors, die ein Prozess den Zugriff auf ein Speichergerät hat, verteilt dieser ein Budget an Speichersektoren, die dieser Prozess verwenden darf. Ist dieser aufgebraucht, so wird ihm der Zugriff entzogen.
 
== Siehe auch ==
* [[Governor]]
== Einzelnachweise ==<!-- Hier sollte ebenso auch eine Liste der verfügbaren Scheduler mit einer kurzen Beschreibung rein. -->
<references />
<references />


[[Kategorie:Allgemein]]
[[Kategorie:Allgemein]]
11.008

Bearbeitungen

Cookies helfen uns bei der Bereitstellung von Android Wiki. Durch die Nutzung von Android Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.