El conjunto de trabajo es un concepto en ciencias de la computación que define la cantidad de memoria que requiere un proceso en un intervalo de tiempo determinado.
Definición
Peter Denning (1968) define "el conjunto de trabajo de informaciónde un proceso en el momento Ser la recopilación de información a la que hace referencia el proceso durante el intervalo de tiempo del proceso. ". [1] Normalmente, las unidades de información en cuestión se consideran páginas de memoria . Se sugiere que esto sea una aproximación del conjunto de páginas al que accederá el proceso en el futuro (por ejemplo, durante el próximo unidades 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 avance al máximo en la ejecución de ese proceso.
Razón fundamental
El efecto de la elección de qué páginas que se mantiene en la memoria principal (a diferencia de ser paginado fuera de almacenamiento auxiliar) es importante: si demasiados páginas de un proceso se mantienen en la memoria principal, a continuación, un menor número de otros procesos pueden ser preparados en cualquier una vez. Si se mantienen muy pocas páginas de un proceso en la memoria principal, entonces su frecuencia de fallas de página aumenta considerablemente y el número de procesos activos (no suspendidos) que se están ejecutando actualmente en el sistema se acerca a cero.
El modelo de conjunto de trabajo establece que un proceso puede estar en RAM si y solo si todas las páginas que está utilizando actualmente (a menudo aproximadas por las páginas utilizadas más recientemente) pueden estar en RAM. El modelo es un modelo de 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 intercambia fuera de la memoria para liberar la memoria para que otros procesos la usen.
A menudo, una computadora muy cargada tiene tantos procesos en cola que, si se permitiera que todos los procesos se ejecutaran durante un intervalo de tiempo de programación , se referirían a más páginas que RAM, lo que provocaría que la computadora "se moviera ".
Al intercambiar algunos procesos de la memoria, el resultado es que los procesos, incluso los que se eliminaron temporalmente de la memoria, terminan mucho antes de lo que lo harían si la computadora intentara ejecutarlos todos a la vez. Los procesos también terminan mucho antes de lo que lo harían si la computadora solo ejecutara un proceso a la vez hasta su finalización, ya que permite que otros procesos se ejecuten y progresen durante los momentos en que un proceso está esperando en el disco duro o en algún otro recurso global.
En otras palabras, la estrategia del conjunto de trabajo evita los golpes y mantiene el grado de multiprogramación lo más alto posible. Por lo tanto, optimiza la utilización y el rendimiento de la CPU.
Implementación
El principal obstáculo en la implementación del modelo de conjunto de trabajo es realizar un seguimiento del conjunto de trabajo. La ventana del conjunto de trabajo es una ventana móvil. En cada referencia de memoria aparece una nueva referencia en un extremo y la referencia más antigua cae por el otro extremo. Una página está en el conjunto de trabajo si se hace referencia a ella en la ventana del conjunto de trabajo.
Para evitar la sobrecarga de mantener una lista de las últimas k páginas referenciadas, el conjunto de trabajo a menudo se implementa haciendo un seguimiento del 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ágina , pero los algoritmos de reemplazo de página se pueden diseñar para eliminar solo las páginas que no están en el conjunto de trabajo para un proceso en particular. Un ejemplo es una versión modificada del algoritmo de reloj llamado WSClock.
Variantes
El conjunto de trabajo se puede dividir en un conjunto de trabajo de código y un conjunto de trabajo de datos . Esta distinción es importante cuando el código y los datos están separados en el nivel relevante de la jerarquía de memoria, ya que si alguno de los conjuntos de trabajo no encajaba en ese nivel de la jerarquía, se produciría una paliza. Además del código y los datos en sí mismos, en los sistemas con memoria virtual , las entradas del mapa de memoria (de la memoria virtual a la memoria física) de las páginas del conjunto de trabajo deben almacenarse en caché en el búfer de búsqueda de traducción (TLB) para que el proceso avance. eficientemente. 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 enteras, 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 encajan en la memoria caché, si los conjuntos de trabajo se dividen en muchas páginas, es posible que el conjunto de trabajo de direcciones virtuales no quepa en TLB, lo que provocaría una paliza de TLB.
Existen análogos del conjunto de trabajo para otros recursos limitados, más significativamente los procesos . Si un conjunto de procesos requiere una interacción frecuente entre múltiples procesos, entonces tiene unaconjunto de trabajo de proceso que debe sercosprogramadopara progresar: [2]
Los programas paralelos tienen un conjunto de trabajo de proceso que debe ser cosprogramado (programado para su ejecución simultáneamente) para que el programa paralelo avance.
Si los procesos no se programan simultáneamente, por ejemplo, si hay dos procesos pero solo un núcleo en el que ejecutarlos, los procesos solo pueden avanzar a la velocidad de una interacción por segmento de tiempo.
Otros recursos incluyen identificadores de archivos o sockets de red ; por ejemplo, copiar un archivo a otro se realiza de forma más sencilla con dos identificadores de archivo: uno para la entrada, otro para la salida y, por lo tanto, tiene un tamaño de "conjunto de trabajo de manejo de archivos" de dos. Si solo hay un identificador de archivo disponible, aún se puede copiar, pero requiere adquirir un identificador de archivo para la entrada, leerlo (por ejemplo, en un búfer), liberarlo y luego adquirir un identificador de archivo para la salida, escribir en él, soltándolo, luego adquiriendo el identificador del archivo de entrada nuevamente y repitiendo. De manera similar, un servidor puede requerir muchos sockets y, si es limitado, necesitaría liberar y volver a adquirir sockets repetidamente. En lugar de agotar, estos recursos suelen ser necesarios para el programa, y si no puede adquirir suficientes recursos, simplemente falla.
Ver también
Referencias
- ^ Denning, Peter J. (1968). "El modelo de conjunto de trabajo para el comportamiento del programa" (PDF) . Comunicaciones de la ACM . 11 (5): 323–333. doi : 10.1145 / 363095.363141 . S2CID 207669410 .
- ^ Ousterhout, JK (1982). "Técnicas de programación para sistemas concurrentes" (PDF) . Actas de la Tercera Conferencia Internacional sobre Sistemas de Computación Distribuida : 22–30. CS1 maint: parámetro desalentado ( enlace )
- Tanenbaum, Andrew (2009). Tercera edición de los sistemas operativos modernos. págs. 209–210
- Denning, PJ (1980). Conjuntos de trabajo pasado y presente. Transacciones IEEE sobre ingeniería de software, 1/1980, volumen SE-6, págs. 64–84. [1]
- Silberschatz, A., Galvin, PB y Gagne, G. (2005). Conceptos del sistema operativo, séptima edición. Palatino: Wiley. págs. 346.