Una breve discusión sobre las similitudes y diferencias entre la programación multiproceso de Linux y la programación multiproceso de Windows.
La implementación de subprocesos en Linux Hay dos bibliotecas para la programación de subprocesos en Linux, pthread y pth. La implementación de pthread se implementa en modo kernel. Cada subproceso tiene una estructura de tareas correspondiente en el kernel. Es decir, puede ver varios subprocesos utilizando la línea de comando ps, y la programación de subprocesos también la realiza la programación en el kernel.
Echemos un vistazo al multiproceso de Windows. Windows NT y Windows95 son sistemas operativos multitarea y multiproceso preventivos. Debido a que utiliza multitarea preventiva, tiene el mismo procesamiento fluido e independencia de proceso que UNIX. El multiproceso va un paso más allá. Un programa independiente utiliza un subproceso de forma predeterminada, pero puede dividirse en varios subprocesos independientes para su ejecución. Por ejemplo, uno de los subprocesos puede enviar un archivo a la impresora y otro puede responder a la entrada del usuario. Esta simple modificación de programación puede reducir significativamente el tiempo de espera del usuario, de modo que el usuario no necesita preocuparse por los inconvenientes causados por cálculos a largo plazo, volver a dibujar la pantalla, leer y escribir archivos, etc.
El multiproceso también le permite aprovechar muchas máquinas NT multiprocesador de alta gama. Por ejemplo, compras una máquina RISC avanzada que puede usar hasta 10 chips de CPU, pero al principio solo compras una CPU. Escribe un programa simple del conjunto de Mandelbrot y descubre que se necesitan 15 segundos para volver a dibujar la pantalla del conjunto de Mandelbrot.
Entonces, ¿cuál es la diferencia entre subprocesos en la plataforma Windows y procesos en plataformas tipo Unix (incluido Linux)?
Las personas que están familiarizadas con la programación en WIN32 deben saber que el método de gestión de procesos de WIN32 es muy diferente al de UNIX. En UNIX, solo existe el concepto de proceso, pero en WIN32 también existe el concepto. de "hilo", entonces, ¿cuál es la diferencia entre UNIX y WIN32 aquí?
Fork en UNIX es el resultado de los primeros desarrolladores de UNIX en la década de 1970 después de una ardua y prolongada exploración teórica y práctica. Por un lado, permite que el sistema operativo dedique un esfuerzo mínimo a la gestión de procesos. El precio, por otro lado, proporciona a los programadores un enfoque claro y conciso del multiprocesamiento.
El proceso/hilo en WIN32 se hereda de OS/2. En WIN32, "proceso" se refiere a un programa y "hilo" es una "pista" de ejecución en un "proceso". Desde un punto de vista central, el multiproceso de WIN32 no es muy diferente de UNIX. El hilo en WIN32 es equivalente al proceso de UNIX, que es un código de ejecución real. Sin embargo, en WIN32, los segmentos de datos se comparten entre subprocesos del mismo proceso. Ésta es la mayor diferencia con los procesos UNIX.
Para los sistemas multitarea, las áreas de datos compartidos son necesarias, pero también es un problema que puede causar confusión fácilmente. En esta situación, un programador puede olvidar fácilmente que los datos entre subprocesos. , después de que un hilo modifica una variable, otro hilo la modifica, lo que genera problemas en el programa. Pero en UNIX, dado que las variables no se comparten originalmente, el programador especifica explícitamente los datos que se compartirán, lo que hace que el programa sea más claro y seguro.