Componentes de los PC
Lección: 27
Capítulo: Administración de memoria
Asignación simple
M
E
M
O
R
I
A
Sistema Operativo
La parte residente del sistema operativo estará en memoria durante la ejecución
de los distintos programas. El área LIBRE será la destina a cada programa.
Como cada programa ocupa una cantidad de memoria distinta, pueden encontrarse
programas muy pequeños que desperdicien gran parte de la memoria real del
computador y otro programas muy grandes que no entren en ella.
Libre
Swapping
Es un método que consiste en que algunos o todos los programas que no se estén
ejecutando (detenidos o en espera de entrada/salida) sean desplazados de
memoria hacia un dispositivo periférico y luego vueltos a traer cuando vayan a
continuar su ejecución.
Particiones reales
Dentro de la modalidad de multiprogramación es la situación que se presenta
cuando la memoria alcanza para que todos los programas que se están ejecutando
intercaladamente residan en ella hasta su terminación.
El esquema de particiones reales se basa en la división de la memoria en
particiones, cada una destinada a alojar un programa distinto. Hay dos grandes
variantes:
Particiones reales fijas: La memoria se estructura en número fijo de
particiones, cada una con un tamaño dado. La cantidad de memoria de cada
partición
puede ser reasignada, pero ello requiere que no se esté ejecutando ningún
programa en ninguna partición. Para definir el tamaño de las distintas
particiones
se debe considerar, entre otras cosas, el tamaño de los programas que se
ejecutan. El desaprovechamiento más frecuente es el desperdicio de cada
partición,
ya que difícilmente los programas ocupen el tamaño justo de la partición.
Particiones reales variables: Esta variante permite que la memoria asignada a un
programa no sea contigua y, de esa forma, aprovechar los huecos que se
generen a lo largo de la ejecución de otros programas. A su vez esta forma de
partición admite 2 posibilidades:
cantidad fija de particiones: La cantidad de programas que integran la mezcla de
multiprogramación tiene como máximo el número de particiones existentes.
cantidad variable de particiones: La cantidad de programas alojados en memoria
en ejecución depende de la capacidad total de memoria y de la cantidad de
la misma requerida por cada programa.
Particiones virtuales
Eliminar las restricciones de memoria es un paso importante para lograr
implementar sistemas de aplicación a un costo menor, en menor tiempo y en un
rango
de memorias reales mayor. En consecuencia se debe lograr un mayor espacio de
memoria pero sin ampliar la memoria real.
La memoria virtual es un espacio de direcciones cuyo tamaño máximo está
determinado por el esquema de direccionamiento del computador (es decir, por la
cantidad máxima de bytes posibles de direccionar que depende de la cantidad de
bits o dígitos binarios utilizados para expresar una dirección.
El almacenamiento que puede ser directamente accedido por el computador (memoria
principal) se denomina memoria real. El espacio de la memoria real es un
conjunto de ubicaciones físicas de memoria en el cual las instrucciones y datos
de programa deberán ser ubicados para su procesamiento. Los programas se
refieren a los datos e instrucciones por la dirección de memoria virtual sin
conocer la ubicación física de memoria real.
Cuando no existe memoria virtual no hay diferenciación entre el espacio de
direcciones y la memoria real; el espacio de direcciones que puede ser usado
en los programas tiene idéntico tamaño al espacio de memoria real posible. Si se
utiliza memoria virtual, el espacio de direcciones disponibles para los
programas es aquél determinado por el tamaño de la memoria virtual implementada
y no el espacio de direcciones provisto por la memoria real disponible
(el espacio de la memoria virtual será mayor que el de la memoria real).
La memoria virtual se llama así porque representa una imagen de memoria en lugar
de una memoria física del procesador. Dado que la memoria virtual no existe
como una entidad física de memoria principal, las instrucciones y datos de un
programa referenciados por direcciones virtuales deben ser contenidos en
alguna ubicación física de memoria para ser ejecutados.
Los contenidos de la memoria virtual están divididos en porciones o secciones
(páginas) de tamaño fijo. El programa está completo en la memoria virtual
pero en la memoria real sólo están algunas páginas del mismo que van cambiando
automáticamente durante la ejecución.
A su vez, la memoria real también está dividida en secciones (bloques) de igual
tamaño que las páginas. Cuando se debe ejecutar un programa, éste es traído
a la memoria virtual y las instrucciones y datos del mismo son transferidos
entre la memoria virtual y la real de a una sección por vez durante la ejecución
del programa. Una sección será llevada a la memoria real sólo cuando es
requerida. Por otro lado, una sección que está en la memoria real sólo será
reescrita
en la memoria virtual cuando la memoria real asignada a esa sección es requerida
por otra sección del mismo o de otro programa, siempre que no se esté
ejecutando y, además, si ha sido modificada.
En general, se controla la actividad de las secciones de todos los programas en
ejecución a fin de mantener, en lo posible, en memoria real a las secciones
más activas o usadas, dejando las menos activas en la memoria virtual.
El aprovechamiento de la memoria real que supone esta forma de utilización es
muy superior a cualquier otra forma de asignación de memoria.
El hardware de traducción de direcciones o la función interna de mapping son los
mecanismos por los cuales se pueden traducir las direcciones de memoria
virtual en direcciones de memoria real durante la ejecución de las
instrucciones.
La memoria virtual presenta:
Ventajas:
con respecto a la performance del sistema: Se cuenta con una memoria
virtualmente más extensa con la misma memoria real. Se utiliza mucho más
eficientemente
la memoria real.
Este esquema permite que la parte de los programas que no se utiliza no ocupe
lugar en la memoria y en cambio quede disponible para agregar más programas
en la mezcla de multiprogramación.
con respecto al desarrollo de aplicaciones: Al eliminar las restricciones de
memoria permite diseñar los sistemas más fácilmente, en menor tiempo y a menos
costo. Hace más sencillo el mantenimiento y la ampliación de los programas. Hace
más justificable el diseño e implementación de algunas aplicaciones, cuyos
requerimientos de memora varíen bastante en su ejecución de acuerdo al volumen y
complejidad de las transacciones. con respecto a la operación del computador:
Permite que un equipo de una memoria real menor pueda ser usado sin dificultad
como back-up en caso de necesidad. Hace innecesario efectuar ciertos
procedimientos
cuyo único propósito es un mejor aprovechamiento de la memoria real. Simplifica
las actividades de planificación.
Desventajas:
Costo asociado a la transformación de direcciones;
memoria adicional que requiere para almacenar las tablas que debe mantener el
sistema operativo (memoria real de la parte residente del sistema operativo)para
indicar: l a cantidad de memoria real implementada, las secciones que están
presente en la memoria real y sus direcciones de ubicación, y elementos de
juicio para determinar qué secciones se tratarán de dejar en memoria real y
cuáles no, o que sección será desplazada cuando otra sección de memoria virtual
deba ser llevada a memoria real; pequeño desperdicio de memoria que se produce
en la última página de un programa (ya que rara vez el tamaño del programa
es múltiplo del tamaño de las páginas); merma en el rendimiento del computador
si es incorrectamente utilizada; posible incremento del tiempo de ejecución
de cada programa como consecuencia de la paginación (operaciones de
entrada/salida que demorarán la ejecución del programa).
La memoria virtual puede ser una herramienta poderosa para incrementar la
performance del computador. Pero ello depende de ciertos factores, tales como:
Velocidad de los dispositivos que contendrán la memoria virtual: La actividad de
paginación afecta adversamente a la performance del equipo cuando el procesador
real está frecuentemente esperando que termine una operación de entrada/salida
de paginación; por tanto se debe procurar que los requerimientos de operaciones
de paginación estén por debajo de lo necesario para aprovechar convenientemente
la multiprogramación. En caso contrario se incrementarán los tiempos ociosos
del órgano de comando. Velocidad del procesador: Una relación desbalanceada
entre la velocidad del procesador y la del dispositivo de paginación puede
alterar el rendimiento. Tamaño de la memoria real y virtual: La cantidad de
memoria real de la CPU (en relación con el tamaño de la memoria virtual)
afectará
el número de páginas faltantes que deberán ser traídas del dispositivo de
paginación. Si el tamaño de la memoria real es igual al de la virtual que están
usando los programas en ejecución no habrá páginas faltantes ya que todas
estarán en memoria real. En cambio cuando la memoria real sea menor, la cantidad
de páginas faltantes estará dada por la razón de la memoria virtual usada por la
memoria real disponible. Estructura de los programas: La cantidad de memoria
virtual que usa un programa no es un factor tan significativo en la performance
del equipo como la forma en que la usa. Algunas formas para incrementar
el rendimiento del equipo son:
Usar áreas de entrada/salida más largas: Reduce el tiempo en que las páginas del
programa estarán en memoria real. Sin embargo un aumento muy significativo
podría afectar negativamente el rendimiento en equipos con poca memoria real.
Aumentar la capacidad de manejo de páginas faltantes cuando la actividad de
paginación causa frecuentes desactivaciones de programas: Esto puede ser
realizado:
usando un dispositivo de mayor velocidad; estableciendo más dispositivos de
paginación; reduciendo o eliminado archivos del dispositivo de paginación;
reduciendo
la actividad del canal que corresponde al dispositivo de paginación; o
aumentando un poco la memoria real.
Estructurar los nuevos programas de aplicación para que operen eficientemente
con memoria virtual: Dos formas de mejorar la eficiencia son:
adoptar la programación modular: es decir agrupar las instrucciones de uso
frecuente y separa las de iniciación y terminación, que generalmente se ejecutan
sólo una vez por ejecución de programa. Agrupar los datos separadamente de las
instrucciones: Con el objeto de construir un programa que tenga pocas páginas
activas; además, al separar las páginas de datos de las de instrucciones, se
evitará la escritura de las páginas de instrucciones cuando sean desplazadas
de la memoria real, dado que es raro que se modifiquen las instrucciones, y
teniendo en cuenta que las páginas que no se modifican cuando están en memoria
real no se reescriben al ser desplazadas. Incrementar el nivel de
multiprogramación: Cuanto más tareas se estén ejecutando, menor será la
probabilidad
que el procesador quede en estado de espera de una operación de entrada/salida;
sin embargo, cuanto mayor sea la razón de memoria virtual a real, la performance
tiende a decaer. Por tanto debe tratar de encontrarse el punto intermedio que
maximice el rendimiento. A mayor porcentaje de utilización del procesador,
menor será la posibilidad de incrementar el rendimiento a través de la
multiprogramación.