Ist der laufende Download in Browsern ein Kindprozess oder ein Thread?

362
Giorgi Gvimradze

Ich wurde gebeten, ein Beispiel für eine Eltern-Kind-Prozessbeziehung mit meinem Wissen über Folgendes anzugeben: Der Elternprozess steuert und begrenzt den Kindprozess, er kann einen Prozess beenden oder starten, aber dies wird nicht umgekehrt passieren. Warum kann ich einen Download-Vorgang in einem Browser als untergeordneten Prozess ansehen oder nicht? Wenn der Browser heruntergefahren ist, ist auch der Download möglich. Aber was ist, wenn es ein Thread ist?

0
Sie können die Prozesshypothese überprüfen, indem Sie einen Download in Ihrem Browser starten und nach einem neuen untergeordneten Prozess suchen. Moderne Browser sind jedoch mehrere Prozesse, sodass Sie dies als Beispiel für übergeordnete und untergeordnete Prozesse verwenden können. dsstorefile1 vor 6 Jahren 0

1 Antwort auf die Frage

4
LukeLR

Dies ist implementierungsspezifisch. Es ist durchaus möglich, dass einige Browser jeden Download in einem eigenen Prozess ausführen. In diesem Fall haben Sie das klassische Beispiel einer Eltern-Kind-Prozess-Beziehung. Einige Browser führen jede Registerkarte in einem untergeordneten Prozess aus. Wenn eine Registerkarte abstürzt, werden die anderen Registerkarten jedoch weiterhin ausgeführt. Dies ist auch ein grundlegendes Beispiel für Client-Child-Prozesse.

Es ist jedoch wahrscheinlicher, dass Downloads in einem Thread und nicht in einem eigenen Prozess ausgeführt werden, da es ineffizient wäre, einen eigenen Prozess für etwas so einfaches wie einen HTTP-Download zu erzeugen. Sie können dieses Verhalten auch für die von Ihnen verwendeten Webbrowser überprüfen, indem Sie einige Downloads starten und in einem Prozessmanager Ihrer Wahl nach neuen untergeordneten Prozessen suchen.

Warum sollte ich lieber eine Registerkarte in einem Kind ausführen, wenn es auch ein Thread sein könnte? Wenn der Thread versehentlich gestoppt wurde, kann er den Hauptprozess sowieso nicht "zähmen" Giorgi Gvimradze vor 6 Jahren 0
Das ist eine Designentscheidung. Natürlich können Sie auch jede Registerkarte in einem eigenen Thread implementieren, anstatt jede in ihrem eigenen Prozess. Google Chrome ging für Prozesse, Firefox für Threads. Die Bewertung der Vor- und Nachteile jeder Wahl ist für diese Frage nicht möglich. Fragen Sie selbst, ob Sie daran interessiert sind :) Es lohnt sich jedoch, den [Chrome-Einführungskomik] (https://www.google.com/googlebooks/chrome/small_04.html) zu lesen. LukeLR vor 6 Jahren 1