Gestión de memoria
Introducción

La memoria es uno de los principales recursos de la computadora, la cual debe de administrarse con
mucho cuidado. Aunque actualmente la mayoría de los sistemas de cómputo cuentan con una alta
capacidad de memoria, de igual manera las aplicaciones actuales tienen también altos requerimientos de
memoria, lo que sigue generando escasez de memoria en los sistemas multitarea y/o multiusuario.

La parte del sistema operativo que administra la memoria se llama administrador de memoria y su labor
consiste en llevar un registro de las partes de memoria que se estén utilizando y aquellas que no, con el
fin de asignar espacio en memoria a los procesos cuando éstos la necesiten y liberándola cuando terminen, así
como administrar el intercambio entre la memoria principal y el disco en los casos en los que la memoria
principal no le pueda dar capacidad a todos los procesos que tienen necesidad de ella.

Los sistemas de administración de memoria se pueden clasificar en dos tipos: los que desplazan los
procesos de la memoria principal al disco y viceversa durante la ejecución y los que no.

El propósito principal de una computadora es el de ejecutar programas, estos programas, junto
con la información que accesan deben de estar en la memoria principal (al menos parcialmente)
durante la ejecución.

Para optimizar el uso del CPU y de la memoria, el sistema operativo debe de tener varios procesos
a la vez en la memoria principal, para lo cual dispone de varias opciones de administración tanto del
procesador como de la memoria. La selección de uno de ellos depende principalmente del diseño del
hardware para el sistema. A continuación se observarán los puntos correspondientes a la administración
de la memoria.


MEMORIA REAL

La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora
y es el espacio real que existe en memoria para que se ejecuten los procesos. Por lo general esta memoria
es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de más
rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor.

SIN INTERCAMBIO
1.1.1.- Monoprogramación sin intercambio o paginación

Cuando solo se tiene un proceso que ocupe la memoria a la vez, el esquema de la administración de
la memoria es el más sencillo que hay. Sin embargo, éste método ya no tiene aplicación en la actualidad,
ya que era visto en las computadoras con sistemas operativos de un solo usuario y una sola tarea. El usuario
introducía su disco a la computadora (por lo general, la máquina no contaba con disco duro) y ejecutaba su
aplicación, la cual acaparaba toda la máquina.

Image and video hosting by TinyPic

La figura 1 muestra la organización de la memoria usando este sistema. La memoria se divide entre el sistema
operativo y el proceso de un solo usuario. La más conocida es la que muestra el inciso c, que es la usada por
las PC’ de IBM. Los controladores de dispositivo los almacena en memoria ROM, en un bloque de 8K de la parte
superior del espacio de direcciones de 1M.

El ejemplo más claro de este esquema es el que podemos ver en el sistema operativo MS-DOS, en que el usuario
escribe un comando al sistema y al ejecutarse el sistema operativo lo carga a memoria desde el disco y realiza
sus funciones. Cuando el proceso termina la memoria es liberada y le muestra al usuario el indicador de comandos
(prompt) en la pantalla.


1.1.2.- Multiprogramación y uso de memoria

Esta organización facilita la programación de una aplicación al dividirla en dos o más procesos. Además ofrece la
capacidad de tener más de un proceso a la vez en memoria así puede ofrecer servicios a varios usuarios a la vez.

El esquema de multiprogramación incrementa el aprovechamiento del CPU, dado que a diferencia de la monoprogramación
en donde solo un proceso reside en memoria a la vez limitando el uso del procesador a las llamadas que requiera
dicho proceso, desperdiciando un promedio del 80% del tiempo del procesador. En cambio la multiprogramación, al tener
varios procesos en la memoria principal y dividiéndose el tiempo de uso del procesador, logra reducir drásticamente
el desperdicio del procesador.


1.1.3.- Multiprogramación con particiones fijas



Para poder implementar la multiprogramación, se puede hacer uso de particiones fijas o variables en la memoria. En el
caso de las particiones fijas, la memoria se puede organizar dividiéndose en diversas partes, las cuales pueden variar
en tamaño. Esta partición la puede hacer el usuario en forma manual, al iniciar una sesión con la máquina.

Una vez implementada la partición, hay dos maneras de asignar los procesos a ella. La primera es mediante el uso de una
cola única (figura 2a) que asigna los procesos a los espacios disponibles de la memoria conforme se vayan desocupando.
El tamaño del hueco de memoria disponible es usado para localizar en la cola el primer proceso que quepa en él.
Otra forma de asignación es buscar en la cola el proceso de tamaño mayor que se ajuste al hueco, sin embargo hay
que tomar en cuenta que tal método discrimina a los procesos más pequeños. Dicho problema podría tener solución si se
asigna una partición pequeña en la memoria al momento de hacer la partición inicial, el cual sería exclusivo para procesos
pequeños.

Image and video hosting by TinyPic


Esta idea nos lleva a la implementación de otro método para particiones fijas, que es el uso de diferentes colas
independientes (figura 2b) exclusivas para cierto rango en el tamaño de los procesos. De esta manera al llegar un proceso,
éste sería asignado a la cola de tamaño más pequeño que la pueda aceptar. La desventaja en esta organización es que si una
de las colas tiene una larga lista de procesos en espera, mientras otra cola esta vacía, el sector de memoria asignado para
ese tamaño de procesos estaría desperdiciándose.

CON INTERCAMBIO
1.2.1.- Multiprogramación con particiones 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 cuáles partes de la memoria están disponibles y cuáles están 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.

Consideremos el ejemplo de la figura 3, en donde se cuenta un espacio reservado para el sistema operativo en la memoria
baja de 400K y un espacio disponible para procesos de usuario de 2160K, siendo un total de memoria del sistema de 2560K.
Dada la secuencia de procesos de la figura y usando un algoritmo de First Come – First Served (FCFS) se puede asignar de
inmediato memoria a los procesos P1, P2 y P3, creando el mapa de memoria de la figura 4(a) en el cual queda un hueco de 260K
que ya no puede ser utilizado por el siguiente proceso dado que no es suficiente para abarcarlo.

Image and video hosting by TinyPic
Image and video hosting by TinyPic

Usando un proceso de asignación Round-Robin con un quantum de 1 unidad de tiempo, el proceso P2 terminaría en la unidad de
tiempo 14, liberando esa cantidad de memoria, como se muestra en la figura 4(b). Entonces el sistema operativo checa la lista
de trabajos y asigna el siguiente proceso que quepa en el espacio de memoria liberado. El proceso P4 produce el mapa de memoria
que se muestra en la figura 4(c). El proceso P1 terminará en la unidad de tiempo 28 para producir el mapa de la figura 4(d) y
entonces se asigna el proceso P5 generando el mapa de la figura 4(e).

Cuando a un proceso se le asigna un espacio y es cargado a la memoria principal, puede entonces competir para el uso del CPU.


1.2.1.1.- Compactación de memoria

Cuando un proceso llega y necesita memoria, el sistema operativo busca en la tabla de huecos alguno lo suficientemente grande
para el proceso. Si el hueco es muy grande, lo parte en dos. Una parte es asignada al proceso y la otra se identifica como hueco.
Cuando el proceso termina y la memoria es liberada, el espacio es identificado como un hueco más en la tabla y si el nuevo hueco
es adyacente con otro, ambos huecos se unen formando un solo hueco más grande. En ese momento se debe de checar si no existen
procesos a los que este nuevo hueco pueda darles cabida.

En la figura 5 se muestra como se modifica el mapa de la memoria después de compactar huecos no adyacentes generados después de
intercambios realizados en el ejemplo de la figura 4.

Image and video hosting by TinyPic

El proceso de compactación del punto anterior es una instancia particular del problema de asignación de memoria dinámica,
el cual es el cómo satisfacer una necesidad de tamaño n con una lista de huecos libres. Existen muchas soluciones para el problema.
El conjunto de huecos es analizado para determinar cuál hueco es el más indicado para asignarse. Las estrategias más comunes para
asignar algún hueco de la tabla son:

o Primer ajuste: Consiste en asignar el primer hueco con capacidad suficiente. La búsqueda puede iniciar ya sea al inicio o
al final del conjunto de huecos o en donde terminó la última búsqueda. La búsqueda termina al encontrar un hueco lo suficientemente grande.

o Mejor ajuste: Busca asignar el espacio más pequeño de los espacios con capacidad suficiente. La búsqueda se debe de realizar
en toda la tabla, a menos que la tabla esté ordenada por tamaño. Esta estrategia produce el menor desperdicio de memoria posible.

o Peor ajuste: Asigna el hueco más grande. Una vez más, se debe de buscar en toda la tabla de huecos a menos que esté organizada
por tamaño. Esta estrategia produce los huecos de sobra más grandes, los cuales pudieran ser de más uso si llegan procesos de tamaño
mediano que quepan en ellos.

Se ha demostrado mediante simulacros que tanto el primer y el mejor ajuste son mejores que el peor ajuste en cuanto a minimizar tanto
el tiempo del almacenamiento. Ni el primer o el mejor ajuste es claramente el mejor en términos de uso de espacio, pero por lo general
el primer ajuste es más rápido.
0 Responses

Publicar un comentario

  • Cecyt 8

    ip

    IP

    SAES

    Descarga Windows 7