stringtranslate.com

Conjunto de trabajo

Conjunto de trabajo es un concepto en informática que define la cantidad de memoria que requiere un proceso en un intervalo de tiempo determinado. [1]

Definición

Peter Denning (1968) define "el conjunto de trabajo de información de un proceso en un momento dado como la colección 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 (digamos durante las próximas 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 la mayoría de los avances en la ejecución de ese proceso.

Razón fundamental

El efecto de la elección de qué páginas se mantendrán en la memoria principal (a diferencia de ser paginadas en el almacenamiento auxiliar) es importante: si se mantienen demasiadas páginas de un proceso en la memoria principal, entonces menos procesos podrán estar listos en cualquier momento. una vez. Si se mantienen muy pocas páginas de un proceso en la memoria principal, entonces la frecuencia de fallas de página aumenta considerablemente y el número de procesos activos (no suspendidos) que se ejecutan actualmente en el sistema se acerca a cero.

El modelo de conjunto de trabajo establece que un proceso puede estar en la RAM si y sólo si todas las páginas que está utilizando actualmente (a menudo aproximadas por las páginas utilizadas más recientemente) pueden estar en la 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 liberarla para que la usen otros procesos.

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 , harían referencia a más páginas que RAM, lo que provocaría que la computadora " se sacudiera ".

Al intercambiar algunos procesos de la memoria, el resultado es que los procesos (incluso los procesos que se eliminaron temporalmente de la memoria) finalizan mucho antes de lo que lo harían si la computadora intentara ejecutarlos todos a la vez. Los procesos también finalizan 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 la paliza y al mismo tiempo 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 desaparece del 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 a las que se hace referencia, el conjunto de trabajo a menudo se implementa realizando un seguimiento del tiempo t de la última referencia y considerando que el conjunto de trabajo son todas las páginas a las que se hace referencia 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 se pueden diseñar para eliminar únicamente 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 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 relevante de la jerarquía de memoria, ya que si alguno de los conjuntos de trabajo no encaja en ese nivel de la jerarquía, se producirá una paliza. Además del código y los datos en sí, en 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 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 caben 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 provoca una destrucción total de TLB.

Existen análogos del conjunto de trabajo para otros recursos limitados, sobre todo procesos . Si un conjunto de procesos requiere interacción frecuente entre múltiples procesos, entonces tiene unaconjunto de trabajo del proceso que debeprogramarse conjuntamentepara poder progresar:[3]

Los programas paralelos tienen un conjunto de procesos de trabajo que deben programarse conjuntamente (programarse para su ejecución simultáneamente) para que el programa paralelo avance.

Si los procesos no están programados simultáneamente (por ejemplo, si hay dos procesos pero solo un núcleo en el que ejecutarlos), entonces 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 más simplemente con dos identificadores de archivos: uno para entrada y otro para salida y, por lo tanto, tiene un tamaño de "conjunto de trabajo de identificadores 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, 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á liberar y volver a adquirir sockets repetidamente. En lugar de destrozarlos, estos recursos suelen ser necesarios para el programa, y ​​si no puede adquirir suficientes recursos, simplemente fracasa.

Ver también

Referencias

  1. ^ Denning, Peter J. (2 de febrero de 2021). "Análisis de conjuntos de trabajo". Encuestas de Computación ACM . 53 (6). Asociación de Maquinaria de Computación (ACM): 1–36. doi :10.1145/3399709. ISSN  0360-0300.
  2. ^ 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.
  3. ^ Ousterhout, JK (1982). "Técnicas de programación para sistemas concurrentes" (PDF) . Actas de la Tercera Conferencia Internacional sobre Sistemas Computacionales Distribuidos : 22–30.

Otras lecturas