Contents
Ein Thread ist ein einfacher Prozess, der unabhängig von einem Scheduler verwaltet werden kann. Es verbessert die Anwendungsleistung durch Parallelität. Thread teilt Informationen wie Codesegment, offene Dateien und Datensegment mit anderen Peer-Threads. Threads haben ihre eigenen Systemregister, die ihre aktuellen Arbeitsvariablen enthalten, einen Stack, der die Ausführungshistorie und einen Zähler enthält , der verfolgt, welcher Befehl als nächstes ausgeführt werden soll.
Threads stellen einen Softwareansatz dar, um die Leistung des Betriebssystems durch Reduzierung des Overheads zu verbessern. Thread entspricht einem klassischen Prozess. Es gibt zwei Haupttypen von Threads, dazu gehören:
Threads auf Benutzerebene sind klein und viel schneller als Threads auf Kernelebene. Sie werden direkt vom Betriebssystem unterstützt. Threads auf Benutzerebene werden von Benutzern implementiert, und der Kernel ist sich der Existenz dieser Threads nicht bewusst. Es behandelt diese Threads, als wären es Singlethread-Prozesse. Der Anwendungsbereich des Threads auf Benutzerebene hat keinen Thread-Verwaltungscode.
Der Thread auf Benutzerebene wird auch als Viele-zu-Eins-Zuordnungs-Thread bezeichnet, da das Betriebssystem alle Threads in einem Multithread-Prozess einem einzigen Ausführungskontext zuordnet. Das Betriebssystem betrachtet jeden Multithread-Prozess als eine einzelne Ausführungseinheit.
Lesen Sie auch : Unterschied zwischen Segmentierung und Paging im Betriebssystem
Threads auf Kernel-Ebene werden direkt vom Betriebssystem verarbeitet und die Thread-Verwaltung wird vom Kernel übernommen. In Threads auf Thread-Ebene gibt es keinen Thread-Verwaltungscode im Anwendungsbereich und mehrere Threads desselben Prozesses können auf verschiedenen Prozessoren in Threads auf Kernel-Ebene geplant werden.
Da der Kernel Threads verwaltet, kann der Kernel einen anderen Thread planen, wenn ein bestimmter Thread blockiert, anstatt die gesamten Prozesse zu blockieren. Kernel-Threads sind in der Regel langsamer zu erstellen und zu verwalten als Benutzer-Threads; und die Übertragung der Kontrolle von einem Thread zu einem anderen innerhalb desselben Prozesses erfordert einen Moduswechsel zum Kernel.
Lesen Sie auch : Unterschied zwischen Prozess und Thread im Betriebssystem
Lesen Sie auch : Unterschied zwischen physischer und logischer Adresse im Betriebssystem
VERGLEICHSGRUNDLAGE | GEWINDE AUF BENUTZEREBENE | KERNLEVEL-GEWINDE |
Beschreibung | Die auf Benutzerebene bereitgestellte Unterstützung wird als Thread auf Benutzerebene bezeichnet . | Die vom Kernel bereitgestellte Unterstützung wird als Kernel-Level-Thread bezeichnet. |
Thread-Mapping | Der Thread auf Benutzerebene wird auch als Viele-zu-Eins-Zuordnungs-Thread bezeichnet, da das Betriebssystem alle Threads in einem Multithread-Prozess einem einzigen Ausführungskontext zuordnet. Das Betriebssystem betrachtet jeden Multithread-Prozess als eine einzelne Ausführungseinheit. | Threads auf Kernel-Ebene unterstützen die Eins-zu-Eins-Thread-Zuordnung. Das Mapping erfordert jeden Benutzer-Thread mit Kernel-Thread. Das Betriebssystem führt diese Zuordnung durch. |
Beispiele | Beispiele für Benutzer-Thread-Bibliotheken sind: POSIX-P-Threads, Mach-C-Threads und Solaris 2-UI-Threads. | Beispiele für Threads auf Kernel-Ebene sind: Windows NT, Windows 2000, Solaris 2, BeOS und Tru64 UNIX (ehemals digitales UNIX) |
Kontextwechselzeit | Die Zeit für den Kontextwechsel ist kürzer. | Kontextwechselzeit ist mehr. |
Geschwindigkeit | Threads auf Benutzerebene sind schneller als Threads auf Kernelebene. | Threads auf Kernel-Ebene sind langsamer als Threads auf Benutzerebene. |
Multithreading | Multithread-Anwendung kann Multiprocessing nicht nutzen. | Kernel-Routinen selbst können multithreaded sein. |
Hardware-Support | Kontextwechsel erfordert Hardware-Support | Hardware-Unterstützung ist erforderlich. |
Implementierung | Die Implementierung von Benutzer-Threads ist einfach. | Die Implementierung des Kernel-Threads ist kompliziert. |
Betriebssystem | Die Benutzerebene kann auf jedem Betriebssystem ausgeführt werden. | Threads auf Kernel-Ebene sind betriebssystemspezifisch. |
Anwendungscode | Der Code zum Erstellen und Zerstören des Threads, zur Nachrichtenweitergabe, zur Datenübertragung und zum Thread-Scheduling ist in der Thread-Bibliothek enthalten. | Der Thread-Verwaltungscode ist nicht im Anwendungscode enthalten. Es ist die einzige API zum Kernel-Thread. Das Windows-Betriebssystem verwendet diese Funktion. |
Systemaufrufe | Threads auf Benutzerebene rufen den Kernel nicht für die Planungsentscheidung auf. | Threads werden durch Systemaufrufe konstruiert und gesteuert. Das System kennt den Zustand jedes Threads. |
Betriebsraum | Der Thread auf Benutzerebene verwendet Platz für die Threadplanung. Die Threads sind für das Betriebssystem transparent. | Der Kernel führt das Scheduling auf Thread-Basis durch. Die Kernel-Support- und Management-Thread-Erstellung erfolgt nur im Kernel-Space. |
Fühlen Sie sich oft gestresst, verspannt und auf der Suche nach einer Lösung für Ihr…
Haben Sie sich jemals gefragt, warum Ihr Morgenkaffee anders schmeckt als der Espresso aus Ihrem…
Einleitung: Die Begriffe "Freeway" und "Highway" werden oft synonym verwendet, aber es gibt subtile Unterschiede…
Burritos und Enchiladas sind zwei beliebte Gerichte der mexikanischen Küche, die oft miteinander verwechselt werden.…
In der Zellbiologie spielen Replikation und Transkription entscheidende Rollen im genetischen Prozess. Beide sind Mechanismen,…
Osmose und Diffusion sind zwei grundlegende Prozesse, die in der Zellbiologie und Chemie eine entscheidende…