2009-05-22 16 views

Respuesta

6

A grandes rasgos, el conjunto de trabajo son las áreas de memoria en uso activo. http://en.wikipedia.org/wiki/Working_set

+0

Parece que significa cosas diferentes según el subsistema que lo esté definiendo. Buen enlace: definitivamente relevante para el diseño del sistema operativo. –

15

El "conjunto de trabajo" es abreviado para "partes de la memoria que utiliza el algoritmo actual" y está determinado por las partes de memoria a las que la CPU acaba de acceder. Es totalmente automático para ti. Si está procesando una matriz y almacenando los resultados en una tabla, la matriz y la tabla son su conjunto de trabajo.

Esto se discute porque la CPU almacenará automáticamente la memoria accedida en caché, cerca del procesador. El conjunto de trabajo es una buena manera de describir la memoria que desea almacenar. Si es lo suficientemente pequeño, todo puede caber en la memoria caché y su algoritmo se ejecutará muy rápido. En el nivel del sistema operativo, el kernel tiene que decirle a la CPU dónde encontrar la memoria física que está usando su aplicación (resolver direcciones virtuales) cada vez que accede a una página nueva (generalmente 4k de tamaño), así que también quiere evitar ese golpe. como sea posible.

Consulte What Every Programmer Should Know About Memory - PDF para ver los gráficos del rendimiento de los algoritmos frente al tamaño del conjunto de trabajo (alrededor de la página 23) y mucha otra información interesante.

Básicamente, escriba su código para acceder a la menor cantidad posible de memoria (es decir, las clases son pequeñas, no demasiadas) y trate de garantizar que los bucles ajustados se ejecuten en un subconjunto muy pequeño de esa memoria.

+1

El "conjunto de trabajo" no es un reemplazo del algoritmo de páginas? Duden sobre eso. – gato

0

Toda la memoria que está usando su programa que es no en el "conjunto de trabajo" está marcada para el intercambio en el disco. Cuando el sistema operativo necesita más memoria para otro trabajo, tratará de mantener el conjunto de trabajo de cada programa en la memoria, pero todo lo demás está en juego.

+0

En realidad, cualquier memoria puede ser intercambiada en el disco; no hay una marca especial para eso. El sistema intenta intercambiar memoria menos utilizada si puede. Si su conjunto de trabajo, es decir, las cosas a las que accede con frecuencia, es más grande que la memoria, cambiará mucho, ralentizando mucho su programa. –

+0

Sí, lo sé. Lo que quise decir es que la memoria que no está en el conjunto de trabajo se intercambia primero. Está marcado ... por MUERTE! O intercambiar, pero eso es casi tan malo como la muerte. :) –

5

El "conjunto de trabajo" es un término informal que significa la memoria a la que se accede "frecuentemente" (para alguna definición de frecuencia) por una aplicación o conjunto de aplicaciones. Las aplicaciones también pueden asignar memoria a la que acceden con poca frecuencia (no más de una vez cada pocas docenas de segundos, tal vez ni siquiera una vez por hora); esto estaría fuera del conjunto de trabajo.

Un ejemplo podría ser si tiene dos Firefox Windows, uno minimizado que no ha mirado durante varias horas, y uno abierto que está explorando en este momento. La memoria utilizada para almacenar los datos asociados con la ventana abierta va a estar en el conjunto de trabajo; la memoria utilizada para almacenar los datos asociados con la ventana que no está abierta y que no ha mirado durante varias horas no está en el conjunto de trabajo.

Esto se utiliza principalmente en discusiones sobre si tiene suficiente memoria RAM en su sistema. Si su conjunto de trabajo es más pequeño que su RAM, puede trabajar cómodamente, porque los datos a los que su programa o programas acceden con frecuencia siempre están en la memoria. Si su conjunto de trabajo es más grande que su RAM, el sistema operativo cambiará constantemente las páginas en el disco para hacer espacio para intercambiar en las páginas a las que una aplicación desea acceder; estas páginas intercambiadas, estando en el conjunto de trabajo, casi de inmediato se necesitarán nuevamente, lo que significa que tiene que tomar otras páginas y escribirlas en el disco, y esto sigue y sigue así. Esto se conoce como "golpear".

Si no está leyendo o escribiendo muchos archivos, la luz del disco está encendida todo el tiempo, y su sistema se siente muy lento, eso es una buena señal de que está golpeando.

0

El conjunto de trabajo es el conjunto de páginas que están físicamente en la memoria en un momento dado. Aunque el conjunto de trabajo, si se cita y se muestra en kilobytes, el conjunto de trabajo más pequeño que puede tener es 4k (8K en Itanium) ya que es el tamaño de una página en Windows.

Para ver el conjunto de trabajo de un proceso, mire la columna "Uso de Mem" en la pestaña "Procesos" del administrador de tareas.

Si está ejecutando una aplicación .NET, puede ver cómo se reduce el conjunto de trabajo mirando el proceso en la pestaña de proceso del administrador de tareas y luego minimizando la aplicación. Su conjunto de trabajo se reduce drásticamente cuando Windows lo intercambia al archivo de la página (ya que se supone que el proceso no está "funcionando" tanto).

0

El término "Conjunto de trabajo" está relacionado con el Algoritmo de reemplazo de página de conjunto de trabajo (el algoritmo está muy bien explicado en this article of Andrew Tanenbaum).

Por lo tanto, el conjunto de trabajo es un número de páginas que un proceso demanda cargar desde la memoria durante la ejecución. El conjunto de trabajo consiste en la página cargada más recientemente y las páginas k que se han cargado anteriormente. Cuando se trata de hacer un marco libre para una nueva página demandada, solo las páginas que no están en el conjunto de trabajo pueden intercambiarse.

Cuestiones relacionadas