„Unterschied zwischen Prozess und Thread“ ist eine der am häufigsten gestellten Fragen in technischen Interviews. Sowohl Prozesse als auch Threads sind miteinander verbunden und sehr ähnlich, was zu Verwirrung beim Verständnis der Unterschiede zwischen beiden führt. Der Prozess und der Thread stellen eine unabhängige Ausführungssequenz dar, aber beide unterscheiden sich dadurch, dass Prozesse in unterschiedlichen Speicherbereichen ausgeführt werden, während Threads desselben Prozesses im gemeinsam genutzten Speicherbereich ausgeführt werden.
In diesem Thema werden wir die kurze Einführung von Prozessen und Threads sowie die weiteren Unterschiede zwischen beiden verstehen.
Was ist ein Prozess?
Ein Prozess ist eine Instanz eines Programms, das ausgeführt wird. Wenn wir ein Programm ausführen, wird es nicht direkt ausgeführt. Es dauert einige Zeit, alle zum Ausführen des Programms erforderlichen Schritte auszuführen. Das Befolgen dieser Ausführungsschritte wird als Prozess bezeichnet.
nicht
Ein Prozess kann andere Prozesse erstellen, um mehrere Aufgaben gleichzeitig auszuführen; Die erstellten Prozesse werden als bezeichnet Klon oder untergeordneter Prozess , und der Hauptprozess ist als bekannt übergeordneter Prozess . Jeder Prozess enthält seinen eigenen Speicherplatz und teilt ihn nicht mit den anderen Prozessen. Es wird als aktive Entität bezeichnet. Ein typischer Vorgang bleibt in der untenstehenden Form im Gedächtnis.
Ein Prozess im Betriebssystem kann in einem der folgenden Zustände bleiben:
Wie funktionieren Prozesse?
Wenn wir mit der Ausführung des Programms beginnen, beginnt der Prozessor mit der Verarbeitung. Es sind folgende Schritte erforderlich:
- Zunächst wird das Programm nach der Übersetzung im Binärcode in den Speicher des Computers geladen.
- Für die Ausführung eines Programms sind Speicher und andere Betriebssystemressourcen erforderlich. Die Ressourcen wie Register, Programmzähler und ein Stapel werden vom Betriebssystem bereitgestellt.
- Ein Register kann eine Anweisung, eine Speicheradresse oder andere Daten enthalten, die für den Prozess erforderlich sind.
- Der Programmzähler behält den Überblick über den Programmablauf.
- Der Stapel enthält Informationen zu den aktiven Unterprogrammen eines Computerprogramms.
- Ein Programm kann verschiedene Instanzen davon haben, und jede Instanz des laufenden Programms wird als einzelner Prozess bezeichnet.
Merkmale des Prozesses
- Jedes Mal, wenn wir einen Prozess erstellen, müssen wir für jeden Prozess einen separaten Systemaufruf an das Betriebssystem tätigen. Der Gabel ()-Funktion erstellt den Prozess.
- Jeder Prozess existiert innerhalb seiner eigenen Adresse oder seines eigenen Speicherbereichs.
- Jeder Prozess ist unabhängig und wird vom Betriebssystem als isolierter Prozess behandelt.
- Prozesse benötigen IPC (Inter-Process Communication), um miteinander zu kommunizieren.
- Eine ordnungsgemäße Synchronisierung zwischen Prozessen ist nicht erforderlich.
Was ist Thread?
Ein Thread ist die Teilmenge eines Prozesses und wird auch als Lightweight-Prozess bezeichnet. Ein Prozess kann mehr als einen Thread haben und diese Threads werden vom Scheduler unabhängig verwaltet. Alle Threads innerhalb eines Prozesses sind miteinander verbunden. Threads enthalten einige allgemeine Informationen, z Datensegment, Codesegment, Dateien usw., die mit ihren Peer-Threads geteilt wird. Enthält aber eigene Register, Stapel und Zähler.
Unix vs. Windows
Wie funktioniert Thread?
Wie wir besprochen haben, ist ein Thread ein Unterprozess oder eine Ausführungseinheit innerhalb eines Prozesses. Ein Prozess kann einen einzelnen Thread bis hin zu mehreren Threads enthalten. Ein Thread funktioniert wie folgt:
- Wenn ein Prozess startet, weist das Betriebssystem ihm den Speicher und die Ressourcen zu. Jeder Thread innerhalb eines Prozesses teilt nur den Speicher und die Ressourcen dieses Prozesses.
- Threads werden hauptsächlich verwendet, um die Verarbeitung einer Anwendung zu verbessern. In Wirklichkeit wird immer nur ein einzelner Thread ausgeführt, aber aufgrund des schnellen Kontextwechsels zwischen Threads entsteht der Eindruck, dass Threads parallel laufen.
- Wenn ein einzelner Thread in einem Prozess ausgeführt wird, wird dies als bezeichnet ein Single-Threaded Und wenn mehrere Threads gleichzeitig ausgeführt werden, spricht man von „ Multithreading.
Arten von Threads
Es gibt zwei Arten von Threads:
1. Thread auf Benutzerebene
Wie der Name schon sagt, werden die Threads auf Benutzerebene nur von Benutzern verwaltet und der Kernel verfügt nicht über seine Informationen.
Diese sind schneller, einfacher zu erstellen und zu verwalten.
Alya Manasa
Der Kernel nimmt alle diese Threads als einen einzigen Prozess und behandelt sie als nur einen Prozess.
Die Threads auf Benutzerebene werden durch Bibliotheken auf Benutzerebene implementiert, nicht durch Systemaufrufe.
2. Thread auf Kernel-Ebene
Die Threads auf Kernelebene werden vom Betriebssystem verarbeitet und von seinem Kernel verwaltet. Diese Threads sind langsamer als Threads auf Benutzerebene, da die Kontextinformationen vom Kernel verwaltet werden. Um einen Thread auf Kernelebene zu erstellen und zu implementieren, müssen wir einen Systemaufruf durchführen.
Eigenschaften von Thread
- Threads teilen Daten, Speicher, Ressourcen, Dateien usw. mit ihren Peer-Threads innerhalb eines Prozesses.
- Ein Systemaufruf kann mehr als einen Thread erstellen.
- Jeder Thread hat seinen eigenen Stapel und sein eigenes Register.
- Threads können direkt miteinander kommunizieren, da sie denselben Adressraum nutzen.
- Threads müssen synchronisiert werden, um unerwartete Szenarien zu vermeiden.
Hauptunterschiede zwischen Prozess und Thread
- Ein Prozess ist unabhängig und nicht in einem anderen Prozess enthalten, wohingegen alle Threads logisch in einem Prozess enthalten sind.
- Prozesse sind stark gewichtet, während Threads leicht gewichtet sind.
- Ein Prozess kann individuell existieren, da er seinen eigenen Speicher und andere Ressourcen enthält, wohingegen ein Thread keine individuelle Existenz haben kann.
- Eine ordnungsgemäße Synchronisierung zwischen Prozessen ist nicht erforderlich. Im Gegensatz dazu müssen Threads synchronisiert werden, um unerwartete Szenarien zu vermeiden.
- Prozesse können nur über die Interprozesskommunikation miteinander kommunizieren. Im Gegensatz dazu können Threads direkt miteinander kommunizieren, da sie denselben Adressraum nutzen.
Differenztabelle zwischen Prozess und Thread
Verfahren | Faden |
---|---|
Ein Prozess ist eine Instanz eines Programms, das ausgeführt oder verarbeitet wird. | Thread ist ein Segment eines Prozesses oder eines Lightweight-Prozesses, der vom Scheduler unabhängig verwaltet wird. |
Prozesse sind unabhängig voneinander und teilen sich daher keinen Speicher oder andere Ressourcen. | Threads sind voneinander abhängig und teilen sich den Speicher. |
Jeder Prozess wird vom Betriebssystem als neuer Prozess behandelt. | Das Betriebssystem verarbeitet alle Threads auf Benutzerebene als einen einzigen Prozess. |
Wenn ein Prozess vom Betriebssystem blockiert wird, kann der andere Prozess die Ausführung fortsetzen. | Wenn ein Thread auf Benutzerebene blockiert wird, werden auch alle seine Peer-Threads blockiert, da das Betriebssystem sie alle als einen einzigen Prozess betrachtet. |
Der Kontextwechsel zwischen zwei Prozessen nimmt viel Zeit in Anspruch, da er im Vergleich zu Threads umfangreich ist. | Der Kontextwechsel zwischen den Threads erfolgt schnell, da sie sehr leichtgewichtig sind. |
Das Datensegment und das Codesegment jedes Prozesses sind unabhängig voneinander. | Threads teilen Datensegmente und Codesegmente mit ihren Peer-Threads. Daher gilt das Gleiche auch für andere Threads. |
Das Betriebssystem benötigt mehr Zeit, um einen Prozess zu beenden. | Threads können in kürzester Zeit beendet werden. |
Die Erstellung neuer Prozesse nimmt mehr Zeit in Anspruch, da jeder neue Prozess alle Ressourcen beansprucht. | Ein Thread benötigt weniger Zeit zum Erstellen. |