1. Por: Braulio E. Ramírez
Administracion de Sistemas Informaticos
Sistemas Operativos
Carolina Garzon
Bogotá 26 octubre 2010
2. Memoria Virtual (Concepto)
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.
3.
4. Operación Básica
Cuando se usa Memoria Virtual, o cuando una dirección es leída o escrita
por la CPU, una parte del hardware dentro de la computadora traduce las
direcciones de memoria generadas por el software (direcciones virtuales)
en: La dirección real de memoria (la dirección de memoria física), o una
indicación de que la dirección de memoria deseada no se encuentra en
memoria principal (llamado excepción de memoria virtual)
En el primer caso, la referencia a la memoria es completada, como si la
memoria virtual no hubiera estado involucrada: el software accede donde
debía y sigue ejecutando normalmente. En el segundo caso, el sistema
operativo es invocado para manejar la situación y permitir que el programa
siga ejecutando o aborte según sea el caso. La memoria virtual es una
técnica para proporcionar la simulación de un espacio de memoria mucho
mayor que la memoria física de una máquina. Esta "ilusión" permite que
los programas se ejecuten sin tener en cuenta el tamaño exacto de la
memoria física.
La ilusión de la memoria virtual está soportada por el mecanismo de
traducción de memoria, junto con una gran cantidad de almacenamiento
rápido en disco duro. Así en cualquier momento el espacio de direcciones
virtual hace un seguimiento de tal forma que una pequeña parte de él, está
en memoria real y el resto almacenado en el disco, y puede ser referenciado
fácilmente.
5. 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.
La fragmentación puede ser:
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 que
la requerida; esta referencia es interna a la
partición, pero no se utiliza.
La fragmentación externa se puede reducir
mediante la compactación para colocar toda
la memoria libre en un solo gran bloque, pero
esta solo es posible si la relocalización es
dinámica y se hace en tiempo de ejecución.
6. 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 programas) y las
direcciones reales de la memoria que se reverencien.
Cada página consiste en z palabras contiguas; un
espacio de direcciones N de un programa consiste de n
paginas (0, 1, 2,3…n-1) (n*z direcciones virtuales) y el
espacio de memoria consiste de m marcos de páginas (0,
z, 2z,…, (m-1) z) (m*z posiciones). Una dirección virtual a
es equivalente a una dirección dada como una dupla (p,
d), en la cual p es el número de la página y del número
de la palabra dentro de la página, de acuerdo con la
relación:
a=p*z+d (0<=d<z)
p=(a/z) (parte entera de la división)
d=a mod z (resto de divisor a/z)
7. Tabla de paginación
Cada página tiene un número que se utiliza como índice en
la tabla de páginas, lo que da por resultado el número del
marco correspondiente a esa página virtual. Si el bit
presente / ausente es 0, se provoca un señalamiento (trap)
hacia el sistema operativo. Si el bit es 1, el número de
marco que aparece en la tabla de páginas se copia en los
bits de mayor orden del registro de salida, junto con el
ajuste (offset) de 12 bits, el cual se copia sin
modificaciones de la dirección virtual de entrada. Juntos
forman una dirección física de 15 bits. El registro de salida
se coloca entonces en el bus de la memoria como la
dirección en la memoria física.
En teoría, la asociación de las direcciones virtuales con las
físicas se efectúa según lo descrito. El número de página
virtual se divide en un número de página virtual (los bits
superiores)y un ajuste (los bits inferiores). El número de
página virtual se utiliza como un índice en la tabla de
páginas para encontrar la entrada de esa página virtual. El
número de marco (si existe) se determina a partir de la
tabla de páginas. El número de marco se asocia al extremo
superior del ajuste y reemplaza al número de página virtual
para formar una dirección física que se puede enviar a la
memoria.
La finalidad de la tabla de páginas es asociar las páginas
virtuales con los marcos. En términos matemáticos, la tabla
de páginas es una función, cuyo argumento es el número
de página virtual y como resultado el número del marco
físico. Mediante el resultado de esta función, se puede
reemplazar el campo de la página virtual de una dirección
virtual por un campo de marco, lo que produce una
dirección en la memoria física
8. El espacio de direcciones lógico de un proceso puede ser no contiguo.
Se divide la memoria física en bloques de tamaño fijo llamados marcos (frames).
Se divide la memoria en bloques de tamaño llamados páginas.
Se mantiene información en los marcos libres.
Para correr un programa de n paginas de tamaño, se necesitan encontrara n marcos y cargar el programa.
Se establece una tabla de páginas para trasladar las direcciones lógicas a físicas.
Se produce fragmentación interna.
Ventajas de la paginación
Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara
bajo la solicitud.
No es necesario que las paginas estén contiguas en memoria, por lo que no se necesitan procesos de compactación
cuando existen marcos de paginas libres dispersos en la memoria.
Es fácil controlar todas las páginas, ya que tienen el mismo tamaño.
El mecanismo de traducción de direcciones (DAT) permite separar los conceptos de espacio de direcciones y
espacios de memoria. Todo el mecanismo es transparente al usuario.
Se libera al programador de la restricción de programar para un tamaño físico de memoria, con lo que s e aumenta
su productividad. Se puede programar en función de una memoria mucho más grande a la existente.
Al no necesitarse cargar un programa completo en memoria para su ejecución, se puede aumentar el número de
programas multiprogramándose.
Se elimina el problema de fragmentación externa
9. Segmentación
Es un esquema de manejo de memoria mediante el cual la
estructura del programa refleja su división lógica;
llevándose a cabo una agrupación lógica de la información
en bloques de tamaño variable denominados segmentos.
Cada uno de ellos tienen información lógica del programa:
subrutina, arreglo, etc. Luego, cada espacio de direcciones
de programa consiste de una colección de segmentos, que
generalmente reflejan la división lógica del programa.
La segmentación permite alcanzar los siguientes objetivos:
Modularidad de programas: cada rutina del programa puede
ser un bloque sujeto a cambios y recopilaciones, sin afectar
por ello al resto del programa.
Estructuras de datos de largo variable: ej. Stock, donde
cada estructura tiene su propio tamaño y este puede variar.
Protección: se puede proteger los módulos del segmento
contra accesos no autorizados.
Compartición: dos o más procesos pueden ser un mismo
segmento, bajo reglas de protección; aunque no sean
propietarios de los mismos.
Enlace dinámico entre segmentos: puede evitarse realizar
todo el proceso de enlace antes de comenzar a ejecutar un
programa. Los enlaces se establecerán solo cuando sea
necesario
10. 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.
A nivel de paginación, si quiere referenciar en forma cíclicas n
paginas, estas deberán ser cargadas una a una generándose
varias interrupciones por fallas de paginas; bajo segmentación,
esta página podría conformar un solo segmento, ocurriendo
una sola interrupción, por falla de segmento. No obstante, si
bajo segmentación, se desea acceder un área muy pequeña
dentro de un segmento muy grande, este deberá cargarse
completamente en memoria, desperdiciándose memoria; bajo
paginación solo se cargara la página que contiene los ítems
referenciados.
Puede hacerse una combinación de segmentación y paginación
para obtener las ventajas de ambas. En lugar de tratar un
segmento como una unidad contigua, este puede dividirse en
páginas. Cada segmento puede ser descrito por su propia tabla
de páginas