Memoria Definicin y Aspectos Generales La Segmentacin de memoria es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su divisin lgica; llevndose a cabo una agrupacin lgica de la informacin en bloques de tamao variable denominados segmentos. Cada uno de ellos tienen informacin lgica del programa: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una coleccin de segmentos, que generalmente reflejan la divisin lgica del programa. Obviamente este sistema de gestin de memoria es utilizado en Sistemas operativos avanzados, pero ya existan muestras de su actividad desde los S.O.s Unix y D.O.S. Objetivos alcanzados con la segmentacin de memoria 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: donde cada estructura tiene su propio tamao y este puede variar. (Stack) Proteccin: se puede proteger los mdulos del segmento contra accesos no autorizados. Comparticin: dos o ms procesos pueden ser un mismo segmento, bajo reglas de proteccin; aunque no sean propietarios de los mismos. Enlace dinmico entre segmentos: puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecern solo cuando sea necesario. La segmentacin Paginada ayuda al proceso de gestin de memoria Puede hacerse una combinacin de segmentacin y paginacin para obtener las ventajas de ambas. En lugar de tratar un segmento como una unidad contigua, este puede dividirse en pginas. Cada segmento puede ser descrito por su propia tabla de pginas. Los segmentos son usualmente mltiplos de pginas en tamao, y no es necesario que todas las pginas se encuentren en memoria principal a la vez; adems las pginas de un mismo segmento, aunque se encuentren contiguas en memoria virtual; no necesitan estarlo en memoria real. La segmentacin Paginada ayuda al proceso de gestin de memoria SMT (tabla de mapas de segmentos): una para cada proceso. En cada entrada de la SMT se almacena la informacin descrita bajo segmentacin pura, pero en el campo de direccin se indicara la direccin de la PMT (tabla de mapas de pginas) que describe a las diferentes pginas de cada segmento. PMT (tabla de mapas de pginas): una por segmento; cada entrada de la PMT describe una pgina de un segmento; en la forma que se presento la pagina pura. TBM (tabla de bloques de memoria): para controlar asignacin de pginas por parte del sistema operativo. JT (tabla de Jobs): que contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria. En el caso, de que un segmento sea de tamao inferior o igual al de una pagina, no se necesita tener la correspondiente PMT puede arreglarse un bit adicional (S) a cada entrada de la SMT, que indicara si el segmento esta paginado o no. La segmentacin paginada tiene su propio esquema Las pginas de almacenamiento virtual, que son contiguas en este almacenamiento, no necesitan ser contiguas en el almacenamiento real. El direccionamiento es tridimensional con una direccin de almacenamiento virtual v=(s,p,d): Comparticin de Segmentos Una de las ventajas de la segmentacin sobre la paginacin es que se trata ms de un hecho lgico que fsico: En un sistema de segmentacin, una vez que un segmento ha sido declarado como compartido, entonces las estructuras que lo integran pueden cambiar de tamao. Lo anterior no cambia el hecho lgico de que residen en un segmento compartido. Dos procesos pueden compartir un segmento con solo tener entradas en sus tablas generales que apunten al mismo segmento del almacenamiento primario Los Bloques Los bloques: No necesitan ser de igual tamao. Los bloques separados no necesitan ser adyacentes. Deben estar compuestos de posiciones contiguas de almacenamiento. Sin Embargo Se complica la proteccin de bloques de memoria de un proceso de usuario. Es ms difcil limitar el rango de acceso de cualquier programa Las Ventajas de la Segmentacin El programador puede conocer las unidades lgicas de su programa, dndoles un tratamiento particular. Es posible compilar mdulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos. Debido a que es posible separar los mdulos se hace ms fcil la modificacin de los mismos. Cambios dentro de un modulo no afecta al resto de los mdulos. Es fcil el compartir segmentos. Es posible que los segmentos crezcan dinmicamente segn las necesidades del programa en ejecucin. Existe la posibilidad de definir segmentos que aun no existan. As, no se asignara memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, serian los Arrays cuya dimensin no se conoce hasta tanto no se comienza a ejecutar el programa. En algunos casos, incluso podra retardar la asignacin de memoria hasta el momento en el cual se referencia el Array u otra estructura de dato por primera vez. Las Desventajas Hay un incremento en los costos de hardware y de software para llevar a cabo la implantacin, as como un mayor consumo de recursos: memoria, tiempo de CPU, etc. Debido a que los segmentos tienen un tamao variable se pueden presentar problemas de fragmentacin externas, lo que puede ameritar un plan de reubicacin de segmentos en memoria principal. Se complica el manejo de memoria virtual, ya que los discos almacenan la informacin en bloques de tamaos fijos, mientras los segmentos son de tamao variable. Esto hace necesaria la existencia de mecanismos ms costosos que los existentes para paginacin. Al permitir que los segmentos varen de tamao, puede ser necesarios planes de reubicacin a nivel de los discos, si los segmentos son devueltos a dicho dispositivo; lo que conlleva a nuevos costos. No se puede garantizar, que al salir un segmento de la memoria, este pueda ser trado fcilmente de nuevo, ya que ser necesario encontrar nuevamente un rea de memoria libre ajustada a su tamao. La comparticion de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales de hardware y software. Estas desventajas bien pueden ser minimizadas por la Segmentacin Paginada, sin embargo esta tambin tiene desventajas y ventajas Segmentacin Paginada: No todo es color de Rosa Ventajas de la segmentacin paginada El esquema de segmentacin paginada tiene todas las ventajas de la segmentacin y la paginacin: Debido a que los espacios de memorias son segmentados, se garantiza la facilidad de implantar la comparticion y enlace. Como los espacios de memoria son paginados, se simplifican las estrategias de almacenamiento. Se elimina el problema de la fragmentacin externa y la necesidad de compactacin. Desventajas de la segmentacin paginada Las tres componentes de la direccin y el proceso de formacin de direcciones hace que se incremente el costo de su implantacin. El costo es mayor que en el caso de de segmentacin pura o paginacin pura. Se hace necesario mantener un nmero mayor de tablas en memoria, lo que implica un mayor costo de almacenamiento. Segmentacin Paginada: No todo es color de Rosa La Peor de las Desventajas: Sigue existiendo el problema de fragmentacin interna de todas- o casi- todas las pginas finales de cada uno de los segmentos. Bajo paginacin pura se desperdician solo la ltima pgina asignada, mientras que bajo segmentacin paginada el desperdicio puede ocurrir en todos los segmentos asignados. Conclusiones En la memoria principal son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. La memoria virtual es aquella que le ofrece a las aplicaciones la ilusin de que estn solas en el sistema y que pueden usar el espacio de direcciones completo. Las direcciones de memoria son de tres tipo: fsicas, lgicas y lineales. La paginacin es una tcnica de gestin de memoria en la cual el espacio de memoria se divide en secciones fsicas de igual tamao llamadas marcos de pagina, las cuales sirven como unidad de almacenamiento de informacin. La segmentacin es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su divisin lgica; llevndose a cabo una agrupacin lgica de la informacin en bloques de tamao variable denominados segmentos. Estos segmentos pueden ser compartidos por varios procesos. Pero eso no cambia el hecho lgico de que residen en un segmento compartido. Conclusiones En un sistema de segmentacin, una vez que un segmento ha sido declarado como compartido, entonces las estructuras que lo integran pueden cambiar de tamao. Dos procesos pueden compartir un segmento con solo tener entradas en sus tablas generales que apunten al mismo segmento del almacenamiento primario. Con la segmentacin se complica el manejo de memoria virtual, ya que los discos almacenan la informacin en bloques de tamaos fijos, mientras los segmentos son de tamao variable. Esto hace necesaria la existencia de mecanismos ms costosos que los existentes para paginacin. Al permitir que los segmentos varen de tamao, puede ser necesarios planes de reubicacin a nivel de los discos, si los segmentos son devueltos a dicho dispositivo; lo que conlleva a nuevos costos. No se puede garantizar, que al salir un segmento de la memoria, este pueda ser trado fcilmente de nuevo, ya que ser necesario encontrar nuevamente un rea de memoria libre ajustada a su tamao. La comparticion de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales de hardware y software. El Sharingans Team les Agradece su Atencin