Multitarea cooperativa:
1. Cedimiento de tareas: En la multitarea cooperativa, las tareas ceden voluntariamente el control del procesador a otras tareas. Esto se logra mediante una declaración de "rendimiento" o mecanismo equivalente en el lenguaje de programación.
2. Confianza en la cooperación en tareas: Cada tarea es responsable de ceder explícitamente el control de la CPU para permitir la ejecución de otras tareas. Si una tarea no logra ceder el control, todo el sistema puede bloquearse o dejar de responder.
3. Sin programación basada en prioridades: Dado que las tareas cooperan y deciden cuándo ceder, no existe el concepto de programación basada en prioridades. Todas las tareas tienen la misma prioridad y el orden de ejecución depende únicamente del comportamiento de rendimiento de cada tarea.
4. Simplicidad: La multitarea cooperativa es relativamente sencilla de implementar en comparación con la multitarea preventiva. No requiere un mecanismo de programación ni algoritmos sofisticados para gestionar las tareas.
5. Comunes en los primeros sistemas operativos: La multitarea cooperativa se usaba comúnmente en los primeros sistemas operativos donde se priorizaba la simplicidad sobre el rendimiento o el manejo de cargas de trabajo complejas.
Multitarea preventiva:
1. Control del sistema operativo sobre la programación de tareas: En la multitarea preventiva, el sistema operativo (SO) tiene control sobre la programación de tareas y decide cuándo cambiar de tarea. El sistema operativo se adelanta a las tareas que se han estado ejecutando durante un período de tiempo predeterminado y da a otras tareas la oportunidad de ejecutarse.
2. Programación basada en prioridades: La multitarea preventiva permite una programación basada en prioridades, lo que significa que las tareas de mayor prioridad tienen prioridad sobre las de menor prioridad. Esto garantiza una mejor asignación de recursos y capacidad de respuesta a tareas en las que el tiempo es crítico.
3. Cambio de contexto forzado: El sistema operativo puede suspender por la fuerza la ejecución de una tarea y guardar su estado en la memoria. Cuando se reanuda la tarea, se restablece su estado anterior, asegurando continuidad e integridad.
4. Rendimiento mejorado: La multitarea preventiva proporciona una programación de tareas más eficiente y predecible, lo que conduce a un mejor rendimiento y capacidad de respuesta general del sistema.
5. Complejidad: La multitarea preventiva implica algoritmos y mecanismos más complejos para la programación, el cambio de contexto y la gestión de estados de tareas, lo que hace que su implementación sea más desafiante.
En resumen, la multitarea cooperativa se basa en la entrega voluntaria de tareas, teniendo las tareas la misma prioridad y sin control del sistema operativo sobre la programación. Es más sencillo de implementar, pero puede provocar que el sistema se cuelgue si las tareas no cooperan. La multitarea preventiva, por otro lado, proporciona un mayor control del sistema operativo, permite una programación basada en prioridades y garantiza una ejecución de tareas predecible. Es más eficiente y adecuado para entornos informáticos modernos que exigen alto rendimiento y capacidad de respuesta.