Espacio de intercambio

De Wikipedia, la enciclopedia libre
(Redirigido desde «Archivo de paginación»)
Saltar a: navegación, búsqueda

En informática, el espacio de intercambio es una zona del disco (un fichero o partición) que se usa para guardar las imágenes de los procesos que no han de mantenerse en memoria física. A este espacio se le suele llamar swap, del inglés "intercambiar".

Descripción[editar]

La mayoría de los sistemas operativos modernos poseen un mecanismo llamado memoria virtual, que permite hacer creer a los programas que tienen más memoria que la disponible realmente. Como en realidad no se tiene físicamente toda esa memoria, algunos procesos no podrán ser ubicados en la memoria RAM.

En este caso es cuando es útil el espacio de intercambio: el sistema operativo puede buscar un proceso poco activo, y moverlo al área de intercambio (el disco duro) y de esa forma liberar la memoria principal para cargar otros procesos. Mientras no haga falta, el proceso extraído de memoria puede quedarse en el disco, ya que ahí no utiliza memoria física. Cuando sea necesario, el sistema vuelve a hacer un intercambio, pasándolo del disco a memoria RAM. Es un proceso lento (comparado con usar sólo la memoria RAM), pero permite dar la impresión de que hay más memoria disponible.

Implementación[editar]

En realidad, puede ser que no toda la imagen del proceso se lleve al disco. De esta forma, se mantienen algunas partes en memoria principal, mientras que otras permanecen en el almacenamiento secundario.

Si los algoritmos utilizados en el intercambio de páginas están mal diseñados o hay poca memoria disponible, se puede dar un problema conocido como hiperpaginación, o en inglés thrashing. Los síntomas son un atasco y sobrecarga en el sistema, y la causa es que los procesos continuamente están siendo pasados de memoria física a área de intercambio (porque hace falta memoria para correr otro proceso) y luego otra vez a memoria (porque han de ejecutarse).

Posibles ubicaciones[editar]

En los sistemas operativos se puede usar como área de intercambio un fichero o una partición (los dos son en realidad parte de un disco duro o almacenamiento secundario).

Fichero de intercambio[editar]

Un fichero en blanco puede prepararse para ser usado como área de intercambio. Esto tiene una gran ventaja:

  • es fácil de crear, borrar, ampliar o reducir, según se crea necesario (a diferencia de una partición)

Pero también alguna desventaja:

El problema de la fragmentación no es grave, ya que el espacio de intercambio no siempre es accedido de forma secuencial, sino directa (en oposición a la secuencial).

Partición de intercambio[editar]

También se puede dedicar una partición entera del disco duro (o el disco completo) como área de intercambio. Ventajas:

  • se puede conseguir mejor rendimiento si se coloca la partición en la zona más rápida del disco, que es al principio (los cilindros exteriores del disco, por donde pasan más datos a cada vuelta;
  • no hay problemas de fragmentación
  • no hay que usar ningún sistema de ficheros en concreto

Tiene pocas desventajas:

  • crear una partición es un proceso algo difícil; de todas formas, si se elige bien el tamaño de la partición, no hará falta ningún cambio en el futuro
  • la partición siempre ocupará el mismo espacio, aunque no se esté usando al 100%

Uso en sistemas operativos[editar]

Cada sistema operativo gestiona la memoria virtual de forma distinta; por tanto el intercambio depende de la implementación de los algoritmos de intercambio.

En Windows[editar]

Microsoft Windows usa un fichero de intercambio desde su versión 3.1 (1992), la primera en usar memoria virtual. Lo implementa mediante un fichero situado en el directorio raíz (C:\) o en el de sistema (C:\WINDOWS\), y tiene por nombre:

  • 386SPART.PAR en Windows 3.1
  • WIN386.SWP en Windows 3.11, 95 y 98
  • pagefile.sys en Windows NT y sucesores

Este fichero tiene un tamaño variable (depende de la configuración) y no debe ser movido o borrado.

Configuración[editar]

Desde el panel de control "sistema", luego en "opciones avanzadas", rendimiento y luego en la opción "configuración" se puede configurar el tamaño del fichero de paginación usado por Windows (Windows XP). En Windows 95, la opción está en Panel de control - Sistema - Rendimiento - Memoria virtual.

Hay una opción para establecer un tamaño fijo para el fichero, pero no es recomendable, porque a veces (cuando se acaba la memoria física y un programa necesita más) hace falta aumentar el tamaño del fichero de intercambio, y si no se puede, no habrá memoria extra para los programas. Si los programas (o el propio Windows) no pueden conseguir la memoria que necesitan, probablemente den fallos extraños.

Se puede controlar el tamaño mínimo y el máximo para el fichero. Mientras que aumentar mucho el máximo no hará que funcione mejor, aumentar el mínimo sí que puede ayudar en sistemas que tengan poca memoria RAM.

En GNU/Linux[editar]

En GNU/Linux se suele usar con una partición de intercambio, aunque también permite usar ficheros de intercambio.

Se pueden asignar varios dispositivos de intercambio, incluso de diferentes tipos, y asignar a cada uno una prioridad. Si la prioridad es la misma en varios, las páginas de memoria se distribuirán como en un RAID de nivel 0. Esto permite que los dispositivos de swap se usen en paralelo, cosa que puede aumentar la eficacia, sobre todo si están en discos independientes.

Programas[editar]

Para crear un área de intercambio, se usa la orden mkswap nombre, donde nombre puede ser un fichero o la ruta a un dispositivo de disco (por ejemplo /dev/hda1). Esto prepara el dispositivo y le pone la cabecera apropiada.

Si lo que se está usando es un fichero swap, el contenido puede ser cualquiera (se destruirá), y lo que importa es el tamaño. Pero además, mkswap tiene un requisito especial: el fichero no ha de tener agujeros. Quiere decir que los bytes del fichero han de estar realmente en el disco. Esto no pasa siempre: si se usa cp /dev/zero nuevo, el sistema de ficheros probablemente vea que se trata de un fichero disperso (tiene regiones muy grandes todas con nulos), y no lo grabará realmente en el disco. Al usar algo como dd if=/dev/zero of=nuevo bs=1024 count=65536 se le fuerza a que escriba todos los bloques, sin agujeros.

El dispositivo de intercambio se activa con la orden swapon nombre y se desactiva con swapoff nombre. En el fichero /proc/swaps se muestra una lista de los dispositivos de intercambio activos, y en /etc/fstab se suelen añadir las particiones swap que se activan al inicio del sistema.

Con el programa free se puede ver, además de cuánta RAM queda libre, el tamaño total de las áreas de intercambio, cuán de llenas están, y cuánta memoria (RAM) se está usando como caché.

¿Hace falta swap?[editar]

La memoria de intercambio sirve como RAM adicional. Entonces, en un ordenador que ya tenga mucha memoria RAM, ¿hace falta swap?

Aunque puede funcionar bien sin tener ningún área de intercambio, es muy recomendable crearla. La razón es que siempre es bueno quitar de la memoria los procesos poco usados, ya que eso permite usar la RAM para otras tareas, como por ejemplo la memoria caché de las operaciones de entrada/salida, como el acceso al disco.

Por ejemplo: supongamos que un usuario abre en un programa una imagen muy grande, que le consume el 80% de la memoria RAM, y después, sin cerrarla, se pone a hacer varias búsquedas de ficheros por su disco duro. Si no se puede llevar a disco ese proceso grande, quiere decir que ha de mantenerse en memoria física; por tanto, las búsquedas sólo tendrán menos del 20% de la memoria RAM para hacer de caché, y por eso serán poco eficientes. Con swap, se podría llevar a disco el proceso grande (o al menos una parte), hacer esas búsquedas usando toda la RAM como caché, y luego restaurar el proceso, si hace falta.

Hay algunos procesos que, debido a la función que realizan, están poco activos, y puede ser recomendable que estén en el área de intercambio para liberar un poco la memoria RAM. Por ejemplo, un servidor SSH (mecanismo de control remoto del ordenador) tiene que estar siempre activo para atender las posibles peticiones, pero sólo empezará a trabajar de verdad cuando un usuario se conecte.

Tamaño del espacio de intercambio[editar]

Ésta es una discusión típica entre los administradores de sistemas, y una duda común que sale durante la instalación de un sistema Linux (o cualquier UNIX).

Hay una regla muy conocida que dice que "la swap ha de ser el doble de la memoria RAM instalada", pero esto ya no es válido hoy en día. Esta regla funcionaba bien antes, cuando siempre se compraba menos RAM de la que realmente se necesitaba, porque era muy cara. Tener 3 veces más memoria que la física iba bien para la mayoría de usuarios. Pero en un ordenador nuevo que tenga 1 GB de RAM, no será necesario gastar 2 GB en una partición de swap, porque probablemente no se usará.

La regla habitual usada para decidir el tamaño del área de intercambio es "pensar en cuánto querrías tener y en cuánto tienes, y poner como swap la diferencia". Por ejemplo, si un usuario necesita abrir ficheros de hasta 700 MB, pero sólo tiene 256 MB de RAM, entonces lo que le falta (aprox. 500 MB) se ha de poner como swap, como mínimo. Más swap puede ir bien, pero no será muy usada.

Si el ordenador ha de soportar mucha carga, la partición ha de ser mínimamente grande; se recomienda algo más de 128 MB.

Enlaces externos[editar]