Multitarea apropiativa

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

La multitarea apropiativa (del ingléspreemptive multitasking”) es una manera en que los sistemas operativos pueden proveer multitarea, es decir, la posibilidad de ejecutar múltiples procesos al mismo tiempo. Con la multitarea apropiativa, el sistema operativo asigna tiempos de CPU a los procesos que se están ejecutando. Por cada núcleo de la CPU, se puede ejecutar a lo sumo un proceso en cada momento. Al proceso actual, el sistema le asigna un intervalo de tiempo para ejecutarse; una vez acabado el tiempo, el proceso queda pausado y se destina el siguiente intervalo de tiempo a un proceso distinto. Eventualmente, el primer proceso volverá a recibir intervalos para seguir ejecutándose, hasta que finalice su ejecución, y lo mismo pasará con los demás.

Para decidir a qué proceso asignar el próximo intervalo de tiempo de ejecución, el sistema operativo dispone de un componente llamado planificador. Hay diversos criterios que se pueden adoptar.

Este tipo de multitarea contrasta con la multitarea cooperativa, en la que son los procesos los que toman el control del procesador y deciden cuándo dejarlo disponible para que lo usen otros procesos. Tal enfoque conlleva problemas de seguridad (si el proceso ingresa en un ciclo infinito y no cede el control, el procesador queda inutilizable y se provoca un cuelgue en el sistema) y de responsividad (el proceso puede tardar mucho tiempo en ceder el control), pero es en principio más simple de implementar. La multitarea cooperativa se usaba en sistemas operativos antiguos, como las primeras versiones de Microsoft Windows y Mac OS. Hoy en día es útil para sistemas embebidos, cuyos programas pueden ser cuidadosamente diseñados para emplear los tiempos de manera tal que logren más eficiencia que con multitarea asociativa.

La gran mayoría de los sistemas operativos de propósito general en la actualidad emplean multitarea apropiativa. Entre ellos están las versiones modernas de Windows, Unix desde su primera versión y todos sus derivados (como Mac OS X) y otros sistemas de tipo Unix (como GNU/Linux).

Véase también[editar]