2010-11-24 26 views
20

Me pregunto cuál es una mejor opción para implementar pestañas en un navegador web? (Ej: Firefox usa multi-threading para sus pestañas, mientras que Google Chrome usa multiprocesos ...)¿Cuál es la mejor opción para la pestaña del navegador: multihilo o proceso múltiple?

+3

Es posible que desee que la pregunta parezca menos subjetiva. Cuáles son las ventajas y desventajas de la separación de pestañas de hilos/procesos en los navegadores, y quizás no mencionarlas por su nombre ... –

+1

Tenga en cuenta que Firefox está en proceso de [implementación] (https://wiki.mozilla.org/Electrolysis) esta. –

+0

@ Matthew Flaschen: Gracias Matthew, esto es lo que estoy buscando. Parece que Chrome está adelantando a Firefox en el uso general por su estabilidad y otras cosas .... – root

Respuesta

21

Depende de la calidad de su implementación y sus prioridades. Los subprocesos tienen el potencial de utilizar menos memoria/compartir más, y pueden tener un rendimiento mejor o peor que los procesos dependiendo de las primitivas de sincronización que utilice. Por otro lado, con la absoluta calidad de las implementaciones de navegador, ¿realmente quieres que todo el navegador y todas tus pestañas se cuelguen cuando un sitio incorrecto engaña al navegador para que asigne cantidades ilimitadas de memoria o algo peor?

Las implementaciones de navegadores multiproceso se parecen mucho al modelo de separación de privilegios en OpenSSH, vsftpd, etc. Está sacrificando algunos recursos para que el núcleo lo proteja contra errores en su código.

2

¿Qué quiere decir con 'qué es una mejor opción'? Debe definir "mejor" antes de poder analizar por qué uno es mejor que el otro. ¿Cuáles son sus objetivos y cuáles son sus prioridades relativas? ¿Cuál es la más importante, la estabilidad, el uso de memoria, el tiempo de CPU, el número de objetos kernel en uso? La respuesta que desee requerirá que proporcione estas prioridades primero. Es decir, debe definir qué es "mejor" antes de que podamos ayudarlo a decidir cuál es mejor.

16

Depende de cuáles sean sus necesidades.

Si está

  • Buscando un recurso mínimo navegador
  • No está en ejecución javascript pesados ​​
  • No tener una gran cantidad de memoria

Entonces usted está probablemente va a ir con múltiples enhebrado.

Sin embargo, si usted es

  • Ejecución de muchas páginas a la vez
  • Ejecución de aplicaciones web de recursos intensivos

Probablemente va a querer multi-proceso. Dado que la mayoría de las computadoras y aplicaciones web se ajustan hoy a la segunda categoría, Multi-Process es, hoy en día, la mejor opción. Esto se debe a que los procesos le permiten separar cada pestaña en su propio entorno limitado. Eso significa que si una pestaña falla, no perderá las otras pestañas.

+0

Sí, estoy de acuerdo contigo – root

+0

Deberías votarlo entonces. – xaav

2

Respuesta: Es una compensación.

Encabezados: en Windows son generalmente mejores no importa qué. Los procesos son implementaciones hambrientas de recursos en esos sistemas.

Procesos: son buenos si la seguridad/estabilidad es una de las principales preocupaciones. Debido a que un proceso que baja es mucho menos probable que derribe todo el navegador. (¿Pero por qué se espera que el navegador se bloquee?) Y es más fácil aislar de forma segura utilizando primitivas del sistema operativo, pero a un costo de más recursos del sistema (cuánto depende del sistema operativo).

Híbrido: AKA Uso de procesos y subprocesos. Este es el mejor enfoque. Cargar una cierta cantidad de componentes, utilizando subprocesos hasta que el proceso sea lo suficientemente grande como para justificar la sobrecarga adicional de otro proceso (según el sistema operativo) y luego crear otro proceso.

+0

Entonces, ¿qué navegadores usan subprocesos en este momento? – CMCDragonkai

+0

bien todos em ... y en breve también todos usan procesos múltiples, convirtiéndose en híbridos. por ejemplo, cada pestaña de Chrome se ejecuta en un proceso separado, que consta de alrededor de 11-15 hilos ... – bernstein

-1

Bueno, creo que cada vez que abrimos una nueva pestaña, crea un hilo, y es benificial ya que el hilo no requerirá otros resoces y no usará más memoria y su sistema no se verá más afectado.

-2

Creo que un proceso múltiple es una mejor opción. En multi-hilo hay problemas de seguridad, y no queremos que nadie robe nuestro número de tarjeta de crédito. Si un proceso se vuelve lento, debido a que todo el navegador se bloquee, no tiene sentido. Si nuestro navegador es muy específico para determinadas aplicaciones, como investigación, que solo trata de un subconjunto de Internet, podemos analizar los pros y los contras del proceso y del navegador basado en hilos. Un navegador multiproceso seguro sería rápido y fácil de sincronizar.

Cuestiones relacionadas