martes, 14 de abril de 2009

MEMORIA VIRTUAL EN ORACLE

MEMORIA VIRTUAL EN ORACLE

Oracle puede utilizar la memoria virtual proporcionada por el SO para simular memoria a base de algún dispositivo de almacenamiento como el disco duro.

La memoria virtual está mapeada en la RAM. Cuando no hay suficiente memoria con ésta para ejecutar los programas (en caso de Oracle las sentencias, búsquedas, etc) se necesita un espacio auxiliar que normalmente suele ser el disco duro. Para el traspaso de información se utilizan dos técnicas principales: el Paging o paginación y el Swapping.


Paginación

La paginación consiste en dividir los programas en pequeños bloques o páginas, de manera que sea más fácil moverlos de memoria a disco y viceversa. De la misma forma, la memoria se divide en marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, minimizando así la fragmentación interna y evitando la externa.

En un momento cualquiera, la memoria se encuentra ocupada con páginas de diferentes procesos, mientras que algunos marcos están disponibles para su uso. El sistema operativo mantiene una lista de estos últimos marcos, y una tabla por cada proceso, donde consta en qué marco se encuentra cada página del proceso. De esta forma, las páginas de un proceso pueden no estar contiguamente ubicadas en memoria, y pueden intercalarse con las páginas de otros procesos.

En la tabla de páginas de un proceso, se encuentra la ubicación del marco que contiene a cada una de sus páginas. Las direcciones lógicas ahora se forman como un número de página y de un desplazamiento dentro de esa página (conocido comúnmente como offset). El número de página es usado como un índice dentro de la tabla de páginas, y una vez obtenida la dirección del marco de memoria, se utiliza el desplazamiento para componer la dirección real o dirección física. Este proceso se realiza en una parte del ordenador específicamente diseñada para esta tarea, es decir, es un proceso hardware y no software.

De esta forma, cuando un proceso es cargado en memoria, se cargan todas sus páginas en marcos libres y se completa su tabla de páginas.



Swapping

El Swapping es el procedimiento de mover los bloques de memoria en los que están algunos procesos que no se están utilizando, desde la memoria principal a un espacio Swap dejando así hueco libre para poder cargar en memoria otros procesos que sí se van a utilizar.

El espacio Swap o espacio de intercambio es una zona de disco (un fichero o una partición) que se usa para guardar las imágenes de los procesos que no han de mantenerse en memoria física.

Este procedimiento es muy similar a la paginación, con la diferencia principal de que el directorio Swap funciona exactamente igual que la memoria RAM, por lo que puede almacenar datos privados, contraseñas y todo lo que almacena ésta. Sin embargo, en la paginación, únicamente se sacan de memoria páginas pertenecientes a procesos que no se estén utilizando, además de que se pueden sacar solo algunas páginas de los procesos y no éstos enteros como se hace en el Swapping.

Con respecto al tamaño que debe tener el directorio Swap, hay muchas discusiones sobre ello como por ejemplo la antigua creencia de “El Swap debe tener el doble de tamaño que la RAM.” cosa que no es válida hoy día debido a la gran capacidad de la memoria RAM de la mayoría de ordenadores.

Como conclusión, hay que destacar que el uso de la memoria virtual por parte de Oracle, va a influir bastante en el rendimiento, disminuyéndolo drásticamente en comparación con el uso únicamente de la memoria RAM.


No hay comentarios:

Publicar un comentario