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
No hay comentarios:
Publicar un comentario