La Red de Conocimientos Pedagógicos - Currículum vitae - La diferencia entre programas multiproceso y programas multiproceso en Linux

La diferencia entre programas multiproceso y programas multiproceso en Linux

Un chico de IBM hizo una prueba y descubrió que al cambiar de contexto de hilo, Windows es más del doble de rápido que Linux. Para los bloqueos de entrada y salida más rápidos (sección crítica de windows2k y pthread_mutex de Linux), Windows es aproximadamente cinco veces más rápido que Linux. Por supuesto, esto no significa que Linux no sea bueno, y después de la programación real, creo que Linux es más adecuado para servidores de alto rendimiento. Sin embargo, en el campo específico de subprocesos múltiples, Linux sigue siendo ligeramente inferior a Windows. Esto debería ser excusable. Después de todo, la familia Unix proviene de múltiples procesos y Windows ha sido multiproceso desde el principio.

Si se trata de un entorno UNIX/linux, no es necesario utilizar subprocesos múltiples.

¿Es mejor el multiproceso que el multiproceso? ¡Engañoso!

Cabe decir que el multiproceso es más económico que el multiproceso, pero el rendimiento es menor.

En el entorno UNIX, no existe una diferencia significativa entre la sobrecarga de programación multiproceso y la sobrecarga de programación multiproceso. Es decir, la eficiencia de la programación de procesos UNIX es muy alta. En términos de consumo de memoria, la única diferencia entre los dos es el área de datos global. Hoy en día, la memoria es muy barata. La memoria del servidor puede alcanzar fácilmente varios gigabytes, por lo que no supone ningún problema.

El multiproceso es un sistema de transporte tridimensional, aunque el costo es alto y consume más combustible al subir o bajar, no hay atascos.

Multi-threading es un sistema de transporte plano, de bajo coste, pero que tiene demasiados semáforos y siempre provoca atascos.

Ahora todos conducimos coches deportivos y tenemos mucho aceite (frecuencia principal). No tenemos miedo de subir ni de bajar, pero sí de los atascos.

El middleware de servidor de transacciones de alto rendimiento, como TUXEDO, aboga por el multiproceso. Las pruebas reales muestran que el rendimiento y la eficiencia de concurrencia de TUXEDO son muy altos. TUXEDO es de Bell Labs y tiene el mismo origen que UNIX. Debe tener el conocimiento más profundo de UNIX y sus opiniones deben ser de gran importancia como referencia.

Ventajas de subprocesos múltiples:

No es necesario cruzar los límites del proceso;

Métodos de control y lógica de programa simples

Todos los subprocesos; puede ser directamente * **Memoria compartida y variables

Los recursos totales consumidos por el método de subproceso son mejores que los del método de proceso

Desventajas del subproceso múltiple:

Cada subproceso es diferente del programa principal ***El espacio de direcciones está limitado a 2 GB de espacio de direcciones;

El control de sincronización y bloqueo entre subprocesos es problemático

El bloqueo de uno; el subproceso puede afectar la estabilidad de todo el programa;

Una vez que el número de subprocesos alcanza un cierto nivel, incluso si aumenta la CPU, el rendimiento no se puede mejorar. Por ejemplo, en Windows Server 2003, el número de subprocesos. es aproximadamente 1500, que es casi el límite (la configuración de la pila de subprocesos es 1 M). Si la pila de subprocesos se establece en 2 M, el número total de subprocesos no llegará a 1500.

El rendimiento total que los subprocesos pueden mejorar; es limitado, y cuando hay más subprocesos, la programación de los subprocesos en sí también es un asunto problemático

Ventajas del multiproceso:

Cada proceso es independiente entre sí y no no afecta la estabilidad del programa principal, no importa si el proceso secundario falla.

Al aumentar la CPU, el rendimiento se puede expandir fácilmente;

El impacto del bloqueo de subprocesos. /desbloqueo se puede minimizar y el rendimiento se puede mejorar enormemente, incluso si el algoritmo del módulo ejecutado por el subproceso es ineficiente;

Cada subproceso tiene 2 GB de espacio de direcciones y recursos relacionados, y el límite de rendimiento general que puede lograr es muy grande

Desventajas del subproceso múltiple:

El control lógico es complejo y debe combinarse con el programa principal Interacción

Necesita cruzar los límites del proceso. Si hay una gran cantidad de datos para transmitir, no es adecuado para transmitir pequeñas cantidades de datos y realizar cálculos intensivos.

La sobrecarga de programación multiproceso es relativamente grande;

p>

Es mejor combinar multiproceso y multiproceso, es decir, según las necesidades reales, cada CPU inicia un subproceso. Este subproceso inicia múltiples subprocesos para procesar varios datos. del mismo tipo. Por supuesto, también puede utilizar sondeos de múltiples subprocesos y múltiples CPU para resolver el problema...

Existen varios métodos y medios. La clave es que parece fácil de implementar y capaz de implementar. Cumple con los requisitos y el precio es apropiado.