El planificador del kernel es el mecanismo que decide, cada pocos milisegundos y en cada núcleo, qué tarea se ejecuta a continuación y durante cuánto tiempo, repartiendo los recursos de la CPU entre cientos o miles de procesos que compiten por ellos. Para entenderlo hay que empezar por la unidad que realmente se planifica: la task_struct, la estructura interna del kernel que representa un flujo de ejecución ejecutable, y que es la misma tanto para procesos como para hilos; la diferencia entre ambos conceptos de usuario radica únicamente en qué recursos comparten, algo que al planificador le resulta indiferente.
El artículo explica que Linux no dispone de un único planificador, sino de varias clases de planificación apiladas en orden de prioridad (stop, deadline, rt, fair, ext e idle). En un equipo de escritorio o servidor convencional, las tres primeras clases suelen estar vacías, por lo que la clase fair —basada en el algoritmo EEVDF (Earliest Eligible Virtual Deadline First)— es la que asume prácticamente todo el trabajo. EEVDF reparte tajadas de tiempo de CPU entre tareas ordinarias —el intérprete de comandos, el navegador, una compilación— de forma equilibrada, sin prioridades especiales, a diferencia de las clases de tiempo real.
El texto también distingue las dos únicas vías por las que una tarea deja la CPU: el bloqueo voluntario, cuando solicita un recurso aún no disponible, y la interrupción forzosa al agotarse su tiempo. Toda esta exposición se apoya en el código fuente del kernel Linux 7.1, concretamente en kernel/sched/core.c y fair.c, y omite intencionadamente aspectos como el balanceo de carga entre núcleos, la planificación por cgroups, el control de ancho de banda o la consciencia NUMA para centrarse en las ideas fundamentales.
