Unidad de manejo de memoria , Segmentación y tablas de páginas

martes, 30 de noviembre de 2010

Segmentación de memoria

Sistema de gestión de memoria en un sistema operativo
Divide la memoria en segmentos, cada uno de los cuales tiene una longitud variable, que está definida intrínsecamente por el tamaño de ese segmento del programa. Los elementos dentro de un segmento están identificados por su desplazamiento con respecto al inicio del segmento: la primera instrucción del programa, la séptima entrada de la pila, la quinta instrucción de la función Sqrt(), etc. (PONER CITA DE Silberschatz, Galvin - Operating System Concepts 7th Pg. 303)

La MMU no sabe nada sobre las distintas regiones de los procesos. Sólo entiende de páginas. El sistema operativo debe guardar para cada proceso una tabla de regiones que especifiquen qué paginas pertenecen a cada región


Unidad De Manejo De Memoria
La unidad de manejo de memoria (MMU) es parte del procesador.  Sus funciones son:
*Convertir las direcciones lógicas emitidas por los procesos en direcciones físicas.
*Comprobar que la conversión se puede realizar.  La dirección lógica  podría no tener un dirección física
asociada.  Por ejemplo, la pagina correspondiente a una dirección se puede haber trasladado a una zona de
almacenamiento secundario temporalmente.
Comprobar que el proceso que intenta acceder a una cierta dirección de memoria tiene permisos para
ello.
La MMU se Inicializa para  cada proceso del sistema.  Esto permite que cada proceso pueda usar el
rango completo de direcciones lógicas (memoria virtual), ya que las conversiones de estas direcciones
serán distintas para cada proceso.
En todos los procesos se configura la MMU para que la zona del núcleo solo se pueda acceder en
modo privilegiado del procesador.
La configuración correspondiente al espacio de memoria del núcleo es idéntica en todos los procesos.
El objetivo del intercambio es dar cabida a la ejecución de mas aplicaciones de las que pueden residir
simultáneamente en la memoria del sistema:
Consiste en trasladar el código y los datos de un proceso completo de memoria al sistema de
almacenamiento secundario , para cargar otro previamente almacenado, no permite a un proceso utilizar
mas memoria RAM de la que realmente existe en el sistema.  Esta técnica  puede ser ineficiente ya que se
tiene que hacer el intercambio completo del proceso, aunque éste solo vaya a ejecutar una pequeña porción
del código.
Durante el intercambio un proceso puede ser sacado temporalmente de memoria y llevado a un lugar
especial del disco y posteriormente vuelto a memoria y continuada su ejecución..
El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar
copias de las imágenes de memoria de todos los usuarios
Espacio De Direcciones
Los espacios de direcciones involucrados en el manejo de la memoria son de tres tipos:
Direcciones físicas:  son aquellas que referencian alguna posición en la memoria física.
Direcciones lógicas :  son las direcciones utilizadas por los procesos.  Sufren una serie de
transformaciones , realizadas por el procesador (la MMU), antes de convertirse en direcciones físicas.
Direcciones lineales:  direcciones lineales se obtienen a partir de direcciones lógicas tras haber aplicado
una transformación dependiente de la arquitectura.
Los programas de usuario siempre tratan con direcciones virtuales ; nunca ven las direcciones físicas reales
Tablas de páginas
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

0 comentarios: