2017-03-06 1 views
0

Ich habe festgestellt, dass es sehr oft vorkommt Ausdruck: "System-Thread". Was bedeutet das in der Tat? Insbesondere kann ich mir nicht vorstellen nicht-System Threads. Nur muss das System Thread kennen. Das Betriebssystem (ein Scheduler) schaltet einen Kontext um, damit er es wissen muss!Systemthreads vs Nicht-System-Threads

Zum Beispiel auf der vierten Seite ist über Systemthreads geschrieben: http://www.dabeaz.com/python/GIL.pdf

+0

Bitte zeigen Sie uns ein Beispiel der Dokumentation, auf die Sie sich beziehen. Vielleicht eine Verbindung? –

+0

Dies ist ein wirklich interessantes Thema für Game-Engines, bei denen manchmal benutzerdefinierte Speichermanager und Thread-Scheduler geschrieben werden, um die Leistung zu steigern. Dies ist etwas außerhalb der Praxis, da die Spieleentwickler diese Funktionen für bestimmte Funktionen optimieren und nicht für allgemeine Leistung (oder Stabilität) optimieren. – Aaron

Antwort

0

Ein System Faden etwas durch das OS vorgesehen ist. Der OS-Kernel ist für die Planung von Systemthreads zuständig. Wenn Ihre Laufzeitumgebung so etwas wie Threads und einen Scheduler bietet, haben Sie Nicht-System-Threads. Diese werden oft grüne Fäden genannt. Manchmal sind Nicht-System-Threads effizienter, oder das System stellt keine Threads bereit. Für Python würden Beispiele für Nicht-System-Threads von greenlet oder eventlet bereitgestellt.

0

Threads sind ein Konstrukt des Betriebssystems, das selbst nur ein Programm ist, also könnte man einen Thread Scheduler in einem anderen Programm auf dem OS implementieren, wenn er es wünscht (normalerweise erfinden sie das Rad jedoch nicht neu) . Die relevanten Komponenten würden wahrscheinlich einen Unterbrechungsmechanismus, einen Speichermanager (um die Speicherzuweisung zu virtualisieren) und eine Prioritätswarteschlange von Befehlszeigern für jeden Thread enthalten.

0

Das Konzept der grünen Threads, Ereignisschleifen, kooperativen Multitasking und Korotinen ist im Allgemeinen, was mit Nicht-System-Threads gemeint ist.
Es bezieht sich im Wesentlichen auf die Möglichkeiten der Strukturierung von Programmen, so dass wir, anstatt einen Thread für Dinge wie IO zu blockieren, zulassen, dass der Thread von einer anderen Aufgabe verwendet wird.
Wenn wir einen nativen Thread parken, kann das Betriebssystem einen anderen Thread für die Verwendung dieser CPU einplanen. Bei kooperativen Multitasking-Ansätzen ist es auch möglich, dass die Anwendung auswählt, welche Aufgabe als nächstes ausgeführt werden soll.

+1

Ich würde "grüne" Threads nicht in die gleiche Kategorie wie "Ereignisschleifen" setzen. Grüne Threads sind _threads_: Jeder hat seinen eigenen Ausführungskontext und seinen eigenen Aufruf-Stack; und jeder kann völlig vergessen, was die anderen tun (wenn Sie das wollen.) –

+0

Gut genug, aber ich würde sagen, dass sie zumindest verwandte Konzepte sind. – Magnus

Verwandte Themen