Está en la página 1de 7

GESTION DE MEMORIA PRINCIPAL

Todo ordenador tiene una memoria principal que utiliza para albergar los programas en ejecución.
En los sistemas operativos más sencillos, sólo hay un programa a la vez en la memoria. Para ejecutar
un segundo programa, es preciso desalojar el primero y colocar el segundo en la memoria.

Los sistemas operativos algo más sofisticados permiten que haya varios programas en la memoria al
mismo tiempo. Para evitar que se interfieran (y que interfieran con el sistema operativo), es
necesario algún tipo de mecanismo de protección. Aunque este mecanismo tiene que estar en el
hardware, es controlado por el sistema operativo. El punto de vista anterior tiene que ver con la
gestión y la protección de la memoria principal del ordenador. Un aspecto distinto, pero igualmente
importante, relacionado con la memoria es la gestión del espacio de direcciones de los procesos.
Normalmente, cada proceso tiene algún conjunto de direcciones que puede usar y que normalmente
va desde 0 hasta algún máximo. En el caso más sencillo, la cantidad máxima de espacio de
direcciones que tiene un proceso es menor que la memoria principal. De esa manera, un proceso
puede llenar su espacio de direcciones habiendo suficiente espacio en la memoria principal para
contenerlo. Sin embargo, en muchos ordenadores las direcciones son de 32 o 64 bits, lo que significa
espacios de direcciones de 232 o 264 bytes,
respectivamente. ¿Qué sucede si el espacio
de direcciones de un proceso es mayor que
la memoria principal del ordenador y el
proceso quiere hacer uso de todo su
espacio? En los primeros ordenadores no
se podía ejecutar ese desafortunado
proceso. Actualmente existe una técnica
denominada memoria virtual, en la cual el
sistema operativo mantiene una parte de
su espacio de direcciones en la memoria
principal y otra parte en el disco, y transfiere fragmentos entre ambos lugares según sea necesario.
Esta importante función del sistema operativo, y otras relacionadas con la administración.

ORGANIZACIÓN DE LA MEMORIA

Históricamente el almacenamiento
principal se ha considerado como un
recurso costoso, por lo cual su
utilización debía optimizarse. La
memoria está dividida en primaria y
secundaria. El traspaso de
información entre éstas es
la preocupación más grande del
sistema; esta responsabilidad puede
ser asignada al programador, pero
ésto sería una gran pérdida de
tiempo, por esto el sistema debe
ocuparse de ello.
ADMINISTRACIÓN

Según Andrew S. Tanenbaum-1994. La memoria principal es el lugar donde el CPU lee las
instrucciones a ejecutar, asi como algunos datos a emplear.  Una de las funciones básicas que debe
implementar un SO es la Administracion de la Memoria para tener un control sobre los lugares
donde están almacenados los procesos y datos que actualmente se están utilizando.
Independientemente del esquema de organización hay que decidir las estrategias que se utilizarán
para optimizar el rendimiento. Se refiere a los distintos métodos y operaciones que se encargan de
obtener la máxima utilidad de la memoria, organizando los procesos y programas que se ejecutan de
manera tal que se aproveche de la mejor manera posible el espacio disponible.

Para poder lograrlo, la operación principal que realiza es la de trasladar la información que deberá
ser ejecutada por el procesador, a la memoria principal. Actualmente esta administración se conoce
como Memoria Virtual ya que no es la memoria física del procesador sino una memoria virtual que la
representa. Entre algunas ventajas, esta memoria permite que el sistema cuente con una memoria
más extensa teniendo la misma memoria real, con lo que esta se puede utilizar de manera más
eficiente. Y por supuesto, que los programas que son utilizados no ocupen lugar innecesario.

Las técnicas que existen para la carga de programas en la memoria son:

·         Partición fija:que es la división de la memoria libre en varias partes (de igual o distinto tamaño)

·          Partición dinámica, que son las particiones de la memoria en tamaños que pueden ser
variables, según la cantidad de memoria que necesita cada proceso.

Entre las principales operaciones que desarrolla la administración de memoria se encuentran

1.      La reubicación: Que consiste en trasladar procesos activos dentro y fuera e la memoria
principal para maximizar la utilización del procesador

2.      La protección: Son mecanismos que protegen los procesos que se ejecutan de interferencias de
otros procesos.

3.      Uso compartido de códigos y datos: con lo que el mecanismo de protección permite que ciertos
procesos de un mismo programa que comparten una tarea tengan memoria en común.

JERARQUÍA

Se refiere a los diferentes medios de almacenamiento. Pueden ser sólo dos: disco duro y disco
óptico, o bien disco duro y cinta. Más usual son tres: disco duro, disco óptico y cinta. En todos los
casos, los medios removibles se manejan en forma automática por los dispositivos robóticos
correspondientes: un jukebox para discos ópticos, o bien una biblioteca automatizada o
autocargardor para cinta.

Los programas y datos tienen que estar en la memoria principal para poder ejecutarse o ser
referenciados. Los programas y datos que no son necesarios de inmediato pueden mantenerse en el
almacenamiento secundario. El almacenamiento principal es más costoso y menor que el secundario
pero de acceso más rápido.

Los sistemas con varios niveles de almacenamiento requieren destinar recursos para administrar el
movimiento de programas y datos entre niveles (ver Figura).
Un nivel adicional es el “caché” o memoria de alta velocidad, que posee las siguientes
características:

·         Es más rápida y costosa que la memoria principal.

·         Impone al sistema un nivel más de traspaso:

o        Los programas son traspasados de la memoria principal al caché antes de su ejecución.

·         Los programas en la memoria caché ejecutan mucho más rápido que en la memoria principal.

·         Al utilizar memoria caché se espera que:

o        La sobrecarga que supone el traspaso de programas de un nivel de memoria a otro sea mucho
menor que la mejora en el rendimiento obtenida por la posibilidad de una ejecución mucho más
rápida en la caché.

Jerarquía de almacenamiento
Los componentes fundamentales de las computadoras de propósito general son la CPU, el
espacio de almacenamiento y los dispositivos de entrada/salida. La habilidad para almacenar las
instrucciones que forman un programa de computadora y la información que manipulan las
instrucciones es lo que hace versátiles a las computadoras diseñadas según la arquitectura de
programas almacenados

Una computadora digital representa toda la información usando el sistema binario. Texto,


números, imágenes, sonido y casi cualquier otra forma de información puede ser transformada
en una sucesión de bits, o dígitos binarios, cada uno de los cuales tiene un valor de 1 ó 0. La
unidad de almacenamiento más común es el byte, igual a 8 bits. Una determinada información
puede ser manipulada por cualquier computadora cuyo espacio de almacenamiento sea
suficientemente grande como para que quepa el dato correspondiente o la representación
binaria de la información. Por ejemplo, una computadora con un espacio de almacenamiento de
ocho millones de bits, o un megabyte, puede ser usada para editar una novela pequeña.

Se han inventado varias formas de almacenamiento basadas en diversos fenómenos naturales.


No existen ningún medio de almacenamiento de uso práctico universal y todas las formas de
almacenamiento tienen sus desventajas. Por tanto, un sistema informático contiene varios tipos
de almacenamiento, cada uno con su propósito individual.

PARTICIONES: Particiones estáticas

Esta forma de gestión consiste en dividir la memoria en varias zonas, pudiendo ser cada zona de un
tamaño diferente. Esto se ilustra en la figura 6.3. El tamaño de las zonas podrá ser modificado
eventualmente por algún usuario responsable de la administración del ordenador. Los trabajos se
traducían mediante compiladores y ensambladores absolutos, para ejecutarse en
una partición específica. Una vez introducido un proceso en una partición, permanece en ella hasta
su finalización. Si un trabajo se iniciaba, y la partición para la que estaba compilado estaba ocupada,
tenía que esperar, aunque estuvieran libres otras particiones. Esto provoca una pérdida de
eficiencia.

Protección: Si se tiene el esquema hardware del registro base, para lograr la protección de las zonas
de memoria basta con añadir un nuevo registro, denominado registro límite. Este registro guarda la
última dirección de la partición, y forma también parte del PCB del proceso. El hardware, después de
sumar el registro base a la dirección relativa, comprueba que la dirección obtenida no supere el valor
del registro límite. Si se supera el valor, se está intentando acceder a una zona que no corresponde
al proceso; en esta situación, el hardware genera una interrupción.

Particiones dinámicas: En este método se va asignando la memoria dinámicamente a los procesos,


conforme se introducen en la memoria. A cada proceso se le asigna exactamente la memoria que
necesita. El esquema de los registro base y límite sigue siendo válido para la reasignación y la
protección. Otro tema a tener en cuenta es la cantidad de memoria por asignar a un proceso recién
creado. Si los procesos se crean con un tamaño fijo invariante, la asignación es muy sencilla, se
asigna exactamente lo que se necesite. Si, por el contrario, los segmentos de datos de los procesos
pueden crecer, como es el caso de la asignación dinámica de memoria a partir de una pila, que
ocurre en muchos lenguajes de programación, aparece un problema cuando un proceso intenta
crecer. Si es de esperar que la mayoría de los procesos crezcan conforme se ejecuten, sería una
buena idea asignar un poco de memoria adicional siempre que un proceso pase a la memoria, con el
fin de reducir el gasto excesivo asociado con el traslado de procesos que ya no caben en su memoria
asignada Si los procesos pueden tener dos segmentos de crecimiento, como por ejemplo, el
segmento de datos, que se utiliza como una pila, y el stack, se sugiere un método alternativo, el de
la figura 5-b. 

FRAGMENTACIÓN

La fragmentación es la memoria que queda desperdiciada al usar los métodos de gestión de


memoria que se vieron en los métodos anteriores. Tanto el primer ajuste, como el mejor y el peor
producen fragmentación externa. La fragmentación es generada cuando durante el reemplazo de
procesos quedan huecos entre dos o más procesos de manera no contigua y cada hueco no es capaz
de soportar ningún proceso de la lista de espera. La fragmentación puede ser:
Fragmentación Externa: Existe el espacio total de memoria para satisfacer un requerimiento, pero
no es contigua.
Fragmentación Interna: La memoria asignada puede ser ligeramente mayor que la requerida; esta
referencia es interna a la partición,
pero no se utiliza.
La fragmentación externa se puede
reducir mediante la compactación
para colocar toda la memoria libre en
un solo gran bloque, pero esta sólo es
posible si la relocalización es dinámica
y se hace en tiempo de ejecución.

Condensación
Unir o fusionar espacios o “huecos” adyacentes para formar uno más grande.
Por ejemplo, si hay una solicitud de usuario de  5k y en la memoria hay disponibles 2 “huecos”
contíguos pero uno es de 2k y el otro es 3k, entonces, para poder atender ésa solicitud de usuario, se
“unen” los 2 “huecos” que formarían un sólo “hueco” de 5k, por tanto ahora si cabría la solicitud en
el “hueco” que hay disponible.

  
Compactación;
Una solución para el problema de la fragmentación externa es la compactación. El objetivo consiste
en desplazar el contenido de la memoria para colocar junta toda la memoria libre en un solo bloque
de gran tamaño.
•                     Técnica que consiste en trasladar todas las áreas ocupadas del almacenamiento hacia
algún extremo de la memoria.
•                      Es una solución de la fragmentación externa.
•        El objetivo consiste en desplazar el contenido de la   memoria libre en un sólo bloque de gran
tamaño.
•                      La compactación no siempre es posible, sólo es posible si la   relocalización es dinámica
y se efectúa en el momento de la ejecución.
•                      Este esquema puede ser bastante costoso.

Estrategias de colocación
Permiten determinar en qué lugar de la memoria  principal se deben colocar  los programas y datos
entrantes.
   
Tipos:
          Mejor Ajuste: Colocar el trabajo en el menor bloque en el que quepa.
         ¨ Primer Ajuste. Colocar el trabajo en el primer hueco de la lista de almacenamiento libre en el
que quepa.

Peor Ajuste: Colocar el trabajo en el menor bloque en el que quepa.


- Administracion de memoria virtual
   espacio de direcciones lógicas vs fisicas
   paginación
   segmentación
   paginacion por demanda
   fallo de pagina
   segmentacion paginada
   paginacion segmentada.

Compactación de Memoria
El proceso de compactación son
unas instancias particulares del
problema de asignación de
memoria dinámica, y esta
se  refiere a  satisfacer  una
necesidad de tamaño (N) en una
lista de huecos libres. Entre
tantas posibilidades existe una
que determina el hueco
más indicado en el momento de asignar. A continuación estrategias  comunes para la asignación de
algún hueco en la tabla.

PRIMER  AJUSTE: Consiste en  asignar el proceso en el primer  hueco que se  halle y se ajuste sin


importar  que el hueco  sea más  grande  que el  tamaño del proceso  a insertar.

MEJOR  AJUSTE: Consiste en ubicar  el proceso según su tamaño en el hueco  más apropiado, esto


con el fin de evitar desperdicio de memoria.

PEOR AJUSTE: En este algoritmo se busca que el tamaño del hueco concuerde con el tamaño del
proceso. Es decir que sea el tamaño del hueco sea igual o mayor que el del proceso, sin importar que
se pueda perder gran cantidad de espacio en la memoria.

Almacenamiento Virtual

La memoria virtual es una técnica de gestión de la memoria que permite que el sistema operativo
disponga, tanto para el software de usuario como para sí mismo, de mayor cantidad de memoria
que la disponible físicamente. La mayoría de los ordenadores tienen cuatro tipos de memoria:
registros en la CPU, la memoria caché (tanto dentro como fuera del CPU), la memoriaRAM y el disco
duro. En ese orden, van de menor capacidad y mayor velocidad a mayor capacidad y menor
velocidad.

Muchas aplicaciones requieren acceso a más información (código y datos) que la que se puede
mantener en memoria física. Esto es así sobre todo cuando el sistema operativo permite múltiples
procesos y aplicaciones ejecutándose simultáneamente. Una solución al problema de necesitar
mayor cantidad de memoria de la que se posee consiste en que las aplicaciones mantengan parte de
su información en disco, moviéndola a la memoria principal cuando sea necesario. En este caso es
cuando es útil el espacio de intercambio: el sistema operativo puede buscar un proceso poco activo,
y moverlo al área de intercambio (el disco duro) y de esa forma liberar la memoria principal para
cargar otros procesos. Mientras no haga falta, el proceso extraído de memoria puede quedarse en el
disco, ya que ahí no utiliza memoria física. Cuando sea necesario, el sistema vuelve a hacer
un intercambio, pasándolo del disco a memoria RAM. Es un proceso lento (comparado con usar sólo
la memoria RAM), pero permite dar la impresión de que hay más memoria disponible

ESTRATEGIAS DE COLOCACIÓN.

De las diversas organizaciones de memoria tratadas en el tema anterior únicamente las que realizan
una asignación no contigua (paginación, segmentación y segmentación paginada) del
almacenamiento permiten implantar una administración virtual de la memoria. Para cualquiera de
las tres formas de organizar esta memoria virtual habrá que determinar:
v Estrategias de obtención. Determinan cuándo se debe transferir una página o un segmento del
almacenamiento secundaria al primario. Las estrategias de obtención por demanda esperan a que
un proceso en ejecución haga referencia a una página o a un segmento antes de traerla/lo. Los
esquemas de obtención anticipada intentan determinar por adelantado a qué páginas o segmentos
hará referencia un proceso. Si la probabilidad de una referencia es alta y hay espacio disponible,
entonces se trae al almacenamiento primario la página o segmento antes de que se haga la
referencia explícitava Estrategias de colocación. Determinan en qué lugar de la memoria principal se
debe colocar una página o un segmento entrante. Los sistemas de paginación vuelven trivial la
decisión de colocación, porque una página entrante se puede ubicar en cualquier marco de página
disponible. Los sistemas con segmentación requieren estrategias de colocación como las tratadas en
el contexto de los sistemas de multiprogramación con particiones dinámicas.
v Estrategias de reemplazo. Sirven para decidir qué página o segmento se debe desplazar para dejar
espacio a una página o segmento entrante cuando está completamente ocupada la memoria
principal. Una estrategia de asignación de memoria determina el lugar donde será cargado un nuevo
proceso en base a un criterio. Las estrategias de asignación son:

1. PRIMER AJUSTE. El Sistema Operativo asigna el primer bloque de memoria libre con espacio
suficiente para satisfacer la información. La búsqueda de este bloque es de manera secuencial.
2. MEJOR AJUSTE. El sistema operativo busca el bloque de memoria que represente el menor
desperdicio según el requerimiento.

3. PEOR AJUSTE. El sistema operativo asigna el bloque más grande que encuentre.

También podría gustarte