Você está na página 1de 12

GESTIN DE LA MEMORIA

En un sistema de monoprogramacin, la memoria principal se divide en


dos partes: una parte para el sistema operativo (el monitor residente) y
otra parte para el programa que se est ejecutando. En un sistema
multiprogramado, la parte de usuario de la memoria adems debe
subdividirse para dar cabida a los distintos procesos. La tarea de
subdivisin la realiza dinmicamente el sistema operativo y se conoce
como gestin de memoria. Una gestin eficiente de la memoria es vital en
un sistema multiprogramado. Si hay pocos procesos en memoria, puede
ocurrir que todos los procesos estn esperando completar una E/S y el
procesador permanecer inactivo. En consecuencia, la memoria debe
asignarse eficientemente para situar en memoria tantos procesos como
sea posible.

Intercambio (swapping)

Volviendo a la Figura anterior de la representacin de un diagrama de


colas para la planificacin del procesador, se han discutido tres tipos de
colas: la cola a largo plazo para solicitar procesos nuevos, la cola a corto
plazo con los procesos preparados para utilizar el procesador y las distintas
colas de E/S de los procesos que no estn preparados para usar el
procesador.
Sin embargo, el esquema de la Figura representacin de un diagrama de
colas para la planificacin del procesador no resuelve el problema por
completo. Es verdad que, en este caso, la memoria contiene mltiples
procesos y que el procesador puede conmutar a otro proceso cuando el
proceso en curso tenga que esperar. Pero el procesador es tan rpido en
comparacin con las E/S que puede ser frecuente que lodos los procesos
de la memoria estn esperando una E/S. Por eso, incluso con la
multiprogramacin, un procesador puede estar parado la mayor parte del
tiempo.

Qu se puede hacer?

La memoria principal podra ampliarse y as ser capaz de dar cabida a ms


procesos. Pero hay dos problemas en esta solucin. Primero, incluso hoy
da la memoria principal es cara. Segundo, la necesidad de memoria de los
programas ha crecido tan rpido como ha caido el costo de la memoria.
Por eso una memoria mayor origina procesos mayores, no ms procesos.
Otra solucin es el intercambio (swapping), representado en la Figura

Tenemos una cola a largo plazo de solicitudes de proceso, usualmente


almacenado en disco. Estas solicitudes se traen a memoria, una a una, a
medida que hay espacio disponible. Conforme terminan, los procesos se
sacan de la memoria principal. Ahora, podra ocurrir que ninguno de los
procesos en la memoria principal est en el estado preparado (por
ejemplo, todos estn esperando una operacin de E/S). En lugar de
permanecer parado, el procesador intercambia uno de esos procesos
situndolo en el disco en una cola intermedia. Esta es una cola de procesos
existentes que se han sacado temporalmente de memoria. El sistema
operativo entonces trae otro proceso de la cola intermedia, o acepta una
nueva peticin de proceso de la cola de largo plazo. La ejecucin contina
con el proceso recientemente activado. El intercambio es de hecho una
operacin de E/S, y por consiguiente existe la posibilidad de empeorar el
problema ms que de solucionarlo. No obstante, puesto que la E/S en
disco es generalmente la operacin de E/S ms rpida (comparada con la
E/S en cinta o mediante impresora)
Definicion de Partiviones

El esquema ms simple para definir particiones en la memoria disponible


es utilizar particiones de Tamao fijo, como muestra la Figura. Observe
que, aunque las particiones son de tamao fijo, no todas tienen igual
tamao. Cuando un proceso se introduce en memoria, se sita en la
particin disponible ms pequea que puede incluirlo.
Incluso con el uso de particiones de distintos tamaos, se desperdiciar
memoria. En la mayora de los casos, un proceso no necesitar
exactamente la memoria que proporciona una particin. Por ejemplo, un
proceso que precise 3 MB de memoria se podra situar en la particin de 4
M de la Figura
B, desperdiciando 1 M que podran utilizarse para otro proceso.
Figura: Ejemplo de particiones fijas de una memoria de 64 MB

Una posibilidad ms eficiente consiste en utilizar particiones de tamao


variable. Cuando un proceso se introduce en memoria, se le asigna
exactamente la memoria que necesita y no ms.

Ejemplo

En la Figura se muestra un ejemplo utilizando 64 MB de memoria


principal.
Inicialmente, salvo por el sistema operativo, la memoria principal est
vaca (a). Los primeros tres procesos se cargan, empezando por donde
termina el sistema operativo y ocupando justo el espacio necesario para
cada proceso (b, c, d). Esto deja un hueco al final de la memoria que es
demasiado pequeo para un cuarto proceso. En cierto instante, ninguno
de los procesos de memoria est preparado. El sistema operativo saca de
memoria al proceso 2 (e), dejando espacio suficiente para cargar un nuevo
proceso, el proceso 4 (f). Puesto que el proceso 4 es ms pequeo que el
proceso 2, se crea otro hueco pequeo. Posteriormente, se produce la
situacin en la que n in g u n o de los proceso que estn en la memoria
est preparado, excepto el proceso 2, que est disponible puesto que se
encuentra en el estado Preparad o -Suspendido. Como hay un espacio de
memoria insuficiente para el proceso 2, el sistema operativo retira de
memoria al proceso 1 (g) y vuelve a introducir al proceso 2 (h).
Figura: Efecto de la particin dinmica
La memoria del proceso est constituida por instrucciones y datos. Las
instrucciones contendrn direcciones de posiciones de memoria de dos
tipos:

Direcciones de datos.
Direcciones de instrucciones, usadas por las instrucciones de salto.

Pero estas direcciones no son fijas. Cambiarn cada vez que el proceso se
intercambie. Para resolver este problema, se distingue entre direcciones
lgicas y direcciones fsicas. Una direccin lgica indica una posicin
relativa al comienzo del programa. Las instrucciones del programa
contienen solo
direcciones lgicas. Una direccin fsica es, por supuesto, la posicin
actual en la memoria principal.
Cuando el procesador ejecuta un proceso, automticamente convierte las
direcciones lgicas en fsicas sumando a cada direccin lgica la posicin
de comienzo actual del proceso, llamada direccin base. Este es otro
ejemplo de un elemento hardware de la CPU diseado para satisfacer las
necesidades del sistema operativo. Las caractersticas exactas de este
hardware dependen de la estrategia de gestin de memoria utilizada.

Paginacin
Tanto las particiones de tamao fijo como las de tamao variable son
ineficaces en el aprovechamiento de la memoria. Supngase, no obstante,
que la memoria se divide en trozos iguales de tamao fijo y relativamente
pequeo, y que cada proceso tambin se divide en pequeos trozos de
tamao fijo. Despus los trozos de un programa, conocidos como pgina,
se podran asignar a los trozos de memoria disponibles, conocidos como
marcos o marcos de pgina. Entonces, el espacio de memoria
desperdiciado por un proceso es, como mucho, una fraccin de la ltima
pgina.

Figura: Asignacin de marcos libres


Figura: Direcciones lgicas y fsicas
Gestionada por el sistema operativo. El Proceso A, almacenado en disco,
consta de cuatro pginas. Cuando llega el momento de cargar este
proceso, el sistema operativo encuentra cuatro marcos libres y carga las
cuatro pginas del proceso A en cuatro marcos.
Supngase ahora, como en este ejemplo, que no hay suficientes marcos
contiguos sin utilizar para el proceso. (Har esto que el sistema operativo
no cargue A?) La respuesta es no, porque de nuevo se utiliza una vez ms
el concepto de direccin lgica. Ya no es suficiente una nica direccin de
base. En cambio, el sistema operativo mantiene una tabla de pginas para
cada proceso. La tabla de pginas indica el marco que aloja a cada pgina
del proceso. Dentro del programa, cada direccin lgica est constituida
por un nmero de pgina y una direccin relativa dentro de la pgina.

Recurdese que en el caso de particiones simples, una direccin lgica era


la posicin de una palabra en relacin con el comienzo del programa; el
procesador la traduce a una direccin fsica. Con la paginacin, la
traduccin de direccin lgica a direccin fsica tambin la realiza el
hardware del procesador. El procesador debe saber cmo acceder a la
tabla de pginas del proceso en curso. A partir de la direccin lgica
(nmero de pgina, direccin relativa), el procesador utiliza la tabla de
pginas para generar la direccin fsica (nmero de marco, direccin
relativa). Un ejemplo se muestra en la Figura anterior Esta aproximacin
resuelve el problema anteriormente indicado. La memoria principal se
divide en muchos marcos pequeos de igual tamao. Cada proceso se
divide en pginas del tamao de los marcos: los procesos ms pequeos
necesitan menos pginas, los procesos mayores necesitan ms. Cuando un
proceso se lleva a memoria, sus pginas se cargan en los marcos
disponibles y la tabla de pginas se actualiza.

Memoria virtual

La memoria virtual, permite simular una memoria RAM de mayor tamao


que la que tienes instalada en tu equipo. Es un mecanismo del cual se
encarga el sistema operativo.
Su utilidad reside en que las aplicaciones y sus datos, para poder ser
usados por el procesador, tienen que pasar del disco duro, que es donde
se encuentra almacenado todo cuando apagas al equipo, a la memoria
RAM que puede ser accedida de forma directa por el micro.
A mayor RAM, mayor capacidad para ejecutar aplicaciones con datos
complejos.

La gestin de la memoria como podemos ver es muy importante. Si a esto


unimos que no siempre ha sido tan barata como ahora es lgico que exista
un sistema que controle que se encuentra en ella y que la descargue por
ejemplo de aplicaciones que no estamos usando.

La razn histrica del uso de la memoria virtual es bastante trivial, aunque


la RAM era cara, los discos duros no lo eran tanto. Se poda entonces usar
el disco duro para simular que tenemos ms memoria. El procedimiento
era sencillo, se pasaba al disco las porciones de RAM que no se usaban en
un determinado momento, si algn programa lo requera se volvan a la
memoria.

Esta tcnica consigue simular, por tanto, ms memoria, y las aplicaciones


ni se dan cuenta de todo lo que est ocurriendo por debajo. En un sistema
operativo normal, se llega a simular tener el doble que sin usarla. No todos
son ventajas, como contrapartida el sistema puede comportase de manera
ms lenta debido a la carga de los datos.

Esto es debido a que la velocidad de acceso de los datos al disco duro es


miles de veces ms lenta que a la memoria RAM. Si una porcin de
memoria no se encuentra en esta, el sistema necesita tiempo para leerla y
devolverla a la memoria principal ya que este es el nico lugar donde el
procesador puede accederlo.

Por qu es tan importante la memoria


virtual?
Si nos quedamos sin memoria no podremos ejecutar ms programas y los
que estamos ejecutando tendrn problemas para trabajar con ms datos.
Pero como hemos visto no todos son ventajas, el uso de memoria virtual
puede hacer que tu equipo funcione ms lento si es necesario ir por datos
al disco duro. Es siempre un compromiso entre la velocidad y la cantidad
de datos que el sistema es capaz de procesar.

Jams una configuracin de ms memoria virtual podr ser mejor que una
ampliacin de memoria RAM. Es ms, lo ideal sera tener un equipo que
no necesitase tener esta caracterstica activada.

Buffer de traduccin anticipada


En principio, toda referencia a memoria virtual puede ocasionar dos
accesos a la memoria fsica: uno para captar el elemento de la tabla de
pginas apropiada, y otro para captar el dato deseado. Como
consecuencia, un esquema de memoria virtual directo tendra el efecto de
duplicar el tiempo de acceso a memoria. Para resolver este problema, la
mayora de los esquemas de memoria virtual hacen uso de una cach
especial para los elementos de la tabla de pginas, llamada usualmente
buffer de traduccin anticipada (TLB, Translation Lookaside Buffer). Este
buffer funciona de la misma manera que una memoria cach y contiene
aquellos elementos de la tabla de pginas a los que se ha accedido ms
recientemente.

Segmentacin
Hay otra forma en la que puede subdividirse la memoria direccionable,
conocida como segmentacin. Mientras que la paginacin es invisible para
el programador y sirve para proporcionar al programador un espacio de
direcciones mayor, la segmentacin es usualmente visible para el
programador y proporciona una forma conveniente de organizar los
programas y los datos.
La segmentacin permite que el programador vea la memoria constituida
por mltiples espacios de direcciones o segmentos. Los segmentos tienen
un tamao variable, dinmico. Usualmente, el programador o el sistema
operativo asignarn programas y datos a segmentos distintos. Puede
haber segmentos de programa distintos para varios tipos de programas y
tambin

distintos segmentos de datos. Se pueden asignar a cada segmento


derechos de acceso y uso. Las referencias a memoria se realizan mediante
direcciones constituidas por un nmero de segmento y un
desplazamiento.
Esta organizacin tiene ciertas ventajas para el programador frente a un
espacio de direcciones no segmentado:
1. Permite modificar los programas y recompilarlos
independientemente, sin que sea necesario volver a enlazar y cargar
el conjunto entero de programas. De nuevo, esto se consigue
utilizando varios segmentos.
2. Permite que varios procesos compartan segmentos. Un
programador puede situar un programa correspondiente a una
utilidad o una tabla de datos de inters en un segmento que puede
ser direccionado por otros procesos.
3. Se facilita la proteccin. Puesto que un segmento se construye para
contener un conjunto de programas o datos bien definido, el
programador o el administrador del sistema puede asignar
privilegios de acceso de forma adecuada.
Estas ventajas no se tienen con la paginacin, que es invisible para el
programador. Por otra parte, hemos visto que la paginacin
proporciona una forma eficiente de gestionar la memoria. Para
combinar las ventajas de ambas, algunos sistemas estn equipados con
el hardware y el software del sistema operativo que permite las dos.

Você também pode gostar