En los sistemas informáticos y de comunicación, un programador que conserva el trabajo es un programador que siempre intenta mantener ocupados los recursos programados, si hay trabajos enviados listos para ser programados. Por el contrario, un programador que no conserva el trabajo es un programador que, en algunos casos, puede dejar los recursos programados inactivos a pesar de la presencia de trabajos listos para ser programados.
Por ejemplo, cuando se trabaja con redes y programación de paquetes , un programador que conserva el trabajo [1] [2] deja el canal inactivo solo cuando no hay paquetes para transmitir. Por el contrario, un programador que no conserva el trabajo podría dejar el canal inactivo con paquetes aún pendientes de transmisión .
De manera similar, cuando se hace referencia a la programación de la CPU , es decir, subprocesos o procesos programados en uno o más procesadores o núcleos disponibles , un programador de conservación de trabajo [3] garantiza que los procesadores/núcleos no estén inactivos si hay procesos/subprocesos listos para su ejecución .
Ley de conservación de Kleinrock
Los programadores que conservan el trabajo también se destacan por obedecer la Ley de Conservación de Kleinrock. [4] [5]
En el contexto en el que tenemos conexiones con tasas de llegada de paquetes por unidad de tiempo distribuidas por Poisson que compiten por el tiempo de programación, Leonard Kleinrock estableció la siguiente ley de conservación:
dónde
- :La tasa media de paquetes de conexión en paquetes por unidad de tiempo.
- : La cantidad de paquetes de conexión que el sistema en general podría transmitir por unidad de tiempo, en unidades de paquetes. Esto puede variar entre flujos si estos tienen paquetes de diferentes tamaños.
- :La utilización del enlace aportada por un flujo particular.
- :El tiempo esperado que un paquete de una conexión permanece en un búfer antes de que el programador lo sirva en unidades de tiempo.
- : Una constante: el tiempo esperado para borrar todos los paquetes almacenados en el búfer de todos los flujos en un momento dado si se transmiten a la velocidad máxima de servicio sin interrupciones. Para entender por qué, observe que . Observe que es la cantidad esperada de paquetes almacenados en el búfer del flujo y, por lo tanto, el tiempo esperado para borrarlos del búfer es este sobre la velocidad de servicio .
(Algunas fuentes utilizan para referirse al tiempo necesario para atender un paquete en particular unidades de tiempo por paquete, y utilizan . La ecuación es la misma, la única diferencia es que es el recíproco de la presentada anteriormente).
Comparación con los programadores que no conservan el trabajo
Los programadores que no conservan el trabajo a veces son útiles para mejorar la previsibilidad y reducir la inestabilidad de terminación de las actividades llevadas a cabo por un sistema informático y de comunicación. En sistemas multiprocesador, son útiles para mejorar el rendimiento en algunos escenarios. [6] [7]
A veces, un programador que no conserva el trabajo puede ser útil para mejorar la estabilidad de un sistema; por ejemplo, un programador de procesos puede optar por mantener los procesos fuera de la cola de ejecución si existiera la preocupación de que la suma de los conjuntos de trabajo de todos los procesos ejecutables excediera la memoria disponible y provocara una sobrecarga de páginas no lineal. Limitar la cola de ejecución de esta manera podría conducir a una subutilización de los procesadores disponibles (y, por lo tanto, no conservar el trabajo) con el objetivo de evitar situaciones en las que el sistema sea inutilizable debido al thrashing.
Referencias
- ^ [1] Padma Mundur, Mejora de la calidad de servicio en redes IP (material del curso sobre redes multimedia)
- ^ [2] Jon Crowcroft, Programación y gestión de colas (material del curso Comunicaciones digitales II)
- ^ [3] G. Buttazzo, G. Lipari, L. Abeni, M. Caccamo, Sistemas blandos en tiempo real: previsibilidad versus eficiencia, Springer 2005
- ^ Kleinrock, Leonard (1965). "Una ley de conservación para una amplia clase de disciplinas de colas". Naval Research Logistics Quarterly . 12 (2): 181–192. doi :10.1002/nav.3800120206. ISSN 0028-1441.
- ^ [4] Jon Crowcroft, Scheduling (material del curso Principios de las comunicaciones)
- ^ [5] A. Fedorova, M. Seltzer y MD Smith, "Un programador de sistema operativo que no conserva el trabajo para procesadores SMT", en Actas del Taller sobre la interacción entre sistemas operativos y arquitectura informática, en conjunto con ISCA 2006
- ^ [6] JC Sáez, JI Gomez y M. Prieto, "Mejora de la aplicación de prioridades mediante una programación que no conserva el trabajo", Procesamiento paralelo, 2008. ICPP '08. 37.ª Conferencia internacional sobre, Portland, OR, 2008, pp. 99-106.