viernes, 22 de mayo de 2015

Segmentación Paginada

Conceptos a tener en cuenta

nPaginación y segmentación son dos técnicas diferentes.
n
nEl espacio de direcciones se divide en segmentos, los cuales corresponden a una rutina (procedimiento o función),un programa o un conjunto de datos, y contiene todo aquello que corresponde con un sub-espacio de direcciones independientes.

nLa Paginación es un espacio virtual de direcciones, su unidad de medición se denomina pagina, todas las páginas son de un mismo tamaño donde a cada marco de pagina se le asigna un proceso que no necesariamente debe ser contiguo para generar proceso en memoria.


El controlador DMA descarga las entradas y salidas de datos en periféricos rápidos, ya que el uso de interrupciones se vuelve inadecuado en estos casos.

La CPU programa al controlador de DMA, indicando las direcciones de memoria que deben emplear y el tipo de transferencia.

Cuando un periférico solicita transferencia de datos mediante DMA, el controlador se lo hace saber al procesador para que dé el visto bueno y acceda a la transferencia usando los buses d
el sistema. 







nDebido a que los espacios de memorias son segmentados, se garantiza la facilidad de implantar la comparición y enlace.
n
nComo los espacios de memoria son paginados, se simplifican las estrategias de almacenamiento
n
nSe elimina el problema de la fragmentación externa y la necesidad de compactación.

nLas tres componentes de la dirección y el proceso de formación de direcciones hace que se incremente el costo de su implantación. El costo es mayor en el caso de segmentación puro o paginación pura
n
nSe hace necesario mantener un numero mayor de tablas en memoria, lo que implica un mayor costo de almacenamiento



La segmentación paginada intenta combinar lo mejor de los dos esquemas anteriores. La segmentación proporciona soporte directo a las regiones del proceso y la paginación permite un mejor aprovechamiento de la memoria y una base para construir un esquema de memoria virtual.
 
  con esta técnica un segmento esta formado por un conjunto de paginas que se pueden usar y no tienen que estar contiguos en memoria para su uso.
 
  La MMU utiliza una tabla de segmentos, tal que cada entrada de la tabla apunta a una tabla de paginas.

Los segmentos son usualmente múltiplos de páginas en tamaño, y no es necesario que todas las páginas se encuentren en memoria principal a la vez; además las páginas de un mismo segmento, aunque se encuentren contiguas en memoria virtual; no necesitan estarlo en memoria real.

El direccionamiento es tridimensional con una dirección de almacenamiento virtual de tres componentes.



V=(S,P,D)
S = Número Segmento
P = Número Página
D = Desplazamiento

nSMT (Tabla de mapas de segmentos): Una para cada proceso. En cada entrada de la SMT se almacena la información descrita bajo segmentación pura, pero en el campo de dirección se indicara la dirección de la PMT que describe a las diferentes paginas de cada segmento.
nPMT (Tabla de mapas de paginas):Una por cada segmento. Cada entrada de la PMT describe una pagina de un segmento; en la forma que se presento la pagina pura.
nTBM (Tabla de bloques de memoria): Para controlar asignación de paginas por parte del sistema operativo
nJT (Tabla de Jobs): Contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria.























POLITICAS DE REUBICACION Y REEMPLAZO

Politica de Reubicacon 

La re ubicación de un programa, se refiere a la capacidad de cargar y ejecutar un programa determinado en una posición arbitraria de memoria, en contraposición a un conjunto fijo de posiciones especificas durante la compilación de dicho programa.

Las instrucciones de un proceso cargado en memoria contendrán referencias a posiciones de memoria de dos tipos.


Referencias a posición de memoria

Tipo 1.  Referencias a datos empleados en instrucciones de carga, almacenamiento y algunas instrucciones aritmetico-logicas.
Tipo 2.  Referencias a otras instrucciones empleadas fundamentalmente en bifurcaciones de control de flujo o en instrucciones de llamadas.

Tipos de Direcciones

Tipo 1.  Una dirección lógica o virtual es un identificador utilizado para referenciar información dentro del espacio de direcciones de un programa y, por tanto, es independiente de la asignación actual de datos a memoria, debiéndose realizar una traducción a dirección física, antes de poder realizar un acceso a memoria.
Tipo 2.  Una dirección física o absoluta designa una posición real de memoria física, donde se almacena información en tiempo de ejecución.

Tipos de Esquemas

Dependiendo de como y cuando, tenga lugar la traduccion del espacio de direcciones virtuales al espacio de direcciones fisicas, en un esquema de reubicacion determinado, pueden considerarse dos tipos de estrategias:
Tipo 1.  Reubicación estática.
Tipo 2.  Reubicación Dinámica.

Reubicacion Estatica 

Implica generalmente que la reubicación es realizada, antes o durante la carga del proceso en memoria.
Las constantes(valores literales), los desplazamientos relativos al PC, no dependen de esta condición y no necesitan ser ajustados durante la reubicación.

Reubicacon Dinamica 

Implica que la correspondencia entre el espacio de direcciones virtuales y el espacio de direcciones físicas se efectúan en tiempo de ejecución. Normalmente con asistencia de hardware.
Cuando el proceso en cuestión esta siendo ejecutado, todas sus referencias a memoria son reubicadas durante la ejecución antes de acceder realmente a la memoria.


Politcas de Reemplazo 

Cuando todos los marcos de memoria principal están ocupados y es necesario traer a memoria una nueva pagina para atender un fallo de pagina.
La política se encarga de seleccionar la pagina a reemplazar de entre las que se encuentren actualmente en memoria.
<



Política de Reemplazo 

Algunos de los marcos de memoria principal pueden estar bloqueados, cuando un marco se encuentra bloqueado, la pagina cargada actualmente en el no puede ser reemplazada.
La mayoria de nucleo del SO asi como las estructuras de control son albergados en marcos bloqueados.

Política de Reloj 

La forma mas simple de esta política requiere asociar un bit adicional a cada marco, denominado bit de uso. Cuando se cargue una pagina por primera vez, este bit se pone a 0 y cuando se hace referencia posteriormente a la pagina el bit de uso se pone a 1. Para el algoritmo de reemplazo de paginas, el conjunto de marcos candidatos a ser reemplazado se considera como un buffer circular con un puntero asociado.

El alcance es local si los candidatos son de un solo proceso y global si procede de toda la memoria.

Cuando llega el momento de reemplazar una pagina, el SO recorre el buffer buscando un marco con el bit de uso a 0, eligiendo para reemplazar el primero que encuentre. Cada vez que se encuentra un marco con el bit de uso a 1, se pone a 0.



Traducción Dinámica de Direcciones en Sistemas de Paginación / Segmentación

Paginacion 

¨La paginación consiste en considerar el espacio de direcciones lógicas de cada proceso como un conjunto de bloques de tamaño consistente llamados paginas. Cada dirección lógica manejada para un proceso estará conformada por un par de valores [pagina: desplazamiento],[p:d].

Metodo Basico 
¨La memoria física se compone en bloques de tamaño fijo denominados marcos.
¨La memoria lógica también se compone en bloques del mismo tamaño denominados páginas  


}Una dirección generada por la CPU se divide en:
número de página (p)
 se usa como índice a una tabla de páginas que contiene la dirección de cada página en la memoria física
desplazamiento en la página (d)
se combina con la dirección básica para definir la dirección de memoria que se envía a la unidad de memoria
para un espacio de direcciones de 2m y de páginas 2n




Estructura De La Tabla De Páginas 
¨Un apuntador a tabla de páginas se almacena con los demás valores de registro en el bloque de control de procesos.
¨Cuando se le dice al despachador que inicie un proceso, debe recargar los registros del usuario y definir los valores correctos de la tabla de páginas de hardware a partir de la tabla de páginas de usuario que esta almacenada.

Segmentación 

¨La segmentación es un esquema de administración de la memoria que soporta la visión que el usuario tiene de la misma
¨Un espacio de direcciones lógicas es una colección de segmentos.
¨Cada segmento tiene un nombre y una longitud
¨Las direcciones especifican tanto el nombre del segmento como el desplazamiento dentro del segmento
¨Por lo tanto, el usuario especifica cada dirección mediante dos cantidades: un nom
bre de segmento y un desplazamiento.


¨En la paginación el usuario especificaba solamente una única dirección, que el hardware particionaba en número de página y desplazamiento, siendo todo ello invisible al programador.
¨La transformación se efectúa por medio de una tabla de segmentos.
¨Cada entrada de la tabla de segmentos tiene una base de segmento y un límite
¨El desplazamiento d de la dirección lógica tiene que estar comprendido entre 0 y el límite de segmento. En caso contrario se produce una excepción al sistema operativo 





Implementacon de tablas de segmento 
¨Al igual que la tabla de páginas, la tabla de segmentos puede situarse bien en registros rápidos o bien en memoria
¨Con tantos segmentos no es factible mantener la tabla de segmentos en registros, de modo que tiene que mantenerse en memoria

Un programa en ejecución hace referencia a la dirección virtual v = (p,d).
Cada entrada en el almacenamiento asociativo se busca de forma simultánea para la página “p”:
Se obtiene “p ’ ” como el marco de página correspondiente a la página “p”.
Se concatena “p ’ ” con “d” formando la dirección real “r”.
Cada una de las células del almacenamiento asociativo se registra de manera simultánea: Hace costoso el almacenamiento asociativo.
Implementar la transformación asociativa pura resulta demasiado costoso, tal lo ocurrido con la implementación de la transformación directa pura utilizando “caché”.


¨Se utiliza un almacenamiento asociativo capaz de mantener solo un pequeño porcentaje del mapa completo de páginas para un proceso





Traducción Dinámica de Direcciones en Sistemas de Paginación / Segmentación

¨Se considera la traducción dinámica de direcciones de virtuales a reales en un sistema de paginación / segmentación utilizando la combinación de transformación asociativa / directa



Paginación y Segmentación

Paginacion

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 esta 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
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 esta 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

¿Quiere esto decir que la unidad de intercambio de memoria es el byte? Si lo fuera, daría lugar a que continuamente se estuviesen generando operaciones de E/S, lo cual sería poco eficaz. Claramente, parece más conveniente utilizar bloques más grandes, para aprovechar de manera más eficiente cada operación de E/S.



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.







Estructura de la tabla de paginas
Protección: Expresa los permisos de acceso del proceso. En caso de tener permiso para la operación de lectura/escritura que se va a realizar, se consulta el resto de los campos.
 Bit de Presencia: Indica si la página está presente en memoria principal o no. Si se encuentra en RAM, también tienen sentido los siguientes campos.
 Marco Ocupado: Si la página se encuentra en memoria principal, este campo expresa el marco que la contiene.
 Modificada (Bit de ensuciada): Este campo indica si el contenido de la página ha sido modificado desde que se trajo de la memoria secundaria.

 Referenciada: Este campo booleano se pone a cierto cada vez que se hace referencia a cualquier dirección de la página. Lo utiliza el sistema operativo para ayudar a los algoritmos de sustitución de páginas.
Características de la paginación
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 en páginas de tamaño, se necesitan encontrar n marcos y cargar el programa.
Se establece una tabla de páginas para trasladar las direcciones lógicas a físicas.
Se produce fragmentacion  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 páginas 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.

Desventajas de la paginación
El costo de hardware y software se incrementa, por la nueva información que debe manejarse y el mecanismo de traducción de direcciones necesario. Se consumen muchos más recursos de memoria, tiempo en el CPU para su implantación.
Se deben reservar áreas de memoria para las PMT de los procesos. Al no ser fijo el tamaño de estas, se crea un problema semejante al de los programas (cómo asignar un tamaño óptimo sin desperdicio de memoria, u ovearhead del procesador).
Segmentacion 
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: ejm. Stack, 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.

Ventajas de la segmentación
El esquema de segmentación ofrece las siguientes ventajas: 
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.
Hay un incremento en los costos de hardware y de software para llevar a cabo la implantación, así como un mayor consumo de recursos: memoria, tiempo de CPU, etc.
Debido a que los segmentos tienen un tamaño variable se pueden presentar problemas de fragmentación externas, lo que puede ameritar un plan de reubicación de segmentos en memoria principal.
Se complica el manejo de memoria virtual, ya que los discos almacenan la información en bloques de tamaños fijos, mientras los segmentos son de tamaño variable. Esto hace necesaria la existencia de mecanismos más costosos que los existentes para paginación.
Al permitir que los segmentos varíen de tamaño, puede ser necesarios planes de reubicación 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 traído fácilmente de nuevo, ya que será necesario encontrar nuevamente un área de memoria libre ajustada a su tamaño.
La comparticion de segmentos permite ahorrar memoria, pero requiere de mecanismos adicionales da hardware y software.
Estas desventajas tratan de ser minimizadas, bajo la técnica conocida como Segmentación paginada.

Bibliografia
http://tododemicroprocesadores.blogspot.com/2012/08/gestion-de-memoria-segmentacion-y.html