2 votos

Multiprocesamiento en Mac OS X

¿Podría Mac OS X distribuir los procesos entre los distintos núcleos de un procesador Intel i7 Quad Core aunque las aplicaciones no sean multihilo?

3voto

shsteimer Puntos 8749

Un hilo es lo que el sistema operativo ve y lo que programa en un núcleo para ejecutarlo.

Los programas pueden ser de un solo hilo o de varios. Los programas también pueden generar otros programas y comunicarse con ellos a través de técnicas de E/S a nivel de proceso, como tuberías o manejadores de archivos, etc. Pero desde la perspectiva del sistema operativo, estos subprogramas siguen siendo colecciones de hilos. No importa realmente si el programa está generando múltiples hilos o si está generando subprocesos - ambos enfoques representan hilos a nivel de SO que el SO intentará programar y ejecutar tan eficientemente como sea posible y posiblemente en paralelo.

Si tienes varios núcleos y los hilos de un programa no están bloqueados explícitamente en un núcleo, entonces el SO puede intentar ejecutarlos al mismo tiempo, en paralelo, en todos los núcleos que tenga disponibles en la máquina actual. Si tienes varios programas en ejecución, el sistema operativo programará todos esos hilos subyacentes en todos los núcleos que tenga disponibles en la máquina actual.

En la práctica, hay una cierta cantidad de E/S, comunicación entre procesos o entre hilos y sincronización que necesita ocurrir y esto puede causar que los hilos a nivel del SO se bloqueen y evitar que las cosas se ejecuten realmente en paralelo todo el tiempo. Por ejemplo: dos hilos en un programa multihilo pueden estar sacando valores de una pila compartida para hacer algún trabajo, así que el acceso a la pila tiene que ser coordinado para asegurar que todo es seguro para los hilos y eso significa que sólo un hilo puede salir de la estructura de datos de la pila a la vez. Hay un cuello de botella en el diseño del programa que está limitando el paralelismo de los hilos a uno solo y el SO no puede ayudar con eso.

Lo mismo ocurre con los programas que generan subprocesos. Puede haber problemas de E/S o de sincronización entre procesos que impidan que todos los subprocesos generados se ejecuten realmente en paralelo todo el tiempo.

1voto

Lloyd Mangram Puntos 91

Si la aplicación no es multihilo, se quedará en un solo núcleo. Si tienes varias aplicaciones de un solo hilo que se ejecutan, es razonable asumir que OS X las distribuirá entre los núcleos de forma adecuada.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X