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.