Está en la página 1de 5

GESTIN DE MEMORIA

La gestin de memoria representa un vnculo delicado entre el rendimiento (tiempo de


acceso) y la cantidad (espacio disponible). Siempre se busca obtener el mayor espacio
disponible en la memoria, pero pocas veces existe la predisposicin para comprometer el
rendimiento.
La gestin de memoria tambin debe realizar las siguientes funciones:

permitir que la memoria se comparta (en sistemas de multiprocesos).

asignar bloques de espacio de memoria a distintas tareas;

proteger los espacios de memoria utilizados (por ejemplo, evitar que un usuario
modifique una tarea realizada por otro usuario).

optimizar la cantidad de memoria disponible, especficamente a travs de sistemas


de expansin de memoria.

Se denomina gestin de memoria al acto de gestionar la memoria de un dispositivo


informtico. De forma simplificada se trata de proveer mecanismos para asignar secciones
de memoria a los programas que las solicitan, y a la vez, liberar las secciones de memoria
que ya no se utilizan para que estn disponibles para otros programas. El proceso de
asignacin de memoria a los programas que las solicitan es llamado por algunos "alocar"
(del ingls "allocate" que significa asignar) pero la palabra "alocar" tiene otro significado
para el Diccionario de la lengua espaola de la Real Academia Espaola. La gestin de la
memoria principal de un ordenador es una tarea de suma importancia para el
funcionamiento del mismo.
Los sistemas de memoria virtual separan las direcciones de memoria utilizadas por un
proceso de las direcciones fsicas reales, permitiendo la separacin de procesos e
incrementando la cantidad efectiva de memoria de acceso aleatorio utilizando la
paginacin. La calidad de la gestin de la memoria es crucial para las prestaciones del
sistema.
El recolector de basura es la asignacin y liberacin automtica de los recursos de memoria
para un programa. La implementacin suele ser a nivel del lenguaje de programacin en
contraposicin a la gestin manual de memoria, que asigna y libera los recursos de
memoria de un ordenador de forma explcita.
MULTIPROGRAMACIN CON PARTICIONES FIJAS Y VARIABLES
Participaciones fija
Para poder implementar la multiprogramacin, se puede hacer uso de particiones fijas o
variables en la memoria. En el caso de las particiones fijas, la memoria se puede organizar

dividindose en diversas partes, las cuales pueden variar en tamao. Esta particin la puede
hacer el usuario en forma manual, al iniciar una sesin con la mquina.
Una vez implementada la particin, hay dos maneras de asignar los procesos a ella. La
primera es mediante el uso de una cola nica que asigna los procesos a los espacios
disponibles de la memoria conforme se vayan desocupando. El tamao del hueco de
memoria disponible es usado para localizar en la cola el primer proceso que quepa en l.
Otra forma de asignacin es buscar en la cola el proceso de tamao mayor que se ajuste al
hueco, sin embargo hay que tomar en cuenta que tal mtodo discrimina a los procesos ms
pequeos. Dicho problema podra tener solucin si se asigna una particin pequea en la
memoria al momento de hacer la particin inicial, el cual sera exclusivo para procesos
pequeos.
Participaciones variables
Este esquema fue originalmente usado por el sistema operativo IBM OS/360 (llamado
MFT), el cual ya no est en uso.
El sistema operativo lleva una tabla indicando cules partes de la memoria estn
disponibles y cules estn ocupadas. Inicialmente, toda la memoria est disponible para los
procesos de usuario y es considerado como un gran bloque o hueco nico de memoria.
Cuando llega un proceso que necesita memoria, buscamos un hueco lo suficientemente
grande para el proceso. Si encontramos uno, se asigna nicamente el espacio requerido,
manteniendo el resto disponible para futuros procesos que requieran de espacio.
PAGINACIN
Hasta ahora, los mtodos que hemos visto de la administracin de la memoria principal, nos
han dejado con un problema: fragmentacin, (huecos en la memoria que no pueden usarse
debido a lo pequeo de su espacio) lo que nos provoca un desperdicio de memoria
principal.
Una posible solucin para la fragmentacin externa es permitir que espacio de direcciones
lgicas lleve a cabo un proceso en direcciones no contiguas, as permitiendo al proceso
ubicarse en cualquier espacio de memoria fsica que est disponible, aunque est dividida.
Una forma de implementar esta solucin es a travs del uso de un esquema de paginacin.
La paginacin evita el considerable problema de ajustar los pedazos de memoria de
tamaos variables que han sufrido los esquemas de manejo de memoria anteriores. Dado a
sus ventajas sobre los mtodos previos, la paginacin, en sus diversas formas, es usada en
muchos sistemas operativos.
Al utilizar la memoria virtual, las direcciones no pasan en forma directa al bus de memoria,
sino que van a una unidad administradora de la memoria (MMU Memory Management
Unit). Estas direcciones generadas por los programas se llaman direcciones virtuales y
conforman el hueco de direcciones virtuales. Este hueco se divide en unidades llamadas

pginas. Las unidades correspondientes en la memoria fsica se llaman marcos para pgina
o frames. Las pginas y los frames tienen siempre el mismo tamao.
SEGMENTACIN
Otra opcin para el manejo de la memoria es usar una forma de liberar al programador de la
tarea del control de las tablas en expansin y contraccin, de la misma forma que
la memoria virtual elimina la preocupacin por organizar el programa en una serie
de proyectos.
Esto se puede lograr dotando a la mquina de varios espacios independientes de direcciones
llamados segmentos. Cada segmento tiene una serie lineal de direcciones, desde 0 hasta
cierto mximo. La longitud de cada segmento puede variar de 0 hasta un mximo
permitido. Los distintos segmentos pueden tener y de hecho tienen por lo general,
longitudes distintas. Adems, la longitud de un segmento puede variar durante la ejecucin.
La longitud de un segmento de la pila puede crecer si algo entra a la pila y decrecer si algo
sale de ella.
Puesto que cada segmento constituye un espacio independiente de direcciones, los distintos
segmentos pueden crecer o reducirse en forma independiente sin afectar a los dems. En la
figura 13 podemos ver una lista de comparacin entre la paginacin y la segmentacin.
La segmentacin tambin facilita el uso de procedimientos o datos compartidos entre varios
procesos. Un ejemplo comn son las bibliotecas compartidas (Shared DLLs). Es frecuente
que las estaciones de trabajo modernas que ejecutan sistemas avanzados, con ventanas,
tengan bibliotecas grficas de tamao muy grande que se compilan casi en todos los
programas. En un sistema segmentado, la biblioteca grfica se puede colocar en un
segmento y compartirse entre varios procesos, sin necesidad de tenerla en el espacio de
direcciones de cada proceso.
Aunque tambin es posible tener bibliotecas compartidas sin los sistemas con paginacin
pura, es mucho ms complejo. De hecho, estos sistemas simulan la segmentacin.
MEMORIA VIRTUAL
La memoria virtual es una tcnica de gestin 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 est disponible fsicamente. La mayora de los ordenadores tienen
cuatro tipos de memoria: registros en la CPU, la memoria cach (tanto dentro como fuera
del CPU), la memoria RAM 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 ms informacin (cdigo y datos) que la que se
puede mantener en memoria fsica. Esto es as sobre todo cuando el sistema operativo

permite mltiples procesos y aplicaciones ejecutndose simultneamente. Una solucin al


problema de necesitar mayor cantidad de memoria de la que se posee consiste en que las
aplicaciones mantengan parte de su informacin en disco, movindola a la memoria
principal cuando sea necesario. Hay varias formas de hacer esto.
Una opcin es que la aplicacin misma sea responsable de decidir qu informacin ser
guardada en cada sitio (segmentacin), y de traerla y llevarla. La desventaja de esto,
adems de la dificultad en el diseo e implementacin del programa, es que es muy
probable que los intereses sobre la memoria de dos o varios programas generen conflictos
entre s: cada programador podra realizar su diseo teniendo en cuenta que es el nico
programa ejecutndose en el sistema. La alternativa es usar memoria virtual, donde la
combinacin entre hardware especial y el sistema operativo hace uso de la memoria
principal y la secundaria para hacer parecer que el ordenador tiene mucha ms memoria
principal (RAM) que la que realmente posee. Este mtodo es invisible a los procesos. La
cantidad de memoria mxima que se puede hacer ver que hay tiene que ver con las
caractersticas del procesador. Por ejemplo, en un sistema de 32 bits, el mximo es 2 32, lo
que da 4096 Megabytes (4 Gigabytes). Todo esto hace el trabajo del programador de
aplicaciones mucho ms fcil, al poder ignorar completamente la necesidad de mover datos
entre los distintos espacios de memoria.
Aunque la memoria virtual podra estar implementada por el software del sistema
operativo, en la prctica casi siempre se usa una combinacin de hardware y software, dado
el esfuerzo extra que implicara para el procesador.
La memoria virtual usualmente (pero no necesariamente) es implementada
usando paginacin. En paginacin, los bits menos significativos de la direccin de
memoria virtual son preservados y usados directamente como los bits de orden menos
significativos de la direccin de memoria fsica. Los bits ms significativos son usados
como una clave en una o ms tablas de traduccin de direcciones (llamadas tablas de
paginacin), para encontrar la parte restante de la direccin fsica buscada.
Implementacin:
Los procedimientos de implementacin de la memoria virtual se basan en que cuando se
ejecuta un programa, ste est parcialmente en memoria, es decir, slo hay cargada aquella
zona de cdigo y datos que se necesitan en ese instante de tiempo, y no el programa
completo. La memoria virtual es la separacin entre la memoria lgica disponible para el
usuario y la memoria RAM, se implementa generalmente con el mtodo de paginacin por
demanda aunque tambin se puede implementar en un sistema con segmentacin.
En el momento en que en el sistema empieza a escasear la memoria, se crea un fichero
SWAP (intercambio) en el disco que sirve como ampliacin auxiliar de memoria. En el
caso de Windows, cuando tenemos muchas aplicaciones en funcionamiento y la memoria

RAM se agota, el sistema se apoya en el fichero SWAP para realizar movimientos desde el
disco duro a la RAM y viceversa. De ese modo crean espacios en memoria fsica para ir
ejecutando las rdenes. Esto, evidentemente, hace que el sistema vaya ms lento.
Los sistemas de paginacin de memoria dividen los programas en pequeas partes o
pginas. Del mismo modo, la memoria es dividida en trozos del mismo tamao que las
pginas llamados marcos de pgina. De esta forma, la cantidad de memoria desperdiciada
por un proceso es el final de su ltima pgina, lo que minimiza la fragmentacin interna y
evita la externa. En un momento cualquiera, la memoria se encuentra ocupada con pginas
de diferentes procesos, mientras que algunos marcos estn disponibles para su uso. El
sistema operativo mantiene una lista de estos ltimos marcos, y una tabla por cada proceso,
donde consta en qu marco se encuentra cada pgina del proceso.

De esta forma, las pginas de un proceso pueden no estar contiguamente ubicadas en


memoria, y pueden intercalarse con las pginas de otros procesos. En la tabla de pginas de
un proceso, se encuentra la ubicacin del marco que contiene a cada una de sus pginas.
Las direcciones lgicas ahora se forman como un nmero de pgina y de un desplazamiento
dentro de esa pgina. El nmero de pgina es usado como un ndice dentro de la tabla de
pginas, y una vez obtenida la direccin real del marco de memoria, se utiliza el
desplazamiento para componer la direccin real. Este proceso es realizado en el hardware
del computador. De esta forma, cuando un proceso es cargado en memoria, se cargan todas
sus pginas en marcos libres y se completa su tabla de pginas.

También podría gustarte