Was ist die bessere Wahl für die Registerkarte des Browsers: Multithread oder Multiprozess? [closed]

Lesezeit: 4 Minuten

Ich frage mich, was eine bessere Wahl für die Implementierung von Registerkarten in einem Webbrowser ist. (Bsp.: Firefox verwendet Multi-Threading für seine Tabs, während Google Chrome Multi-Prozesse verwendet …)

  • Vielleicht möchten Sie die Frage weniger subjektiv erscheinen lassen. Was sind die Vor- und Nachteile der Thread-/Prozess-Tab-Trennung in Browsern, und erwähnen Sie sie vielleicht nicht namentlich …

    – Matt Tischler

    24. November 2010 um 3:09 Uhr

  • Beachten Sie, dass Firefox gerade dabei ist umsetzen Dies.

    – Matthäus Flaschen

    24. November 2010 um 3:16 Uhr

  • @ Matthew Flaschen: Danke Matthew, das ist es, wonach ich suche. Scheint, als wäre Chrome in der allgemeinen Verwendung wegen seiner Stabilität und anderer Dinge vor Firefox führend ….

    Benutzer188276

    24. November 2010 um 3:21 Uhr

  • @tsubasa: Kaum … Firefox ist ein epischer Browser und derzeit viel stabiler als Chrome. Nimm es von einem Fan von beidem.

    – Matt Tischler

    24. November 2010 um 3:24 Uhr


  • Warum klingt das wie ein Dupe …

    – IAbstract

    24. November 2010 um 3:50 Uhr


Es hängt von der Qualität Ihrer Implementierung und Ihren Prioritäten ab. Threads haben das Potenzial, weniger Speicher zu verwenden/mehr gemeinsam zu nutzen, und können je nach den von Ihnen verwendeten Synchronisierungsprimitiven eine bessere oder schlechtere Leistung als Prozesse erbringen. Wollen Sie andererseits bei der völlig beschissenen Qualität von Browserimplementierungen wirklich, dass der gesamte Browser und alle Ihre Tabs abstürzen, wenn eine schlechte Site den Browser dazu bringt, unbegrenzte Mengen an Speicher oder Schlimmeres zuzuweisen?

Browserimplementierungen mit mehreren Prozessen ähneln stark dem Modell der Privilegientrennung in OpenSSH, vsftpd usw. Sie opfern einige Ressourcen, damit der Kernel Sie vor Fehlern in Ihrem Code schützt.

  • +1 auf dem Isolationspunkt. Da sich Threads denselben Adressraum teilen, kann eine illegale Operation, die von einem Thread ausgeführt wird, den gesamten Prozess zum Absturz bringen. Daher kann ein fehlerhafter Thread die Verarbeitung aller anderen Threads stören.

    – truongnm

    21. Mai um 3:20 Uhr


Es hängt davon ab, was Ihre Bedürfnisse sind.

Wenn du bist

  • Auf der Suche nach einem ressourcenminimalen Browser
  • Keine schweren Javascripts ausführen
  • Nicht viel Speicher haben

Dann werden Sie wahrscheinlich mit Multi-Threading arbeiten.

Allerdings, wenn Sie sind

  • Viele Seiten gleichzeitig ausführen
  • Ausführen von ressourcenintensiven Webanwendungen

Sie werden wahrscheinlich mehrere Prozesse wünschen. Da die meisten Computer und Webanwendungen heute in die zweite Kategorie fallen, ist Multi-Process heute wahrscheinlich die bessere Wahl. Dies liegt daran, dass Prozesse es Ihnen ermöglichen, jede Registerkarte in einer eigenen Sandbox zu trennen. Das heißt, wenn ein Tab abstürzt, gehen die anderen Tabs nicht verloren.

Antworten: Es ist ein Kompromiss.

Fäden: unter Windows sind in der Regel am besten, egal was. Prozesse sind ressourcenhungrige Implementierungen auf diesen Systemen.

Prozesse: sind gut, wenn Sicherheit / Stabilität ein Hauptanliegen ist. Weil es viel unwahrscheinlicher ist, dass ein Prozess, der ausfällt, den gesamten Browser zum Absturz bringt. (Aber warum sollte erwartet werden, dass der Browser abstürzt?) Und es ist einfacher, mithilfe von Betriebssystemprimitiven sicher zu isolieren, aber auf Kosten von mehr Systemressourcen (wie viel hängt vom Betriebssystem ab).

Hybrid: AKA Verwenden von Prozessen und Threads. Dies ist der beste Ansatz. Laden einer bestimmten Anzahl von Komponenten, Verwenden von Threads, bis der Prozess groß genug wird, um den zusätzlichen Overhead eines anderen Prozesses zu rechtfertigen (abhängig vom Betriebssystem), und dann Erstellen eines weiteren Prozesses.

  • Welche Browser verwenden derzeit Threads?

    – CMCDragonkai

    17. Juni 2014 um 8:19 Uhr

  • Nun, alle von em … und in Kürze verwenden sie auch alle mehrere Prozesse und werden zu Hybriden. Zum Beispiel läuft jeder Chrome-Tab in einem separaten Prozess, der aus etwa 11-15 Threads besteht …

    – Bernstein

    19. Februar 2016 um 15:18 Uhr


Was meinst du mit “was ist die bessere Wahl”? Sie müssen „besser“ definieren, bevor Sie diskutieren können, warum das eine besser ist als das andere. Was sind Ihre Ziele und was sind ihre relativen Prioritäten? Was ist am wichtigsten, Stabilität, Speicherverbrauch, CPU-Zeit, Anzahl der verwendeten Kernel-Objekte? Die gewünschte Antwort erfordert, dass Sie zuerst diese Prioritäten angeben. Das heißt, Sie müssen definieren, was „besser“ ist, bevor wir Ihnen bei der Entscheidung helfen können, welches besser ist.

Nun, ich denke, jedes Mal, wenn wir einen neuen Tab öffnen, wird ein Thread erstellt, und es ist von Vorteil, da der Thread keine weiteren Ressourcen benötigt und nicht mehr Speicher benötigt und Ihr System nicht mehr beeinträchtigt wird.

Benutzer-Avatar
Rishabh

Ich denke, ein Multi-Prozess ist ein besserer Ansatz. Bei Multi-Thread gibt es Sicherheitsprobleme, und wir wollen nicht, dass jemand unsere Kreditkartennummer stiehlt. Wenn ein Prozess langsam wird, weil der ganze Browser abstürzen würde, macht das keinen Sinn. Während unser Browser sehr spezifisch für bestimmte Anwendungen ist, z. B. nur für die Forschung, die sich nur mit einer Teilmenge des Internets befasst, können wir die Vor- und Nachteile von prozess- und Thread-basierten Browsern analysieren. Ein Multi-Thread-Browser wäre sicher schnell und einfach zu synchronisieren.

1326360cookie-checkWas ist die bessere Wahl für die Registerkarte des Browsers: Multithread oder Multiprozess? [closed]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy