Multitarea cooperativa


La multitarea cooperativa , también conocida como multitarea no preventiva , es un estilo de multitarea informática en el que el sistema operativo nunca inicia un cambio de contexto de un proceso en ejecución a otro proceso. En su lugar, para ejecutar varias aplicaciones al mismo tiempo, los procesos ceden el control de forma voluntaria periódicamente o cuando están inactivos o lógicamente bloqueados . Este tipo de multitarea se denomina cooperativa porque todos los programas deben cooperar para que funcione el esquema de programación.

En este esquema, el programador de procesos de un sistema operativo se conoce como un programador cooperativo cuya función se limita a iniciar los procesos y dejar que estos le devuelvan el control de forma voluntaria. [1] [2]

Aunque rara vez se usa en sistemas grandes modernos, se usa ampliamente en sistemas integrados 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 las aplicaciones de 16 bits empleadas por Microsoft Windows antes de Windows 95 y Windows NT , y por el Mac OS clásico . Windows 9x usaba multitarea no preventiva para aplicaciones heredadas de 16 bits, y las versiones PowerPC de Mac OS X anteriores a Leopard la usaban para aplicaciones clásicas . [1] 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 los sistemas RISC OS . [3]

La multitarea cooperativa se usa con await en lenguajes, como JavaScript o Python , que cuentan con un bucle de eventos de un solo subproceso en su tiempo de ejecución.

Como un sistema multitarea cooperativo depende de que cada proceso ceda tiempo regularmente 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 ocupado ; ambos harían que todo el sistema se colgara . En un entorno de servidor , este es un peligro que hace que todo el entorno sea inaceptablemente frágil. [1]

Por el contrario, la multitarea preventiva interrumpe las aplicaciones y da control a otros procesos fuera del control de la aplicación.