La paginación ( paginación en inglés ; el término swapping from swap , /swɔp/ se usa a veces ) es uno de los mecanismos de la memoria virtual , en el que fragmentos individuales de memoria (generalmente inactivos) se mueven de la RAM al almacenamiento secundario (un disco duro u otro unidad externa, como una memoria flash ), liberando RAM para cargar otros fragmentos de memoria activos. Dichos fragmentos en las computadoras modernas son páginas de memoria.
Las páginas descargadas temporalmente de la memoria se pueden almacenar en dispositivos de almacenamiento externo tanto en un archivo como en una partición especial en un disco duro (partición), denominada archivo de intercambio y partición de intercambio, respectivamente. Si es necesario descargar páginas de la RAM que correspondan al contenido de un archivo en el disco duro (por ejemplo, archivos mapeados en memoria), es posible que no se descarguen, sino que simplemente se eliminen. Cuando se solicita una página de este tipo, se puede leer desde el archivo original.
Cuando una aplicación accede a una página que no está en la RAM, se producirá una excepción PageFault. El controlador de este evento debe verificar si la página solicitada se ha intercambiado previamente y, si está en el archivo de intercambio, cargarla nuevamente en la memoria.
Inicialmente, el intercambio se entendía como la descarga de un proceso de la RAM en su totalidad, por lo que los procesos inactivos podían estar completamente ausentes de la RAM. Cuando se cumplieron las condiciones de activación del proceso , el administrador de memoria volvió a cargar la imagen del proceso.
El significado del término cambió en los años 60 , cuando apareció el soporte para la memoria virtual en los sistemas operativos : el intercambio comenzó a significar cargar y descargar páginas individuales. La paginación se implementó por primera vez en la computadora Atlas , lanzada en 1962.
Las funciones principales del mecanismo de paginación se realizan cuando un programa intenta acceder a páginas que actualmente no están asignadas a la memoria física (RAM). Esta situación se denomina error de página . En este punto, el sistema operativo debe tomar el control y manejar la falla de página de manera transparente para el programa. Por lo tanto, el sistema operativo necesita:
Si, cuando se recibe un marco de página vacío, no hay suficiente RAM libre, se ejecuta el algoritmo de reemplazo de página, que selecciona uno de los marcos de página usados para descargar. Si el marco de página que se va a paginar se asignó dinámicamente durante la ejecución del programa, o si es parte del segmento de datos del programa y ha cambiado desde que se leyó en la memoria (en otras palabras, si se ha vuelto "sucio"), debe ser guardado en el almacenamiento secundario antes de ser desasignado. De lo contrario, el contenido del marco de la página en la RAM es el mismo que el contenido de la página en el almacenamiento secundario, por lo que no es necesario paginarlo. Si se accede a una página descargada más tarde en la ejecución, se producirá otro error de página y será necesario reasignar el marco de la página para que el contenido de la página en el almacenamiento secundario se pueda volver a cargar en la RAM.
Para garantizar un funcionamiento eficaz, el sistema de paginación debe seleccionar para la salida de página aquellos marcos de página a los que es menos probable que se acceda en un futuro próximo. Hay varios algoritmos de reemplazo de página . Los sistemas operativos utilizan algoritmos LRU ( Último uso reciente ) , FIFO ( Primero en entrar, primero en salir ) o algoritmos que tienen en cuenta el conjunto de trabajo del proceso [1] .
Para mejorar aún más el tiempo de respuesta, los sistemas de paginación pueden usar diferentes estrategias para predecir las próximas visitas a la página. Dichos sistemas intentan cargar páginas en la memoria principal mucho antes de que el programa acceda a ellas.
Al asignar espacio para una nueva página, puede ser necesario eliminar cualquier página que se encuentre actualmente en la memoria. Las reglas de reemplazo de página se utilizan para decidir qué página debe eliminarse de la memoria. El candidato ideal es una página "muerta" que ya no necesita nadie (por ejemplo, se refiere a un proceso finalizado). Si no hay tales páginas en la memoria (o no hay suficientes), se usa la regla de reemplazo de página local o global:
Los criterios de búsqueda más utilizados:
La mayoría de los programas no usan toda la memoria asignada a ellos a la vez, sino solo una parte, determinada por las instrucciones que se ejecutan actualmente y los datos que requieren. Si el programa cumple con el principio de localidad , entonces la parte de la memoria utilizada puede ser significativamente menor que la memoria total asignada al programa. El tamaño de esta parte utilizable refleja que el programa alcanza un estado constante en el consumo de memoria y, a menudo, se lo denomina conjunto de trabajo .
Los sistemas de memoria virtual funcionan de manera eficiente cuando la suma de los conjuntos de trabajo de todos los procesos no supera el tamaño de la RAM física. En este caso, el tiempo requerido para manejar fallas de página no tiene mucho impacto en el rendimiento. Sin embargo, un programa que trabaja con grandes estructuras de datos puede tener un conjunto de trabajo que es demasiado grande para que el sistema de intercambio funcione de manera eficiente. Esto dará como resultado un flujo continuo de fallas de página y una disminución drástica en el rendimiento de la computadora. Esta situación se denomina hiperpaginación : las páginas se descargan continuamente y luego se accede a ellas, lo que provoca fallas frecuentes en la página.
Una característica interesante de la hiperpaginación es que, hasta cierto punto crítico, el número de errores de página aumenta lentamente a medida que crece el conjunto de trabajo. Después de llegar a este punto crítico, la cantidad de errores de página aumenta drásticamente y la mayor parte de la potencia de procesamiento se gasta en procesarlos.
Para evitar resbalones, el usuario puede realizar las siguientes acciones:
En el caso de datos de memoria virtual ubicados en dispositivos de almacenamiento externo (por ejemplo, discos duros), como ocurre con mayor frecuencia, el acceso a la memoria se ralentiza (en comparación con los dispositivos de almacenamiento de acceso aleatorio).
Con una alta probabilidad, el uso de intercambio en unidades SSD (que tienen un número limitado de ciclos de escritura) reduce su vida útil. Pero aumenta considerablemente la velocidad de intercambio. Si no se planea heredar el SSD, entonces esto es beneficioso.
En Windows XP, Vista, 7 de 32 bits, el archivo de intercambio puede usar RAM de más de 3 gigabytes usando un software de creación de disco ram en memoria de terceros .
Linux admite un mecanismo similar, zswap , que coloca el intercambio en la memoria en forma comprimida.
La implementación del almacenamiento de datos virtuales en diferentes sistemas operativos difiere debido a las características arquitectónicas de sus kernels y sistemas de archivos.
Durante la operación, el archivo de intercambio (partición de disco o archivo en partición) puede fragmentarse, es decir, las áreas de memoria virtual contiguas consistirán en numerosas regiones separadas (discontinuas) en el archivo de intercambio. Al leer y escribir datos de página, ubicados linealmente en la memoria virtual, pero dispersos en el archivo de paginación, tomará mucho tiempo reposicionar las cabezas del disco duro al comienzo de la siguiente área. Esto puede provocar una caída en el rendimiento de todo el sistema debido a la abundancia de solicitudes de E/S lentas.
Del archivo de intercambio (partición) a menudo es posible extraer información confidencial utilizada en la operación del sistema informático. Por lo tanto, cuando se trabaja con datos secretos, el intercambio generalmente se borra, por ejemplo, utilizando la utilidad sswap del paquete de eliminación segura .
Además, muchos programas que funcionan con información valiosa o con encriptación pueden deshabilitar selectivamente la capacidad de bombear fragmentos de memoria.
En Linux, puede cifrar el archivo de intercambio o la partición (por ejemplo, en la distribución de Ubuntu, esto se hace automáticamente cuando selecciona la opción de cifrar el directorio de inicio del usuario durante la instalación del sistema operativo). Esta solución aumenta un poco la carga del procesador, pero garantiza la seguridad de la información confidencial incluso en caso de un apagón repentino.
El uso del archivo de paginación puede provocar la infección de algunos sistemas operativos con virus informáticos , ya que existe una vulnerabilidad , que le permite insertar programas en ejecución en la memoria virtual y cambiar el código en ejecución mediante el acceso directo al disco duro.
En Unix y sistemas operativos similares, el intercambio generalmente se coloca en una partición de disco duro separada, lo que anteriormente hacía que el acceso a los datos fuera más rápido que la ubicación de intercambio en una partición normal. En los kernels de Linux 2.6 y posteriores, el rendimiento de un archivo de intercambio es tan bueno como el de una partición de intercambio [2] [3] .
Un ejemplo de creación de un archivo de intercambio para GNU/Linux:
# dd if=/dev/cero of=/swap bs=1024 cuenta=128K # mkswap /intercambiar # sincronización # intercambiar /intercambiarOracle Solaris puede usar volúmenes ZFS como particiones de intercambio:
# zfs create -V 2G pool/swap # intercambio -a /dev/zvol/dsk/piscina/intercambioAdemás de utilizarse mientras el sistema se está ejecutando, algunas distribuciones de GNU/Linux utilizan una partición de intercambio para organizar el modo de suspensión ("hibernación", hibernación o "suspensión en disco" - modo S4 ACPI ). Para admitir este modo, el tamaño del intercambio debe establecerse igual al tamaño de la RAM, aumentado en un 10-15%.
El área del disco duro destinada al intercambio se encuentra en un archivo separado llamado archivo de intercambio , archivo de intercambio (del inglés swap file ). Se llama pagefile.sys y el sistema lo crea en el directorio raíz de la unidad C: de forma predeterminada . En el futuro, el usuario puede controlar el tamaño y la ubicación del archivo de paginación, por ejemplo, utilizando el panel de control , elemento Sistema .
En Windows 9x, el archivo de intercambio se llama win386.swp y se encuentra en el directorio de Windows. Sin embargo, al editar el archivo system.ini, se puede mover al directorio raíz para compartirlo posteriormente con Windows NT.
Además, a partir de Windows Vista, fue posible crear una partición de intercambio dedicada, similar en propósito a las que se usan en los sistemas UNIX.
de los sistemas operativos | Aspectos|||||
---|---|---|---|---|---|
| |||||
Tipos |
| ||||
Núcleo |
| ||||
Gestión de procesos |
| ||||
Gestión y direccionamiento de memoria | |||||
Herramientas de carga e inicialización | |||||
caparazón | |||||
Otro | |||||
Categoría Wikimedia Commons Wikilibros Wikcionario |