Frage

Erklärt in Ihren eigenen Worten, was ist Vorkaufsrecht und was es zu einem (Linux) Kernel bedeutet?

Was sind Vor- und Nachteile in einem präemptiven Kernel mit?

War es hilfreich?

Lösung

Preemptive Multitasking -. Ausführen mehrere Prozesse / Threads auf einem einzelnen Prozessor, die Illusion, dass sie gleichzeitig ausgeführt werden, wenn jeder tatsächlich kleinen gemultiplexten Zeitscheiben zugeordnet ist, um ein Prozess wird als „vorbelegt“, wenn es aus der Ausführung geplant ist, und warte auf die Scheibe beim nächsten Mal in auszuführen.

Ein preemptive Kernel ist einer, den Code zur Ausführung in der Mitte unterbrochen werden kann - zum Beispiel als Reaktion für einen Systemaufruf -. Andere Dinge zu tun und andere Threads laufen, möglicherweise diejenigen, die nicht in dem Kernel sind

Der Hauptvorteil eines präemptiven Kernel ist, dass sys-Anrufe das gesamte System nicht blockieren. Wenn ein Sys-Aufruf eine lange Zeit in Anspruch nimmt dann zu beenden, bedeutet es nicht, der Kern nichts anderes in dieser Zeit tun kann. Der Hauptnachteil ist, dass dies mehr Komplexität zu dem Kernel-Code führt, mehr End-Fälle zu behandeln, aufweisen, führen weitere feinkörnige Rast- oder Verriegelungs verwenden lose Strukturen und Algorithmen.

Andere Tipps

Sie sollten wirklich den Begriff „preemptive“ verwenden. Es gibt verschiedene Arten von Vorkaufsrecht. Im Grunde ist es sehr einfach und Sie wahrscheinlich verstehen unter einem anderen Namen. Ein preemptives Betriebssystem kann umschalten zwischen Kontexten Benutzermodus Fäden ohne spezielle Programmierung in der preempted Anwendung. Dies ermöglicht Multitasking. Ein O kann wechseln weg und zurück zu einem Prozess und dieses Umschalten wird im wesentlichen trasnparent. Es gibt auch so etwas wie ein preemptive Kernel, die Kernel-Modus-Threads vorbelegt werden kann (die meisten Betriebssysteme erlauben dies nicht, aber es ist für bestimmte Anwendungen, wie in Echtzeitsystemen erforderlich). Beachten Sie, das ist eine sehr vereinfachte Erklärung.

Andere haben ausreichend erklärt, was ein präemptiv Kernel ist.

Was ist das gut?

Meistens sind die Vorteile sind:

  • geringere Latenz auf Nicht-SMP-Systemen - in der Regel in Echtzeitsystemen oder für andere Dinge verwendet, in denen Latenz wichtig ist (Audio, Video-Anwendungen vielleicht)
  • Teaching-Kernel-Entwickler, die haben SMP-Systeme nicht, wie richtigen Code für SMP schreiben

Mit einem nicht-präemptiv Kernel auf einem einzelnen Prozessor-System ist es möglich, für die Kernel-Entwickler faul zu sein und weg ohne die meiste Zeit Verriegelung - das ist natürlich ein großer FAIL auf SMP. Preemptible Kerne ermöglichen, sie ohne weitere Kerne diesen Schmerz zu erhalten.

Ich denke, das Post erklärt Ihre Fragen:

  

Was ist Vorkaufsrecht?

Die Fähigkeit des Betriebssystems präjudizieren oder eine aktuell geplante Aufgabe für eine Aufgabe mit höherer Priorität zu stoppen. Die Planung kann eines sein, aber nicht beschränkt auf, Verfahren oder I / O-Scheduling usw. beschränkt

  

Was ist ein Vorkaufsrecht Kernel?

Unter Linux User-Space-Programme haben immer präemptiv gewesen: Der Kernel unterbricht Programme im User-Space zu anderen Threads zu wechseln, die regelmäßige Uhr Zecke verwendet wird. Also, der Kernel nicht wartet für User-Space-Programme explizit den Prozessor freizugeben (was der Fall in kooperativem Multitasking ist). Dies bedeutet, dass eine Endlosschleife in einem User-Space-Programm kann das System nicht blockieren.

Doch bis 2.6-Kernel, der Kernel selbst war nicht preemtible: sobald ein Thread den Kernel eingetreten ist, ist es nicht verdrängt werden könnte einen anderen Thread auszuführen. Der Prozessor könnte verwendet werden, einen anderen Thread ausgeführt werden, wenn ein Systemaufruf beendet wurde, oder wenn der aktuelle Thread explictly die Scheduler gefragt anderen Thread mit dem Schedule () -Funktion auszuführen. Dies bedeutet, dass eine Endlosschleife im Kernel-Code, das gesamte System blockiert, aber das ist nicht wirklich ein Problem: der Kernel-Code ist so konzipiert, dass es keine Endlosschleifen sind.

Kernelpräemption hat in Kernel 2.6 eingeführt worden, und man kann sie aktivieren oder deaktivieren Sie die CONFIG_PREEMPT Option. Wenn CONFIG_PREEMPT aktiviert ist, dann Kernel-Code überall verdrängt werden kann, mit der Ausnahme, wenn der Code lokale Interrupts deaktiviert hat. Eine Endlosschleife in dem Code blockieren kann nicht mehr das gesamte System. Wenn CONFIG_PREEMPT deaktiviert ist, dann wird das 2.4 Verhalten wieder hergestellt.

  

Vor-und Nachteile?

Pros:. Die Vorkaufsrecht Kernel kann Latenz und Skalierbarkeit verbessern, und es kann eine hohe Priorität Aufgabe zum Laufen bringen und darauf zu reagieren rechtzeitig

Nachteile: Es macht Code schwer in preemption Kernel zu schreiben, vor allem in SMP, und Sie müssen viele Faktoren berücksichtigen

.

Preemption bedeutet, dass das Betriebssystem mehr Aufgaben (ein separates, eigenständiges Stück Code) und schaltet zwischen den Aufgaben auf einem Zeitplan unterstützt. Wenn eine Aufgabe unterbrochen wird, ist es „preempting“ genannt. Moderne OS Unterstützung dieses - aber es ist nicht für einfache Embedded-Systeme erforderlich, zum Beispiel. Der Aufwand für Aufgabenwechsel unterstützt, ist nicht immer lohnt sich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top