El conjunto de trabajo es un concepto en ciencias de la computación que define la cantidad de memoria que un proceso requiere en un intervalo de tiempo determinado. [ 1 ]
Definición
Peter Denning (1968) define "el conjunto de información de trabajo"de un proceso en el tiemposer el conjunto de información a la que hace referencia el proceso durante el intervalo de tiempo del proceso". [ 2 ] Normalmente, las unidades de información en cuestión se consideran páginas de memoria . Se sugiere que esto es una aproximación del conjunto de páginas a las que el proceso accederá en el futuro (por ejemplo, durante el siguienteunidades de tiempo), y más específicamente se sugiere que sea una indicación de qué páginas deben mantenerse en la memoria principal para permitir que se haga el mayor progreso en la ejecución de ese proceso.
Razón fundamental
La elección de qué páginas se almacenan en la memoria principal (a diferencia de las que se transfieren a la memoria auxiliar) tiene un efecto importante: si se almacenan demasiadas páginas de un proceso en la memoria principal, menos procesos podrán estar listos simultáneamente. Si se almacenan muy pocas páginas de un proceso en la memoria principal, la frecuencia de fallos de página aumenta considerablemente y el número de procesos activos (no suspendidos) que se ejecutan en el sistema tiende a cero.
El modelo de conjunto de trabajo establece que un proceso puede estar en la RAM si y solo si todas las páginas que está utilizando actualmente (generalmente aproximadas por las páginas utilizadas más recientemente) pueden estar en la RAM. Este modelo es de tipo "todo o nada", lo que significa que si las páginas que necesita usar aumentan y no hay espacio en la RAM, el proceso se transfiere fuera de la memoria para liberar memoria para que otros procesos la utilicen.
A menudo, un ordenador con mucha carga tiene tantos procesos en cola que, si se permitiera que todos los procesos se ejecutaran durante un intervalo de tiempo de planificación , accederían a más páginas de las que hay en la RAM, lo que provocaría que el ordenador se " colapsara ".
Al intercambiar algunos procesos en memoria, el resultado es que estos, incluso aquellos que se eliminaron temporalmente de la memoria, finalizan mucho antes que si el ordenador intentara ejecutarlos todos a la vez. Además, finalizan mucho antes que si el ordenador ejecutara un solo proceso a la vez, ya que esto permite que otros procesos se ejecuten y avancen mientras un proceso espera en el disco duro u otro recurso global.
En otras palabras, la estrategia del conjunto de trabajo evita la sobrecarga del sistema al tiempo que mantiene el grado de multiprogramación lo más alto posible. De este modo, optimiza la utilización de la CPU y el rendimiento.
Implementación
El principal obstáculo para implementar el modelo de conjunto de trabajo es mantener un registro del mismo. La ventana del conjunto de trabajo es una ventana móvil. En cada acceso a memoria, aparece una nueva referencia en un extremo y la referencia más antigua desaparece del otro. Una página pertenece al conjunto de trabajo si se accede a ella dentro de la ventana del conjunto de trabajo.
Para evitar la sobrecarga que supone mantener una lista de las últimas k páginas referenciadas, el conjunto de trabajo se suele implementar registrando el tiempo t de la última referencia y considerando que el conjunto de trabajo son todas las páginas referenciadas dentro de un cierto período de tiempo.
El conjunto de trabajo no es un algoritmo de reemplazo de páginas , pero los algoritmos de reemplazo de páginas pueden diseñarse para eliminar únicamente las páginas que no se encuentran en el conjunto de trabajo de un proceso en particular. Un ejemplo es una versión modificada del algoritmo de reloj llamada WSClock.
Variantes
El conjunto de trabajo se puede dividir en conjunto de trabajo de código y conjunto de trabajo de datos . Esta distinción es importante cuando el código y los datos están separados en el nivel correspondiente de la jerarquía de memoria, ya que si alguno de los conjuntos de trabajo no cabe en ese nivel, se producirá un thrashing. Además del código y los datos en sí, en sistemas con memoria virtual , las entradas del mapa de memoria (de memoria virtual a memoria física) de las páginas del conjunto de trabajo deben almacenarse en caché en el búfer de traducción anticipada (TLB) para que el proceso avance de manera eficiente. Esta distinción existe porque el código y los datos se almacenan en caché en pequeños bloques ( líneas de caché ), no en páginas completas, pero la búsqueda de direcciones se realiza a nivel de página. Por lo tanto, incluso si los conjuntos de trabajo de código y datos caben en la caché, si los conjuntos de trabajo se dividen en muchas páginas, el conjunto de trabajo de direcciones virtuales puede no caber en el TLB, lo que provoca un thrashing del TLB.
Existen análogos del conjunto de trabajo para otros recursos limitados, sobre todo para los procesos . Si un conjunto de procesos requiere una interacción frecuente entre múltiples procesos, entonces tiene un conjunto de trabajo.Conjunto de trabajo del proceso que debeprogramarse conjuntamentepara poder avanzar: [ 3 ]
Los programas paralelos tienen un conjunto de trabajo de procesos que debe programarse simultáneamente (programarse para su ejecución al mismo tiempo) para que el programa paralelo pueda avanzar.
Si los procesos no se programan simultáneamente (por ejemplo, si hay dos procesos pero solo un núcleo en el que ejecutarlos), entonces los procesos solo pueden avanzar a razón de una interacción por intervalo de tiempo.
Otros recursos incluyen descriptores de archivo o sockets de red ; por ejemplo, copiar un archivo a otro se realiza de forma más sencilla con dos descriptores de archivo: uno para la entrada y otro para la salida, lo que resulta en un tamaño de conjunto de trabajo de descriptores de archivo de dos. Si solo se dispone de un descriptor de archivo, la copia aún puede realizarse, pero requiere adquirir un descriptor de archivo para la entrada, leer de él (por ejemplo, en un búfer), liberarlo, luego adquirir un descriptor de archivo para la salida, escribir en él, liberarlo, luego adquirir nuevamente el descriptor de archivo de entrada y repetir el proceso. De manera similar, un servidor puede requerir muchos sockets, y si tiene recursos limitados, necesitaría liberar y volver a adquirir sockets repetidamente. En lugar de saturar el sistema, estos recursos suelen ser necesarios para el programa, y si no puede adquirir suficientes, simplemente falla.
Véase también
Referencias
- ↑ Denning, Peter J. (2021-02-02). "Análisis de conjuntos de trabajo". ACM Computing Surveys . 53 (6). Association for Computing Machinery (ACM): 1– 36. doi : 10.1145/3399709 . ISSN 0360-0300 .
- ↑ Denning, Peter J. (1968). "El modelo de conjunto de trabajo para el comportamiento de los programas" (PDF) . Communications of the ACM . 11 (5): 323– 333. doi : 10.1145/363095.363141 . S2CID 207669410 .
- ↑ Ousterhout, JK (1982). "Técnicas de planificación para sistemas concurrentes" (PDF) . Actas de la Tercera Conferencia Internacional sobre Sistemas de Computación Distribuida : 22–30 .
Lecturas adicionales
- Tanenbaum, Andrew (2009). Sistemas operativos modernos, tercera edición. págs. 209–210
- Denning, PJ (1980). Conjuntos de trabajo pasados y presentes. IEEE Transactions on Software Engineering, 1/1980, Volumen SE-6, pp. 64–84.
- Silberschatz, A., Galvin, PB, & Gagne, G. (2005). Conceptos de sistemas operativos, 7.ª edición. Palatino: Wiley. pp. 346.
- Tecnología de sistemas operativos
- Memoria virtual