Multitarea cooperativa
# Multitarea cooperativa

La multitarea cooperativa, también conocida como multitarea no apropiativa, es un estilo de multitarea de computadora en el que el sistema operativo nunca inicia un cambio de contexto de un proceso en ejecución a otro proceso. En su lugar, los procesos ceden voluntariamente el control periódicamente o cuando están inactivos o bloqueados lógicamente para permitir la ejecución simultánea de múltiples aplicaciones. Este tipo de multitarea se llama "cooperativo" porque todos los programas deben cooperar para que todo el esquema de programación funcione. En este esquema, el programador de procesos de un sistema operativo se conoce como un programador cooperativo, cuya función se reduce a iniciar los procesos y les permite devolver el control de forma voluntaria.

## Uso

Aunque rara vez se usa en sistemas modernos más grandes, se usa ampliamente en sistemas embebidos con limitaciones de memoria y también, en aplicaciones específicas como CICS o el subsistema JES2. La multitarea cooperativa fue el esquema de programación principal para aplicaciones de 16 bits empleadas por Microsoft Windows antes de Windows 95 y Windows NT (como Windows 3.1x ), y por el Mac OS clásico. Windows 9x utilizó multitarea no preferente para aplicaciones heredadas de 16 bits y las versiones PowerPC de Mac OS X antes de Leopard lo usaba para aplicaciones clásicas. NetWare, que es un sistema operativo orientado a la red, utilizó la multitarea cooperativa hasta NetWare 6.5. La multitarea cooperativa todavía se usa en sistemas RISC OS.

La multitarea cooperativa se usa con aguardar en idiomas con un bucle de eventos de un solo hilo en su tiempo de ejecución, como JavaScript o Python.

## Problemas

Como un sistema multitarea cooperativo depende de que cada proceso regularmente dedique tiempo a otros procesos en el sistema, un programa mal diseñado puede consumir todo el tiempo de la CPU por sí mismo, ya sea realizando cálculos extensos o esperando; Ambos harían que todo el sistema se bloqueara. En un entorno de servidor, este es un peligro que hace que todo el entorno sea inaceptablemente frágil. Sin embargo, la multitarea cooperativa permite una implementación mucho más sencilla de las aplicaciones porque su ejecución nunca es interrumpida inesperadamente por el programador de procesos; por ejemplo, varias funciones dentro de la aplicación no necesitan ser reentrantes.

En contraste, la multitarea apropiativa interrumpe las aplicaciones y da control a otros procesos fuera del control de la aplicación.

