Planificación de CPU

Aprende cómo un sistema operativo decide qué programa se ejecuta a continuación en la CPU. Evalúa las planificaciones mediante los tiempos de retorno y respuesta y, después, compara la planificación primero en entrar, primero en salir, primero el trabajo más corto, por turnos y por prioridades con ejemplos resueltos. Descubre cómo las colas multinivel con realimentación aprenden qué trabajos son interactivos, cómo la lotería, los pasos y los planificadores equitativos de Linux dan a cada trabajo una proporción determinada de la CPU y cómo los planificadores distribuyen el trabajo entre varias CPU. Termina estudiando los planificadores de Linux y Windows y eligiendo una política para una carga de trabajo determinada.

IntermedioUnidad 2 de 9 del curso Curso de Sistemas operativos

Lo que aprenderás

  1. Explica en qué momentos de la vida de un proceso se toman decisiones de planificación, distingue la planificación expropiativa de la no expropiativa y calcula las métricas utilizadas para comparar políticas de planificación.
    • Explica cuándo y cómo el planificador elige el siguiente trabajo
      Sitúa el planificador de CPU en el ciclo de vida de un proceso, distingue la planificación expropiativa de la no expropiativa y nombra los tipos de planificadores que puede tener un sistema operativo.
    • Calcula los tiempos de retorno, respuesta y espera
      Dibuja la línea de tiempo de una planificación y calcula los tiempos de retorno, respuesta y espera, la tasa de procesamiento y la utilización de la CPU, y explica qué objetivo atiende cada métrica.
  2. Planifica un conjunto de trabajos con las políticas clásicas, calcula el rendimiento de cada una y explica por qué cada política resulta adecuada para algunas cargas de trabajo y falla en otras.
    • Planifica trabajos con FIFO y primero el trabajo más corto
      Aplica la planificación primero en entrar, primero en salir y la planificación no expropiativa primero el trabajo más corto, explica el efecto convoy y estima tiempos de ejecución que no se conocen de antemano.
    • Expropia la CPU para ejecutar trabajos más cortos y solapa la entrada/salida
      Aplica primero el trabajo con menor tiempo restante, explica cuándo la expropiación mejora el tiempo de retorno y mantén ocupada la CPU ejecutando otros trabajos mientras uno espera una operación de entrada/salida.
    • Usa la planificación por turnos para obtener una respuesta rápida
      Aplica la planificación por turnos, explica su efecto en los tiempos de respuesta y retorno y elige un intervalo de tiempo asignado razonable.
    • Usa prioridades sin causar inanición
      Aplica la planificación por prioridades, interpreta las distintas escalas de prioridad utilizadas en la práctica y evita la inanición y la inversión de prioridades.
  3. Explica cómo las colas multinivel con realimentación aprenden del comportamiento de un trabajo para aproximarse a primero el trabajo más corto y mantener una respuesta rápida para los trabajos interactivos, y cómo se ajustan sus reglas para evitar la inanición y la manipulación.
    • Sigue los trabajos a través de las colas multinivel con realimentación
      Enuncia las reglas básicas de las colas multinivel con realimentación y sigue cómo se mueven entre sus colas los trabajos limitados por la CPU, los cortos y los interactivos.
    • Ajusta MLFQ para evitar la inanición y la manipulación del planificador
      Explica los problemas de las reglas básicas de MLFQ, soluciónalos mediante elevaciones de prioridad y una mejor contabilización, y elige sus parámetros.
  4. Explica la planificación de reparto proporcional, calcula las proporciones que asignan la lotería, los pasos y los planificadores equitativos de Linux, y compara sus ventajas.
    • Reparte la CPU mediante una lotería
      Representa las proporciones con boletos, realiza un sorteo, predice cuánto se acerca la planificación por lotería a las proporciones previstas y usa el sistema de monedas de boletos, la transferencia y la inflación.
    • Obtén proporciones exactas con la planificación por pasos
      Calcula pasos y valores de avance, sigue una planificación por pasos y compara la planificación por pasos con la planificación por lotería.
    • Explica los planificadores equitativos de Linux: CFS y EEVDF
      Calcula los intervalos de tiempo asignados y el tiempo de ejecución virtual con el planificador completamente equitativo, relaciona los valores nice con los pesos y describe cómo EEVDF elige la siguiente tarea.
  5. Explica cómo las cachés, la coherencia y la afinidad cambian la planificación en un multiprocesador y compara los diseños con una sola cola y con múltiples colas que equilibran la carga entre CPU.
    • Explica qué cambia al disponer de varias CPU
      Describe el hardware multiprocesador desde la perspectiva del planificador: cachés privadas, coherencia de caché, necesidad de cerrojos, afinidad de caché y distintos tipos de núcleos.
    • Compara la planificación multiprocesador con una sola cola y con múltiples colas
      Compara los planificadores multiprocesador con una sola cola y con múltiples colas, reconoce el desequilibrio de carga y corrígelo mediante migración y robo de trabajo.
  6. Estudia cómo Linux, Windows y otros sistemas combinan prioridades, realimentación y reparto proporcional, contrólalos con herramientas estándar y elige y evalúa una política para una carga de trabajo determinada.
    • Controla el planificador de Linux
      Describe las políticas de planificación de Linux y su historia, y usa valores nice, políticas de tiempo real, afinidad de CPU y grupos de control.
    • Interpreta los planificadores de Windows y otros sistemas como variantes de MLFQ
      Calcula las prioridades base de Windows, explica las elevaciones de prioridad dinámica y su disminución, y reconoce las mismas ideas de realimentación en otros sistemas.
    • Elige y evalúa una política de planificación para una carga de trabajo
      Relaciona las políticas de planificación con las cargas de trabajo, compáralas en un ejemplo y elige un método para evaluar un planificador.

Guía de estudio de Planificación de CPU

6 capítulos

1

Decide quién se ejecuta y mide el resultado

Una CPU puede ejecutar un hilo a la vez, pero un sistema ocupado puede tener muchos hilos listos para usarla. El planificador decide qué trabajo avanza en cada oportunidad. Para evaluar esa elección, sigue tanto los estados de los procesos como el reloj: un primer turno rápido, una finalización temprana y una alta tasa de trabajos terminados describen logros distintos. Una línea de tiempo hace visibles esas diferencias y te da la información necesaria para comparar políticas.

1.1 De un trabajo listo a un trabajo en ejecución

Un planificador de CPU elige el proceso o hilo listo que se ejecutará a continuación en una CPU. La regla que sigue es su política. El despachador lleva a cabo la elección cambiando la ejecución al trabajo seleccionado. Una política distinta puede usar el mismo mecanismo de cambio.

Sigue los cambios de estado

Un trabajo en ejecución ocupa una CPU. Un trabajo listo podría ejecutarse, pero espera su turno. Un trabajo bloqueado espera un evento, como la finalización de una lectura de disco. Solo los trabajos listos son candidatos para la selección.

Supón que un editor inicia una lectura de disco mientras un compilador está listo. El editor pasa de ejecución a bloqueado, por lo que el compilador puede ejecutarse. Cuando termina la lectura, una interrupción devuelve el editor al estado listo. No necesariamente se ejecuta de inmediato: la política debe elegir entre él y los demás trabajos listos.

Las decisiones de planificación se producen cuando un trabajo se bloquea, termina, pasa al estado listo o es interrumpido y devuelto al estado listo. La cesión voluntaria también libera la CPU. La expropiación o desalojo consiste en retirar la CPU a un trabajo que podría haber seguido ejecutándose; el trabajo conserva su estado guardado y puede reanudarse más tarde.

Tipo de políticaCuándo un trabajo en ejecución cede la CPUEfecto de un nuevo trabajo listo
No expropiativaSe bloquea, cede la CPU o terminaEspera una oportunidad de decisión
ExpropiativaTambién puede perder la CPU aunque pueda seguir ejecutándosePuede desplazar al trabajo actual

Una interrupción del temporizador permite al núcleo imponer un intervalo de tiempo asignado, incluso si un programa ejecuta un bucle sin ceder la CPU. Una operación de entrada/salida terminada también puede provocar una expropiación al hacer que una tarea más favorecida pase al estado listo. Linux, Windows y macOS usan planificación expropiativa.

El trabajo llega en ráfagas

Los programas alternan entre ráfagas de CPU, cuando calculan, y periodos de espera de entrada/salida. Un programa limitado por la CPU, como un codificador, tiene ráfagas de CPU largas. Un programa limitado por la entrada/salida, como un editor, suele calcular brevemente y después esperar. Atender pronto a un editor después de una pulsación puede mejorar su capacidad de respuesta sin darle mucho tiempo total de CPU.

El despachador guarda el estado de la tarea anterior, restaura los registros de la tarea elegida y reanuda su secuencia de instrucciones en modo usuario. La latencia de despacho es el tiempo que se tarda en transferir la ejecución. El cambio también altera las cachés y el búfer de traducción adelantada, o TLB, que almacena en caché traducciones de direcciones. La siguiente tarea puede necesitar rellenarlos, por lo que el tiempo de guardar registros es solo una parte del coste.

Tres escalas de tiempo de planificación

El planificador a largo plazo admite los trabajos enviados y controla cuántos hay en el sistema. El planificador a medio plazo puede suspender procesos completos sacándolos de la memoria mediante intercambio y restaurándolos después. El planificador a corto plazo selecciona la siguiente tarea lista y actúa con frecuencia. Los sistemas de propósito general dependen principalmente de esta última función; los sistemas por lotes y los clústeres también pueden controlar la admisión explícitamente.

Comienza la comparación de políticas con trabajos sencillos que solo usan CPU y tienen duraciones conocidas. Después cambia una característica: las duraciones desiguales muestran los retrasos de FIFO, las llegadas posteriores muestran los límites de la planificación no expropiativa, la entrada/salida crea oportunidades para solapar trabajo y las duraciones desconocidas requieren predicción o realimentación.

Puntos clave

  • Solo se pueden seleccionar para ejecución los trabajos listos.
  • Una política de planificación elige; el despachador realiza el cambio.
  • La expropiación conserva una tarea para que pueda reanudarse.
  • Las interrupciones del temporizador y de dispositivos pueden crear oportunidades de planificación.
  • Los cambios frecuentes cuestan tiempo de despacho y localidad de caché.
  • La admisión, el intercambio y la selección de CPU actúan en distintas escalas de tiempo.

1.2 Lee los tiempos de una planificación

Una planificación te indica cuándo se ejecutan los trabajos. Una métrica te indica qué parte de esa planificación importa. Registra la llegada, la primera ejecución y la finalización de cada trabajo antes de calcular los promedios.

Distingue los tres tiempos

El tiempo de retorno mide todo el intervalo desde la llegada hasta la finalización. El tiempo de respuesta mide la demora hasta la primera ejecución. El tiempo de espera suma todos los intervalos en los que el trabajo está listo pero no se ejecuta.

Tretorno=Tfinalizacioˊn−Tllegada Trespuesta=Tprimera ejecucioˊn−Tllegada

Para un trabajo que solo usa CPU, el tiempo de retorno es igual a la suma del tiempo de espera y el tiempo de ejecución en la CPU. Si hay entrada/salida, el tiempo bloqueado también forma parte del retorno, por lo que restar solo el tiempo de CPU sobreestimaría la espera. Aquí se usa la definición de respuesta basada en la primera ejecución; un servicio dirigido a usuarios puede medir por separado el tiempo hasta su primera salida.

Resuelve una línea de tiempo FIFO

A llega en 0 ms y necesita 8 ms de tiempo de CPU. B llega en 1 ms y necesita 4 ms. C llega en 2 ms y necesita 2 ms. Sin coste de cambio, FIFO da:

  • A: 0–8 ms.
  • B: 8–12 ms.
  • C: 12–14 ms.
TrabajoRetornoRespuestaEspera
A8−0=8 ms0−0=0 ms0 ms
B12−1=11 ms8−1=7 ms7 ms
C14−2=12 ms12−2=10 ms10 ms

El tiempo de retorno promedio es 8+11+123=313≈10,33 ms. Los tiempos promedio de respuesta y espera son ambos 0+7+103=173≈5,67 ms. Coinciden porque cada trabajo se ejecuta una vez sin interrupción. Con expropiación, un trabajo puede volver a esperar después de su primer turno, por lo que la espera puede superar la respuesta.

Mide toda la carga de trabajo

La tasa de procesamiento cuenta los trabajos terminados por unidad de tiempo transcurrido. La planificación termina tres trabajos en 14 ms, aproximadamente 214,29 trabajos/s. La utilización de la CPU es el tiempo ocupado de CPU dividido entre el tiempo transcurrido; aquí es del 100 % porque la CPU nunca está inactiva. Especifica el intervalo de medición: añadir un periodo de inactividad después de la finalización cambiaría ambas cifras.

Una alta utilización puede ir acompañada de largas esperas. Tampoco implica necesariamente que todo el tiempo ocupado se dedique a trabajo útil de las aplicaciones: las mediciones reales pueden contar los cambios de contexto y otros trabajos del núcleo como tiempo ocupado. Indica si un cálculo de sobrecarga mide tiempo ocupado o trabajo útil.

Elige qué optimizar

El trabajo por lotes suele valorar el tiempo de retorno promedio. El trabajo interactivo valora una respuesta rápida. Los servicios compartidos necesitan acceso equitativo además de una buena tasa de procesamiento. La inanición significa que un trabajo elegible espera indefinidamente, por lo que un buen promedio por sí solo no demuestra un trato equitativo.

Examina las demoras individuales y los percentiles altos de la distribución. Un tiempo de respuesta del percentil 99 describe la demora en la que se sitúa o por debajo de la cual queda aproximadamente el 99 % de las observaciones; unas pocas demoras graves pueden quedar ocultas en un promedio bajo. Resta siempre el instante de llegada del propio trabajo y cuenta sus intervalos de ejecución como servicio, nunca como espera.

Puntos clave

  • El retorno termina al finalizar el trabajo; la respuesta termina en la primera ejecución.
  • La espera cuenta los intervalos en estado listo y excluye los intervalos bloqueados.
  • Resta el instante de llegada de cada trabajo antes de calcular el promedio.
  • La tasa de procesamiento y la utilización dependen del intervalo de observación.
  • Examina las demoras de los percentiles altos y la inanición junto con los promedios.
2

Sigue las políticas clásicas de planificación

Los mismos trabajos listos pueden terminar en órdenes muy distintos según la política. FIFO sigue el orden de llegada, las políticas de trabajo más corto favorecen las demandas pequeñas de CPU, la planificación por turnos alterna los turnos y la planificación por prioridades sigue una jerarquía. Construye la línea de tiempo a partir de la regla en cada punto de decisión y después calcula el resultado. Las llegadas posteriores, los trabajos bloqueados y los costes de cambio muestran compensaciones que una sola ordenación de trabajos no puede revelar. Los seguimientos manuales ignoran el coste de cambio salvo que se indique lo contrario.

2.1 FIFO y la ráfaga lista más corta

FIFO, también llamado primero en llegar, primero en ser atendido o FCFS, ejecuta los trabajos listos por orden de llegada. Es no expropiativo: una llegada posterior no puede interrumpir una ráfaga de CPU en ejecución. En los ejemplos que solo usan CPU, cada trabajo seleccionado se ejecuta hasta terminar.

Observa el efecto convoy

A, B y C llegan a la vez. A necesita 60 ms; B y C necesitan 6 ms cada uno. Con A en primer lugar, FIFO ejecuta A 0–60, B 60–66 y C 66–72. Los tiempos de retorno son 60, 66 y 72 ms, con un promedio de 66 ms. Los trabajos pequeños pasan la mayor parte de su vida esperando detrás de A. Este es el efecto convoy.

Primero el trabajo más corto (SJF) selecciona la siguiente ráfaga de CPU más corta entre los trabajos listos y no la interrumpe. Con las mismas llegadas, ejecuta B 0–6, C 6–12 y después A 12–72. El tiempo de retorno promedio pasa a ser 6+12+723=30 ms. El trabajo total de CPU sigue siendo de 72 ms; la mejora se debe a que los trabajos cortos terminan antes.

¿Por qué ayuda esto? Si una ráfaga larga se ejecuta inmediatamente antes que una corta, ambos trabajos esperan a que termine todo el trabajo anterior. Intercambiar solo estos dos reduce la demora del trabajo corto en la duración de la ráfaga larga y aumenta la demora del trabajo largo solo en la duración de la ráfaga corta. Repetir estos intercambios coloca las ráfagas en orden ascendente. Cuando todos los trabajos llegan a la vez y se conocen sus duraciones, SJF minimiza los tiempos promedio de retorno y espera; la respuesta hasta la primera ejecución también es igual a la espera en este caso no expropiativo que solo usa CPU.

Limita la elección a los trabajos listos

Ahora A llega en 0 ms, mientras B y C llegan en 10 ms. En 0 ms, A es la única opción. SJF no expropiativo ejecuta A 0–60, B 60–66, C 66–72. Los tiempos de retorno son 60, 56 y 62 ms, con un promedio de aproximadamente 59,33 ms. SJF no puede actuar sobre un trabajo futuro ni interrumpir una ráfaga que ya ha iniciado.

PolíticaInformación utilizadaDebilidad principal
FIFOOrden de llegadaLos trabajos cortos pueden esperar detrás de los largos
SJFDuración prevista de la siguiente ráfagaLos trabajos largos pueden aplazarse si siguen llegando trabajos cortos

FIFO evita la inanición cuando los trabajos anteriores terminan cediendo la CPU. SJF puede causar inanición de un trabajo largo en espera si siguen llegando trabajos cortos.

Predice una ráfaga

La siguiente ráfaga de CPU suele ser desconocida. Un promedio exponencial combina la última ráfaga medida con la predicción anterior:

τn+1=αtn+(1−α)τn

Aquí, tn es la ráfaga medida, τn la predicción anterior y α un peso entre 0 y 1. Partiendo de 10 ms y usando α=0,5, una medición de 6 ms da una predicción de 8 ms. Una medición posterior de 4 ms da 6 ms; otra de 6 ms la mantiene en 6 ms. Con peso cero, las mediciones no tienen efecto; con peso uno, solo importa la medición más reciente. La magnitud prevista es la duración de la ráfaga de CPU, no el tamaño del archivo de programa ni el número de líneas.

Puntos clave

  • FIFO usa el orden de llegada y puede crear un convoy.
  • SJF elige la ráfaga más corta entre las que ya están listas.
  • El tiempo promedio óptimo de SJF requiere que se cumplan los supuestos correspondientes sobre la carga de trabajo.
  • Las llegadas posteriores no pueden interrumpir SJF no expropiativo.
  • El promedio exponencial equilibra las mediciones recientes con las predicciones anteriores.
  • Un flujo de trabajos cortos puede causar inanición de un trabajo largo con SJF.

2.2 Interrumpe un trabajo largo y solapa la entrada/salida

Primero el trabajo con menor tiempo restante (STCF, también SRTF) es SJF expropiativo. Cuando llega o termina un trabajo, compara el tiempo de CPU que aún necesita cada trabajo listo. Un recién llegado interrumpe el trabajo actual cuando necesita menos tiempo del que le queda a este.

Compara el tiempo restante

A necesita 60 ms y llega en 0 ms. B y C necesitan 6 ms cada uno y llegan en 10 ms. A se ejecuta durante 10 ms y le quedan 50 ms. En 10 ms, B gana porque 6 ms es menos que 50 ms; C tiene la misma duración, por lo que el orden de llegada y después el nombre resuelven el empate.

La línea de tiempo es A 0–10, B 10–16, C 16–22, A 22–72. Los tiempos de retorno son A 72 ms, B 6 ms y C 12 ms, con un promedio de 30 ms. Los tiempos de respuesta son 0, 0 y 6 ms, con un promedio de 2 ms. SJF no expropiativo con estas llegadas da promedios de aproximadamente 59,33 ms de retorno y 35,33 ms de respuesta.

Resta siempre el servicio ya recibido. Sería incorrecto comparar una nueva ráfaga de 12 ms con los 60 ms originales de A si a A solo le quedaran 5 ms. STCF terminaría A primero. Con duraciones conocidas de trabajos que solo usan CPU y un coste de cambio nulo, STCF minimiza el tiempo de retorno promedio para cualquier patrón de llegadas. Los trabajos largos pueden seguir sufriendo inanición si llegan continuamente trabajos más cortos.

Cuando todos los trabajos que solo usan CPU llegan a la vez, SJF y STCF dan el mismo orden. Al trabajo más corto en ejecución le queda cada vez menos tiempo, por lo que ningún trabajo en espera se convierte en motivo para expropiarle la CPU.

Aprovecha el tiempo bloqueado de otro trabajo

Un trabajo bloqueado no puede usar la CPU. Su espera de entrada/salida es una oportunidad para ejecutar otros trabajos listos, incluso con una política no expropiativa. La expropiación vuelve a ser relevante cuando una operación de entrada/salida terminada deja lista una ráfaga corta mientras otro trabajo se ejecuta.

Considera A con cinco ráfagas de CPU de 10 ms y una lectura de disco de 10 ms después de cada una de sus primeras cuatro ráfagas. B necesita una ráfaga de CPU de 50 ms. Ambos llegan en 0 ms. Si la CPU permanece inactiva durante las lecturas de A y retrasa B hasta que A termina, A finaliza en 90 ms y B en 140 ms.

Trata cada ráfaga de A que vuelve como trabajo corto listo:

  • A se ejecuta 0–10; su lectura ocupa 10–20 mientras B se ejecuta.
  • A vuelve para 20–30; a B le quedan 40 ms, por lo que ganan los 10 ms de A.
  • B se ejecuta 30–40 durante la siguiente lectura. La alternancia se repite.
  • La última ráfaga de A se ejecuta 80–90; B termina sus últimos 10 ms durante 90–100.

A sigue terminando en 90 ms, pero B termina en 100 ms. La CPU realiza 100 ms de trabajo en 100 ms de tiempo transcurrido. La actividad del disco y la de la CPU se solapan; la CPU no ejecuta A mientras A está bloqueado. Una interrupción de dispositivo marca A como listo cuando termina cada lectura, tras lo cual STCF compara su nueva ráfaga con el trabajo restante de B.

Puntos clave

  • STCF compara la demanda restante de CPU en los puntos de decisión.
  • La expropiación puede permitir que trabajos cortos que llegan después terminen mucho antes.
  • Con llegadas simultáneas de trabajos que solo usan CPU, SJF y STCF coinciden.
  • Un trabajo bloqueado libera la CPU para que otros trabajos puedan solaparse con su entrada/salida.

2.3 Alterna turnos con la planificación por turnos

La planificación por turnos (RR) mantiene una cola FIFO de trabajos listos y da al trabajo situado al principio como máximo un cuanto de tiempo o intervalo de tiempo asignado. Un trabajo que termina o se bloquea abandona la CPU antes. Un trabajo que sigue listo cuando termina su intervalo pasa al final de la cola.

Sigue los turnos antes de calcular los tiempos

A, B y C llegan en 0 ms y necesitan 9 ms cada uno. Con un cuanto de 3 ms, RR ejecuta:

  • Primera ronda: A 0–3, B 3–6, C 6–9.
  • Segunda ronda: A 9–12, B 12–15, C 15–18.
  • Última ronda: A 18–21, B 21–24, C 24–27.

Las primeras ejecuciones son en 0, 3 y 6 ms, por lo que la respuesta promedio es de 3 ms. Las finalizaciones son en 21, 24 y 27 ms, por lo que el retorno promedio es de 24 ms. FIFO da una respuesta promedio de 9 ms y un retorno promedio de 18 ms. Aquí RR hace que todos comiencen pronto, pero aplaza el primer trabajo terminado hasta los 21 ms.

RR divide el acceso a la CPU mientras los trabajos compiten; no iguala los tiempos de finalización. Un trabajo corto puede terminar en su primer turno. Con una población fija de n trabajos listos y un cuanto q, la espera entre turnos es como máximo (n−1)q sin costes de cambio. Las llegadas continuas, otras clases de prioridad y las restricciones sobre las CPU en que se puede ejecutar una tarea cambian las condiciones de ese límite.

Gestiona las llegadas al final de un intervalo

Usa el orden de llegada y después el orden alfabético para resolver empates. Un trabajo que llega justo cuando termina un intervalo entra antes que el trabajo expropiado. Si A llega en 0 ms y necesita 8 ms, B en 1 ms y necesita 4 ms, y C en 2 ms y necesita 2 ms, un cuanto de 2 ms da A 0–2, B 2–4, C 4–6, A 6–8, B 8–10, A 10–14.

El último intervalo de A contiene dos turnos consecutivos sin competidores. Los tiempos de respuesta son 0, 1 y 2 ms; los tiempos de retorno son 14, 9 y 4 ms. Sus promedios son 1 ms y 9 ms. Cuando un trabajo bloqueado vuelve en RR básico, entra para un turno nuevo; no reserva tiempo de CPU sin usar mientras está bloqueado.

Haz que el cuanto compense su coste

Un cuanto muy grande hace que RR se comporte como FIFO para las ráfagas más cortas que ese cuanto. Un cuanto diminuto provoca muchos despachos y alteraciones repetidas de las cachés. En una implementación sencilla basada en temporizador, el cuanto es un número entero de periodos del temporizador.

Para un coste de cambio s después de cada intervalo útil de duración q, la fracción aproximada de sobrecarga es sq+s. Un cambio de 0,1 ms cuesta aproximadamente un 9,1 % con un intervalo de 1 ms, pero aproximadamente un 0,99 % con uno de 10 ms. Los intervalos más largos amortizan el coste del cambio al repartirlo entre más trabajo útil.

Una regla práctica habitual para dimensionarlo es permitir que la mayoría de las ráfagas, por ejemplo alrededor del 80 %, terminen dentro de un intervalo. La elección adecuada depende de las duraciones de ráfaga medidas y de las demoras de respuesta que la carga de trabajo pueda tolerar. Cuenta los cambios entre tareas por separado de los eventos del temporizador que simplemente permiten continuar a la misma tarea cuando es la única lista.

Puntos clave

  • RR vuelve a poner en cola un trabajo listo que no ha terminado después de su cuanto.
  • La respuesta puede mejorar mientras aumenta el tiempo de retorno promedio.
  • Las reglas para las llegadas al final de un intervalo determinan el orden de la cola.
  • Un cuanto corto aumenta la sobrecarga de los cambios de contexto.
  • Los intervalos más largos amortizan los costes de despacho y caché.

2.4 Prioridades, envejecimiento y dependencias de cerrojos

Un planificador por prioridades ejecuta el trabajo listo de mayor prioridad. Los trabajos de igual prioridad pueden seguir el orden FIFO o ejecutarse por turnos. En una versión expropiativa, un trabajo de mayor prioridad que acaba de pasar al estado listo toma la CPU de inmediato; en una versión no expropiativa espera hasta que el trabajo actual la libera.

Interpreta la dirección de la escala

Los números de prioridad no tienen una dirección universal. En los ejemplos de los manuales de esta unidad, usa números menores para indicar mayor prioridad. Los valores nice de Linux siguen esa dirección, pero los niveles de prioridad de Windows y las prioridades de tiempo real de Linux usan números mayores para indicar mayor prioridad.

A, B y C llegan en 0 ms con ráfagas de 4, 3 y 5 ms y prioridades 2, 1 y 3. La planificación no expropiativa por prioridades ejecuta B 0–3, A 3–7 y C 7–12. Sus tiempos de espera son 0, 3 y 7 ms, con un promedio de aproximadamente 3,33 ms; los tiempos de retorno son 3, 7 y 12 ms, con un promedio de aproximadamente 7,33 ms.

Una prioridad interna procede del comportamiento medido, como el uso de la CPU o las esperas de entrada/salida. SJF obtiene la prioridad a partir de la duración prevista de la ráfaga. Una prioridad externa procede de una persona, como un administrador que marca una copia de seguridad como menos urgente. Ninguna de las dos opciones garantiza que el trabajo de baja prioridad reciba tiempo si llegan continuamente trabajos de mayor prioridad.

Eleva la prioridad con la espera

El envejecimiento eleva gradualmente la prioridad de un trabajo en espera. Si la prioridad mejora en uno cada 100 ms, un trabajo que comienza con prioridad 20 alcanza la prioridad máxima 0 después de 2 s de espera en estado listo. La mayor prioridad le permite competir con los trabajos favorecidos; las reglas de desempate determinan los turnos entre trabajos con la misma prioridad.

La inanición es la falta de progreso causada por la selección repetida de otros trabajos. El envejecimiento la combate cambiando la prioridad con el tiempo. Cumple una función distinta de la predicción de la duración de las ráfagas: un trabajo largo que lleva mucho tiempo esperando puede merecer un turno aunque su ráfaga siga siendo larga.

Sigue la dependencia en la inversión de prioridades

Un trabajo H de alta prioridad puede estar bloqueado por un cerrojo que posee el trabajo L de baja prioridad. Un trabajo M de prioridad media puede expropiar la CPU a L. Ahora H no puede continuar, aunque M tenga menor prioridad que H: primero debe ejecutarse L para liberar el cerrojo. Esto es una inversión de prioridades.

Con la herencia de prioridades, L hereda temporalmente la prioridad de H mientras posee el cerrojo que H necesita. M ya no puede impedir que L use la CPU. L se ejecuta, libera el cerrojo y pierde la prioridad heredada; H pasa al estado listo y puede ejecutarse.

ProblemaCausaRespuesta de planificación
InaniciónOtros trabajos listos siguen teniendo mayor prioridad que un trabajoEl envejecimiento eleva su prioridad con la espera
Inversión de prioridadesUn trabajo favorecido espera a un titular de cerrojo de menor prioridadLa herencia eleva la prioridad del titular mientras dura la dependencia

Elevar la propia prioridad de H no libera el cerrojo: H sigue bloqueado. La clave es permitir que se ejecute el hilo que puede resolver la dependencia. En 1997, Mars Pathfinder encontró un problema de inversión de prioridades que se solucionó activando la herencia de prioridades.

Puntos clave

  • Comprueba qué dirección indica mayor prioridad.
  • El envejecimiento eleva la prioridad de los trabajos en espera para combatir la inanición.
  • Una tarea bloqueada de alta prioridad no puede ejecutarse hasta que se resuelva su dependencia.
  • La herencia de prioridades eleva temporalmente la prioridad del titular del cerrojo.
3

Aprende el comportamiento de un trabajo con colas de realimentación

La siguiente ráfaga de CPU rara vez se conoce de antemano. Las colas multinivel con realimentación aprenden del uso de la CPU: los trabajos nuevos reciben una oportunidad temprana, mientras que los cálculos continuos descienden a colas con atención menos urgente. Seguir tanto la cola a la que pertenece cada trabajo como la asignación consumida explica ese comportamiento. Las elevaciones periódicas y una contabilización cuidadosa abordan después los dos fallos principales: los trabajos que esperan demasiado y los que ceden la CPU estratégicamente para conservar su prioridad.

3.1 Mueve trabajos por las colas de realimentación

Las colas multinivel con realimentación (MLFQ) combinan prioridades con planificación por turnos. Su objetivo es aproximarse al servicio de los trabajos cortos y mantener una respuesta rápida para el trabajo interactivo sin que se le indique el tiempo de ejecución futuro de cada trabajo. El uso reciente de CPU proporciona la realimentación.

Aplica las reglas de las colas

Cada trabajo listo pertenece a una cola de prioridad. La versión básica con contabilización sigue cuatro reglas:

  1. Elige la cola de mayor prioridad que contenga trabajos listos.
  2. Dentro de esa cola, alterna por turnos los trabajos de igual prioridad.
  3. Coloca un trabajo nuevo en la cola superior.
  4. Baja de prioridad a un trabajo cuando consume su asignación de tiempo de CPU en el nivel actual, contando el uso acumulado entre todos los turnos y las interrupciones por entrada/salida.

Un cuanto limita un turno. Una asignación limita el servicio total en un nivel de prioridad. Un nivel puede permitir varios cuantos antes del descenso. En el nivel inferior, un descenso deja el trabajo en la cola inferior.

Esto da a un trabajo nuevo la oportunidad de terminar rápidamente. Un trabajo que consume tiempo de CPU repetidamente revela una demanda mayor y desciende. Una ráfaga corta que se bloquea consume poca asignación, por lo que los trabajos interactivos tienden a permanecer más tiempo en los niveles altos.

Sigue un trabajo largo y uno recién llegado

Usa las colas Q2, Q1 y Q0, con Q2 como la más alta, cuantos de 10 ms y asignaciones de 10 ms en cada nivel, sin elevación de prioridad durante este seguimiento. A necesita 200 ms y llega en 0 ms. Se ejecuta en Q2 de 0–10, en Q1 de 10–20 y después en Q0.

En 100 ms, A ha recibido 100 ms de tiempo de CPU. B llega y necesita 20 ms. B entra en Q2 y expropia la CPU a A, después se ejecuta 100–110 en Q2. Ha consumido la asignación de ese nivel y baja a Q1. Q1 tiene mayor prioridad que Q0, donde está A, por lo que B se ejecuta 110–120 y termina. A se reanuda en 120 y completa sus 100 ms restantes en 220 ms. El tiempo de retorno de B es de 20 ms pese a llegar después de un trabajo mucho más largo.

Sigue el trabajo restante de A mientras B se ejecuta: permanece en 100 ms. El tiempo transcurrido avanza durante el servicio de B, pero A no recibe servicio de CPU entonces.

Distingue la espera del consumo de CPU

Un editor que se ejecuta durante 1 ms y espera una entrada consume una asignación de 10 ms a lo largo de diez ráfagas de este tipo. El tiempo bloqueado no cuenta para la asignación de CPU. Con una contabilización estricta, esas ráfagas cortas siguen sumándose, por lo que el editor termina bajando de nivel salvo que una elevación de prioridad lo devuelva antes a la cola superior.

Una regla inicial de MLFQ solo bajaba de nivel a los trabajos que usaban un cuanto completo sin interrupción. Un trabajo que cedía la CPU justo antes de que terminara conservaba su prioridad. Esa regla permitía una respuesta rápida del trabajo interactivo, pero también permitía la manipulación deliberada. Contabilizar el uso acumulado de CPU cierra esa posibilidad.

Las colas inferiores se ejecutan cuando ninguna cola superior tiene trabajos listos. Un trabajo bloqueado de mayor prioridad no impide que los trabajos de menor prioridad usen la CPU. Si la demanda de alta prioridad se mantiene, los trabajos inferiores necesitan un mecanismo adicional contra la inanición, proporcionado por las elevaciones periódicas.

Puntos clave

  • MLFQ aprende del uso observado de la CPU, sin conocer las duraciones de las ráfagas futuras.
  • Se elige la cola lista de mayor prioridad; los trabajos de igual prioridad se turnan.
  • Los trabajos nuevos entran en la cola superior.
  • El cuanto y la asignación controlan partes diferentes de la planificación.
  • La contabilización acumulada de CPU incluye el servicio recibido antes de que un trabajo se bloquee.

3.2 Evita la inanición y la cesión estratégica de la CPU

La realimentación crea una separación útil, pero el comportamiento pasado de un trabajo puede dejar de representar sus necesidades actuales. Un cálculo largo puede volverse interactivo más adelante. Mientras tanto, un trabajo de la cola inferior puede esperar indefinidamente si las colas superiores siguen ocupadas.

Reconsidera cada trabajo periódicamente

Una elevación de prioridad devuelve todos los trabajos a la cola superior después de un periodo S. Permite que los trabajos en espera compartan la cola superior y que el planificador vuelva a aprender los cambios de comportamiento. Un trabajo elevado que está limitado por la CPU consume después su asignación y vuelve a bajar.

Considera las primeras reglas de MLFQ: dos trabajos interactivos siempre ceden la CPU antes de completar un intervalo de 10 ms y juntos mantienen ocupada Q2. Un trabajo limitado por la CPU espera en Q0. Sin elevaciones no recibe servicio. En una planificación repetitiva en la que una elevación cada 100 ms le da un turno de 10 ms en el nivel superior antes de que descienda y el trabajo de mayor prioridad ocupe el resto, recibe el 10 % de la CPU. Ese porcentaje procede de este seguimiento; una elevación no asigna una proporción fija general.

Un periodo largo entre elevaciones deja largas esperas entre oportunidades. Un periodo muy corto devuelve repetidamente los trabajos limitados por la CPU a la cola superior y reduce la ventaja del trabajo interactivo. Algunos diseños han usado periodos de alrededor de un segundo, pero el periodo es una elección de ajuste basada en el comportamiento de la carga de trabajo y los objetivos de respuesta.

Contabiliza el uso entre cesiones

Un problema aparte es la manipulación del planificador. Con la primera regla del intervalo completo, un programa puede ejecutarse durante 9 ms, solicitar una operación de entrada/salida de 1 ms y repetir el proceso. Nunca usa un intervalo completo de 10 ms de una sola vez, por lo que conserva la prioridad máxima mientras consume casi todo el tiempo de CPU disponible.

Con una asignación acumulada de 10 ms, la primera ráfaga consume 9 ms y deja 1 ms. Después de la operación de entrada/salida, un milisegundo más agota la asignación y el trabajo baja de nivel durante su segunda ráfaga. Una solicitud de entrada/salida cambia el estado; no borra el servicio ya recibido. La regla de contabilización impide esta táctica incluso sin una elevación de prioridad.

MecanismoQué cambiaProblema que aborda
Contabilización de la asignaciónSuma el uso de CPU entre turnosCesión estratégica antes de que termine el intervalo
Elevación periódicaReinicia el aprendizaje de la prioridadInanición y cambio de comportamiento
Ajusta los niveles

Elige el número de colas, el cuanto de cada cola, la asignación de cada nivel y el periodo entre elevaciones. Las colas superiores suelen usar cuantos cortos, por ejemplo de 10 ms, para alternar rápidamente entre trabajos interactivos. Las colas inferiores pueden usar cuantos mucho más largos, a veces de cientos de milisegundos, para reducir los cambios durante los cálculos continuos.

La asignación puede crecer independientemente del cuanto. Un nivel con un cuanto de 5 ms y una asignación de 15 ms puede permitir tres turnos completos antes del descenso. Aumentar la asignación retrasa la clasificación como trabajo de larga duración; aumentar el cuanto alarga un turno individual.

El diseño de tiempo compartido de Solaris ilustra la realimentación basada en tablas: su tabla clásica configurable tiene 60 niveles de prioridad, con cuantos que van desde aproximadamente 20 ms con prioridad alta hasta unos pocos cientos de milisegundos con prioridad baja. En cambio, los diseños clásicos de BSD calculaban la prioridad a partir del uso reciente de CPU, cuya influencia disminuye con el tiempo. Ambos hacen que el uso antiguo de CPU pierda influencia, de modo que el historial lejano de un hilo no determina permanentemente su trato.

Puntos clave

  • Las elevaciones vuelven a abrir oportunidades de servicio y permiten aprender de nuevo los cambios de comportamiento.
  • Una elevación no da una prioridad alta permanente ni una proporción fija de CPU.
  • La contabilización acumulada impide la táctica de ceder la CPU antes de que termine el intervalo.
  • Los cuantos cortos en los niveles superiores favorecen la respuesta; los más largos en los niveles inferiores reducen la sobrecarga.
  • Una asignación puede abarcar varios turnos en un nivel.
  • La realimentación puede usar tablas de prioridad o fórmulas de uso de CPU cuya influencia disminuye con el tiempo.
4

Divide el tiempo de CPU en proporciones

Un planificador de reparto equitativo parte de un derecho: qué proporción de la CPU disputada debe recibir cada trabajo que puede ejecutarse. Los boletos expresan ese derecho en la planificación por lotería y por pasos; los pesos lo expresan en la clase equitativa de Linux. Las reglas de selección difieren en cuánto se aproxima el reparto durante intervalos cortos a la proporción prevista y en cómo favorecen un servicio rápido. Sigue la contabilización para ver por qué un peso mayor da más tiempo real de CPU mientras su progreso virtual crece más lentamente.

4.1 Sortea turnos ponderados con la planificación por lotería

La planificación de reparto proporcional busca dividir el servicio de CPU según las proporciones asignadas. En la planificación por lotería, cada trabajo que puede ejecutarse posee boletos. Un boleto ganador elegido al azar determina el trabajo para el siguiente intervalo de igual duración. La probabilidad de que gane un trabajo es su número de boletos dividido entre el total de boletos de los trabajos que pueden ejecutarse.

Localiza un boleto ganador

A tiene 100 boletos, B 50 y C 250. Numera los 400 boletos del 0 al 399. A posee los boletos 0–99, B posee los 100–149 y C posee los 150–399. Un sorteo de 300 selecciona C.

Una implementación basada en listas sortea un número y acumula los números de boletos. Los totales acumulados son 100 después de A, 150 después de B y 400 después de C. Detente en el primer total estrictamente mayor que el número sorteado. Usar «mayor o igual que» asignaría incorrectamente los boletos situados en los límites: el número sorteado 100 pertenece a B. Situar primero a quienes poseen más boletos reduce la longitud promedio de esta búsqueda en la lista.

Distingue lo esperado de una garantía

Con A en posesión de 75 boletos y B de 25, la proporción esperada de A es del 75 %. En 100 sorteos independientes de intervalos iguales, con ambos trabajos disponibles para ejecutarse, se espera que A gane 75. La desviación estándar es:

100×0,75×0,25≈4,33 intervalos.

Un resultado de alrededor de 71–79 victorias está aproximadamente a una desviación estándar de la media; no es un intervalo garantizado. Las ejecuciones cortas pueden alejarse notablemente de la proporción prevista de 3:1. A medida que crece el periodo de observación, la variación aleatoria relativa disminuye. La lotería proporciona equidad probabilística, no un reparto exacto en un periodo finito ni una espera acotada hasta el siguiente turno.

Para dos trabajos con igual número de boletos e iguales demandas de CPU, la métrica de falta de equidad U divide el tiempo de finalización más temprano entre el más tardío. La razón alcanza 1 cuando terminan juntos y es menor cuando uno termina mucho antes. Esta razón de finalización es especialmente variable para los trabajos cortos planificados por lotería.

Asigna boletos entre usuarios y dependencias

El sistema de monedas de boletos permite a un usuario dividir localmente un derecho global asignado. El usuario X tiene 200 boletos globales y asigna 300 boletos locales a X1 y 100 a X2. De 400 boletos locales, X1 tiene tres cuartos, lo que le da 150 boletos globales; X2 recibe 50. El usuario Y tiene 100 boletos globales para Y1. El total es 300, por lo que X1 recibe una proporción esperada del 50 %, X2 de aproximadamente el 16,67 % y Y1 de aproximadamente el 33,33 % de la CPU disputada.

La transferencia de boletos presta temporalmente los boletos de un cliente a un servidor que trabaja para él y los devuelve cuando termina la solicitud. Esto sigue la dependencia del trabajo. La inflación de boletos permite que los trabajos que cooperan aumenten su propio número de boletos para solicitar más servicio. Requiere confianza o límites: la inflación sin restricciones permite que un trabajo acaparador reduzca las proporciones de todos los demás.

La lotería necesita los totales de boletos, pero no un registro de cuánto se ha adelantado cada trabajo en servicio. Un trabajo nuevo simplemente aporta sus boletos al conjunto de trabajos que pueden ejecutarse. La asignación de boletos sigue siendo una decisión de política; el sorteo aleatorio aplica esa elección en términos esperados. Los boletos de un trabajo bloqueado no compiten por un intervalo que no puede usar.

Puntos clave

  • La fracción de boletos da la probabilidad de que un trabajo gane cada sorteo.
  • La búsqueda acumulativa se detiene cuando el total supera el número ganador.
  • Las proporciones de la lotería son valores esperados, con variaciones a corto plazo.
  • El sistema de monedas de boletos conserva el derecho global de un usuario mientras lo divide localmente.
  • La transferencia sigue una dependencia; la inflación sin restricciones puede reducir las proporciones de los demás.

4.2 Mantén el reparto del servicio mediante valores de paso

La planificación por pasos convierte las proporciones de boletos en una secuencia determinista. Cada trabajo que puede ejecutarse tiene un paso, calculado como una constante grande dividida entre sus boletos, y un valor de avance que registra su progreso ponderado. Elige el menor valor de avance, ejecuta ese trabajo durante un intervalo de igual duración y después suma su paso a su valor de avance.

Calcula los pasos

A tiene 50 boletos, B 25 y C 100. Con la constante 1000, sus pasos son 20, 40 y 10. Más boletos producen un paso menor. El valor de avance de un trabajo favorecido aumenta lentamente, por lo que se convierte en el mínimo con más frecuencia.

Inicia todos los valores de avance en cero y resuelve los empates alfabéticamente. Mantén la tupla en el orden fijo A, B, C:

Valores de avance antes de la selecciónTrabajo seleccionadoValores de avance después de su intervalo
(0, 0, 0)A(20, 0, 0)
(20, 0, 0)B(20, 40, 0)
(20, 40, 0)C(20, 40, 10)
(20, 40, 10)C(20, 40, 20)
(20, 40, 20)A(40, 40, 20)
(40, 40, 20)C(40, 40, 30)
(40, 40, 30)C(40, 40, 40)

Solo cambia el valor de avance del trabajo seleccionado. En siete intervalos, A recibe dos turnos, B uno y C cuatro: la proporción exacta 50:25:100. Con el valor de avance compartido de 40, cada uno ha progresado la misma cantidad de servicio ponderado. Entre esos puntos de coincidencia, las proporciones en periodos cortos no tienen por qué ser exactas.

Distingue el servicio real del progreso virtual

El valor de avance sirve para ordenar, no es tiempo transcurrido ni un número de boletos. El paso grande de B hace que espere mientras A y C lo alcanzan en valor de avance. Aun así, recibe la proporción prevista de un séptimo durante este ciclo repetitivo. Sumar el número de boletos al valor de avance invertiría el diseño: el trabajo con más boletos daría el mayor salto y se seleccionaría con menos frecuencia.

La constante controla la escala de los pasos, no las proporciones previstas de boletos. Las implementaciones con enteros necesitan suficiente precisión para evitar que el redondeo distorsione esas proporciones. Las comparaciones y actualizaciones deben usar una escala coherente.

Sitúa de forma razonable a un recién llegado

Supón que los trabajos establecidos tienen valores de avance de alrededor de 4000. Un trabajo nuevo que empezara en cero ganaría repetidamente mientras se pone al día, incluso si tuviera pocos boletos. Inicializa su valor de avance en relación con el progreso actual del sistema, por ejemplo con el valor mínimo actual, para que no acumule servicio por el tiempo anterior a su llegada.

LoteríaPasos
Los sorteos aleatorios aplican las proporciones esperadasLa selección del menor valor de avance sigue el servicio de forma determinista
Los números de boletos bastan para la selecciónCada trabajo necesita un valor de avance y un paso
Un recién llegado simplemente añade boletosUn recién llegado necesita un valor de avance inicial adecuado

El tiempo de ejecución virtual de Linux usa la idea relacionada de contabilizar el progreso ponderado por el servicio real de CPU. En ambos diseños, un derecho mayor hace que ese progreso crezca más lentamente, manteniendo la tarea en competencia para recibir servicio más adelante.

Puntos clave

  • El paso es la constante común dividida entre los boletos.
  • Selecciona el menor valor de avance y suma solo el paso de ese trabajo.
  • Un mayor número de boletos hace que los valores de avance crezcan más lentamente.
  • Los trabajos nuevos necesitan valores de avance vinculados al progreso actual.

4.3 Pesos, tiempo de ejecución virtual y plazos de tareas elegibles

Los planificadores equitativos de Linux registran el servicio de CPU ponderado. El planificador completamente equitativo (CFS), introducido en Linux 2.6.23 en 2007, elegía la tarea que podía ejecutarse con el menor tiempo de ejecución virtual. Linux comenzó a sustituir esa regla de selección por EEVDF en la versión 6.6 en 2023.

Divide el servicio por peso

Un valor nice va de −20, el más favorecido, a +19, el menos favorecido. Nice 0 tiene un peso de 1024. Cada paso hacia un valor nice mayor reduce el peso por un factor de aproximadamente 1,25. Algunos pesos de ejemplo son 3121 con nice −5, 820 con nice 1, 335 con nice 5, 110 con nice 10 y 15 con nice 19.

Nice 0 frente a nice 1 da 10241024+820≈0,555, aproximadamente un 55,5 % frente a un 44,5 %. Las proporciones dependen aproximadamente de la diferencia entre los valores nice: 3121/1024 y 335/110 son ambos aproximadamente 3,05. Nice +19 compitiendo con nice 0 sigue recibiendo aproximadamente el 1,4 % en este sencillo modelo de dos tareas.

CFS clásico distribuye una latencia de planificación objetivo según el peso:

intervalok=wk∑iwi×latencia

Para los pesos 1024, 1024 y 335, el total es 2383. Un periodo objetivo de 48 ms da aproximadamente 20,63 ms a cada tarea de mayor peso y 6,75 ms a la de menor peso. Estos parámetros son ilustrativos, no valores predeterminados universales del núcleo. Con cuatro tareas iguales, 48 ms dan 12 ms a cada una. Con diez, 4,8 ms para cada una quedarían por debajo de una granularidad mínima ilustrativa de 6 ms, por lo que el periodo debe crecer.

Contabiliza el progreso virtual

CFS aumenta el tiempo de ejecución virtual de una tarea en ejecución en:

Δv=1024w×Δt

Una tarea con peso 1024 gana un milisegundo virtual por cada milisegundo real. Una tarea con peso 335 gana aproximadamente 3,06. Contabilizar más rápido el progreso de las tareas de menor peso hace que esperen antes, mientras que las de mayor peso reciben más servicio real.

CFS clásico ordena las tareas en cola que pueden ejecutarse en un árbol rojinegro por tiempo de ejecución virtual. La inserción y la eliminación requieren tiempo logarítmico; un puntero almacenado al nodo situado más a la izquierda permite encontrar el mínimo en tiempo constante. Las tareas bloqueadas salen de este árbol de tareas que pueden ejecutarse. La ubicación al despertar limita la posibilidad de que un largo periodo de suspensión se convierta en un derecho ilimitado a recuperar servicio.

Elige entre tareas elegibles con EEVDF

Primero el plazo virtual más temprano entre las tareas elegibles conserva los pesos y la contabilización del servicio virtual. Una tarea tiene déficit de servicio positivo cuando se le debe servicio y negativo cuando ha recibido más de lo que le corresponde. Las tareas con déficit no negativo son elegibles. EEVDF selecciona la tarea elegible con el plazo virtual más temprano.

El plazo combina el inicio virtual de una solicitud con la duración del servicio solicitado ajustada al tiempo virtual. Es un valor para ordenar el servicio, no una promesa de finalización en el tiempo real del reloj. Un intervalo solicitado más corto puede dar a una tarea elegible un plazo más temprano y mejorar la latencia sin aumentar la proporción que le corresponde por su peso a largo plazo. Linux actual admite solicitudes de intervalos mediante sched_setattr().

Selección de CFS clásicoSelección de EEVDF
Menor tiempo de ejecución virtualPlazo virtual más temprano entre las tareas elegibles

Puntos clave

  • Los valores nice determinan los pesos relativos del servicio normal de la clase equitativa.
  • El tiempo de ejecución virtual crece de forma inversamente proporcional al peso.
  • CFS clásico usa el menor tiempo de ejecución virtual y un mínimo almacenado del árbol.
  • La granularidad mínima puede ampliar el periodo de CFS clásico.
  • EEVDF comprueba primero la elegibilidad y después compara los plazos virtuales.
  • Las solicitudes más cortas de EEVDF cambian la latencia, mientras que los pesos determinan las proporciones.
5

Distribuye el trabajo entre varias CPU

Varias CPU crean más oportunidades para ejecutar trabajo, pero ahora la ubicación afecta al coste de cada elección. Un hilo puede encontrar cachés con datos útiles en un núcleo y memoria distante en otro. Las colas de trabajos listos también deben permitir decisiones simultáneas sin corromper el estado compartido. Compara una sola cola compartida con colas separadas por CPU y después sopesa el beneficio de equilibrar el trabajo frente al coste de moverlo.

5.1 Ten en cuenta las cachés y la topología de las CPU

Varias CPU solo ayudan cuando hay trabajo paralelo. Un solo hilo se ejecuta en una CPU lógica a la vez; varios hilos o programas independientes pueden usar varias CPU juntos. Un planificador debe elegir tanto qué trabajo se ejecuta como dónde se ejecuta.

Comparte la responsabilidad de planificación

En el multiprocesamiento simétrico (SMP), las CPU ejecutan código del núcleo y toman decisiones de planificación por sí mismas. En el multiprocesamiento asimétrico, un procesador principal coordina la planificación mientras los demás ejecutan el trabajo asignado. El control central es más sencillo, pero el procesador principal puede convertirse en un cuello de botella. Los sistemas de propósito general usan SMP.

Las decisiones simultáneas requieren coordinación. Si dos CPU retiran tareas de una cola compartida de trabajos listos, sus actualizaciones deben sincronizarse para que ninguna pierda una entrada ni seleccione dos veces la misma tarea en cola. Más CPU pueden aumentar la contención por esa estructura compartida.

Conserva el contenido útil de las cachés

Los núcleos tienen cachés pequeñas y rápidas, normalmente cachés L1 y L2 privadas y una L3 más grande compartida por varios núcleos. La localidad temporal significa reutilizar datos a los que se accedió recientemente. La localidad espacial significa acceder a datos cercanos, como elementos consecutivos de un arreglo.

Un hilo que ordena datos en el núcleo 0 llena sus cachés y la TLB. Si se reanuda allí después de una breve expropiación, muchas entradas necesarias pueden seguir presentes. En el núcleo 3, puede necesitar recuperar los mismos datos de nuevo de una caché compartida o de la memoria. La afinidad de caché es la tendencia del planificador a mantener un hilo cerca de la CPU que usó recientemente. El beneficio exacto depende de lo que permanezca en caché y de la topología de compartición de cachés.

Distingue la coherencia de la sincronización

La coherencia de caché impide que los núcleos usen indefinidamente copias en caché incompatibles de una misma ubicación de memoria. La observación del bus es una idea de implementación: las cachés observan el tráfico e invalidan o actualizan las copias cuando otro núcleo escribe. Los sistemas más grandes pueden usar otros mecanismos de coherencia.

La coherencia no convierte varias instrucciones en una operación atómica. Si dos CPU leen la longitud de una cola, modifican entradas y vuelven a escribir la longitud, las lecturas y escrituras individuales coherentes siguen permitiendo intercalados perjudiciales. El planificador necesita cerrojos u otro método de sincronización para toda la actualización. La línea de caché compartida de un cerrojo puede moverse entre núcleos mientras compiten por él.

Interpreta la organización del hardware
Característica del hardwareQué debe considerar el planificador
Multihilo simultáneo (SMT)Las CPU lógicas de un núcleo comparten unidades de ejecución y cachés
Acceso no uniforme a memoria (NUMA)Puede ser más rápido acceder a la memoria cercana a un zócalo que a la memoria remota
Núcleos heterogéneosLos núcleos de rendimiento y de eficiencia ofrecen distintas compensaciones entre velocidad y energía

Intel llama Hyper-Threading a su implementación de SMT. Dos hilos ocupados en CPU lógicas del mismo núcleo compiten por los recursos de ese núcleo; dos CPU lógicas no equivalen a dos núcleos físicos independientes. Una migración en NUMA también puede alejar el cálculo de la memoria que usa, incluso cuando la recuperación de datos en caché es breve.

Mover un hilo a una CPU inactiva puede eliminar una larga demora en la cola. Mantenerlo en su sitio puede conservar la localidad. Compara esos costes usando la carga de trabajo real: la afinidad es una preferencia de rendimiento, mientras que una máscara de afinidad explícita restringe las CPU que se permiten.

Puntos clave

  • La aceleración paralela necesita varios hilos o programas que puedan ejecutarse.
  • SMP permite que varias CPU tomen decisiones de planificación.
  • La afinidad de caché conserva datos y traducciones utilizados recientemente.
  • La coherencia no hace atómica una actualización de varios pasos.
  • SMT, NUMA y los distintos tipos de núcleos afectan a los costes de ubicación.

5.2 Equilibra el trabajo sin moverlo constantemente

Un planificador multiprocesador necesita un lugar donde mantener los trabajos listos. Una sola cola compartida facilita encontrar trabajo. Las colas separadas por CPU reducen la contención por recursos compartidos y conservan la ubicación, pero pueden dejar una CPU sobrecargada mientras otra está inactiva.

Compara los diseños de colas
DiseñoVentaja principalCoste principal
Una sola cola (SQMS)Cualquier CPU inactiva elegible puede tomar trabajo en esperaContención por la cola y menor afinidad de caché
Múltiples colas (MQMS)Las decisiones locales escalan y conservan la afinidadEl desequilibrio de carga necesita corrección activa

En la planificación multiprocesador con una sola cola, todas las CPU toman trabajos de una cola compartida. Si los trabajos pueden ejecutarse en cualquier CPU, el trabajo en espera ocupa de forma natural una CPU inactiva. Un cerrojo compartido protege la cola, por lo que aumentar el número de CPU puede convertir ese cerrojo en un cuello de botella.

Con cinco trabajos A–E planificados por turnos en cuatro CPU, una secuencia asigna A, B, C, D en la primera ronda; E, A, B, C en la segunda; y D, E, A, B en la tercera. A se ejecuta en la CPU 0, después en la 1 y después en la 2. La máquina permanece ocupada, pero A cambia repetidamente de cachés privadas. Las reglas de afinidad pueden conservar la mayoría de las ubicaciones mientras mueven trabajos seleccionados para equilibrar la carga.

Detecta proporciones desiguales

En la planificación multiprocesador con múltiples colas, cada CPU planifica su propia cola. Supón que la CPU 0 tiene A y C y la CPU 1 tiene B y D, todos limitados por la CPU y compartiéndola localmente por turnos. Al principio cada trabajo obtiene media CPU. Cuando C termina, A recibe toda la CPU 0 mientras B y D siguen recibiendo cada uno la mitad de la CPU 1.

La máquina sigue utilizándose por completo, pero los trabajos ya no reciben proporciones iguales. Si A también termina, la CPU 0 queda inactiva aunque B y D están listos. Mover uno de ellos a la CPU 0 da a ambos una CPU completa y usa capacidad que antes estaba inactiva.

Con tres trabajos iguales limitados por la CPU y dos CPU, un servicio equitativo a largo plazo es de dos tercios de una CPU por trabajo. Una ubicación fija deja un trabajo solo y dos compartiendo. Alternar periódicamente qué trabajo está solo puede aproximarse al reparto equitativo. Ningún hilo se ejecuta en ambas CPU a la vez.

Decide cuándo migrar

La migración mueve una tarea a la cola de otra CPU. El robo de trabajo es una estrategia de extracción: una CPU con poco trabajo examina la cola de una CPU más ocupada y toma trabajo. Las comprobaciones frecuentes crean tráfico de sincronización; las poco frecuentes dejan el desequilibrio sin resolver. El robo también debe respetar las CPU en las que puede ejecutarse la tarea y la localidad de memoria.

Compara el tiempo de espera que se espera ahorrar con el coste de migración. Una cola larga en una CPU y una CPU compatible inactiva dan una razón de peso para mover trabajo. Una pequeña diferencia temporal entre colas puede desaparecer antes de recuperar los costes de volver a llenar la caché.

Los diseños O(1) y CFS de Linux usaban colas de ejecución por CPU; Linux equilibra la carga entre dominios de planificación de hardware, teniendo en cuenta los núcleos y zócalos compartidos. El planificador alternativo BF Scheduler usaba una sola cola. Los usuarios pueden restringir la ubicación con taskset o sched_setaffinity() en Linux y SetThreadAffinityMask() en Windows. Una máscara de afinidad restrictiva puede explicar por qué una tarea lista no usa una CPU que parece inactiva.

Puntos clave

  • Una cola compartida facilita encontrar trabajo en espera, pero necesita sincronización compartida.
  • Las colas por CPU conservan la localidad y reducen la contención.
  • La utilización completa de la CPU puede coexistir con proporciones desiguales por trabajo.
  • La migración corrige el desequilibrio con un coste de caché y coordinación.
  • El robo de trabajo atrae tareas hacia las CPU con capacidad disponible.
  • Las restricciones de afinidad limitan qué CPU inactivas pueden aceptar una tarea.
6

Interpreta la configuración del sistema y evalúa una política

Los planificadores reales combinan varias ideas: clases de prioridad, proporciones ponderadas, realimentación después de las esperas y ubicación entre CPU. Una configuración puede cambiar la preferencia, la proporción o la ubicación permitida, así que identifica qué control estás interpretando antes de predecir su efecto. Linux y Windows proporcionan ejemplos concretos. Para elegir una política, relaciona esos mecanismos con una carga de trabajo y evalúa tanto los resultados promedio como las demoras que experimentan sus trabajos menos favorecidos.

6.1 Usa los controles de planificación de Linux

Linux planifica hilos, llamados tareas en el núcleo. La política de planificación, el valor nice, los controles de grupo y la afinidad de CPU de una tarea responden a distintas preguntas sobre cuándo y dónde se ejecuta.

Interpreta primero la política
PolíticaComportamiento de selección
SCHED_OTHER y SCHED_BATCHServicio normal de la clase equitativa, ponderado por nice
SCHED_IDLETrabajo normal de prioridad extremadamente baja; nice no lo afecta
SCHED_FIFOPrioridad de tiempo real, sin cuanto entre tareas de igual prioridad
SCHED_RRPrioridad de tiempo real, alternando por cuanto las tareas de igual prioridad
SCHED_DEADLINEServicio de la clase de plazos por encima de las demás clases

Las políticas normales tienen prioridad estática 0. FIFO y RR de tiempo real usan 1–99, donde 99 es la más alta. Una tarea FIFO continúa hasta que se bloquea, cede la CPU o un trabajo de mayor prioridad se la expropia. RR añade turnos entre tareas de igual prioridad; sched_rr_get_interval() informa de su cuanto. Estos nombres describen políticas de Linux: la planificación normal equitativa no es el algoritmo RR de intervalos iguales de los manuales.

Cambia las proporciones y la ubicación

Nice va de −20 a +19, con 0 como valor predeterminado. Los valores mayores reducen el peso de la clase equitativa aproximadamente por un factor de 1,25 por paso. En un inicio típico con nice 0, nice -n 10 make inicia una compilación con nice 10; -n es un ajuste al valor nice heredado. renice -n 5 -p 4321 establece nice 5 para el proceso indicado. Un usuario puede hacer que su propio trabajo sea menos favorecido; aumentar la prioridad requiere el privilegio adecuado o un límite de recursos que lo permita.

taskset -c 0,1 ./app permite que un programa se ejecute en las CPU 0 y 1. No crea un segundo hilo ni promete el uso exclusivo de ninguna de las dos CPU. ps -o pid,cls,ni,rtprio,comm muestra campos relacionados con la política, mientras que top ayuda a observar la prioridad, nice y el consumo de CPU.

chrt -f 50 ./app selecciona la prioridad 50 de tiempo real FIFO. Usa la configuración de tiempo real solo en un entorno controlado: un hilo ocupado de alta prioridad puede retrasar el intérprete de comandos y el trabajo esencial del sistema. Los límites predeterminados de ancho de banda de tiempo real reservan algo de tiempo para el trabajo normal, pero no garantizan que todas esas cargas respondan con rapidez. La preferencia cambia el acceso al servicio de CPU, no la velocidad de una instrucción.

Distingue el peso de grupo de la cuota

En cgroup v2, cpu.weight va de 1 a 10 000, con 100 como valor predeterminado, y divide la capacidad de CPU disputada de la clase equitativa entre los grupos activos del mismo nivel. Los pesos 200 y 100 dan aproximadamente dos tercios y un tercio de una CPU cuando ambos grupos están activos. Si el segundo queda inactivo, el primero puede usar toda la capacidad disponible.

cpu.max establece un límite de ancho de banda. El valor «50000 100000» permite 50 ms de tiempo de CPU agregado por periodo de 100 ms, equivalente a media CPU en promedio. Varios hilos pueden consumir ese presupuesto en paralelo y agotarlo antes en tiempo transcurrido. Un grupo limitado puede ver restringida su ejecución incluso cuando existe capacidad de CPU disponible.

Sitúa los nombres en la historia

El planificador O(1) de Linux 2.6.0 usaba arreglos de prioridades y realimentación de interactividad. CFS llegó en la versión 2.6.23 en 2007. Linux 6.6 en 2023 comenzó la transición a la selección EEVDF en la clase equitativa. Desde Linux 6.12 en 2024, sched_ext admite políticas de planificación BPF cargadas dinámicamente en núcleos configurados para ello. Si un planificador de este tipo falla o detiene el avance de trabajos que pueden ejecutarse, el núcleo restaura la planificación integrada.

Puntos clave

  • La clase de política determina la preferencia antes de interpretar nice.
  • Nice ajusta la proporción relativa de la clase equitativa; la afinidad restringe las CPU permitidas.
  • SCHED_IDLE ignora nice.
  • Un peso de cgroup reparte la capacidad disputada; una cuota limita el servicio agregado de CPU.
  • EEVDF cambia la selección de la clase equitativa, mientras que sched_ext admite políticas reemplazables.

6.2 Sigue las prioridades y la realimentación de Windows

Windows planifica los hilos listos por prioridad del 0 al 31, con números mayores para mayor prioridad. Los hilos listos de igual prioridad se alternan por turnos. Un hilo de mayor prioridad que acaba de pasar al estado listo expropia la CPU a uno de menor prioridad sin esperar a que termine su cuanto. La prioridad 0 pertenece al hilo de puesta a cero de páginas, que borra las páginas libres.

Obtén la prioridad base a partir de dos ajustes

La prioridad base de un hilo depende de la clase de prioridad de su proceso y de su propio nivel relativo de hilo. Las clases de proceso son Idle, Below normal, Normal, Above normal, High y Realtime. Los niveles de hilo incluyen Idle, Lowest, Below normal, Normal, Above normal, Highest y Time critical.

Clase de procesoNivel de hiloPrioridad base
NormalNormal8
NormalHighest10
HighNormal13
RealtimeNormal24

Time critical da 15 fuera de la clase Realtime y 31 dentro de ella. El nivel de hilo Idle da 1 fuera de Realtime y 16 dentro de ella. Estos niveles extremos son entradas especiales de la tabla, por lo que sumar un desplazamiento fijo a cada clase daría resultados incorrectos.

Sigue una elevación temporal

Las prioridades 1–15 son el intervalo variable; las 16–31 son el intervalo de tiempo real. Un hilo comienza con la prioridad dinámica igual a la prioridad base. Para los hilos del intervalo variable, eventos como una entrada o la finalización de una espera pueden elevar temporalmente la prioridad dinámica. Los hilos con prioridades base de tiempo real no reciben esas elevaciones.

Supón que un hilo con prioridad base 8 se eleva a 14. Si sigue calculando, su prioridad dinámica baja un nivel después de cada cuanto completo: 13 después del primero, 12 después del segundo y 8 después del sexto. La elevación no cambia permanentemente la prioridad base ni disminuye por debajo de ella.

Esto es realimentación: el trabajo desbloqueado recientemente recibe servicio rápido, mientras que el uso continuo de CPU pierde la ventaja temporal. Windows también usa elevaciones temporales para los hilos listos que llevan mucho tiempo esperando, con el fin de combatir la inanición. Una elevación de este tipo puede ayudar a progresar a un titular de cerrojo de baja prioridad, pero es un mecanismo distinto de la herencia de prioridades asociada a un cerrojo.

Reconoce diseños relacionados

La clase de tiempo compartido de Solaris es un diseño MLFQ basado en tablas. ULE de FreeBSD usa colas de ejecución por CPU y compara el comportamiento de suspensión con el de ejecución para identificar hilos interactivos. Estos sistemas comparten la idea de adaptar el servicio al comportamiento observado sin usar reglas de cola idénticas.

macOS proporciona clases de calidad de servicio (QoS), entre ellas interactivo para el usuario, iniciado por el usuario, predeterminado, utilidad y segundo plano. Describen la urgencia del trabajo. En Apple silicon, QoS ayuda al sistema a distribuir el trabajo entre núcleos de rendimiento y de eficiencia. Los programas comunican la importancia del trabajo; el sistema operativo elige la ubicación según la política y el hardware disponible.

Los planificadores reales combinan realimentación, prioridades, equidad y afinidad. Una clase Realtime de Windows tiene mayor preferencia, pero no garantiza un cálculo más rápido ni la corrección completa de tiempo real.

Puntos clave

  • Los números de prioridad de Windows aumentan con la preferencia.
  • La prioridad base combina la clase del proceso con el nivel relativo del hilo.
  • Las elevaciones del intervalo variable disminuyen un nivel por cuanto completo hasta la prioridad base.
  • Las prioridades base de tiempo real no reciben elevaciones dinámicas.
  • Solaris, ULE y macOS usan ideas relacionadas con distintos mecanismos.
  • QoS comunica la urgencia del trabajo y ayuda a orientar su ubicación.

6.3 Elige una política y comprueba sus consecuencias

Elige el objetivo de la carga de trabajo antes de elegir un planificador. Una cola de trabajos por lotes puede valorar que muchos trabajos pequeños terminen rápidamente. Un editor necesita atención inmediata después de una entrada. Un servidor compartido necesita una asignación justificable entre usuarios o grupos.

Adapta el mecanismo al objetivo
Necesidad de la carga de trabajoMecanismo adecuadoCompensación que se debe examinar
Bajo tiempo de retorno promedio en trabajos por lotesSJF o STCF con ráfagas conocidas o previstasError de predicción e inanición
Servicio interactivo rápidoExpropiación con realimentación o selección equitativa sensible a la latenciaCoste de cambio y demoras de los percentiles altos
Acceso proporcional entre usuariosBoletos, pasos o pesos de grupoEquidad en periodos cortos y asignación entre grupos
Cálculo largo limitado por la CPUSuficiente servicio por turno para amortizar los cambiosCapacidad de respuesta de los trabajos que compiten
Trabajo de dispositivos con plazos estrictosPolíticas de tiempo real adecuadasInterferencia con otras tareas
Compara las políticas con las mismas entradas

A llega en 0 ms y necesita 8 ms, B en 1 ms y necesita 4 ms, y C en 2 ms y necesita 2 ms. Ignora el coste de cambio. FIFO ejecuta A, B, C. SJF también comienza con A, pero después ejecuta C antes que B. STCF ejecuta A 0–1, B 1–2, C 2–4, B 4–7, A 7–14. RR usa un cuanto de 2 ms y coloca las llegadas al final de un intervalo en la cola antes que la tarea cuyo intervalo ha terminado.

PolíticaTiempo de retorno promedioTiempo de respuesta promedio hasta la primera ejecución
FIFO10,33 ms5,67 ms
SJF9,67 ms5 ms
STCF7,33 ms0 ms
RR9 ms1 ms

STCF gana en ambas métricas con esta carga porque cada nuevo trabajo más corto se ejecuta de inmediato al llegar. RR permite comenzar rápidamente sin conocer las duraciones de las ráfagas. Con llegadas simultáneas de igual duración, FIFO puede tener un tiempo de retorno promedio menor que RR. Una clasificación basada en una carga de trabajo aporta información sobre esa carga.

Elige un método de evaluación

El modelado determinista calcula a mano un seguimiento fijo. Da resultados exactos para sus entradas y facilita examinar las decisiones, pero a menudo omite los costes de despacho y caché. Los modelos de colas describen los patrones de llegada y servicio mediante distribuciones y predicen el comportamiento promedio.

Para un sistema estable en régimen estacionario, la ley de Little relaciona la población promedio n, la tasa de llegada λ y el tiempo promedio de permanencia W:

n=λW

Con 14 trabajos/s y un tiempo promedio de 0,5 s en el sistema, la población promedio es de 7 trabajos. Mantén coherente el ámbito de medición: una población de la cola de trabajos listos requiere el tiempo de espera en esa cola, mientras que una población de todo el sistema requiere el tiempo en todo el sistema. Convierte las unidades antes de multiplicar.

La simulación ejecuta un modelo del planificador, a menudo con una traza de carga de trabajo registrada. Puede evaluar patrones complejos de llegada y bloqueo, pero sus conclusiones dependen del modelo y de las trazas elegidas. La implementación evalúa el planificador en un sistema operativo real e incluye la sobrecarga real; requiere más esfuerzo y sigue necesitando cargas de trabajo representativas y mediciones repetibles.

Examina la tasa de procesamiento, la utilización, las demoras individuales y de los percentiles altos, la equidad y el consumo de energía junto con los promedios. En un multiprocesador, una máquina ocupada puede seguir repartiendo el servicio de forma desigual o gastar tiempo en rellenar cachés. Compara las políticas usando el mismo intervalo de observación y la misma carga de trabajo y después varía las características de la carga que importan a los usuarios previstos.

Puntos clave

  • Elige métricas que se ajusten a las necesidades reales de la carga de trabajo.
  • Compara las políticas con las mismas llegadas y demandas de CPU.
  • Una clasificación para una carga de trabajo concreta no establece un ganador universal.
  • La ley de Little requiere un sistema estable y ámbitos de medición coherentes para la población y el tiempo.
  • La simulación depende del modelo; la implementación incluye la sobrecarga real.
  • Evalúa las demoras de los percentiles altos, la equidad, la tasa de procesamiento y la energía junto con los promedios.

Ejemplos de Planificación de CPU

6 Lecciones Interactivas

1

De los estados listos a las demoras medidas

11 pasos
Sigue una decisión de planificación y después obtén los tiempos de respuesta, espera y retorno de una línea de tiempo.
  1. 1
    IntroducciónSigue la transferencia de la CPU

    Un trabajo en ejecución inicia una lectura de disco mientras otro trabajo está listo. El sistema operativo puede usar ese periodo de espera para hacer avanzar otro trabajo. Primero seguiremos los cambios de estado (un trabajo está listo, en ejecución o bloqueado) y después leeremos una línea de tiempo breve de la CPU para medir lo que experimentó cada trabajo: respuesta, espera y retorno.

    Mantén separadas dos preguntas mientras trabajas: ¿quién puede ejecutarse ahora y qué demora debe contar una métrica? Un trabajo puede tener un primer turno rápido y aun así terminar mucho más tarde.

  2. 2
    ExplicaciónElige entre los trabajos que pueden ejecutarse

    El planificador selecciona trabajo listo. Una tarea en ejecución ya tiene una CPU; una tarea bloqueada debe esperar su evento. Cuando comienza la lectura, quien la solicitó pasa al estado bloqueado y libera la CPU. Cuando termina la lectura, vuelve al estado listo.

    La lectura terminada crea una oportunidad de selección. Que la tarea que vuelve se ejecute de inmediato depende de la política y de los demás trabajos listos.

  3. 3
    ConexiónSepara la elección del cambio

    La política elige la siguiente tarea lista. El despachador guarda el estado anterior, restaura el estado elegido y reanuda la ejecución. Su latencia y el rellenado de las cachés de la siguiente tarea cuestan tiempo.

    Un temporizador puede devolver el control al núcleo incluso cuando un programa nunca cede la CPU. Una interrupción de dispositivo también puede hacer que un trabajo favorecido pase al estado listo. La expropiación conserva la tarea interrumpida para un turno posterior.

  4. 4
    Desafío¿Puede expropiar la CPU el editor que espera?

    Un editor está bloqueado esperando una entrada mientras se ejecuta una tarea limitada por la CPU. El editor tiene mayor prioridad. ¿Puede tomar la CPU antes de que llegue la entrada? Explica qué estado importa.

    ---reveal---

    No. El editor está bloqueado y no puede ejecutarse hasta que ocurra su evento de entrada. Cuando la entrada lo devuelve al estado listo, un planificador expropiativo por prioridades puede elegirlo. La prioridad ordena los trabajos listos; no elimina la dependencia del evento.

  5. 5
    EjemploDibuja los intervalos de servicio

    A llega en 0 ms y necesita 5 ms, B en 2 ms y necesita 3 ms, y C en 4 ms y necesita 1 ms. Son trabajos que solo usan CPU. FIFO sin coste de cambio ejecuta A 0–5, B 5–8 y después C 8–9.

    Registra los instantes de primera ejecución 0, 5 y 8 ms y los instantes de finalización 5, 8 y 9 ms. Son instantes. A continuación restamos la llegada de cada trabajo para convertirlos en demoras.

  6. 6
    EjemploMide la demora hasta la finalización

    El tiempo de retorno va desde la llegada hasta la finalización. En la línea de tiempo, el retorno de A es de 5 ms, el de B es de 6 ms y el de C es de 5 ms.

    El promedio es:

    (5+6+5)/3=16/3≈5,33 ms.

    El instante de finalización de B es 8 ms, pero solo ha estado en el sistema 6 ms porque llegó en 2 ms. Medir cada trabajo desde el principio del gráfico exageraría las demoras de las llegadas posteriores.

  7. 7
    EjemploMide el primer turno y la espera total

    El tiempo de respuesta termina cuando el trabajo se ejecuta por primera vez. A espera 0 ms para ese primer turno, B espera 3 ms y C espera 4 ms. Su tiempo de respuesta promedio es de aproximadamente 2,33 ms.

    Aquí la respuesta es igual a la espera total porque cada trabajo que solo usa CPU se ejecuta sin interrupción una vez seleccionado. Con expropiación, los intervalos posteriores en estado listo también cuentan como espera. Un intervalo bloqueado por entrada/salida cuenta para el retorno, pero no para la espera en la cola de trabajos listos.

  8. 8
    DesafíoCalcula las demoras de un trabajo expropiado

    La tarea R llega en 1 ms, se ejecuta por primera vez en 4 ms y termina en 15 ms. Usa 6 ms de CPU sin entrada/salida. Calcula los tiempos de respuesta, retorno y espera.

    ---reveal---

    El tiempo de respuesta es de 3 ms y el de retorno es de 14 ms. Restar 6 ms de servicio del retorno da 8 ms de espera total. Los 3 ms iniciales son solo parte de esa espera; otros 5 ms ocurren después del primer turno.

  9. 9
    Idea claveMide la máquina y la experiencia individual

    Nuestra traza FIFO termina tres trabajos en 9 ms sin tiempo inactivo. Su tasa de procesamiento es de aproximadamente 333,33 trabajos/s y su utilización de CPU es del 100 % durante ese intervalo. Estas cifras de toda la máquina no describen la experiencia de cada trabajo.

    Examina las demoras individuales y un percentil alto cuando a los usuarios les preocupan las esperas largas poco frecuentes. La equidad también plantea si los trabajos listos reciben servicio, incluidos los trabajos ocultos detrás de un promedio favorable.

  10. 10
    DesafíoUsa correctamente un intervalo bloqueado

    Una tarea llega en 0 ms, se ejecuta 0–2, espera un dispositivo 2–7, espera en estado listo 7–10 y se ejecuta 10–12 hasta terminar. ¿Cuáles son sus tiempos de respuesta y espera?

    ---reveal---

    El tiempo de respuesta es de 0 ms porque la tarea se ejecuta de inmediato. La espera es de 3 ms, el intervalo 7–10 en estado listo. Su tiempo de retorno de 12 ms también contiene 4 ms de CPU y 5 ms bloqueada. Llamar «espera» a los 8 ms que pasa fuera de la ejecución de CPU mezclaría dos estados del proceso.

  11. 11
    RepasoComprueba el estado antes de contar el tiempo

    Para una traza nueva, identifica los trabajos listos en cada evento, registra los intervalos de servicio y después obtén los instantes de primera ejecución y finalización. Resta las llegadas antes de calcular el promedio. Mantén separado el tiempo bloqueado al medir la espera en la cola de trabajos listos.

2

Construye planificaciones a partir de la regla de la política

17 pasos
Compara reglas de selección, expropiaciones, turnos de planificación por turnos y dependencias de cerrojos mediante líneas de tiempo resueltas.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónUna carga de trabajo, varias opciones
  2. 2
    EjemploComienza con el orden de llegada
  3. 3
    EjemploDeja que el trabajo corto termine primero
  4. 4
    DesafíoPredice la siguiente ráfaga
  5. 5
    EjemploDetén el trabajo largo ante una llegada más corta
  6. 6
    EjemploTermina el trabajo restante
  7. 7
    DesafíoCompara con lo que queda
  8. 8
    ConexiónDeja que el trabajo bloqueado libere capacidad
  9. 9
    EjemploAlterna dos trabajos iguales
  10. 10
    EjemploCalcula la finalización con alternancia
  11. 11
    DesafíoColoca una llegada al final de un intervalo
  12. 12
    Idea claveAsume el coste de cada transferencia
  13. 13
    EjemploInterpreta la prioridad antes de ejecutar
  14. 14
    EjemploSigue al titular del cerrojo
  15. 15
    DesafíoElige el cambio de prioridad útil
  16. 16
    DesafíoElige entre respuesta y finalización
  17. 17
    RepasoConvierte una regla en una línea de tiempo
3

Sigue la realimentación y detecta la manipulación

12 pasos
Sigue un trabajo por los niveles de las colas y después corrige las cesiones estratégicas y las esperas largas mediante contabilización y elevaciones de prioridad.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónAprende sin conocer la duración de una ráfaga futura
  2. 2
    ExplicaciónUsa una cola y dos límites de servicio
  3. 3
    EjemploDeja que el uso continuo de CPU provoque un descenso
  4. 4
    EjemploDa al recién llegado su oportunidad temprana
  5. 5
    DesafíoConserva una asignación interrumpida
  6. 6
    EjemploDescubre la posibilidad de ceder la CPU antes de tiempo
  7. 7
    EjemploConserva el historial de servicio
  8. 8
    DesafíoCuenta solo el consumo de CPU
  9. 9
    ExplicaciónDa una nueva oportunidad a los trabajos antiguos
  10. 10
    DesafíoDistingue las dos correcciones
  11. 11
    ConexiónAjusta los turnos por separado de la clasificación
  12. 12
    RepasoRegistra la información que cambia la prioridad
4

Contabiliza el servicio proporcional de CPU

16 pasos
Convierte boletos en probabilidades y pasos, y después sigue el progreso virtual ponderado y la elegibilidad de EEVDF.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónComienza con un derecho de servicio
  2. 2
    EjemploInterpreta los intervalos de boletos
  3. 3
    Idea claveEspera variaciones en periodos cortos
  4. 4
    DesafíoConvierte una asignación local
  5. 5
    ConexiónPermite que un servicio herede el derecho del cliente
  6. 6
    EjemploCalcula pasos inversos al número de boletos
  7. 7
    EjemploVuelve a igualar el progreso ponderado
  8. 8
    DesafíoSitúa una tarea nueva en la planificación por pasos
  9. 9
    ExplicaciónContabiliza el servicio real en unidades virtuales
  10. 10
    EjemploDivide un periodo objetivo
  11. 11
    ConsejoInterpreta nice como dato para determinar el peso
  12. 12
    ConexiónEncuentra el mínimo de forma eficiente
  13. 13
    ExplicaciónFiltra por elegibilidad antes de comparar plazos
  14. 14
    DesafíoAplica ambas comparaciones de EEVDF
  15. 15
    DesafíoConserva la proporción al cambiar el tamaño de la solicitud
  16. 16
    RepasoSepara la asignación de la selección
5

Equilibra la carga de CPU conservando una localidad útil

11 pasos
Examina los costes del hardware, compara diseños de colas y decide cuándo ayuda mover trabajo listo.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónUna segunda CPU añade una elección de ubicación
  2. 2
    ExplicaciónReconoce el paralelismo disponible
  3. 3
    EjemploConserva un conjunto de trabajo usado recientemente
  4. 4
    Desafío¿Protege la coherencia toda la actualización?
  5. 5
    ExplicaciónElige un diseño de colas
  6. 6
    EjemploDetecta el servicio desigual en CPU ocupadas
  7. 7
    EjemploAlterna la ubicación para igualar el servicio
  8. 8
    DesafíoUsa una CPU inactiva cuando esté permitida
  9. 9
    Idea claveSopesa el coste de recuperación frente a la demora ahorrada
  10. 10
    DesafíoDecide si el movimiento ahorra tiempo
  11. 11
    RepasoComprueba la capacidad, la elegibilidad y la localidad
6

Interpreta los controles del sistema y evalúa un planificador

15 pasos
Interpreta el comportamiento de Linux y Windows y después elige un ámbito de medición y evalúa las pruebas.

Guarda esta unidad para seguir cada Lección Interactiva paso a paso.

  1. 1
    IntroducciónInterpreta cada control en su propia capa
  2. 2
    ExplicaciónComprueba la clase de política de Linux
  3. 3
    EjemploDistingue la proporción de la ubicación
  4. 4
    EjemploAplica los pesos de grupo cuando hay competencia
  5. 5
    DesafíoInterpreta una cuota agregada
  6. 6
    ConexiónReconoce la generación del planificador
  7. 7
    ExplicaciónRelaciona los ajustes de Windows con la prioridad base
  8. 8
    EjemploDeja que disminuya una elevación temporal
  9. 9
    DesafíoComprueba el intervalo de elevación
  10. 10
    ConexiónReconoce ideas relacionadas de realimentación
  11. 11
    ExplicaciónElige la medición que importa
  12. 12
    EjemploMantén la ley de Little dentro de un mismo ámbito
  13. 13
    DesafíoObtén la espera a partir de la población
  14. 14
    DesafíoExplica una mejora aparente del rendimiento
  15. 15
    RepasoRelaciona una configuración con un efecto medido

Ejercicios de Planificación de CPU

50 Preguntas de Práctica en 5 sets

Set 1: Interpreta decisiones y sigue el servicio de CPU10 Preguntas de Práctica

Pregunta 1 de 10

Un predictor de ráfagas tiene una estimación de 20 ms y usa un peso de 0,25 para la medición más reciente. Observa ráfagas de 8 ms y después de 12 ms. ¿Cuál es su predicción después de ambas observaciones?
  1. 17,00 ms.
  2. 14,00 ms.
  3. 15,75 ms.
  4. 13,50 ms.
Mostrar respuestaOcultar respuesta
Respuesta: C
La primera actualización es 0,25 por 8 más 0,75 por 20, lo que da 17 ms. La segunda usa esa estimación actualizada: 0,25 por 12 más 0,75 por 17 da 15,75 ms. Volver a usar la estimación original de 20 ms descartaría el efecto de la primera observación.

Pregunta 2 de 10

Un editor espera una lectura de disco, un compilador está listo y un visor ha terminado. ¿Qué tarea puede seleccionar ahora el planificador de CPU?
  1. El editor.
  2. El compilador.
  3. El visor.
  4. El editor y el compilador.
Mostrar respuestaOcultar respuesta
Respuesta: B
El compilador está listo y puede ejecutarse en cuanto se seleccione. El editor debe esperar su evento de disco antes de convertirse en candidato. Tener trabajo sin terminar no basta: el trabajo bloqueado aún no puede usar la CPU.

Pregunta 3 de 10

Una tarea que solo usa CPU llega en 4 ms, se ejecuta por primera vez en 9 ms y termina en 22 ms después de usar 10 ms de CPU. ¿Cuáles son sus tiempos de respuesta y espera total?
  1. Respuesta de 9 ms; espera de 12 ms.
  2. Respuesta de 5 ms; espera de 18 ms.
  3. Respuesta de 8 ms; espera de 5 ms.
  4. Respuesta de 5 ms; espera de 8 ms.
Mostrar respuestaOcultar respuesta
Respuesta: D
La respuesta es la demora hasta la primera ejecución: 9 menos 4 da 5 ms. El retorno es 22 menos 4, o 18 ms, por lo que la espera es 18 menos 10, o 8 ms. Usar la demora hasta la primera ejecución como espera total dejaría fuera los 3 ms que pasó en estado listo después del primer despacho.

Pregunta 4 de 10

Tres trabajos que solo usan CPU llegan a la vez: A necesita 18 ms, B 4 ms y C 8 ms. ¿Cuál es su tiempo de retorno promedio con SJF no expropiativo y coste de cambio nulo?
  1. 15,33 ms.
  2. 10,00 ms.
  3. 20,67 ms.
  4. 24,67 ms.
Mostrar respuestaOcultar respuesta
Respuesta: A
SJF ejecuta B, C y después A, lo que da tiempos de finalización de 4, 12 y 30 ms. Como todas las llegadas son en cero, su tiempo de retorno promedio es 46 dividido entre 3, o 15,33 ms. Calcular el promedio de las duraciones de las ráfagas da 10 ms, lo que deja fuera el tiempo que se pasa detrás de trabajos anteriores.

Pregunta 5 de 10

Los trabajos que solo usan CPU son A (llegada en 0 ms, demanda de 10 ms), B (2 ms, 4 ms) y C (3 ms, 2 ms). Con STCF, ¿cuál es el tiempo de retorno promedio? Ignora los costes de cambio.
  1. 7,00 ms.
  2. 9,33 ms.
  3. 8,00 ms.
  4. 8,67 ms.
Mostrar respuestaOcultar respuesta
Respuesta: C
A se ejecuta 0–2, B 2–3, C 3–5, B 5–8 y A 8–16. Los tiempos de retorno son 16, 6 y 2 ms, con un promedio de 8 ms. Dejar que B termine antes de considerar C omite la segunda expropiación: en 3 ms, B aún necesita 3 ms y C solo necesita 2 ms.

Pregunta 6 de 10

En 0 ms, la tarea D inicia una operación de dispositivo de 7 ms y se bloquea. La tarea E está lista y necesita 5 ms de CPU, sin entrada/salida. Si la CPU aprovecha el trabajo disponible y los costes de cambio son nulos, ¿cuándo termina E?
  1. En 7 ms.
  2. En 12 ms.
  3. En 2 ms.
  4. En 5 ms.
Mostrar respuestaOcultar respuesta
Respuesta: D
E puede usar la CPU de inmediato mientras continúa la operación de dispositivo de D, por lo que sus cinco milisegundos de servicio terminan en 5 ms. Esperar hasta que termine la operación de D daría 12 ms, pero D está bloqueada y no ocupa la CPU. El tiempo del dispositivo y el tiempo de CPU de otra tarea pueden solaparse.

Pregunta 7 de 10

La planificación por turnos usa un cuanto de 3 ms. A llega en 0 ms y necesita 7 ms, B en 1 ms y necesita 4 ms, y C en 3 ms y necesita 2 ms. Una llegada al final de un intervalo entra antes que el trabajo cuyo intervalo terminó. ¿Cuándo termina A? Ignora el coste de cambio.
  1. En 13 ms.
  2. En 10 ms.
  3. En 11 ms.
  4. En 12 ms.
Mostrar respuestaOcultar respuesta
Respuesta: A
Los turnos son A 0–3, B 3–6, C 6–8, A 8–11, B 11–12 y A 12–13. A necesita su último milisegundo después del último turno de B, por lo que termina en 13 ms. Colocar A antes que C, que llega al final del intervalo, cambia incorrectamente la cola después del primer intervalo.

Pregunta 8 de 10

Un ciclo de planificación repetitivo contiene 3,8 ms de trabajo útil de CPU seguidos de un cambio de 0,2 ms. ¿Qué fracción del tiempo transcurrido corresponde a la sobrecarga de cambio?
  1. 5,26 %.
  2. 5 %.
  3. 0,05 %.
  4. 95 %.
Mostrar respuestaOcultar respuesta
Respuesta: B
El ciclo completo dura 4 ms, de los cuales 0,2 ms corresponden al cambio, por lo que la fracción es 0,05, o el 5 %. Dividir solo entre los 3,8 ms de trabajo útil da aproximadamente el 5,26 %, pero esa es una razón respecto al trabajo útil, no la fracción solicitada del tiempo total transcurrido.

Pregunta 9 de 10

Los trabajos listos P, Q, R y S tienen las prioridades de manual 7, 2, 5 y 9. Los números menores indican mayor prioridad. ¿Cuál se ejecuta primero con planificación por prioridades?
  1. P.
  2. R.
  3. S.
  4. Q.
Mostrar respuestaOcultar respuesta
Respuesta: D
Q tiene el menor número de prioridad y, por tanto, la prioridad más alta en esta escala. La planificación por prioridades lo selecciona antes que P, R o S, independientemente de sus nombres. Elegir S por tener el número mayor aplica la dirección de Windows a una escala definida explícitamente al contrario.

Pregunta 10 de 10

Una tarea en ejecución inicia voluntariamente una lectura y se bloquea. Se selecciona otra tarea lista. ¿Requiere esta transferencia planificación expropiativa?
  1. Sí; todo cambio es una expropiación.
  2. No; el bloqueo libera la CPU.
  3. Sí; la entrada/salida es un evento del temporizador.
  4. No; la tarea bloqueada sigue ejecutándose.
Mostrar respuestaOcultar respuesta
Respuesta: B
Una tarea bloqueada no puede seguir ejecutándose, por lo que incluso un planificador no expropiativo puede elegir otro trabajo. La expropiación consiste específicamente en retirar la CPU a una tarea que sigue pudiendo ejecutarse. Llamar expropiación a todo cambio de contexto confunde el mecanismo de cambio con el motivo de la transferencia.
Set 2: Sigue las prioridades, las asignaciones y la realimentación10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Un hilo de alta prioridad espera un cerrojo que posee un hilo de baja prioridad, mientras un hilo de prioridad media sigue ejecutándose. ¿Cómo se llama este problema de planificación?
  1. Envejecimiento de prioridades.
  2. Alternancia por turnos.
  3. Inversión de prioridades.
  4. Desequilibrio de carga de CPU.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un trabajo listo comienza con prioridad 12, donde los números menores indican mayor prioridad. El envejecimiento mejora su prioridad en uno cada 15 ms de espera en estado listo. En 90 ms, ¿cuál es su prioridad respecto a un trabajo listo de prioridad 5?
  1. Prioridad 6; sigue siendo menor.
  2. Prioridad 5; ahora empatan.
  3. Prioridad 6; ahora es mayor.
  4. Prioridad 7; sigue siendo menor.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Un nivel de MLFQ tiene un cuanto de 4 ms y una asignación acumulada de 10 ms. Una tarea usa 4 ms, después 3 ms y luego se reanuda. ¿Cuánto servicio de CPU queda antes de que descienda de nivel?
  1. 4 ms.
  2. 3 ms.
  3. 6 ms.
  4. 7 ms.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Una MLFQ tiene Q2 por encima de Q1 y Q1 por encima de Q0, con cuantos de 4 ms y asignaciones de 4 ms en cada nivel. A llega en 0 ms y necesita 15 ms; B llega en 6 ms y necesita 3 ms. No hay elevaciones de prioridad ni costes de cambio. ¿Cuándo se ejecuta A por primera vez en Q0?
  1. En 8 ms.
  2. En 9 ms.
  3. En 12 ms.
  4. En 11 ms.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Una tarea se ejecuta durante 5 ms, se bloquea durante 1 ms y repite el proceso. Su asignación en el nivel superior es de 8 ms, con contabilización acumulada de CPU y sin elevaciones de prioridad. ¿Durante qué ráfaga de CPU desciende por primera vez?
  1. Durante su segunda ráfaga.
  2. Después de su primera ráfaga completa.
  3. Durante su tercera ráfaga.
  4. Conserva la prioridad máxima indefinidamente.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Un trabajo de MLFQ está en Q1 y ha usado 7 ms de su asignación de 12 ms. Se ejecuta durante 3 ms, se bloquea durante 5 ms y después vuelve a ejecutarse. No hay elevaciones de prioridad. ¿En qué instante, medido desde el inicio de estos eventos, desciende de nivel?
  1. En 5 ms.
  2. En 8 ms.
  3. En 13 ms.
  4. En 10 ms.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Un trabajo limitado por la CPU esperó en la cola inferior, pero ahora realiza ráfagas cortas después de recibir una entrada. ¿Qué mecanismo de MLFQ permite volver a aprender su nuevo comportamiento desde la cola superior?
  1. Un cuanto inferior más largo.
  2. Una asignación inferior mayor.
  3. Una elevación periódica de prioridad.
  4. Un reinicio en cada cesión temprana.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Tres trabajos de lotería que pueden ejecutarse tienen 40, 60 y 100 boletos. ¿Cuál es la probabilidad de que el segundo trabajo gane el siguiente sorteo?
  1. 20 %.
  2. 30 %.
  3. 40 %.
  4. 60 %.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Un usuario tiene 120 boletos globales y da a los trabajos locales L y M 1 y 3 boletos locales. Un segundo usuario tiene 80 boletos globales para un trabajo que puede ejecutarse. Todos los trabajos siguen pudiendo ejecutarse. Si el primer usuario duplica ambas asignaciones locales, ¿cuál es la proporción esperada de CPU de L en todo el sistema?
  1. 15 %.
  2. 25 %.
  3. 30 %.
  4. 7,5 %.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Dos trabajos de planificación por pasos tienen valores de avance iguales. El trabajo A tiene 20 boletos y el trabajo B tiene 40, con una constante de pasos de 800. Después de que A reciba un intervalo, ¿cuánto aumenta su valor de avance?
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 3: Sigue la contabilización de boletos y tiempo virtual10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Los trabajos de lotería A, B y C tienen 35, 25 y 40 boletos en ese orden. Los boletos se numeran a partir de cero. ¿Qué trabajo gana si sale el número 60?
  1. A.
  2. B.
  3. B y C empatan.
  4. C.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un trabajo de lotería posee el 20 % de todos los boletos de los trabajos que pueden ejecutarse y gana 2 de los primeros 20 intervalos iguales. ¿Qué se puede concluir sobre este resultado?
  1. Su proporción de boletos debe ser ahora del 10 %.
  2. Puede ocurrir con un sorteo justo.
  3. Sus dos siguientes victorias están garantizadas.
  4. La lotería debe estar mal implementada.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

El usuario X tiene 180 boletos globales, repartidos localmente como A:2 y B:1. El usuario Y tiene 120 boletos globales para C. Los tres trabajos pueden ejecutarse. X cambia solo el número local de A de 2 a 5. ¿Cuál es la nueva proporción esperada de B en el sistema?
  1. 20 %.
  2. 16,67 %.
  3. 10 %.
  4. 8,33 %.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Los trabajos A, B y C de planificación por pasos tienen 30, 60 y 20 boletos, con constante 600 y todos los valores de avance inicialmente en cero. Resuelve los empates alfabéticamente. ¿Cuál es la secuencia de selección de los primeros seis trabajos?
  1. A, B, C, B, A, B.
  2. A, B, C, A, B, C.
  3. A, B, C, B, C, A.
  4. A, B, C, B, B, A.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Los valores de avance existentes de una planificación por pasos son 420, 440 y 460. Una tarea nueva se inicializa con el valor de avance mínimo actual. ¿Cuál es su valor de avance inicial?
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Los trabajos A y B de planificación por pasos tienen pasos de 15 y 40 y ambos comienzan con valor de avance cero. Resuelve los empates alfabéticamente. Cuando sus valores de avance vuelven a ser iguales por primera vez, ¿cuántos intervalos ha recibido A?
  1. 3 intervalos.
  2. 8 intervalos.
  3. 5 intervalos.
  4. 11 intervalos.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Un modelo clásico de CFS tiene tareas con pesos de 1024 y 512 y un periodo objetivo de 30 ms, sin que esté activa ninguna restricción de granularidad mínima. ¿Qué intervalo nominal recibe la tarea de menor peso?
  1. 5 ms.
  2. 15 ms.
  3. 20 ms.
  4. 10 ms.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Una tarea de peso 256 se ejecuta durante 2 ms reales en un modelo clásico de CFS. ¿Cuánto tiempo de ejecución virtual gana?
  1. 0,5 ms virtuales.
  2. 2 ms virtuales.
  3. 8 ms virtuales.
  4. 4 ms virtuales.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

En una decisión de EEVDF, A tiene un déficit de servicio de −1 y un plazo virtual de 6, B tiene un déficit de 2 y un plazo de 12, y C tiene un déficit de 0 y un plazo de 9. ¿Qué tarea se ejecuta a continuación?
  1. A.
  2. C.
  3. B.
  4. A y C empatan.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Dos tareas de la clase equitativa con igual peso, que siempre pueden ejecutarse, compiten en una CPU. Una solicita intervalos EEVDF más cortos. ¿Qué debería cambiar sin modificar su peso?
  1. Su proporción se duplica; su latencia sigue igual.
  2. Su proporción disminuye; sus plazos siguen iguales.
  3. Su latencia sigue igual; su proporción se vuelve aleatoria.
  4. Su latencia puede mejorar; su proporción sigue igual.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 4: Distribuye el trabajo e interpreta los controles de Linux10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Un programa tiene un hilo que puede ejecutarse y ningún proceso auxiliar. ¿Cuántas CPU lógicas pueden ejecutar ese hilo en el mismo instante?
  1. Una.
  2. Dos.
  3. Todas las CPU de su máscara de afinidad.
  4. Todas las CPU que comparten su caché.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Dos CPU leen cada una la longitud de una cola compartida, modifican una entrada y después escriben una longitud actualizada. Sus cachés son coherentes. ¿Qué más se necesita para proteger la actualización?
  1. Una invalidación de caché antes de cada lectura de la cola.
  2. Un cuanto de tiempo más largo para cada tarea.
  3. Sincronización que abarque la operación de cola.
  4. Solo una copia privada de la longitud de la cola.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Dos CPU idénticas atienden trabajos iguales A, B y C limitados por la CPU. Durante 12 ms, A se ejecuta solo mientras B y C comparten la otra CPU a partes iguales. Durante los siguientes 6 ms, B se ejecuta solo mientras A y C comparten; durante los últimos 6 ms, C se ejecuta solo mientras A y B comparten. Sin contar costes, ¿cuál es la diferencia entre el mayor y el menor servicio de CPU por trabajo después de 24 ms?
  1. 0 ms.
  2. 6 ms.
  3. 12 ms.
  4. 3 ms.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Tres trabajos que solo usan CPU están listos en 0 ms: A necesita 8 ms, B 2 ms y C 6 ms. A y B solo pueden ejecutarse en la CPU 1; C puede ejecutarse en la CPU 0 o en la 1. Ambas CPU son idénticas y aprovechan el trabajo disponible, con SJF local y migración sin coste. ¿Cuál es el menor tiempo de retorno promedio que se puede alcanzar?
  1. 5,33 ms.
  2. 6 ms.
  3. 8 ms.
  4. 8,67 ms.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Un programa se inicia desde un intérprete de comandos con nice 0 mediante nice -n 8 ./worker. Con planificación normal equitativa y otras tareas ocupadas, ¿qué cambia el comando?
  1. El proceso trabajador pasa a ser más favorecido.
  2. El proceso trabajador pasa a ser menos favorecido.
  3. El proceso trabajador pasa a la prioridad 8 de tiempo real.
  4. El proceso trabajador queda limitado al 8 % de una CPU.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Dos cgroups del mismo nivel comparten una CPU. A tiene peso 300 y una cuota de 40 ms por cada 100 ms; B tiene peso 100 y ninguna cuota. Ambos están siempre ocupados. Ignora la sobrecarga. ¿Qué asignación promedio es viable durante periodos completos de cuota?
  1. A 75 %; B 25 %.
  2. A 40 %; B 25 %.
  3. A 40 %; B 60 %.
  4. A 30 %; B 70 %.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Un cgroup tiene cpu.max establecido en «60000 100000». Al comienzo de un nuevo periodo, dos de sus hilos se ejecutan simultáneamente en dos CPU. ¿Después de cuánto tiempo transcurrido de ejecución agotan el presupuesto?
  1. 30 ms.
  2. 60 ms.
  3. 100 ms.
  4. 120 ms.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Dos tareas de tiempo real de Linux están listas y pueden ejecutarse en la misma CPU: una usa SCHED_FIFO con prioridad 35 y la otra SCHED_RR con prioridad 45. ¿Cuál tiene mayor preferencia?
  1. La tarea FIFO con prioridad 35.
  2. Ninguna; comparten la CPU.
  3. La tarea de menor valor nice.
  4. La tarea RR con prioridad 45.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Un hilo de Windows tiene prioridad base 10 y su prioridad dinámica se eleva a 14. Después usa tres cuantos completos sin más elevaciones. ¿Cuál es su prioridad dinámica?
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

Una cola estable de trabajos listos recibe 250 trabajos/s y tiene un promedio de 5 trabajos en espera. Cada trabajo usa 8 ms de CPU después de salir de la cola, sin ninguna otra demora. ¿Cuál es su tiempo promedio desde la llegada hasta la finalización?
  1. 28 ms.
  2. 20 ms.
  3. 8 ms.
  4. 12 ms.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Set 5: Compara el comportamiento del sistema y evalúa las pruebas10 Preguntas de Práctica

Guarda esta unidad para ver todas las respuestas y practicar cada set.

Pregunta 1 de 10

Un proceso de Windows tiene la clase de prioridad Normal y un hilo con el nivel relativo Highest. ¿Qué prioridad base tiene esa combinación?
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 2 de 10

Un hilo de Windows tiene prioridad base 18 y termina una espera de teclado. ¿Eleva su prioridad el mecanismo normal de elevación dinámica?
  1. Sí; terminar una espera de teclado siempre da una elevación.
  2. No; su prioridad base está en el intervalo de tiempo real.
  3. No; solo los hilos limitados por la CPU reciben elevaciones.
  4. Sí; su prioridad base pasa permanentemente a 31.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 3 de 10

Los trabajos A y B, que solo usan CPU, llegan a la vez y necesitan 6 ms y 2 ms. El desempate alfabético coloca A primero en FIFO y RR. Compara FIFO con RR de 2 ms, sin contar costes de cambio. ¿Cómo cambia RR los tiempos promedio de respuesta y retorno?
  1. La respuesta mejora 2 ms; el retorno mejora 1 ms.
  2. La respuesta mejora 1 ms; el retorno empeora 2 ms.
  3. La respuesta mejora 2 ms; el retorno empeora 1 ms.
  4. La respuesta empeora 2 ms; el retorno mejora 1 ms.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 4 de 10

Un sistema estable tiene un promedio de 6 trabajos en el sistema y termina 15 trabajos/s, la misma tasa a la que llegan. ¿Cuál es el tiempo promedio de permanencia?
  1. 2,50 s.
  2. 0,90 s.
  3. 0,10 s.
  4. 0,40 s.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 5 de 10

Dos diseños de RR usan cuantos útiles de 0,9 ms y 4,9 ms. A cada cuanto completo le sigue un cambio de 0,1 ms. La ejecución útil termina 2 registros por milisegundo de CPU. ¿Qué diseño alcanza al menos 1900 registros/s y qué tasa de procesamiento consigue? Supón que los cuantos completos se repiten continuamente.
  1. El diseño de 0,9 ms; 2000 registros/s.
  2. Ambos diseños; 2000 registros/s cada uno.
  3. El diseño de 4,9 ms; 1900 registros/s.
  4. El diseño de 4,9 ms; 1960 registros/s.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 6 de 10

Una MLFQ usa dos colas. El cuanto y la asignación superiores son de 3 ms; el cuanto inferior es de 6 ms. En 0 ms, A y B ascienden a la cola superior en ese orden, con 10 ms y 4 ms restantes. No hay llegadas, más elevaciones ni costes. ¿Cuándo termina B?
  1. En 7 ms.
  2. En 10 ms.
  3. En 13 ms.
  4. En 14 ms.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 7 de 10

Una migración tarda 2 ms en recuperar el contenido útil de la caché. Permanecer en la cola actual implica esperar 9 ms; moverse a una CPU inactiva elegible no tiene ninguna otra demora. ¿Qué ventaja directa de espera y recuperación ofrece la migración?
  1. 7 ms.
  2. 11 ms.
  3. 9 ms.
  4. 2 ms.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 8 de 10

Dos tareas equitativas que siempre pueden ejecutarse tienen pesos de 2048 y 1024 en una CPU. Cada una recibe servicio hasta que ambas han ganado 12 ms virtuales desde valores iniciales iguales. ¿Cuánto servicio real de CPU ha recibido la tarea de mayor peso?
  1. 6 ms.
  2. 24 ms.
  3. 12 ms.
  4. 36 ms.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 9 de 10

Un planificador BPF activo de sched_ext detiene el avance de una tarea que puede ejecutarse y el núcleo detecta el fallo. ¿Qué recuperación proporciona la interfaz?
  1. Mantenerlo activo y aumentar todos los pesos nice.
  2. Mover todas las tareas afectadas a SCHED_FIFO.
  3. Interrumpirlo y restaurar la planificación equitativa integrada.
  4. Bloquear sus tareas hasta que se vuelva a cargar la política BPF.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

Pregunta 10 de 10

La política X da una respuesta promedio menor que la política Y, pero un trabajo largo listo nunca se ejecuta con X mientras sigue llegando un flujo de trabajos cortos. ¿Qué propiedad adicional debe investigarse?
  1. La resistencia a la inanición.
  2. La precisión del tiempo de llegada.
  3. La igualdad de tamaños de los programas.
  4. La tasa pico de procesamiento del dispositivo.
Mostrar respuestaOcultar respuesta

Guarda esta unidad para ver esta respuesta.

¿Te atascas con una pregunta tuya? Ayuda con Tareas

Términos Clave

87 Términos Clave, cada uno con su definición

A

Acceso no uniforme a memoria (NUMA)
NUMA es una arquitectura de memoria en la que la latencia de acceso depende de si la memoria es local al procesador que ejecuta la tarea o está en otro nodo.
La ubicación en NUMA importa cuando un hilo migrado accede repetidamente a memoria de su zócalo anterior.
Afinidad de caché
La afinidad de caché es la preferencia por ejecutar una tarea cerca de la CPU que usó recientemente para que pueda reutilizar cachés con datos útiles y traducciones.
La afinidad de caché puede favorecer el núcleo 2 después de una breve expropiación de un hilo que estaba ordenando datos allí.
Afinidad de CPU
La afinidad de CPU restringe o favorece los procesadores en los que se ejecuta una tarea; una máscara explícita especifica qué CPU están permitidas.
La afinidad de CPU restringida al núcleo 0 explica por qué la tarea lista no puede usar el núcleo 1 inactivo.
Amortización
La amortización reparte un coste fijo entre suficiente trabajo útil para que ese coste se convierta en una fracción menor del tiempo total.
Los turnos de servicio más largos mejoran la amortización de los costes de rellenado de caché después de un cambio.
Asignación de tiempo de CPU por nivel
Una asignación es el servicio total de CPU que una tarea puede consumir en un nivel de MLFQ antes de descender de prioridad, posiblemente a lo largo de varios turnos.
La asignación de 15 ms permite tres cuantos completos de 5 ms en el mismo nivel de prioridad.

Á

Árbol rojinegro
Un árbol rojinegro es un árbol de búsqueda equilibrado; CFS clásico ordena las tareas en cola que pueden ejecutarse por tiempo de ejecución virtual dentro de una estructura de este tipo.
El árbol rojinegro permite actualizaciones logarítmicas, mientras que un puntero almacenado proporciona rápidamente su mínimo.

C

Calidad de servicio (QoS)
La calidad de servicio es una clasificación de la urgencia del trabajo que macOS usa para orientar las decisiones de servicio, incluida la ubicación entre tipos de núcleos.
La calidad de servicio de segundo plano indica una urgencia diferente de la del trabajo interactivo para el usuario en Apple silicon.
Clase de prioridad
Una clase de prioridad de Windows es una configuración de proceso que se combina con el nivel relativo de cada hilo para determinar su prioridad base.
Cambiar la clase de prioridad del proceso cambia la correspondencia entre los niveles de sus hilos y las prioridades base.
Coherencia de caché
La coherencia de caché mantiene consistentes entre núcleos las copias almacenadas en caché de ubicaciones individuales de memoria, sin hacer atómicas las operaciones de varios pasos.
La coherencia de caché no puede proteger una actualización de varias instrucciones de una cola compartida frente a intercalados perjudiciales.
Colas multinivel con realimentación (MLFQ)
Una MLFQ es un planificador con varias colas de prioridad que cambia la cola de un trabajo según el consumo de CPU observado y la realimentación.
La MLFQ inicia al recién llegado en la cola superior y lo hace descender después de un uso continuado de CPU.
Contabilización acumulada del uso de CPU
La contabilización acumulada suma el uso de CPU de una tarea entre turnos en un nivel de prioridad para que bloquearse o ceder la CPU no pueda borrar la asignación consumida.
La contabilización acumulada hace descender a la tarea aunque ninguna de sus ráfagas individuales dure un cuanto completo.
cpu.max
La configuración cpu.max limita el servicio agregado de CPU de un grupo de cgroup v2 dentro de cada periodo de ancho de banda configurado.
Una cuota cpu.max puede limitar la ejecución de un grupo después de que sus trabajadores consuman conjuntamente el presupuesto del periodo.
cpu.weight
La configuración cpu.weight asigna a un grupo de cgroup v2 un peso relativo de servicio equitativo cuando compite con grupos activos del mismo nivel.
Un servicio con cpu.weight 300 compite por aproximadamente el triple de servicio que un grupo activo del mismo nivel con peso 100.
Cuanto de tiempo
Un cuanto es el servicio máximo de CPU permitido en un turno de planificación por turnos antes de expropiar la CPU a una tarea lista que no ha terminado.
Un cuanto de 4 ms permite que una tarea con 10 ms de trabajo continúe durante varios turnos.

D

Déficit de servicio
El déficit de servicio es la diferencia entre el servicio de CPU al que tiene derecho una tarea y el servicio que ha recibido; un déficit positivo indica que se le debe servicio.
Una tarea con déficit de servicio negativo ya ha recibido servicio adicional y no es elegible con EEVDF.
Descenso de prioridad
El descenso de prioridad es el paso a un nivel de MLFQ de menor prioridad después de que una tarea consume la asignación de servicio de su nivel actual.
El descenso de prioridad deja el cálculo largo detrás del trabajo que acaba de pasar al estado listo en una cola superior.
Desequilibrio de carga
El desequilibrio de carga es una distribución desigual entre CPU de la demanda de trabajo que puede ejecutarse, lo que puede desperdiciar capacidad o dar un servicio desigual a trabajos comparables.
El desequilibrio de carga aparece cuando una tarea en solitario obtiene una CPU completa mientras dos tareas equivalentes comparten otra.
Despachador
El despachador es el mecanismo que lleva a cabo una elección de planificación guardando y restaurando el estado de las tareas y reanudando la ejecución.
El despachador restaura los registros del hilo elegido antes de volver a su código de usuario.

E

Efecto convoy
El efecto convoy es la demora que sufren las tareas cortas que esperan en cola detrás de una ráfaga de CPU larga, lo que produce malos tiempos de finalización promedio.
El efecto convoy se observa cuando varios trabajos diminutos terminan solo después del primer trabajo grande.
Elevación de prioridad
Una elevación de prioridad aumenta temporalmente la prioridad de planificación; una elevación de toda la MLFQ devuelve los trabajos a la cola superior para que pueda volver a aprenderse su comportamiento.
La elevación de prioridad da al antiguo trabajo de la cola inferior una nueva oportunidad de ejecutarse en la cola superior.
Envejecimiento
El envejecimiento es una mejora gradual de la prioridad de un trabajo en espera, destinada a permitir que el trabajo que lleva mucho tiempo esperando compita y evitar la inanición.
El envejecimiento eleva la prioridad de un trabajo por lotes que lleva mucho tiempo esperando hacia la de los trabajos en primer plano que siguen llegando.
Estado bloqueado
El estado bloqueado es la condición de una tarea que no puede continuar hasta que ocurra un evento, como la finalización de una solicitud de entrada/salida.
El editor entra en estado bloqueado mientras espera el siguiente evento de teclado.
Estado listo (preparado)
El estado listo es la condición de una tarea que puede ejecutarse, pero espera a ser seleccionada para una CPU disponible.
Un compilador al que se le expropia la CPU vuelve al estado listo mientras otra tarea la usa.
Expropiación (desalojo)
La expropiación consiste en retirar la CPU a una tarea en ejecución que podría continuar, conservando su estado para reanudarla más tarde.
Una expropiación provocada por el temporizador permite que otro hilo listo se ejecute antes de que termine el cálculo.

G

Granularidad mínima
La granularidad mínima es la escala inferior del turno de servicio en CFS clásico que evita que muchas tareas que pueden ejecutarse creen intervalos excesivamente cortos.
La granularidad mínima puede hacer que el periodo total de planificación supere su objetivo cuando hay mucha competencia.
Grupo de control (cgroup)
Un grupo de control es una agrupación de procesos o hilos de Linux a la que los controladores aplican políticas de asignación y consumo de recursos.
Un grupo de control permite que el presupuesto de CPU de un servicio abarque varios procesos trabajadores que cooperan.

H

Herencia de prioridades
La herencia de prioridades da temporalmente al titular de un cerrojo la prioridad de una tarea de mayor prioridad que espera ese cerrojo.
La herencia de prioridades permite que el titular de baja prioridad se ejecute el tiempo suficiente para liberar el cerrojo necesario.

I

Inanición
La inanición es el aplazamiento indefinido de un trabajo listo porque las decisiones de planificación dan repetidamente la CPU a otros trabajos.
Un flujo constante de trabajos cortos puede causar inanición de un trabajo largo con SJF.
Inflación de boletos
La inflación de boletos aumenta el número de boletos de un trabajo para solicitar más servicio y requiere confianza o controles para evitar una reducción injusta de las proporciones ajenas.
La inflación de boletos sin restricciones permite que una tarea acaparadora reduzca la probabilidad de ganar de todos los demás trabajos que pueden ejecutarse.
Interrupción de dispositivo
Una interrupción de dispositivo señala un evento, como la finalización de una operación de entrada/salida, y permite al núcleo devolver el trabajo en espera al estado listo.
Una interrupción de dispositivo que indica que ha terminado la lectura de un editor cambia ese editor de bloqueado a listo.
Inversión de prioridades
La inversión de prioridades ocurre cuando un trabajo de alta prioridad espera una dependencia de menor prioridad que la ejecución de prioridad media puede retrasar.
La inversión de prioridades mantiene bloqueada la tarea urgente mientras un trabajo de prioridad media expropia la CPU al titular del cerrojo.

L

Latencia de despacho
La latencia de despacho es la demora que implica transferir la ejecución de CPU de una tarea a la tarea elegida por el planificador.
Un cuanto más corto hace que la latencia de despacho represente una fracción mayor de cada ciclo de servicio.
Latencia de los percentiles altos
La latencia de los percentiles altos describe las demoras cercanas al extremo más lento de una distribución de tiempos de respuesta y suele expresarse mediante un percentil alto.
La latencia de los percentiles altos del servicio empeora cuando un pequeño número de solicitudes espera mucho más que el promedio.
Ley de Little
La ley de Little relaciona la población promedio, la tasa de llegada y el tiempo de permanencia en un sistema estable en régimen estacionario, con un ámbito de medición coherente.
La ley de Little da una población promedio de cuatro cuando llegan ocho trabajos por segundo y permanecen 0,5 s.
Localidad espacial
La localidad espacial es la tendencia de un programa a acceder a datos cercanos a ubicaciones a las que accedió recientemente, como elementos vecinos de un arreglo.
La localidad espacial ayuda a que un recorrido secuencial de un arreglo se beneficie de recuperar una línea de caché completa.
Localidad temporal
La localidad temporal es la tendencia de un programa a reutilizar datos a los que ha accedido recientemente, lo que hace útil el contenido de la caché para ejecuciones posteriores.
La localidad temporal ayuda al bucle a reutilizar las mismas entradas de la tabla desde una caché con datos útiles.

M

Manipulación del planificador
La manipulación del planificador es la alteración deliberada del comportamiento observado para obtener ventajas de servicio que la política no pretendía conceder.
La manipulación del planificador tiene éxito cuando una regla de cesión temprana olvida el tiempo de CPU usado antes de cada operación de entrada/salida.
Migración
La migración mueve la ejecución de una tarea entre CPU, a menudo para corregir un desequilibrio a costa de la localidad de caché y memoria.
La migración a una CPU compatible e inactiva puede ahorrar más tiempo de espera del que cuesta rellenar las cachés.
Modelado determinista
El modelado determinista evalúa políticas de planificación con una carga de trabajo fija cuyos instantes de llegada, demandas y costes modelados están especificados.
El modelado determinista permite examinar cada elección de planificación, pero establece resultados solo para esa traza.
Modelo de colas
Un modelo de colas representa las llegadas y el servicio mediante distribuciones de probabilidad para estudiar poblaciones promedio, demoras y capacidad.
Un modelo de colas puede estimar la espera promedio con una distribución elegida de duraciones de ráfaga.
Multihilo simultáneo (SMT)
SMT permite que varias CPU lógicas compartan los recursos de ejecución de un núcleo físico, proporcionando secuencias de instrucciones paralelas con capacidad compartida.
Dos hilos limitados por la CPU en CPU lógicas SMT del mismo núcleo compiten más directamente que dos hilos en núcleos separados.
Multiprocesamiento simétrico (SMP)
SMP es un diseño multiprocesador en el que las CPU pueden ejecutar código del sistema operativo y tomar decisiones de planificación por sí mismas.
Un núcleo SMP coordina las actualizaciones simultáneas de la cola de trabajos listos realizadas por varias CPU.

P

Paso
Un paso es una constante común dividida entre el número de boletos de una tarea y se suma a su valor de avance después de que la tarea recibe un intervalo de servicio.
Un paso menor permite que el valor de avance del trabajo favorecido aumente más lentamente después de cada turno seleccionado.
Periodo entre elevaciones de prioridad
El periodo entre elevaciones de prioridad es el intervalo transcurrido entre restablecimientos de prioridad de toda la MLFQ, que equilibra nuevas oportunidades y una separación útil de prioridades.
Un periodo muy corto entre elevaciones de prioridad devuelve repetidamente los cálculos largos a las colas interactivas.
Planificación multiprocesador con múltiples colas (MQMS)
MQMS es una planificación multiprocesador con colas locales de trabajos listos por CPU, que permite una selección local escalable, pero requiere equilibrio de carga.
MQMS puede dejar una CPU inactiva mientras dos tareas listas siguen asignadas a otra CPU.
Planificación multiprocesador con una sola cola (SQMS)
SQMS es una planificación multiprocesador mediante una cola compartida de trabajos listos, que facilita la distribución del trabajo, pero crea costes de sincronización compartida.
SQMS puede dar a una CPU inactiva elegible el siguiente trabajo en espera sin buscar en colas separadas.
Planificación por lotería
La planificación por lotería elige cada siguiente intervalo de CPU mediante un sorteo aleatorio de boletos y da a las tareas que pueden ejecutarse probabilidades de ganar proporcionales a sus boletos.
La planificación por lotería puede dar a un trabajo con 60 boletos menos de seis victorias en sus primeros diez sorteos.
Planificación por pasos
La planificación por pasos es un reparto proporcional determinista que ejecuta la tarea con el menor valor de avance y aumenta ese valor en un paso inversamente proporcional a sus boletos.
La planificación por pasos mantiene el servicio en periodos cortos cerca de las proporciones de boletos sin sorteos aleatorios de lotería.
Planificación por prioridades
La planificación por prioridades selecciona la tarea lista de mayor prioridad y usa otra regla, como FIFO o la planificación por turnos, para resolver los empates.
La planificación por prioridades ejecuta una tarea urgente que acaba de pasar al estado listo antes que el trabajo ordinario en un sistema expropiativo.
Planificación por turnos
La planificación por turnos es una política que alterna las tareas listas mediante una cola FIFO y da a cada una como máximo un cuanto de tiempo antes de volver a ponerla en cola.
Con la planificación por turnos, un generador de informes que todavía tiene trabajo recibe otro turno después de que se ejecuten los demás trabajos listos.
Planificador a largo plazo
Un planificador a largo plazo controla qué trabajos enviados entran en un sistema e influye así en su grado de multiprogramación.
El planificador a largo plazo de un clúster admite otro trabajo por lotes cuando hay capacidad disponible.
Planificador a medio plazo
Un planificador a medio plazo suspende temporalmente procesos completos sacándolos de la memoria mediante intercambio y restaurándolos después.
Un planificador a medio plazo puede reducir la presión sobre la memoria suspendiendo temporalmente un proceso.
Planificador completamente equitativo (CFS)
CFS es el planificador equitativo clásico de Linux, introducido en la versión 2.6.23, cuya selección de tareas favorece el menor tiempo de ejecución virtual ponderado.
CFS contabiliza más tiempo de ejecución virtual a una tarea de menor peso por la misma cantidad de servicio real de CPU.
Planificador de CPU
Un planificador de CPU es el componente del sistema operativo que elige qué proceso o hilo listo debe ejecutarse a continuación en una CPU.
El planificador de CPU selecciona el editor después de que una lectura terminada deje lista su siguiente ráfaga.
Plazo virtual
Un plazo virtual es un punto final ponderado para ordenar el servicio que EEVDF usa para comparar solicitudes de tareas elegibles para recibir servicio.
Un plazo virtual más temprano ayuda a que una solicitud corta elegible se ejecute antes sin ofrecer una garantía según el reloj real.
Primero el plazo virtual más temprano entre las tareas elegibles (EEVDF)
EEVDF es una selección de la clase equitativa que elige el plazo virtual más temprano entre las tareas elegibles porque no han recibido más servicio del que les corresponde.
EEVDF puede favorecer una solicitud corta elegible sin aumentar la proporción ponderada de la tarea a largo plazo.
Primero el trabajo con menor tiempo restante (STCF, también SRTF)
STCF es una política expropiativa que ejecuta el trabajo listo con la menor demanda restante de CPU; también se llama primero el trabajo con menor tiempo restante.
STCF expropia la CPU a un trabajo al que le quedan 14 ms cuando uno que acaba de pasar al estado listo solo necesita 2 ms.
Primero el trabajo más corto (SJF)
Primero el trabajo más corto es una política no expropiativa que selecciona la tarea lista con la siguiente ráfaga de CPU conocida o prevista más corta.
Primero el trabajo más corto selecciona una ráfaga lista de 3 ms antes que una ráfaga lista de 11 ms.
Primero en entrar, primero en salir (FIFO)
FIFO es una política no expropiativa que selecciona las tareas listas por orden de llegada y permite que una ráfaga de CPU en ejecución continúe hasta que termine o ceda la CPU.
Con FIFO, una ráfaga corta recién llegada espera detrás de la ráfaga larga que ya se está ejecutando.
Prioridad base
La prioridad base de un hilo de Windows es su prioridad de referencia, obtenida al combinar la clase de prioridad de su proceso con su nivel relativo de hilo.
La clase de proceso Normal y el nivel de hilo Highest dan una prioridad base de Windows de 10.
Prioridad dinámica
La prioridad dinámica de un hilo de Windows es su prioridad actual de planificación, que puede elevarse temporalmente por encima de la base en el intervalo variable.
La prioridad dinámica del hilo baja hacia su prioridad base después de cada cuanto completo con prioridad elevada.
Promedio exponencial
El promedio exponencial predice la siguiente ráfaga de CPU combinando una fracción fija de la última medición con la estimación anterior.
Con el promedio exponencial, un mayor peso de la medición hace que las predicciones reaccionen más rápido a las nuevas ráfagas.

R

Ráfaga de CPU
Una ráfaga de CPU es un periodo de cálculo entre esperas o hasta la finalización, que se usa para describir cómo una tarea demanda servicio de CPU.
La ráfaga de CPU de un editor de texto después de una entrada puede ser mucho más corta que la de un codificador de video.
Reparto proporcional
Una proporción de reparto es una fracción objetivo del servicio de CPU disputado asignada a una tarea o grupo mediante un derecho relativo.
El servicio recibe una proporción mayor cuando su peso aumenta respecto al de otro grupo activo del mismo nivel.
Robo de trabajo
El robo de trabajo es un método de equilibrio en el que una CPU con poca carga toma trabajo que puede ejecutarse de la cola de otra CPU más ocupada.
El robo de trabajo mueve un cálculo en cola al núcleo inactivo después de comprobar si puede ejecutarse en esa CPU.

S

sched_ext
La clase sched_ext permite que un núcleo Linux configurado para ello ejecute un planificador BPF cargado dinámicamente y recupere la planificación integrada si se produce un fallo.
Un error en la política sched_ext activa hace que el núcleo restaure la planificación equitativa ordinaria.
SCHED_FIFO
SCHED_FIFO es una política de tiempo real de Linux sin cuanto entre tareas de igual prioridad; las tareas continúan hasta que se bloquean, ceden la CPU o una tarea de mayor prioridad se la expropia.
Una tarea SCHED_FIFO con prioridad 40 puede ejecutarse antes que el trabajo normal mientras pueda ejecutarse.
SCHED_RR
SCHED_RR es una planificación de tiempo real de Linux que añade alternancia por cuantos entre tareas listas que comparten la misma prioridad estática.
SCHED_RR hace que dos tareas de prioridad 50 se alternen, mientras que una de prioridad 60 puede expropiar la CPU a cualquiera de ellas.
Simulación
La simulación evalúa un planificador ejecutando un modelo con cargas de trabajo sintéticas o eventos registrados y midiendo el comportamiento resultante.
La simulación puede reproducir la misma traza de llegadas y bloqueos con dos políticas de planificación.
Sistema de monedas de boletos
El sistema de monedas de boletos divide el derecho global fijo de un usuario entre trabajos locales convirtiendo las fracciones de boletos locales en boletos globales.
El sistema de monedas de boletos permite que un usuario divida una asignación fija de 80 boletos entre tres trabajos locales.
Sobrecarga de cambio de contexto
La sobrecarga de cambio de contexto es el tiempo de CPU dedicado a despachar entre tareas y recuperar el estado útil de ejecución en lugar de hacer avanzar el trabajo de las aplicaciones.
Un cuanto diminuto aumenta la sobrecarga de cambio de contexto porque las ráfagas útiles quedan separadas por transferencias frecuentes.
Solapamiento de la entrada/salida
El solapamiento de la entrada/salida ocurre cuando la CPU ejecuta una tarea mientras sigue en curso una operación de dispositivo solicitada por otra.
El solapamiento de la entrada/salida permite que el compilador avance durante la lectura de disco del editor.

T

Tasa de procesamiento
La tasa de procesamiento es el número de trabajos terminados por unidad de tiempo transcurrido durante un intervalo de observación especificado.
Una prueba que compara dos políticas de planificación informa la tasa de procesamiento en trabajos por segundo durante el mismo intervalo para cada política.
Tiempo de ejecución virtual
El tiempo de ejecución virtual es el servicio de CPU ajustado según el peso de la tarea, de modo que las tareas de mayor peso acumulan progreso virtual más lentamente.
La tarea de mayor peso gana menos tiempo de ejecución virtual por milisegundo y sigue compitiendo por más servicio.
Tiempo de espera
El tiempo de espera es la suma de los intervalos en los que una tarea está lista pero no se ejecuta, excluidos su servicio de CPU y las esperas en estado bloqueado.
El tiempo de espera de la tarea incluye tanto su demora inicial en la cola como la espera después de una expropiación.
Tiempo de respuesta
El tiempo de respuesta en una traza de planificación es el intervalo desde la llegada de un trabajo hasta su primera ejecución en la CPU, antes de cualquier espera posterior.
Un editor puede tener un tiempo de respuesta corto aunque su operación completa termine mucho más tarde.
Tiempo de retorno
El tiempo de retorno es el tiempo transcurrido desde la llegada de un trabajo hasta su finalización, incluidos el servicio, las esperas en estado listo y el tiempo bloqueado.
Un trabajo por lotes que usa solo 7 ms de servicio de CPU pero termina 18 ms después de llegar tiene un tiempo de retorno de 18 ms.
Tiempo restante
El tiempo restante es el servicio de CPU que aún necesita un trabajo o una ráfaga después de restar el servicio que ya ha recibido.
El planificador compara el tiempo restante del trabajo en ejecución con la ráfaga completa del recién llegado.
Trabajo interactivo
Un trabajo interactivo responde con frecuencia a entradas u otros eventos mediante ráfagas cortas de CPU separadas por periodos de espera.
Un trabajo interactivo puede pasar la mayor parte del tiempo transcurrido bloqueado y, aun así, necesitar servicio rápido después de cada entrada.
Trabajo limitado por la CPU
Un trabajo limitado por la CPU necesita largos periodos de cálculo, con relativamente pocas esperas de entrada o dispositivos entre ráfagas de CPU.
Un trabajo limitado por la CPU, como la codificación de video, puede usar cada turno disponible durante un periodo largo.
Trabajo limitado por la entrada/salida
Un trabajo limitado por la entrada/salida tiene ráfagas cortas y frecuentes de CPU separadas por esperas de dispositivos o entradas, y suele necesitar servicio rápido cuando pasa al estado listo.
Un trabajo limitado por la entrada/salida, como un editor, puede ejecutarse brevemente después de cada pulsación y después volver a bloquearse.
Transferencia de boletos
La transferencia de boletos es el préstamo temporal de los boletos de un trabajo a otro, a menudo a un servidor que realiza la solicitud del primero.
La transferencia de boletos permite que el servidor que realiza la solicitud del cliente compita usando el derecho del cliente.
Traza de carga de trabajo
Una traza de carga de trabajo es una secuencia registrada de eventos, como llegadas, ráfagas y esperas, que puede utilizarse en un experimento de planificación.
Una traza de carga de trabajo de uso interactivo puede revelar demoras ausentes en una prueba por lotes que solo usa CPU.

U

ULE
ULE es el planificador de FreeBSD, que usa colas de ejecución por CPU y el comportamiento observado de suspensión y ejecución para ayudar a identificar hilos interactivos.
ULE combina la planificación local de CPU con realimentación sobre la frecuencia con la que se suspende un hilo.
Utilización de la CPU
La utilización de la CPU es la fracción de un intervalo de observación durante la cual una CPU está ocupada, lo que puede incluir la sobrecarga del núcleo.
Una CPU con una larga cola de trabajos listos alcanza una utilización de la CPU del 100 % aunque varios de sus trabajos reciben una respuesta deficiente.

V

Valor de avance
Un valor de avance registra el progreso ponderado del servicio en la planificación por pasos y se compara con los valores de los demás trabajos que pueden ejecutarse para seleccionar un turno.
La tarea con valor de avance 40 se ejecuta antes que una competidora cuyo valor ya ha alcanzado 60.
Valor nice
Un valor nice es un dato de prioridad que puede establecer el usuario para tareas normales de Linux y va de −20, el más favorecido, a +19, el menos favorecido.
Un valor nice mayor reduce la proporción relativa de CPU de una tarea normal cuando los competidores pueden ejecutarse.

Sobre esta unidad

Por StudeliInformar de un error

Crea tus propios Materiales de Estudio

Convierte tus notas, diapositivas y documentos en Guías de Estudio, Preguntas de Práctica, Flashcards y 6 herramientas más.

Comenzar