Solución:
Respuesta corta:
Preventivo: los subprocesos no deciden cuándo ejecutarse y se ven obligados a compartir la CPU
Cooperativo: cada hilo, una vez en ejecución, decide cuánto tiempo conservará la CPU y (fundamentalmente) cuándo es el momento de renunciar a él para que otro hilo pueda usarlo.
Respuesta larga
Con derecho preferente
Significa que los subprocesos no tienen el control sobre cuándo y / o por cuánto tiempo van a usar la CPU y ejecutarse. Es el planificador (un componente del sistema operativo) el que decide en cualquier momento qué subproceso puede ejecutarse y cuál debe dormir. No tiene garantías sólidas sobre cuál será la próxima vez que se ejecutará un hilo y durante cuánto tiempo. Depende completamente del planificador.
Cooperativa
En la multitarea cooperativa, lo que sucede es que el programador no tiene voz en cuanto a cuándo se puede ejecutar un hilo. Cada hilo decide por cuánto tiempo mantiene la CPU. Si decidió no compartir la CPU con ningún otro subproceso, entonces ningún otro subproceso se ejecutará causando lo que se conoce como inanición.
Tenga en cuenta que detener un hilo y comenzar otro incurre en una cierta cantidad de gastos generales. Significa que gasta tiempo y recursos no para ejecutar código de sus tareas, sino simplemente para permitir compartir la CPU. En ciertas aplicaciones de baja latencia en tiempo real (como el comercio de alta frecuencia), esto puede ser bastante inaceptable.