1. Memoria Virtual
Memoria Virtual
La Memoria virtual es un concepto que permite al software usar más
memoria principal que la que realmente posee el computador. La
mayoría de los computadores tienen cuatro tipos de memoria:
registros en la CPU, la memoria cache (tanto dentro como fuera del
CPU), la memoria física (generalmente en forma de RAM, donde la CPU
puede escribir y leer directa y razonablemente rápido) y el disco duro
que es mucho más lento, pero también más grande y barato.
Muchas aplicaciones requieren el acceso a más información (código y
datos) que la que puede ser mantenida en memoria física. Esto es
especialmente cierto cuando el sistema operativo permite múltiples
procesos y aplicaciones corriendo simultáneamente. Una solución al
problema de necesitar mayor cantidad de memoria de la que se posee,
consiste en que las aplicaciones mantengan parte de su información en
disco, moviéndola a la memoria principal cuando sea necesario. Hay
varias formas de hacer esto. Una opción es que la aplicación misma sea
responsable de decidir qué información será guardada en cada sitio
(segmentación), y de traerla y llevarla. La desventaja de esto, además
de la dificultad en el diseño e implementación de cada programa, es
que es muy probable que los intereses sobre la memoria de dos o
varios programas generen conflictos entre sí: cada programador
podría realizar su diseño tomando en cuenta que es el único programa
corriendo en el sistema. La alternativa es usar memoria virtual, donde
2. Fragmentación
La fragmentación es la memoria que
queda desperdiciada al usar los
métodos de gestión de memoria que se
vieron en los métodos anteriores. Tanto
el primer ajuste, cómo el mejor y el
peor producen fragmentación externa.
La fragmentación es generada cuando
durante el reemplazo de procesos
quedan huecos entre dos o más
procesos de manera no contigua y cada
hueco no es capaz de soportar ningún
proceso de la lista de espera.
Fragmentación Externa: existe el
espacio total de memoria para
satisfacer un requerimiento, pero no es
contigua.
Fragmentación Interna: la memoria
asignada puede ser ligeramente mayor
3. Paginación
Es una técnica de manejo de memoria, en la cual el
espacio de memoria se divide en secciones físicas de
igual tamaño, denominadas marcos de página. Los
programas se dividen en unidades lógicas,
denominadas páginas, que tienen el mismo tamaño
que los marcos de páginas. De esta forma, se puede
cargar una página de información en cualquier marco
de página.
Las páginas sirven como unidad de almacenamiento
de información y de transferencia entre memoria
principal y memoria auxiliar o secundaria. Cada
marco se identifica por la dirección de marco, que
está en la posición física de la primera palabra en el
marco de página.
Las páginas de un programa necesitan estar
contiguamente en memoria, aunque el programador lo
observe de esta forma. Los mecanismos de
paginación permiten la correspondencia correcta
entre las direcciones virtuales (dadas por los
6. Segmentación Paginada
Paginación y segmentación son técnicas
diferentes, cada una de las cuales busca
brindar las ventajas enunciadas anteriormente.
Para la segmentación se necesita que estén
cargadas en memoria, áreas de tamaños
variables. Si se requiere cargar un segmento en
memoria; que antes estuvo en ella y fue
removido a memoria secundaria; se necesita
encontrar una región de la memoria lo
suficientemente grande para contenerlo, lo cual
no es siempre factible; en cambio "recargar"
una página implica solo encontrar un merco de
pagina disponible.