La preemption, en el contexto de sistemas operativos y planificación de procesos, se refiere a la capacidad de un scheduler para interrumpir la ejecución de un proceso o hilo (thread) que está utilizando la CPU y asignarle el control a otro proceso o hilo, basándose en criterios como prioridad, cuotas de tiempo (time slices) o eventos externos. A diferencia de la planificación cooperativa, donde un proceso debe ceder voluntariamente la CPU, la preemption permite al sistema operativo tomar el control de forma forzosa, garantizando que ningún proceso monopolice los recursos del sistema y que las tareas de mayor prioridad o las que han esperado más tiempo puedan ejecutarse.

La preemption es un concepto fundamental en la mayoría de los sistemas operativos modernos de propósito general. Por ejemplo, Linux, Windows y macOS son sistemas operativos preemptivos. En estos sistemas, el kernel utiliza un scheduler para asignar "time slices" a los procesos; cuando el tiempo de un proceso expira, el scheduler lo interrumpe y selecciona otro proceso para ejecutar. Esto es crucial en entornos multiusuario y multitarea, donde múltiples aplicaciones y servicios deben compartir los recursos de hardware de manera eficiente y justa. Los sistemas de tiempo real (Real-Time Operating Systems - RTOS) como FreeRTOS o VxWorks también implementan preemption, a menudo con garantías más estrictas sobre la latencia de interrupción para cumplir con los requisitos de tiempo real.

Para un arquitecto de sistemas, la preemption es un factor crítico en el diseño de sistemas distribuidos y de alto rendimiento. La elección entre un modelo preemptivo y uno no preemptivo (cooperativo) impacta directamente en la capacidad de respuesta, la equidad en la asignación de recursos y la complejidad del manejo de concurrencia. En sistemas preemptivos, los arquitectos deben considerar cómo los locks y los mecanismos de sincronización (mutexes, semáforos) previenen condiciones de carrera (race conditions) y deadlocks, ya que la interrupción puede ocurrir en cualquier punto. La preemption mejora la utilización de la CPU y la experiencia del usuario al evitar que una sola tarea bloquee el sistema, pero introduce la necesidad de un diseño cuidadoso de la concurrencia y la gestión de estados compartidos para garantizar la consistencia y la corrección de los datos.