viernes, 13 de marzo de 2015

PAGINACION Y SEGMENTACION



PAGINACION

La paginación es un esquema de gestión de memoria muy utilizado actualmente, que consiste en dividir la memoria principal, en bloques iguales de tamaño fijo y relativamente pequeños, que se denominan marcos de pagina. De igual modo, los procesos se dividen también en bloques de tamaño fijo y de igual tamaño que los de la memoria principal, que se denominan páginas. De esta manera, las paginas en que se ha dividido un proceso, pueden asignarse a los marcos libres de la memoria principal.
           









La utilización de este esquema de gestión de memoria permite asegurar, que no se va a producir fragmentación externa, ya que cualquier marco libre, se puede asignar al proceso que lo necesite y que solo se producirá una pequeña fragmentación interna, en la última pagina del proceso, ya que los marcos se asignan como unidades, por lo tanto, si los requisitos de memoria de un proceso, no coinciden con los limites de las paginas, el último marco asignado puede estar parcialmente vacío.
 
Cada sistema operativo tiene sus propios métodos para almacenar las tablas de páginas y la mayoría asigna una tabla de páginas para cada proceso. En el bloque de control de proceso se almacena un apuntador a la tabla de páginas y cuando al despachador se le indica que inicie un proceso debe volver a cargar la tabla de páginas correspondiente


SEGMENTACION


La generalización del concepto de dividir la memoria en varias partes, definido anteriormente, introduce un aspecto importante en la administración de la memoria, que consiste en la separación de la perspectiva que el usuario tiene de la memoria lógica o virtual y la memoria física o real.
 
La perspectiva que el usuario tiene de la memoria, se fundamenta en la organización lógica de un programa en la actualidad, que no se corresponde con el concepto de la memoria física real, pero si existe, una correspondencia entre la perspectiva del usuario y la estructura de la memoria física, que permite establecer la diferencia entre la memoria lógica y la memoria física.

La memoria física está formada por un vector lineal de palabras, algunas con instrucciones y otras con datos, sin embargo, el usuario no considera la memoria como un vector lineal de palabras, si no más bien, como un conjunto de partes claramente definidas por la función que cumplen en el desarrollo del programa.
Cada una de esas partes esta agrupada de tal forma, que puedan ocupar posiciones contiguas de la memoria, pero las partes entre sí, pueden estar separadas y en cualquier orden. Al espacio que ocupan cada una de esas partes es a lo que se denomina segmento.
Un programa desde el punto de vista del usuario, está formado por un módulo principal y varios secundarios, los cuales utilizan unos módulos de código y unas estructuras de datos determinadas. Cada uno de los módulos o partes del programa tiene un nombre, que define el usuario sin preocuparse por las direcciones que estas partes van a ocupar en la memoria.
Cada una de esas partes ocupa un segmento, que tiene una longitud variable y que está definida intrínsecamente por el propósito de ese segmento en el programa. Los elementos de información que contiene un segmento, se identifican por su desplazamiento, a partir del inicio del segmento correspondiente.


COMO  ACTÚA  LA  SEGMENTACIÓN.
Aunque el usuario se puede referir a los objetos de un programa utilizando direcciones lógicas bidimensionales, la memoria física real sigue siendo una secuencia unidimensional de bytes o palabras.
Por todo ello, debemos definir una forma de implantar la correspondencia entre direcciones lógicas bidimensionales, definidas por el usuario y direcciones físicas unidimensionales. Esta correspondencia se logra por una estructura de datos que se denomina tabla segmentos.