Deslizamiento (ciencias de la computación)

Thrashing en informática es un  estado en el que el subsistema de memoria virtual de la computadora está en un estado de intercambio constante , intercambiando con frecuencia datos en la memoria y datos en el disco, en detrimento de las aplicaciones [1] [2] . Esto hace que la computadora se ralentice o prácticamente deje de funcionar. Este estado puede continuar indefinidamente hasta que se eliminen las causas que lo provocaron.

Descripción

En sistemas con memoria virtual paginada , el espacio de direcciones de cada proceso está paginado. Cuando la cantidad de memoria proporcionada a los procesos excede la cantidad de RAM disponible , algunas de las páginas pueden cargarse en medios externos ( tambor o disco duro ). Dado que un proceso no suele utilizar toda la memoria disponible, sino solo una parte de ella, denominada conjunto de trabajo , en un intervalo de tiempo determinado , esto no afecta al rendimiento. Sin embargo, si la suma de los conjuntos de trabajo de todos los procesos excede la cantidad de RAM, la probabilidad de falla de la página aumenta considerablemente , es decir, la ausencia de la página requerida en la RAM. Las páginas del conjunto de trabajo de los procesos activos se cargan constantemente y las páginas de los procesos inactivos se descargan. Dado que cargar una página desde un medio externo es varios órdenes de magnitud más lento que acceder a la RAM, el rendimiento de la computadora cae drásticamente [1] . La carga del procesador es baja. Esta condición se llama deslizamiento. El término se utilizó por primera vez en los días de los sistemas operativos de cinta para describir el sonido que hacen las unidades de cinta cuando los datos se escriben y leen rápidamente.

Razones

La probabilidad de hiperpaginación aumenta cuando la suma de los conjuntos de trabajo de todos los procesos supera la cantidad de RAM. Las razones de esto pueden ser una cantidad demasiado grande de procesos en ejecución, un volumen demasiado grande de conjuntos de procesos en funcionamiento debido a la violación del principio de localidad en los programas y una cantidad insuficiente de RAM. Un ejemplo de una violación del principio de localidad apareció en los mainframes de la serie IBM System/370 , en los que una sola instrucción podría consistir en una declaración de ejecución que cruza un límite de página de memoria y apunta a una instrucción de movimiento que también cruza un límite de página y es diseñado para mover un bloque de datos desde el rango de direcciones de origen que cruzaron el límite de la página, a un rango de direcciones de destinatario que cruza el límite de la página. Por tanto, el número total de páginas direccionadas durante la ejecución de una de estas instrucciones es ocho, y todas ellas deben estar presentes en la RAM al mismo tiempo. Si el sistema operativo no puede proporcionar esto, un intento de ejecutar la instrucción resultará constantemente en una falla de página y la instrucción nunca se ejecutará.

Soluciones

Para evitar la paliza causada por intercambios pesados, el usuario puede realizar las siguientes acciones:

// En C, las filas de una matriz bidimensional (matriz) se indican mediante el primer índice int m [ 256 ][ 256 ]; para ( columna = 0 ; columna < 256 ; columna ++ ) { para ( fila = 0 ; fila < 256 ; fila ++ ) { // Las direcciones a las que se accede cambian en incrementos de 256 * sizeof(int) // Para ejecutar el ciclo interno, la matriz completa debe estar en la memoria m [ fila ][ columna ] = foo (); } } para ciclos de la forma int m [ 256 ][ 256 ]; para ( fila = 0 ; fila < 256 ; fila ++ ) { para ( columna = 0 ; columna < 256 ; columna ++ ) { // Al acceder a las columnas, las direcciones corresponden a celdas consecutivas // Para ejecutar el ciclo interno, solo la fila actual debe estar presente en la memoria m [ fila ] [ columna ] = foo (); } }

Otros usos del término

El término también se usa para referirse a los deslices entre otros niveles de la jerarquía de la memoria : no solo cuando se pagina de disco a memoria, sino también en una situación en la que comienza un pequeño dispositivo de almacenamiento rápido diseñado para acelerar el acceso a un dispositivo de almacenamiento grande pero lento. ser utilizado de esta manera que desaparecen todos los beneficios de su uso. Un ejemplo es la hipertrofia de caché , donde el patrón de acceso a la memoria principal da como resultado que varias direcciones de memoria principal compitan por las mismas líneas de caché, lo que da como resultado una gran cantidad de errores de caché . Esto es más problemático para cachés con baja asociatividad. Bastante similar es TLB thrashing , donde el búfer de asociación de traducción (TLB) puede volverse ineficiente si falla el patrón de acceso a la memoria.

Véase también

Notas

  1. 12 Peter J. Denning . Thrashing: Sus causas y prevención  // Actas AFIPS, Fall Joint Computer Conference. - 1968. - T. 33 . S. 915–922 .
  2. E. Tannenbaum. Arquitectura informática = Organización informática estructurada. - 5ª ed. - San Petersburgo. : Pedro, 2013. - S. 485. - 884 p. - ISBN 978-5-469-01274-0 .