Entiendo que un procesador multinúcleo puede ejecutar múltiples subprocesos del mismo proceso al mismo tiempo usando sus diferentes núcleos.
¿Puede también ejecutar múltiples procesos al mismo tiempo (cada núcleo ejecuta un proceso diferente)?
Entiendo que un procesador multinúcleo puede ejecutar múltiples subprocesos del mismo proceso al mismo tiempo usando sus diferentes núcleos.
¿Puede también ejecutar múltiples procesos al mismo tiempo (cada núcleo ejecuta un proceso diferente)?
Respuestas:
En lo que respecta al sistema operativo y las aplicaciones, cada núcleo es un procesador separado y está sujeto a las mismas reglas de afinidad que tener múltiples procesadores.
En qué procesador (ya sea real, central o hiperprocesado) se ejecute un proceso depende completamente del sistema de programación del sistema operativo. Es este sistema de programación (influenciado por la configuración de afinidad ) el que decide dónde debe ejecutarse un proceso y cuándo. Los procesos y los subprocesos pueden cambiar entre procesadores y núcleos a voluntad según lo considere conveniente el planificador.
Desde mi limitado conocimiento de los sistemas operativos, creo que cada proceso tiene al menos un hilo, y son estos hilos los que se programan, no los procesos en sí. El proceso simplemente contiene información sobre el programa y los subprocesos que ha configurado en ejecución. De esta forma, una aplicación de subproceso único recibe el mismo tratamiento que una aplicación multiproceso, pero la aplicación multiproceso puede utilizar mejor los recursos.
Por ejemplo, supongamos que tenemos dos procesos con dos subprocesos cada uno y una sola aplicación de subprocesos, todos trabajando duro en un procesador de doble núcleo (o CPU dual, no hace ninguna diferencia aquí)
Process A
|_Thread A-1
|_Thread A-2
Process B
|_Thread B-1
|_Thread B-2
Process C
|_Thread C
Cada subproceso se puede programar en todos los núcleos de la CPU y el planificador del sistema operativo equilibra la carga.
Si luego vamos y configuramos la afinidad del procesador para que el Proceso B lo limite a una CPU, todos los hilos de ese proceso también estarán vinculados a esa CPU y no se ejecutarán en ninguna otra CPU. Hacer lo mismo con el Proceso C no generará ningún cambio real, ya que solo puede ejecutarse en una CPU a la vez.
Respuesta corta:
Los procesos y subprocesos (como en subprocesos múltiples) son construcciones de nivel de sistema operativo. Una vez que alcanza un nivel lo suficientemente bajo en la programación, estos desaparecen y solo tiene un montón de hilos de ejecución en cola para obtener el tiempo de ejecución.