La gestión de los procesos y el manejo de la concurrencia en iOS se realiza mediante colas con prioridad. La implementación se realiza mediante diferentes colas (una por cada rango de prioridad), de modo que el procesador “selecciona” el siguiente proceso al cual le entregará tiempo de cpu según estas prioridades [1].
La prioridad de un proceso para el procesador está determinada por una prioridad base, por el tiempo de cpu que ha utilizado previamente y por el tiempo que lleva en cola esperando (cuando su estado es listo). A medida que se le entrega tiempo de procesador, su prioridad baja. Derivado de lo anterior, se puede llegar al caso en el que un proceso reduzca significativamente su prioridad, causando que el procesador se tarde más en volver a tomarlo. Para solucionar este problema, mientras más tiempo pase en cola un proceso, su prioridad también aumenta gradualmente [1].
A su vez, esta solución genera otro problema y es que cuando el sistema tiene una alta carga de trabajo (haciendo que todos los procesos reciban muy poco tiempo de procesador), la prioridad de los procesos aumenta significativamente, deteriorando la respuesta general del sistema operativo. Esto se maneja de la siguiente manera: En el momento de calcular la prioridad para un proceso, se tiene en cuenta la carga actual del procesador para asegurar que las prioridades no crezcan descontroladamente por este motivo [1].

Figura 1. Imagen tomada de [2] bajo CC
Referencias
[1] A. Singh, Mac OS X internals: a systems approach. Addison Wesley Professional, 2006.
[2] K-State At Salina, “Multi-level Priority Queue Scheduler,” Operating Systems Study Guide, 2009. [Online]. Available: http://faculty.salina.k-state.edu/tim/ossg/Process/scheduler/priority_queues.html. [Accessed: 30-Mar-2015].