miércoles, 18 de mayo de 2016

Paginación (Técnica actual)


Para solucionar el problema de fragmentación externa dada con particiones variables. Usar particiones fijas en memoria virtual y física

Memoria Virtual



Paginación


Permiten la ubicación no contigua de programas para combatir la fragmentación y la degradación de la memoria. Al poder ubicarse de forma no contigua, un programa ya no necesita un hueco de su tamaño, sino que la cantidad total de memoria libre sea mayor o igual. 
Traduciendo direcciones virtuales

Una dirección virtual tiene dos partes:
Número de página virtual y offset
Número de página virtual es un índice en tabla de páginas
Entrada en tabla de página contiene número de marco de página
Dirección física se traduce a:

 Número Marco de página:offset



Ventajas de la Paginación


Fácil para asignar memoria física
Memoria física se administra usando una lista de marcos de páginas libres
Para asignar un marco de página, se saca de la lista
Fragmentación externa no es un problema
Fácil quitarle páginas a programas
Páginas son del mismo tamaño
Uso de bit válido para saber que páginas ha perdido el proceso
Tamaño de páginas definido como múltiplos de tamaños de bloques de disco

Desventajas de Paginación


Expone Fragmentación interna
Proceso no puede usar memoria de marco de página que le sobra a otro proceso
Referencia a memoria en 2 pasos
Tabla de página y luego Memoria
Solución, usar hardware como cache para acelerar referencias : Memoria requerida para mantener tablas de páginas puede ser grande
Necesita una entrada en tabla de página por número de página virtual

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.Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa. 

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: Donde cada estructura tiene su propio tamaño y este puede variar. 
Protección: Se pueden 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 sólo cuando sea necesario.


Ventajas y Desventajas


El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular. 
Es posible compilar módulos 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 módulos, se hace más fácil la modificación de los mismos. Cambios dentro de un módulo no afecta al resto de los módulos. 
Es fácil el compartir segmentos. 
Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución. 
Existe la posibilidad de definir segmentos que aún no existan. Así, no se asignará memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, serían los arreglos cuya dimensión no se conoce hasta tanto no se comienza a ejecutar el programa. En algunos casos, incluso podría retardar la asignación de memoria hasta el momento en el cuál se referencia el arreglo u otra estructura de datos por primera vez.

No hay comentarios.:

Publicar un comentario